목록Software Design (9)
Nnnnnnnnn
Software Architecture Document(SAD) SAD describes the big ideas in the architecture, including the decisions of architectural analysis. Architectural Views - The N + 1(or 4+1) View Model - Kruchten's 4+1 views : '4' represents logical, process, development(implementation), and physical(deployment) views. The +1 is the use case view. SAD Structure Factors는 쉽게 말해 아키텍처에 중요한 영향을 미치는 것이며, 이는 factor t..
Gang of Four (GoF) Patterns Adapter는 외부 시스템에 대한 것인 반면, Facade는 외부 시스템이 아닌 내부 시스템과 관련이 있다. Observer는 Publish-Subscribe의 관계로, 발행과 구독 즉 Lister Interface 와 Subscribing Listener를 통해 누가 누군지 알 수 있다.
GRASP GRASP는 General, Responsibility, Assignment, Software, Principle or pattern의 약자로 Responsibility-Driven Design(RDD) 즉 책임기반디자인이다. Principle은 잘못된 design을 설계하지 않도록 하는 가이드라인을 제시한다. Object Design Principles SRP는 하나의 클래스, 메소드, 컴포넌트 등은 오로지 하나의 책임만을 가져한다는 원리이다. 만약 하나 이상의 책임을 가지고 있다면 처음에는 코드 작성이 간편하지만 시간이 지날수록 코드의 재사용이 어려워질 수 있다. OCP는 확장에는 개방, 수정에는 폐쇄의 원리이다. 단일 책임 원칙을 준수하는 컴포턴트를 작성하여 인터페이스를 적극적으로 활용한..
Logical Architecture using Layers Software Architecture는 쉽게 마해 큰 밑그림이다. 뼈대+구조라고 할 수 있다. 즉, 전체 시스템의 구조를 생각하여 균형과 조화를 이루도록 구성하는 것이다. Logical Architecture는 논리적 구조이다. 예를 들어, class들을 묶어서 package로, 그리고 package를 subsystem으로 구성한다. 이는 물리적인 element에 배치시키는 것이 아니기 때문에 logical이라고 할 수 있다. 즉, 물리적 배치는 신경쓰지 않는 논리적 묶음이다. Layer는 Presentation Layer(UI Layer), Application Logic Layer(or Domain Layer), Technical Serv..
System Sequence Diagrams - a picture that shows, for one particular scenario of a use case, the events that external actors generate, their order, and inter system events. Actor generates system events to a system, the request some system operation to handle the event.
Domain Modeling 도메인 모델이란 쉽게 말해 실제가 아닌, 개념 클래스를 만들고 이들간의 속성을 나타낸 것이다. 도메인 모델단계는 앞선 inception 단계 다음인 Elaboration 단계라고 할 수 있다. Elaboration phase에선 핵심적인 core architecture를 위험순으로 구성해나간다. Elaboration에선 Domaion Model과 Design Model(설계), Software Architecture Document, Data model과 inception단계에서의 refine 과정이 있다. Domain Models의 목표는 각 iteration 단계에서 구현하겠다는 conceptual class를 만드는 것이다. Use-case text를 바탕으로 한 con..
Inception Focuses on the core application logic layer with some secondary discussion of the other layers. 이해를 위해 신속하게 필요한 것만 Inception 단계에서 진행한다. UP(United Process)나 Agile을 활용한다. 개발 제품의 범위를 정하고(계획), rough한 최상의 case를 계획한다. use case의 대략 10% ~ 15% 정도 진행한다. 용어를 정의하는 Glossary, Risk list, Prototypes, Development case, Phase plan, Iteration plan이 포함된다. 개발 사례의 경우, 성공 사례라 하더라도 현재의 경우에 맞게 커스터마이징이 필요하다. (t..
Software Development Process Model 이전 개발 방식 -> Waterfall (Non-working model). 예를 들어 Design에서 넘어가는 단계에서 문제가 발생했을 시, 다시 처음부터 돌아간다. 반복과 증가 프로세스. 모듈 하나 만들고 그 모듈에 대한 test까지 끝낸다. 그리고 다음 모듈 단계로 넘어간다. 즉, 반복하면서 통합하는 것이다. 맨 마지막 단계에서 수정하는 것이 아닌 그때 그때 수정하는 방식이다. timeboxed 라는 의미를 예를 든다면, 만약 term이 3주였을 시 3주동안 계획상의 업무가 제대로 이루어지지 않았더라도 3주의 term을 지키고 다음으로 넘기는 것이다. 3주 동안 Embrace change를 통해 개발-피드백-조정의 변경들을 받아들여 3주..