학점은행제/소프트웨어 공학

소프트웨어 설계

Eprld 2024. 12. 6. 22:45

구조적 설계

 

소프트웨어 설계 개요

-추상화, 단계적 분해, 모듈화

-소프트웨어 설계

   >구현에 앞서 DB, user interface, 처리로직을 미리 장구하여 프로그램 개발의 청사진이 제시될 수 있도록 준비

-분석과 차이

   >분석은 문제를 정의, 설계는 문제를 해결

 

추상화

-자세한 구상에 앞서, 상위 레벨에서 소프트웨어의 설계결과를 먼저 생각해보고 요약하는 것

단계적 분해

-문제를 해결하기 위해 "분할과 정복"이라는 개념을 적용하는 것

-단계적 분해는 문제를 상위 개념부터 더 구체적인 단계로 하향식 분할하는 기법을 적용함

 

과정

-문제를 하위 수준의 독립된 단위로 나눔

-구분된 문제의 자세한 내용은 가능한 뒤로 미룸

-점증적으로 구체화 작업을 계속

 

모듈화

-수행 가능한 명령어를 잘라서 작은 독립단위로 나누어서 설계하는 것

 

특징

-자신의 이름을 가짐

-독립적으로 컴파일됨

-다른 모듈을 호출

 

응집도 : 모듈 내부에 수행하는 기능 간의 서로 관련되어 있는 정도

특징 : 강할 수록 좋은 설계, 응집도가 높으면 모듈 내부의 기능이 공통의 목적을 달성하기 위한 관련성이 높음

순서 : 기능 - 정보 - 교환 - 절차 - 시간 - 논리 - 우연

결합도 :  모듈간에 연결되어 있는 상호 의존하는 정도

결합도 특징 : 낮은 결합도가 더 좋은 설계 > 자료 - 구조 - 제어 - 공통 - 내용

 

구조적 설계 개요

-DFD를 기반으로 "구조도"를 작성하여 나타내는 것

 

변환분석

-변환기능을 수행하는 모듈을 중심으로 입력모듈과 출력모듈을 찾아내는 분석과정

-변환분석은 DFD를 입력기능, 변환기능, 출력기능으로 분할하여 시스템 구조도로 단계적인 계층을 만듦

 

트랜잭션 분석

-DFD의 한 프로세스에서 여러 개의 데이터흐름이 유출되는 경우에 이를 분석하기 위해 활용

-트랜잭션 분석은 새로운 기호인 "마름모꼴"을 추가함

-마름모꼴의 의미는 여러 모듈 중에서 선택적인 호출을 할 수 있도록 하는 "선택"의 표시

 

 

객체지향적 설계

 

객체지향 설계 개요

-분석에서 작성한 다이어그램을 더욱 구체적이고 상세하게 나타내면 됨

-클래스 추가, 메소드의 상세화, 관계형 데이터 베이스

 

유스케이스 설계

-내부 시나리오 > 정상 흐름, 예외 흐름, 비정상 흐름

 

시퀀스 다이어그램 설계

-구현 설계 요소들간의 상호 작용을 반영하여 다시 작성

-구현이 가능한 수준으로 설계요소들에게 책임을 부여

 

설계 방법

-공통적인 하부흐름은 없는지 체크

-추상화 레벨을 맞추어야 하며, 새로운 하부흐름은 별갸의 컴포넌트로 캡슐화

-클래스, 속성, 메소드의 이름이 적절한지 체크

-동일한 개념의 클래스는 합침

-필요 시 추상화 클래스를 도출하여 상속관계 설정

 

컴포넌트 다이어그램

-소프트웨어 컴포넌트 간의 종속관계, 혹은 모듈들 간의 종속관계를 보여줌

-수강신청 일정을 생성, 절차를 나타내는 컴포넌트

 

디플로이먼트 다이어그램

-시스템의 물리적인 아키텍쳐의 배치방식을 보여줌

 

모듈 내부의 설계

-모듈 내부는 순차적이거나, 선택적, 반복적임

-알고리즘에 의해 설계된 처리로직에 따라 데이터는 변환, 계산, 새로운 결과 도출을 함

소프트웨어 아키텍쳐

 

건축에서의 아키텍쳐

-평면도만으로는 건물을 지을 수 ㅇ없음

 

소프트웨어 아키텍처 모델링

-시스템을 개발하기 위한 여러가지 관점의 제시가 필요

-소프트웨어 공학에서의 아키텍쳐

   >먼저, 전체 시스템의 전반적인 구조를 개략적으로 설계

   >세부적인 서브시스템 혹은 모듈이 상호작용하는 방식을 이해하기 쉽도록 설계

 

설계

-시스템을 서브시스템으로 분해하여 서브시스템의 제어와 통신, 그리고 서브시스템끼리의 상호작용을 위한 프레임워크를 설정하는 설계 프로세스

 

소프트웨어 아키텍처의 4+1 관점

'학점은행제 > 소프트웨어 공학' 카테고리의 다른 글

데이터베이스 설계  (0) 2024.12.08
소프트웨어 개발 프로젝트  (0) 2024.10.26
소프트웨어 공학  (6) 2024.10.19