소프트웨어 설계 3. 애플리케이션 설계

yuhyeonp·2020년 5월 14일
0

1. 모듈화

  • Modularity
    • 소프트웨어의 성능 향상, 시스템 재사용, 관리를 쉽게 하기 위해 시스템 기능을 모듈 단위로 나누는 것
      • 모듈 크기가 너무 작으면 개수가 많아져 통합 비용 증가
      • 너무 커서 개수가 적으면 모듈당 개발 비용 증가

2. 추상화

  • Abstraction
    • 불필요한 부분 생략하고 필요한 부분을 강조
      • 과정 추상화
      • 데이터 추상화
      • 제어 추상화

3. 정보은닉

  • Information Hiding
    • 모듈 내부의 정보를 감춰 다른 모듈이 접근/변경할 수 없게 함
      • 필요 정보만 인터페이스로 주고 받음
      • 하나의 모듈이 변경돼도 다른 모듈에 영향 없어 유지보수가 용이

4. 레이어 패턴

  • Layers pattern
    • 시스템을 계층(Layer)으로 구성하는 고전적인 아키텍처 패턴(Patterns)의 하나
      • 상위 계층이 하위 계층에 대한 서비스 제공자이고 하위 계층은 클라이언트임
      • 마주보는 계층끼리만 영향 미쳐서 변경 작업 용이
      • 특정 계층만 교체 가능
      • OSI 참조 모델: ISO(국제표준화기구) 통신 규약(Protocol)
        • 물리(Physical Layer)
        • 데이터 링크(Data Link Layer)
        • 네트워크(Network Layer, 망 계층)
        • 전송(Transport Layer)
        • 세션(Session Layer)
        • 표현(Presentation Layer)
        • 응용(Application Layer)

5. 클라이언트-서버 패턴

  • Client-Server Pattern
    • 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성
    • 서버는 항상 대기
    • 서버와 클라이언트는 요청/응답 위해 동기화될 때 외엔 독립적

6. 모델-뷰-컨트롤러 패턴

  • Model-View-Controller Pattern
    • 서브시스템을 3개 역할로 구조화
      • 모델(Model): 핵심 기능과 데이터 보관
      • 컨트롤러(Controller): 입력 처리(Input)
      • 뷰(View): 정보 표시(Output)
  • 하나의 모델에 여러 뷰가 필요한 대화형 애플리케이션에 적합

7. 클래스

  • Class
    • 인스턴스(Instance)들의 공통 속성과 행위를 정의하는 틀
    • 인스턴스화(Instantiation): 클래스로 객체 생성
      • 슈퍼 클래스(Super Class): 상위(부모)
      • 서브 클래스(Sub Class): 하위(자식)
      • 최상위 클래스: 상위 클래스 없음

8. 캡슐화

  • Encapsulation
    • 데이터와 함수를 하나로 묶음
    • 인터페이스 외 내용이 정보 은닉되어 있음
    • 캡슐화된 객체의 재사용 쉬움

9. 결합도

  • Coupling
    • 모듈 간 상호 의존하는 관계로 모듈(Module)의 독립성을 높이려면 결합도 약해야 함
      • 내용 결합도(Content Coupling)
      • 공통 결합도(Common Coupling)
      • 외부 결합도(External Coupling)
      • 제어 결합도(Control Coupling)
      • 검인 결합도(Stamp Coupling)
      • 자료 결합도(Data Coupling)

10.응집도

  • Cohesion
    • 모듈 내부 요소 간 관계로 모듈(Module)의 독립성 높이려면 응집도 강해야 함
      • 기능적 응집도(Functional Cohesion)
      • 순차적 응집도(Sequential Cohesion)
      • 통신적 응집도(Communicational Cohesion)
      • 절차적 응집도(Procedural Cohesion)
      • 시간적 응집도(Temporal Cohesion)
      • 논리적 응집도(Logical Cohesion)
      • 우연적 응집도(Coincidental Cohesion)

0개의 댓글