소프트웨어 설계 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
[[분류:소프트웨어 공학]]
[[분류:소프트웨어 공학]][[분류:정보처리기사]]
[[분류:정보처리기사]]


==바람직한 설계==
== 바람직한 설계 ==
 
* 설계는 모듈적이어야 한다.
*설계는 모듈적이어야 한다.
* 요구사항을 모두 구현해야 하고 유지보수가 용이해야 한다.
*요구사항을 모두 구현해야 하고 유지보수가 용이해야 한다.
* 모듈의 [[결합도]]는 약하게, [[응집도]]는 강하게 설계해야 한다.
*모듈의 [[결합도]]는 약하게, [[응집도]]는 강하게 설계해야 한다.
* 설계는 자료와 프로시저에 대해 분명하고 분리된 표현을 포함해야 한다.
*설계는 자료와 프로시저에 대해 분명하고 분리된 표현을 포함해야 한다.
* 소프트웨어 요소들 간의 효과적 제어를 위해 설계에서 계층적 조직이 제시되어야 한다.
*소프트웨어 요소들 간의 효과적 제어를 위해 설계에서 계층적 조직이 제시되어야 한다.
* [[소프트웨어 품질|소프트웨어 품질 요구사항]]을 고려해야 한다.
*[[소프트웨어 품질|소프트웨어 품질 요구사항]]을 고려해야 한다.
 
== 문제 분할 ==
분할과 정복의 원칙을 적용하여 어느 수준까지 분할할지 판단 필요
 
==== 수평 분할 ====
 
* 기능들을 분리된 가지에 할당
* 단순한 형태는 입력, 데이터 변환, 출력 작업 담당하도록 분리
* 테스트, 유지보수, 확장이 용이하고 부작용의 파급 효과가 줄어듦
* 많은 데이터가 모듈 인터페이스를 통해 이동되어 전체 제어가 복잡해짐
 
==== 수직 분할 ====
 
* 제어와 작업을 위와 아래로 분산함
* 상위 수준의 모듈들은 제어 기능을, 하위의 모듈들은 실제 작업(입출력과 데이터 변형 작업)을 수행
* 작업 모듈이 변경되기 쉬우며, 제어 모듈이 변경되면 부작용이 큼
 
== 추상화 ==
 
* 모듈들을 추상화하여 표현
* 추상화란 내부의 상세한 내용을 생략하고 외부 행위만을 기술하는 것. 상세 설계와 구현 작업은 추상화되어 있는 각 모듈의 명세를 구현하는 작업
* 추상화된 시스템 모델을 통해 시스템의 분석이 가능함
 
==== 제어 추상화 ====
 
* 제어의 정확한 매커니즘을 정의하지 않고 원하는 효과를 정하는데 이용하는 방법
 
==== 기능 추상화 ====
 
* 수행하는 기능으로 모듈을 명세하는 것
* 전체를 작은 기능들로 분해하는 것(기능 중심의 분할 방법)
 
==== 데이터(자료) 추상화 ====
 
* 데이터와 데이터 조작에 필요한 오퍼레이션을 함께 묶는 것
* 객체의 상세한 구현 내용이 감추어지며 공개된 오퍼레이션만을 사용해야 함
 
== 하향식과 상향식 설계 ==
 
==== 하향식 설계 ====
 
* 계층 구조상에서 시스템의 주요 컴포넌트들을 찾고 그것을 낮은 수준의 컴포넌트들로 분해하는 것으로 단계적 정제라 하며 메인 모듈의 설계에서 시작하여 단계적으로 구체화시키는 것
* 하향식 설계에서는 통합 검사 시 인터페이스가 이미 정의되어 있어 통합이 간단하다.
* 하향식 설계에서 레벨이 낮은 데이터 구조의 세부 사항은 설계초기 단계에서 필요하다.
* 시스템 명세가 명확한 경우와 모든 것을 새로 개발하는 작업에는 하향식이 적합하다.
 
==== 상향식 설계 ====
 
* 가장 기본적인 컴포넌트를 먼저 설계한 다음 이것을 사용하는 상위 수준의 컴포넌트를 설계하는 것
* 상향식 설계는 최하위 수준에서 각각의 모듈들을 설계하고 이러한 모듈이 완성되면 이들을 결합하여 검사한다.
* 기존 컴포넌트들을 조합하여 시스템을 개발하는 경우에는 상향식이 적합
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)