반응형

1 공통 모듈 설계

1 공통 모듈

 

1 개념

전체 프로그램의 기능 중 특정 기능을 추리할 수 있는 실행 코드

자체적으로 컴파일 가능, 재사용 가능

 

2 원칙

  • 정확성: 해당 기능의 필요 여부
  • 명확성: 해당 기능에 대해 일관되게 한 가지로 해석
  • 완전성: 필요 요구 사항에 대해서 모두 기술
  • 일관성: 기능 간 상호 충돌 X
  • 추적성: 기능의 유기적 관계에 대한 식별 가능

 

3 모듈화

1 개념

프로그램의 관리를 효율적으로 하기 위해 시스템을 분해, 추상화함으로써

성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 쉽게 하는 기법

 

2 필요성

모듈의 크기 少 -> 모듈 개수 多 -> 통합 비용 大

모듈의 크기 大 -> 모듈 통합 비용 少 but 모듈 당 개발 비용 大

 

3 유형

  • 응집도: 모듈 내부의 구성요소 간 관계의 밀접한 정도 (강하게)
  • 결합도: 모듈 간의 관련성 정도(<---> 독립성) (약하게)

 

1 응집도 유형

우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적

2 결합도 유형

내용 > 공통 > 외부 > 제어 > 스탬프 > 자료

 

2 설계 모델링

 

1 개념

필수 기능의 구체적인 구현 방법

소프트웨어의 요구사항을 만족하도록 모델링하여 표현, 분석, 검증하는 과정

 

2 원칙

  • 변경이 쉽도록 구조화
  • 특정 기능을 수행하는데 필요한 자료만 사용하도록 규제
  • 독립적이고 기능적인 특성
  • 계층적 구조

 

3 유형

모델링 유형

  • 구조 모델링: 시스템의 구성요소들과 이들 사이의 구조적인 관계와 특성을 모델링
  • 행위 모델링: 시스템의 구성요소들의 동적인 특성을 모델링

 

모델 유형

  • 구조 모델: 유형, 배열 및 결합 관계, 인터페이스, 상호작용 채널, 위치의 이동 및 복제
  • 행위 모델: 입출력 데이터, 입출력 매핑, 데이터 흐름 채널, 상호작용 프로토콜, 처리 순서, 알고리즘

 

4 소프트웨어 설계 유형

자료 구조 설계: 소프트웨어를 구현하는데 필요한 자료 구조로 변환하는 과정

아키텍처 설계: 컴포넌트 간의 관계

인터페이스 설계: 통신

프로시저 설계: 아키텍처의 컴포넌트를 프로시저 서술로 변환하는 과정

 

3 소프트웨어 아키텍처

 

1 개념

외부에 드러나는 특성, 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체

 

2 필요성

조율을 통한 시스템 최적화

비기능적 요소에 집중하되 기능적 요소 고려

 

3 소프트웨어 아키텍처 프레임워크

IEEE1471

[IEEE1471]

  • Mission: 목적 달성을 위해 시스템이 수행하는 방향성
  • Environment: 내부/외부 제약
  • System: 특정 목적 달성을 위한 컴포넌트 집합
  • Architectures: 시스템 구조
  • Stakeholder: 사람/조직
  • Architectures Description: 아키텍처를 기록하기 위한 산출물
  • Concern: 관계자 관심사
  • View Point: View를 구성하기 위한 규칙을 정의한 패턴
  • Rational: 아키텍처 평가 판단 기준
  • Library view point: 모델 작업 방법 사례
  • Model: 모델

 

4 소프트웨어 아키텍처 4+1뷰

1 개념

고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 접근 방법

4개의 구조가 충돌되지 않는지, 요구사항을 충족하는지 증명하기 위해 유스케이스 사용

 

2 구성요소

1: 유스케이스 뷰

4: 논리 뷰(최종 사용자), 프로세스 뷰(프로그래머), 구현 뷰(프로그래머), 배포 뷰(시스템 엔지니어)

  • 유스케이스 뷰: 아키텍처의 다른 뷰를 검증하는 데 사용
  • 논리 뷰: 기능적인 요구사항, 모델의 추상화
  • 프로세스 뷰: 런타임 시 테스크, 스레드, 프로세스 간의 관계 표현, 비기능적 요구사항(성능, 가용성) 고려
  • 구현 뷰(= 컴포넌트 뷰): 정적인 소프트웨어 모듈의 구성, 개발자 관점
  • 배포 뷰: 실행 파일과 런타임 컴포넌트의 매핑 방법을 보여주며, 비기능적인 요구사항 고려

 

