일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 프로그래머스 #JAVA #코딩테스트 #다음에 올 숫자 #코딩
- JAVA #객체지향언어 #절차지향언어 #코딩 #Python #C #C++ #객체지향 #절차지향
- 프로그래머스 #자바 #java #코딩테스트 #연속된 수의 합 #코딩
Archives
- Today
- Total
Javadocs
Chap 3 - 1. 소프트웨어 아키텍처 본문
Point!!
- 소프트웨어 아키텍처의 특징과 역할, 설계의 기본 원리를 확실히 파악!
- 모듈화의 특징을 묻는 문제가 출제. (모듈의 수가 증가하면 상대적으로 각 모듈의 크기가 작아진다는 것을 중심으로 특징을 정리할 것.)
- 추상화의 유형이 아닌 것을 묻는 문제가 출제.
- 정보 은닉의 특징을 묻는 문제가 출제.
1. 소프트웨어 아키텍처의 설계
소프트웨어의 골격이 되는 기본 구조이자, 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
- 소프트웨어 개발 시 적용되는 원칙과 지침이며, 이해 관계자들의 의사소통 도구로 활용.
- 기본적으로 좋은 품질을 유지하면서 사용자의 비기능적 요구사항으로 나타난 제약 반영하고, 기능적 요구사항을 구현하는 방법을 찾는 해결 과정이다.
- 애플리케이션의 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 등을 결정.
- 소프트웨어 아키텍처 설계의 기본 원리
- 모듈화
- 추상화
- 단계적 분해
- 정보은닉
상위 설계 | 하위 설계 | |
별칭 | 아키텍처 설계, 예비 설계 | 모듈 설계, 상세 설계 |
설계 대상 | 시스템의 전체적인 구조 | 시스템의 내부 구조 및 행위 |
세부 목록 | 구조, DB, 인터페이스 | 컴포넌트, 자료 구조, 알고리즘 |
2. 모듈화(Modularity)
소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈* 단위로 나누는 것을 말한다.
* 모듈?
모듈화를 통해 분리된 시스템의 각 기능들.
서브루틴, 서브 시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용.
- 공통 모듈로 구성하여 프로젝트의 재사용성을 향상시킬 수 있음.
- 모듈의 크기를 너무 작게 나누면 개수가 많아져 모듈 간의 통합 비용이 늘어나고, 크게 나누면 개수가 적어 통합 비용은 적게 들지만 모듈 하나의 개발 비용이 늘어난다.
- 모듈화를 통해 기능의 분리가 가능하여 인터페이스가 단순해짐.
- 프로그램의 효율적인 관리가 가능.
- 오류의 파급 효과를 최소화 할 수 있다.
3. 추상화(Abstraction)
문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것.
- 완전한 시스템을 구축하기 전, 그 시스템과 유사한 모델을 만들어 여러 가지 요인들을 테스트 할 수 있다.
- 최소의 비용으로 실제 상황을 대처할 수 있고, 시스템의 구조 및 구성을 대략적으로 파악할 수 있다.
추상화의 유형
- 과정 추상화 - 전반적인 흐름만 파악할 수 있게 설계하는 방법
- 데이터 추상화 - 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
- 제어 추상화 - 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법
4. 단계적 분해(Stepwise Reinement)
하향식 설계 전략.
문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법
- 추상화의 반복에 의해 세분화
- 소프트웨어의 기능에서부터 시작해 점차적으로 구체화
- 알고리즘, 자료 구조 등 상세한 내역은 가능한 한 뒤로 미루어 진행
5. 정보 은닉(Information Hiding)
한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법.
- 정보 은닉을 통해 모듈을 독립적으로 수행할 수 있다.
- 하나의 모듈이 변경되더라도 다른 모듈에 영향을 주지 않으므로 수정, 시험, 유지보수가 용이.
'[ 정보처리기사 ] > [정보처리기사] 1. 소프트웨어 설계' 카테고리의 다른 글
Chap.1 - 요구사항 확인(2) (1) | 2023.05.14 |
---|---|
Chap.1 - 요구사항 확인(4) (0) | 2023.05.12 |
Chap.1 - 요구사항 확인(1) (0) | 2023.05.05 |
Chap 3 - 3. 객체지향(Object-Oriented) (0) | 2023.03.11 |
Chap 3 - 2. 아키텍처 패턴 (0) | 2023.03.09 |
Comments