- 소프트웨어의 골격이 되는 기본 구조
- 구성하는 요소들 간의 관계를 표현하는 시스템의 구조
- 이해관계자들의 의사소통 도구
- 좋은 품질 유지
- 비기능적 요구사항 : 나타난 제약 반영
- 기능적 요구사항 : 구현하는 방법을 찾는 해결과정
- 애플리케이션 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 결정
- 모듈화, 추상화, 단계적 분해, 정보은닉
💡 상위설계 & 하위설계
상위설계 | 하위설계 | |
별칭 | 아키텍처 설계, 예비 설계 | 모듈 설계, 상세 설계 |
설계 대상 | 시스템의 전체적인 구조 | 시스템의 내부 구조 및 행위 |
세부 목록 | 구조, DB, 인터페이스 | 컴포넌트, 자료구조, 알고리즘 |
1. 모듈화 (Modularity)
- 프로젝트 재사용성 향상
- 너무 작게 나누면 개수가 많아져 모듈 간 통합 비용 多
- 너무 크게 나누면 개수가 적어 통합 비용은 적게 들지만 노듈 하나의 개발 비용 多
- 기능의 분리 가능, 인터페이스 단순
- 프로그램의 효율적인 관리 가능, 오류 파급효과 최소화
2. 추상화 (Abstraction)
- 전체적이고 포괄적인 개념 설계 후 차례로 세분화해 구체화시켜 나가는 것
- 최소 비용으로 실제 상황 대처, 시스템 구조 및 구성 파악
💡 추상화 유형
- 과정 추상화 : 전반적인 흐름만 파악할 수 있게 설계
- 데이터 추상화 : 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
- 제어 추상화 : 대표할 수 있는 표현으로 대체하는 방법
3. 단계적 분해 (Stepwise Refinement)
- 하향식 설계 전략
- 위의 중요 개념으로부터 하위의 개념으로 구체화 시키는 분할 기법
- 추상화의 반복에 의해 세분화
- 점차적으로 구체화, 알고리즘, 자료 구조 등 상세 내역은 가능한 뒤로 미루어 진행
4. 정보 은닉 (Information Hiding)
- 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
- 정보 은닉된 모듈과 커뮤니케이션할 필요가 있을 때는 반드시 필요한 정보만 인터페이스를 통해 교환
- 모듈을 독립적으로 수행
- 하나의 모듈이 변경되더라도 다른 모듈에 영향을 주지 않으므로 수정, 시험, 유지보수 용이
5. 소프트웨어 아키텍처의 품질 속성
- 품질 평가 요소 구체화
1) 시스템 측면
- 성능 : 적절하고 빠르게 처리
- 보안 : 허용된 접근에 적절한 서비스 제공
- 가용성 : 장애없이 정상적으로 서비스 제공
- 기능성 : 요구한 기능 만족스럽게 구현
- 사용성 : 명확하고 편리하게 구현
- 변경 용이성 : 다른 플랫폼에서도 동작할 수 있도록 구현
- 확장성
- 기타 속성 : 테스트 용이성, 배치성, 안정성
2) 비즈니스 측면
- 시장 적시성 : 정해진 시간에 프로그램 출시
- 비용과 혜택 : 유연성이 떨어지는 경우 유비조수에 많은 비용 소모
- 예상 시스템 수명 : 수명이 길어야 한다면 '변경용이성', '확장성' 중요
- 기타 속성 : 목표 시장, 공개 일정, 기존 시스템과 통합
3) 아키텍처 측면
- 개념적 무결성 : 구성요소들 간의 일관성 유지
- 정확성, 완결성 : 요구사항들의 제약사항들을 모두 충족시키는 것
- 구축 가능성 : 모듈 단위로 구분된 시스템을 적정하게 분배해 유연하게 일정 변경
- 기타 속성 : 변경성, 시험성, 적응성, 일치성, 대체성
6. 소프트웨어 아키텍처 설계과정
> 설계 목표 설정 → 시스템 타입 결정 → 아키텍처 패턴 적용 → 서브시스템 구체화 → 검토
시스템 타입
- 대화형 시스템 : 사용자 요구를 처리하고 반응하는 시스템
- 온라인 쇼핑몰과 같은 대부분 웹 애플리케이션
- 이벤트 중심 시스템 : 외부 상태 변화에 동작하는 시스템
- 전화, 비상벨 등의 내장 소프트웨어
- 변환형 시스템 : 데이터 입력되면 정해진 작업을 수행해 결과를 출력하는 시스템
- 컴파일러, 네트워크 프로토콜
- 객체 연속형 시스템 : Database를 통해 파일을 효과적으로 저장, 검색, 갱신할 수 있는 시스템
- 서버 관리 소프트웨어
협약 (Contract)에 의한 설계
- 선행조건 (Precondition) : 오퍼레이션이 호출되기 전에 참이 되어야할 조건
- 결과조건 (Postcondition) : 오퍼레이션이 수행된 후 만족되어야 할 조건
- 불변조건 (Invariant) : 오퍼레이션이 실행되는 동안 항상 만족되어야할 조건
📖 Reference
728x90
반응형
'Certificate > 정보처리기사' 카테고리의 다른 글
[1과목 소프트웨어 설계] 애플리케이션 설계 - 023. ⭐ 객체지향 (Object-Oriented) (0) | 2024.05.28 |
---|---|
[1과목 소프트웨어 설계] 애플리케이션 설계 - 022. ⭐ 아키텍처 패턴 (1) | 2024.05.28 |
[1과목 소프트웨어 설계] 화면설계 - 020. HCI / UX / 감성공학 (0) | 2024.05.24 |
[1과목 소프트웨어 설계] 화면설계 - 019. UI 상세 설계 (0) | 2024.05.23 |
[1과목 소프트웨어 설계] 화면설계 - 018. 유용성 평가 (0) | 2024.05.22 |