본문 바로가기

전체 글152

아키텍처 세 가지 접근 방식 소프트웨어 아키텍트라면 인정하기 싫겠지만, 개발자가 소프트웨어 아키텍처를 무시하더라도 성공할 수 있는 시스템이 많다. 그렇지만 소프트웨어 아키텍처를 충분히 생각했다면 피할 수 있었던 실패도 많다. 예를 먼저 들어보자. 예전 트럭은 안전벨트가 없었다. 그때의 트럭은 안전벨트가 없었다. 설계자가 차를 설계 할 때 안전에 무관심했다는 뜻이다. 설계자가 차를 설계할 때 안전에 무관심했다는 뜻이다. 그 이후에 나온 차들은 안전벨트가 있었다. 설계자는 아키텍처 집중 설계를 선택하여 안전벨트를 장착했다. 하지만 매번 버클을 맸어야 했다. 버클을 매지 않으면 안전을 보장할 수 없었다. 요즘에 나온 차들은 전부 에어백이 있어야 한다. 아키텍처 수준에서 안정성을 우선하지 않은 차량을 구매할 수 없다. 즉, 아키텍처 상향 .. 2023. 1. 28.
추정 아키텍처와 레퍼런스 아키텍처 추정(Presumptive) 아키텍처와 레퍼런스(Reference) 아키텍처의 이해와 차이 추정 아키텍처는 특정 도메인에서 지배적인 아키텍처군이다. 해당 도메인의 개발자가 추정 아키텍처 이외의 아키텍처를 선택해서 사용하려면 합당한 이유가 있어야 한다. 일반적인 웹 서비스라면 보통 3 레이어의 아키텍처를 가진다. Presentation layer - Business layer - persistence layer 관성에 의해서 움직이거나 호기심이 적은 개발자라면 추정 아키텍처 이외의 아키텍처를 심각하게 고려하지 않거나, 모든 소프트웨어가 추정 아키텍처를 준수해야 한다고 오해할 수도 있다. 추정 아키텍처는 레퍼런스 아키텍처와 유사하다. 레퍼런스 아키텍처는 문제에 대한 이키텍처 해결책을 설명하는 아키텍처군이며 .. 2023. 1. 28.
소프트웨어 아키텍처의 정의 소프트웨어 아키텍처의 정의 이 정의는 가장 널리 사용되는 것으로 소프트웨어 공학 연구소(Software Engineering Institute)[Clements el al., 2010]에서 나온 내용이다. 원문 The software architecture of a computing system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both. 번역 컴퓨팅 시스템의 소프트웨어 아키텍처는 시스템에 대해 추론하는 데 필요한 일련의 구조로, 소프트웨어 요소, 이들 사이의 관계 및 속성으로 구성됩니다. 정의는 명확.. 2023. 1. 24.
소프트웨어 아키텍팅의 기본 소프트웨어 아키텍팅의 기본 소트프웨어는 점점 커지고, 점점 복잡해진다. 네이버나 카카오톡을 보자. 네이버는 처음에는 지식을 찾아주는 검색 사이트였다. 그러나 지금은 미용실도 예약할 수 있고, 네비게이션으로 이용할 수도 있다. 카카오톡의 경우도 처음에는 친구들과 메시지를 주고 받는 기능만 있었으나 현재는 쇼핑도 할 수 있고, 돈도 보낼 수 있다. 소프트웨어 엔지니어링의 발전은 소프트웨어 규모와 복잡성 증가와 일치해왔다. 어셈블리 언어는 고급 언어(사람에게 더 친화적일 수록 고급 언어라고 부른다. 어쩜 이 개념은 기계어와 구분하기 위하여 만든 것 같다.)와 구조적 프로그래밍에 밀려 특수한 경우에만 사용되며, 절차지향적 프로그래밍은 객체 지향적, 함수형 언어에 밀려 지양해야하는 방식이 되었다. 또한 서브루틴에.. 2023. 1. 23.