observe_db

[객체지향설계] 9. Moving on To Design 본문

학교 공부/객체지향설계(3-1)

[객체지향설계] 9. Moving on To Design

쩡윤 2023. 5. 19. 22:38

5/12
 
설계란?

  • 목적: 어떻게 system을 만들 것인지 결정
  • 요구사항 프로세스를 software domain으로 변경(translate)
  • 문제에 대한 해답 제시

Good Design이란?

  • 유지 가능한(maintainable)
  • Cohesion(응집력): 기능적 관련성이 강하고
  • Coupling(결합력): 상호연결의 힘이 약하고
  • Understandability(이해가능): 정보의 제공
  • Adaptability(적용성)
  • +모듈화가 잘 되어야한다.

 
Design은 크게
- Management Aspect(관리)

  • Preliminary design(기본 설계): 요구사항을 데이터와 소프트웨어 구조/구성으로 변환
  • Detail design(상세 설계): 구조의 세부사항과 데이터 구조 및 소프트웨어 알고리즘 재정의

-Technical Aspect(기술)

  • Data Design(자료)
  • Architectural design(구조)
  • Procedural design(알고리즘)
  • (User) Interface design(GUI 등)

 
기능모델링과 구조 모델링
구조 모델링의 분석파트. 설계 파트.(ui, db등이 다루어짐)
 
Evolving to Design Models
설계 concepts

  • Abstraction(추상화)
  • Stepwise refinement
  • Modularity
  • Information hiding(정보 은닉)
  • Separation of concerns
  • Top-down VS Bottom-up

피해야할 기본적인 설계 실수/문제

  • 설계 시간이 감소되는 것(Reducing design time)
  • 계속되는 작은 수정(Feature creep)
  • 은탄 신드롬(Silver bullet syndrome)
  • 툴 변경(Switching tools in mid-project)

 
Facotring(수학에서는 인수분해)

  • 유사성과 차이점 시반으로 새로운 클래스 만들기
  • Generalization(일반화) 관계, Aggregation(집합) 관계
  • Abstracting이나 Refinement 방식.

Partitions and Collaboration

  • 여러 클래스를 partition으로 묶는 방법
  • class 간의 관계를 고려해야한다.(communication diagram 참고)- 클래스간 상호작용이 많으면 같은 partition으로 넣는다.
  • (2번째 방식)

Layers

  • Model-view-controller(MVC) 구조
  • 층들
    • Foundation
    • Physical Architecture
    • Human Computer Interaction
    • Data Management
    • Problem Domain
  • 보통은 위에서 HCI~PD layer까지 3개 층을 사용한다.

 
Package&Package Diagram
 
Package

  • 고수준의 논리적 구조체
  • 관계된 element들끼리 묶음
  • 관계(relationship)
    • 의존적(dependency) 관계
    • aggregation/association

 
Syntax
Package
- UML 원소의 논리적 그룹
- UML 다이어그램을 관련된 원소를 하나의 고레벨 원소로 묶어서 간소화
Dependency Relationship
- 패키지간의 의존 관계를 보여줌
- 종속 패키지에서 종속패키지로
- 하나의 변경이 다른 패키지에 영향을 끼친다.
 
Creating Package Diagram

  1. 문맥 설정
  2. 공유하는 관계에 기반하여 클래스를 묶음.(일반화 계층이 있으면 하나에 묶음)
  3. 묶인 클래스들을 패키지로
  4. 패키지 사이의 의존 관계 식별
  5. 패키지간 dependency 관계 위치시킴
  6. 특별한 상황에서 사용되는 dependency관계 확인

Design 전략 선택
고민요소

  • Business Need
  • In-house Experience(자체 경험)
  • Project Skills
  • Project Management
  • Timeframe

전략 3가지

  • 자체 개발(Custom Developement)
  • Packaged System(COTS등)
  • 외부 Outsourcing


 

 

Comments