구조적 설계
소프트웨어 설계 개요
-추상화, 단계적 분해, 모듈화
-소프트웨어 설계
>구현에 앞서 DB, user interface, 처리로직을 미리 장구하여 프로그램 개발의 청사진이 제시될 수 있도록 준비
-분석과 차이
>분석은 문제를 정의, 설계는 문제를 해결
추상화
-자세한 구상에 앞서, 상위 레벨에서 소프트웨어의 설계결과를 먼저 생각해보고 요약하는 것
단계적 분해
-문제를 해결하기 위해 "분할과 정복"이라는 개념을 적용하는 것
-단계적 분해는 문제를 상위 개념부터 더 구체적인 단계로 하향식 분할하는 기법을 적용함
과정
-문제를 하위 수준의 독립된 단위로 나눔
-구분된 문제의 자세한 내용은 가능한 뒤로 미룸
-점증적으로 구체화 작업을 계속
모듈화
-수행 가능한 명령어를 잘라서 작은 독립단위로 나누어서 설계하는 것
특징
-자신의 이름을 가짐
-독립적으로 컴파일됨
-다른 모듈을 호출
응집도 : 모듈 내부에 수행하는 기능 간의 서로 관련되어 있는 정도
특징 : 강할 수록 좋은 설계, 응집도가 높으면 모듈 내부의 기능이 공통의 목적을 달성하기 위한 관련성이 높음
순서 : 기능 - 정보 - 교환 - 절차 - 시간 - 논리 - 우연
결합도 : 모듈간에 연결되어 있는 상호 의존하는 정도
결합도 특징 : 낮은 결합도가 더 좋은 설계 > 자료 - 구조 - 제어 - 공통 - 내용
구조적 설계 개요
-DFD를 기반으로 "구조도"를 작성하여 나타내는 것
변환분석
-변환기능을 수행하는 모듈을 중심으로 입력모듈과 출력모듈을 찾아내는 분석과정
-변환분석은 DFD를 입력기능, 변환기능, 출력기능으로 분할하여 시스템 구조도로 단계적인 계층을 만듦
트랜잭션 분석
-DFD의 한 프로세스에서 여러 개의 데이터흐름이 유출되는 경우에 이를 분석하기 위해 활용
-트랜잭션 분석은 새로운 기호인 "마름모꼴"을 추가함
-마름모꼴의 의미는 여러 모듈 중에서 선택적인 호출을 할 수 있도록 하는 "선택"의 표시
객체지향적 설계
객체지향 설계 개요
-분석에서 작성한 다이어그램을 더욱 구체적이고 상세하게 나타내면 됨
-클래스 추가, 메소드의 상세화, 관계형 데이터 베이스
유스케이스 설계
-내부 시나리오 > 정상 흐름, 예외 흐름, 비정상 흐름
시퀀스 다이어그램 설계
-구현 설계 요소들간의 상호 작용을 반영하여 다시 작성
-구현이 가능한 수준으로 설계요소들에게 책임을 부여
설계 방법
-공통적인 하부흐름은 없는지 체크
-추상화 레벨을 맞추어야 하며, 새로운 하부흐름은 별갸의 컴포넌트로 캡슐화
-클래스, 속성, 메소드의 이름이 적절한지 체크
-동일한 개념의 클래스는 합침
-필요 시 추상화 클래스를 도출하여 상속관계 설정
컴포넌트 다이어그램
-소프트웨어 컴포넌트 간의 종속관계, 혹은 모듈들 간의 종속관계를 보여줌
-수강신청 일정을 생성, 절차를 나타내는 컴포넌트
디플로이먼트 다이어그램
-시스템의 물리적인 아키텍쳐의 배치방식을 보여줌
모듈 내부의 설계
-모듈 내부는 순차적이거나, 선택적, 반복적임
-알고리즘에 의해 설계된 처리로직에 따라 데이터는 변환, 계산, 새로운 결과 도출을 함
소프트웨어 아키텍쳐
건축에서의 아키텍쳐
-평면도만으로는 건물을 지을 수 ㅇ없음
소프트웨어 아키텍처 모델링
-시스템을 개발하기 위한 여러가지 관점의 제시가 필요
-소프트웨어 공학에서의 아키텍쳐
>먼저, 전체 시스템의 전반적인 구조를 개략적으로 설계
>세부적인 서브시스템 혹은 모듈이 상호작용하는 방식을 이해하기 쉽도록 설계
설계
-시스템을 서브시스템으로 분해하여 서브시스템의 제어와 통신, 그리고 서브시스템끼리의 상호작용을 위한 프레임워크를 설정하는 설계 프로세스
소프트웨어 아키텍처의 4+1 관점
'학점은행제 > 소프트웨어 공학' 카테고리의 다른 글
데이터베이스 설계 (0) | 2024.12.08 |
---|---|
소프트웨어 개발 프로젝트 (0) | 2024.10.26 |
소프트웨어 공학 (6) | 2024.10.19 |