소프트웨어 설계의 기본 원칙
소프트웨어 기본 설계 원칙에는 의외로 시험에 많이 나오는 것들이 있습니다. 소프트웨어 설계의 원리에서 분할과 정복 외여러 개념과 소프트웨어 설계단계중 협약에 의한 1과목에서 중요한 부분이 많으니, 천천히 반복해서 읽어보시면 도움이 되실 겁니다.
목차
소프트웨어 설계란?
요구사항 명세서를 참조하여 소프트웨어의 구체적인 설계서를 작성하는 단계
물리적으로 구현이 가능하도록 시스템을 구체적으로 정의하는 단계
소프트웨어 설계의 종류
CASE도구에서 많이 들어본 하위, 상위 설계에 대한 내용입니다.
상위 설계
아키텍처 -> 데이터 -> 인터페이스 정의 -> 사용자 인터페이스
- 아키텍처 설계: 전체 시스템의 구조와 구성 요소 간의 상호작용을 정의합니다. 이는 시스템의 전체적인 틀을 제공하며, 각 구성 요소의 역할과 기능을 명시합니다.
- 데이터 설계: 시스템에서 사용될 데이터의 종류와 구조를 설계합니다. 데이터베이스 설계도 여기에 포함됩니다. 이 단계에서는 데이터의 저장 방식, 관리 방법 등을 결정합니다.
- 인터페이스 정의: 시스템의 외부와의 상호작용을 정의합니다. 이는 다른 시스템, 사용자, 외부 기기 등과의 상호작용을 위한 인터페이스를 설계하는 것을 포함합니다.
- 사용자 인터페이스 설계: 사용자가 시스템과 상호작용할 때 사용할 인터페이스를 설계합니다. 이는 시스템의 사용성과 사용자 경험을 향상시키는 데 중요합니다.
하위 설계
모듈설계가 최상위 개념
모듈 -> 자료구조 -> 알고리즘
- 모듈 설계: 상위 설계에서 정의된 구성 요소를 실제로 구현할 개별 모듈로 분해합니다. 각 모듈의 기능과 역할을 명확히 정의하고, 모듈 간의 인터페이스를 설계합니다.
- 자료구조 설계: 각 모듈에서 사용될 데이터의 구조와 저장 방식을 설계합니다. 이는 데이터의 조직화와 접근 방법을 결정하는 것을 포함합니다.
- 알고리즘 설계: 각 모듈에서 수행될 작업을 수행하는 알고리즘을 설계합니다. 이는 주어진 문제를 해결하기 위한 효율적인 절차나 방법을 정의하는 것을 의미합니다.
소프트웨어 설계의 원리
분할과정복(Division & Conqur)
큰 소프트웨어를 작은 서브시스템으로 분할하여 개별적으로 완성함으로써 복잡성을 줄이고 개발을 용이하게 합니다.
추상화
핵심화 위주로 단순화.
자세한 구현을 하기 전에 상위레벨에서 생각해보는 것
추상화 유형 | 설명 |
과정 추상화 | 시스템이나 프로그램이 수행하는 작업의 세부 사항을 숨기고, 작업의 논리적인 구조와 순서를 간결하게 나타내는 것을 의미합니다. 이는 시스템의 복잡성을 줄이고 유지보수를 용이하게 합니다. |
데이터 추상화 | 데이터 추상화는 데이터의 세부 사항을 숨기고, 데이터의 구조와 유형을 간결하게 표현하는 것을 말합니다. 이는 데이터의 복잡성을 관리하고 데이터를 보다 효율적으로 관리하고 조작할 수 있게 합니다. |
제어 추상화 | 제어 추상화는 프로그램의 제어 흐름과 로직을 간결하게 표현하는 것을 의미합니다. 이는 프로그램의 제어 구조를 숨기고, 프로그램의 기능에만 집중할 수 있도록 도와줍니다. 제어 추상화는 프로그램의 모듈화와 재사용성을 촉진합니다. |
단계적 분해
분석에서 쓰는 것 분할과 정복은 개발에서 쓰는 것
모듈화
소프트웨어를 작은 단위로 분할하여 관리하는 것을 말합니다. 각 모듈은 재사용 가능하고 독립적으로 테스트할 수 있는 기능 단위를 의미하며, 이는 시스템의 유지보수성과 확장성을 향상시킵니다.
정보은닉
객체의 내부 구현 상세를 숨기고, 외부에서는 객체에 접근할 때 제공되는 인터페이스만을 사용하도록 하는 것을 의미합니다. 이는 객체의 상태와 동작을 안전하게 보호하고, 객체 간의 결합도를 낮추어 시스템의 유연성을 증가시킵니다.
- 객체가 자신의 정보를 숨기고, 외부의 접근을 제한.
- 캡슐화 밀접한 관련이 있는 개념.
- 데이터와 기능을 안전하게 보호
- GET 메서드, SET 메서드로 PRIVATE 처리된 변수들을 가져옴.
결합도와 응집도
결합도는 낮게!, 응집도는 높게!
- 결합도: 결합도는 모듈 간의 상호 의존성을 나타내며, 높은 결합도는 한 모듈의 변경이 다른 모듈에 영향을 미칠 가능성이 크다는 것을 의미합니다. 따라서 낮은 결합도를 갖는 시스템은 모듈 간의 의존성이 낮아져 변경이나 유지보수가 쉽고, 재사용성이 높아집니다.
- 응집도: 응집도는 모듈 내부의 구성 요소들 간의 관련성을 나타내며, 높은 응집도는 한 모듈 내에서 관련 있는 기능들이 모여있음을 의미합니다. 따라서 높은 응집도를 갖는 모듈은 기능이 밀접하게 연관되어 있어 모듈의 이해와 유지보수가 쉬우며, 시스템의 안정성과 품질을 향상시킵니다.
설계 모델링
설계 모델링은 시스템의 구조와 동작을 명확하게 이해하고 문서화하는 데 도움을 줍니다. 또한, 이를 통해 팀 간의 의사소통을 원활하게 하고, 시스템의 변경 사항을 추적하고 분석할 수 있습니다. UML은 이러한 모델링을 위한 널리 사용되는 표준화된 언어입니다.
구조와 기능을 그림으로 제시하여 시각적으로 보기 위한 것
구조모델링
객체모델링에 해당하면서 UML의 정적 다이어그램을 활용한다.
구성요소와 그 사이를 모델링
- 정의: 구조 모델링은 시스템의 구성 요소들 간의 관계와 상호 작용을 표현하는 것입니다.
- 객체 모델링: 객체 모델링은 시스템을 객체들의 집합으로 모델링하는 것입니다. 이는 객체의 속성, 메서드, 상호 작용을 고려하여 UML의 정적 다이어그램인 클래스 다이어그램을 활용하여 표현됩니다.
- 구성요소와 그 사이의 모델링: 시스템을 이루는 구성 요소들 간의 관계를 표현합니다. 이는 각 요소의 역할과 책임을 명확히 하고, 시스템의 전체 구조를 이해하는 데 도움이 됩니다.
행위 모델링
구성요소의 기능 수행 순서와 방식 모델링
UML 동적 모델링
- 정의: 행위 모델링은 시스템의 동작과 기능을 표현하는 것입니다.
- 기능 수행 순서와 방식 모델링: 각 구성 요소의 기능을 수행하는 과정과 순서를 표현합니다. 이는 UML의 동적 모델링에서 활용되며, 상태 다이어그램, 시퀀스 다이어그램, 활동 다이어그램 등이 사용될 수 있습니다.
소프트웨어 설계 절차 및 유형
협약에 의한 설계(선결불)
설계 | 설명 |
선행조건 | 설계가 시작되기 전에 충족되어야 하는 조건을 명시합니다. 이는 설계 프로세스가 원활하게 진행되기 위한 필수적인 전제조건을 정의합니다. |
결과조건 | 설계 작업이 완료되었을 때 달성해야 하는 목표와 기대되는 결과를 정의합니다. 이는 설계의 완료 기준이 되며, 성공적인 설계를 위한 명확한 목표를 제시합니다. |
불변조건 | 설계 작업 중에 변경되지 않아야 하는 사항들을 명시합니다. 이는 설계의 안정성과 일관성을 유지하기 위해 필요한 기본적인 전제조건을 정의합니다. |
'정보처리기사' 카테고리의 다른 글
[정처기실기] 7. UML - 1과목 소프트웨어 구축 (3) | 2024.03.17 |
---|---|
[정보처리기사] 6. 소프트웨어 아키텍처 - 1과목 소프트웨어 구축 (0) | 2024.03.15 |
[정보처리기사] 4. 요구사항 분석 - 소프트웨어 개발 방법론 (3) | 2024.03.14 |
[정처기 실기] 3. 프로젝트 계획 및 분석 - 1과목 소프트웨어 구축 (0) | 2024.03.13 |
[정보처리기사] 2. 소프트웨어 개발 방법론 - 1과목 소프트웨어 구축 (0) | 2024.03.12 |
댓글