본문 바로가기

개발론

[1-3]소프트웨어설계-소프트웨어 아키텍쳐

[아키텍쳐 설계]

- 구성하는 요소들 간의 관계

- 비기능요구사항의 제약을 반영 + 기능을 구현하는 방법   찾아내는 과정

 

<구성요소>

 - 모듈화 : 자주사용되는 인증등은 모듈로 구성 > 재사용 가능하도록 

 - 추상화 : 전체적인 개념 설계 먼저  > 세분화     (  자동차 - 탈것 )

        ` 과정 추상화 , 데이터 추상화 , 제어추상화

 - 단계적 분해  : 추상화의 반복으로 단계화

 - 정보 은닉 : 다른 모듈이 접근하여 변경하지 못하도록, 인터페이스를 통해 기능으 수행할수 잇다.

 

< 아키텍쳐 품질 속성>

 - 시스템 측면  : 성능, 보안, 가용성, 기능성, 사용성 , 변경 용이성, 확장성, 

 

 - 비즈니스 측면 : 시장에 맞는 시간에 출시 , 비용 , 예상수명

 

 - 아키텍쳐 측면 : 무결성, 정확성, 구축가능성

 

 

[아키텍처 패턴]

 

레이어패턴 > 마주보는 두개 계층에서만 사용 >변경시에도 서로만 신경쓰면 되므로 수월

               > 특정계층만 교체가 가능

               > OSI 7계층 있음 ( 물데네 전세표 응 )

클라이언트 서버 패턴 - 서버는 항상 대기 상태 유지.

                            - 서버와 클라이언트는 서로 독립적

 

파이프 필터 패턴      - 데이터 스트림 절차. 각 단계를 필터컴포넌트로 캡슐화

                            -  필터 컴포넌트 : 재사용성 좋다. 추가가 쉽다. 재배치하여 파이프라인 새로 만든기 가능. 

                            - 버퍼링, 동기화, 데이터 변환 등에 사용   > 유닉스의 쉘이 있다.

 

MVC   패턴   - 모델  :  서브시스템의 핵심 기능 ,데이터 보관   /  컨트롤러 : 사용자로부터 받은 입력을 처리한다.

                           : 서로 분리 되어 컴포넌트로 존재 . 즉, 따로개발가능

                           : 대화형 애플리케이션 ( 요구가 발생하면 요구를 처리하는 ) 여러개의 뷰가 가능하므로,  

 

마스터슬레이브 패턴  :  슬레이브 컴포넌트의 결과를 작업의 주체인 마스터컴포넌트가 받아서 처리.

                             : 장애허용시스템 , 병렬 컴퓨팅 시스템

 

브로커 패턴             : 사용자가 브로커에게 원하는 기능 알려주면 알맞은 컴포넌트 제시.

                            : 분산환경 에서 사용 , 원격 서비스호출에 응답하는 컴포넌트들이 많을떄 사용

 

이벤트 버스 패턴       : '소스'에서 이벤트 발생하면  구독(subscribe) 한 컴포넌트 '리스너 ' 들이 '버스가 관리하는 채널'을 통해 메세지 받음. 

 

피어투 피어 패턴       : 서로가 클/서버 가 되줄 수 있다. 전형적인 '멀티 스레딩' 방식

 

블랙보드 패턴           : 모든 컴포넌트들이 블랙보드에 있고, 공유된다.

 

인터프리터 패턴        : '작성된 프로그램 코드를 해석하는 컴포넌트'를 설계 할떄 사용

 

 

[ 객체 지향 ]

객체, 클래스, 상속, 캡슐화 : 데이터와 처리메소드 합치기 ( 정보은닉 , 결합도 낮아짐 ), 다형성

 

 

[모듈]

독립성 :  한개 기능만, 타 모듈과 지나친 상호작용 x   , 결합도 약하게 응집도 높게

응집도 : 얼마나 박스로 필요한것끼리 잘 구분해놓았는지.

      (강)

    - 기능적 응집도 : 한 모듈의 모든 기능 요소은 단 한개의 문제해결을 위해서 만들어짐

    - 순차적 응집도 : 출력을 입력으로 받아 쓰는 경우.

    - 절차적 응집도 여러 관련 기능이 있을경우 

    - 논리적 응집도 : 유사한 성격으로 분리되는 처리요소들만 엮여있음

      (약)

결합도 : (약) 자료 결합도 스탬프 결합도 제어 결합도 외부 결합도 공통 결합도 내용 결합도 (강)