5 소프트웨어 아키텍처 비용 평가 모델

1 개념

아키텍처의 적합성을 평가하는 모델

 

2 종류

  • SAAM: 변경 용이성과 기능성에 집중
  • ATAM: 아키텍처 품질 속성을 만족시키는지 판단
  • CBAM: 경제적 의사결정에 대한 요구 충족
  • ADR: 아키텍처 구성요소 간 응집도 평가
  • ARID: 전체가 아닌 특정 부분에 대한 품질요소에 집중

 

2 객체지향 설계

1 객체지향

1 개념

실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현

 

2 구성요소

  • 클래스: 같은 종류의 집단에 속하는 속성(변수)와 행위(메서드)
  • 객체: 클래스로부터 생성, 객체마다 각각의 상태와 식별성 소유
  • 메서드: 객체를 사용하는 방법
  • 메시지: 객체에게 행위를 지시하는 방법
  • 인스턴스: 클래스에 속한 각각의 객체, 실제 메모리상에 할당
  • 속성: 객체가 가지고 있는 값

 

3 기법

  • 캡슐화: 관련성이 높은 데이터와 함수를 묶어서 처리, 결합도를 낮추고 재사용이 용이
  • 상속성: 상위 클래스의 속성과 메소드를 하위 클래스에서 물려받아 사용
  • 다형성: 하나의 메시지에 대해 고유한 방법으로 응답, 오버로딩/오버라이딩
  • 추상화: 공통 성질을 추출하여 추상 클래스를 설정
  • 정보은닉: 데이터와 메소드를 공개 인터페이스를 통해서만 접근하도록하여 side effect 최소화

cf ) 프로시저 기반 - 절차적 프로그래밍

 

4 설계 원칙(SOLID)

  • 단일 책임: 하나의 클래스는 하나의 목적
  • 개방 패쇄: 소프트웨어의 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다
  • 리스코프 치환: 자식 클래스는 부모 클래스를 대체
  • 인터페이스 분리: 한 클래스는 자신이 사용하지 않는 인터페이스를 구현하지 않는다
  • 의존성 역전: 사용 관계는 바뀌지 않으며, 관계는 최대한 느슨하게

 

5 방법론 종류

  • 객체지향 소프트웨어 공학(OOSE): 유스케이스에 의한 접근 방법

  • 럼바우 객체 모델링 기법(OMT): 객체지향 분석 -> 시스템 설계 -> 오브젝트 설계 및 구현

    • 객체 모델링: 정적 구조 표현
    • 동적 모델링: 객체의 제어 흐름 표현
    • 기능 모델링: 값의 변화 과정 표현
  • 객체 지향 설계(Booch): 설계 부분만 존재, 설계 문서화 강조

*-----------------------------

Coad와 Yourdon 방법: 객체 지향 분석 방법론 중 ERD 사용

-------------------------*

 

2 디자인 패턴

 

1 개념

반복적으로 나타나는 문제점에 대한 전문가의 경험을 정리하여 해결 방안을 제시한 패턴

개발의 효율성, 유지 보수성, 운용성 등의 품질 향상, 프로그램 최적화

 

2 구성요소

  • 패턴 이름: 문제와 해법을 설명
  • 문제: 해결하고자 하는 문제와 배경, 패턴 사용 시점
  • 해법: 요소, 요소 간의 관계, 책임, 상호관계
  • 결과: 결과와 장단점

 

3 유형

목적

  • 생성: 구조화, 캡슐화
  • 구조: 더 큰 구조 형성 목적
  • 행위: 상호작용 방법과 역할 분담

cf ) 기능 X

 

범위

  • 클래스: 상속 관계, 컴파일 타임에 정적으로 결정
  • 객체: 런타임에 동적으로 결정

 

 생성구조행위
클래스Factory MethodAdapterInterpreter / Template Method
객체Abstract Factory / Builder / Prototype / SingletonBridge / Composite / Decorator / Facade / Flyweight / ProxyChain of Responsibility / Command / Iterator / Mediator/ Memento / Observer / State / Strategy / Visitor

 

4 종류

  • Factory Method: 서브 클래스가 인스턴스를 결정하도록하고 책임을 위임
  • Singleton: 유일한 하나의 인스턴스를 보장
  • Facade: 하나의 인터페이스를 통해 느슨한 결합 제공
  • Proxy: 대리인이 대신 일을 처리
  • Template: 알고리즘 골격의 구조를 정의
  • Command: 요청 자체를 캡술화하여 파라미터로 넘긴다
  • Observer: 상태가 변할 때 알리고, 자동 업데이트
반응형

+ Recent posts