ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 설계 개요
    소프트웨어 공학 2022. 5. 4. 20:26

    분석

    What이 깊이 이해, 파악, 정의

    결과물은 논리적 모델

    설계

    How를 어떻게 만족할 것인가

    결과물은 물리적 모델

    설계 작업

    아키텍처 설계

    - 시스템 아키텍처 설계

    - 소프트웨어 아키텍처 설계

    모듈 설계

    데이터 설계

    인터페이스 설계

    --- 크게 4 ~ 6개의 단계로 나눌 수 있다.

    사용자 인터페이스 설계는 분석에 해당한다.

    설계의 첫번째 수행 작업은 시스템 아키텍처 설계
    – 소프트웨어 아키텍처 설계를 포함한 모든 설계에 지대한 영향

    추상화

    핵심과 본질

    목적에 관련되는 정보에만 집중하고 다른 것은 배제한다.

    절차 추상화

    =기능 추상화

    어떤 기능 수행을 위해 필요한일련의 절차(알고리즘)를 추상화한다.

    자료 추상화

    추상화 결과는 연관 자료를 포괄적으로 의미하는 자료 개체

    제어 추상화

    운영체제에서 이용되는 동기화 제어 방법을 추상화한 동기화 세마포어이다.

    단계적 정제

    최상위 추상화 수준 ~ 가능한 최하위 수준까지 단계별로 분할 한다.

    모듈화

    하나의 시스템을 작은 요소로 나누어 재사용 가능하도록 설계 개념

     

    – 작은 크기 모듈 설계

    재사용 가능성 증가 , 모듈 수 증가 , 모듈 개발 비용 감소 , 통합 비용 증가통합

     

    – 큰 크기 모듈 설계

    재사용 가능성 감소 , 모듈 수 감소 , 모듈 개발 비용 증가 , 통합 비용 감소

     

    –최적 모듈 수 고려하여 설계

    전체 프로그램을 하나의 모듈로 정의

    정보은닉

    모듈 내부에 주요 정보를 다른 모듈에서 접근할 수 없도록 설계하는 것이다.\

    구조적 분해

    =단계적 정제

     

    • 소프트웨어를 모듈로 분해하여 계층적인 구조로 설계

    • 상위 계층 모듈

     – 다른 모듈과의 통신과 기능 수행에 대한 주요 의사 결정에 대한 제어를 담당하는 제어모듈

    • 하위 계층 모듈

     – 실제 처리 작업을 수행하는 작업모듈

    • 수평으로 확장되는 계층 구조

     – 모듈 인터페이스를 통해 운반되는 자료 양의 증가 문제

     – 프로그램에 대한 전체적인 제어의 복잡성 문제

    • 수직으로 계층의 깊이가 깊어지는 계층 구조

     – 제어모듈에 대한 변경에 대한 파급 효과는 하위모듈 전체에 영향을 미치는 문제

    설계 평가

    설계 품질

    좋은 설계를 위해서는 설계 원리 적용, 구조적/객체지향 설계 방법 같은 체계적인 방법 적용

    -> 기본 원리는 모듈화 설계와 관련

    모듈화 설계의 장점

    - 프로그램의 용이한 이해와 복잡성 감소

    - 소프트웨어 테스트 용이

    - 병행 개발과 재사용에 의한 생산성 향상

    - 파급 효과를 최소화 함으로써 유지보수용이

    - 오류의 파급 효과 최소화

    결합도

    모듈 사이의 상호 의존도

    모듈 결합도 최소화 설계

    자료 결합도

    매개변수를 통해 필요한 자료만 교환

    스탬프 결합도

    자료 타입에 의해 자료 전달

    모든 원소들이 완전히 이용되지는 않는다

    • 문제점
      • 호출된 모듈은 데이터 타입의 전체 구조 인지 필요하다.
      • 데이터 타입의 변화가 다른 참조 모듈에 영향을 준다

    제어 결합도

    한 모듈이 다른 모듈에게 제어 정보를 전달하는 결합도

    • 문제점
      • 독립성이 약하다.

    공통 결합도

    둘 이상의 모듈이 하나의 공통 자료 영역에 접근하는 경우

    • 문제점
      • 독립성이 약하다.

    내용 결합도

    • 한 모듈이 다른 모듈의 내부를 언급하여 수정하거나 제어를 이동하는 경우
    • 가장 안좋은 결합도이다.

    응집도(cohesion)

    • 한 모듈 내부의 구성 요소 사이의 관련도
    • 응집도는 최대화 설계
    • 응집력이 강하다 -> 한가지 기능을 수행하는 모듈

    기능적 응집도

    한 모듈내의 모든 작업이 단일 기능 수행과 밀접하게 관련되는 경우

    순차적 응집도

    한 모듈에서 하나의 작업 결과 결과가 다른 작업의 입력으로 들어가는 경우

    통신적응집도

    서로 다른 작업이 동일한 입력 자료를 이용하는 경우

    절차적 응집도

    통신적 응집도 특성을 가지고 있지 않는다.

    그러면서 작업 수행이 순차적인 경우

    시간적 응집도

    특별한 시간에 관련되어 한번에 수행

    논리적 응집도

    공통 기능을 위해 관련되어 있지만, 작업 수행은 외부에서 선택되는 경우

    우연적 응집도

    한 모듈내의 각 작업들이 전혀 관련이 없는 경우

    모듈화 설계 휴리스틱

    휴리스틱: 경험에 의한 실용적인 방법

    품질 좋은 모듈화 설계를 위한 휴리스틱

    • 결합도 줄이고 응집도 높이기 위해 모듈 독립성 개선하기 위해 ) 모듈 분해 혹은 결합
    • 복잡한 모듈 인터페이스와 불필요한 모듈 인터페이스 피함
      • 단수하게 정보 전달하도록 모듈 인터페이스 설계
      • 불필요한 인터페이스 설계는 모듈 응집력이 낮다는 것을 의미한다.

    양파모양 구조도

    최악의 구조도

    설계 명세

    • 시스템 아키텍처 설게 명세
      • 배치 다이어그램 (Deployment Diagram): UML 다이어그램
    • 소프트웨어 아키텍처 설계 명세
      • 개체 관계도
      • 잭슨 구조도
      • 구조도
      • 클래스와 객체 다이어그램: UML 다이어그램
      • 패키지 다이어그램: UML 다이어그램
    • 모듈 설계 명세
      • 정형 명세어
      • 프로그램 설계어
      • 순서도
      • 활동 다이어그램: UML 다이어그램
      • 상호작용 다이어그램 : UML 다이어그램
      • 기타: 의사결정 표, 의사결정 트리, 구조적 영어

    '소프트웨어 공학' 카테고리의 다른 글

    모듈 설계  (0) 2022.05.23
    구조적 설계 방법  (0) 2022.05.16
    구조적 분석 방법  (0) 2022.05.03
    요구 공학  (0) 2022.04.19
    프로젝트 계획  (0) 2022.04.10

    댓글

Designed by Tistory.