0. 서론
- 정보처리기사 자격증을 준비하는 사람들을 위한 다섯 번째 요약 포스팅입니다.
이번 장에서는 소프트웨어 설계 중, '애플리케이션 설계' 에 대해 배워 볼 것입니다.
애플리케이션 설계 시 어떤 개념을 알아야 할지에 중점을 맞춰서 봐주시면 좋을 것 같습니다.
1. 공통 모듈 설계
- 공통 모듈은 왜 설계하는 것일까요? 공통 모듈의 설계는 '효율성' 에 초점이 맞춰져 있습니다.
*효율성은 재사용이 용이한 것을 뜻합니다.
1) 재사용
- 기존의 소프트웨어 혹은 지식을 활용하여 새로운 소프트웨어를 구축하는 것입니다.
- 함수, 객체 재사용 / 컴포넌트 재사용 / 애플리케이션 재사용 총 3가지로 구성되어 있습니다.
2. 모듈
1) 개념
- 모듈은 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어입니다.
- 모듈화를 통해 서브 프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 동일한 의미로 사용됩니다.
2) 특징
- 독립성, 다양한 조합, 재사용, 영향 최소화 4가지로 구성되어있습니다.
2.1) 독립성
- 결합도와 응집도로 판별이되며, 각 모듈은 상대적 독립성을 갖고 있습니다.
2.2) 다양한 조합
- 모듈 내부에는 모듈을 하나로 통합하는 조합이 많이 존재할 수 있습니다.
2.3) 재사용
- 모듈은 재사용이 가능합니다.
2.4) 영향 최소화
- 독립성이 높은 모듈일수록, 수정 시 다른 모듈에게 영향을 적게 미칩니다.
3. 공통 모듈
1) 개념
- 전체 프로그램 중 특정 기능을 처리할 수 있는 실행 코드를 의미하며, 여러 프로그램에 공통적으로 사용 가능한 모듈을 의미합니다.
2) 원칙
- 1)정확성 2)명확성 3)완전성 4)일관성 5)추적성 5가지로 구성되어 있습니다.
2.1) 정확성
- 해당 기능이 필요한지 아닌지를 알 수 있도록 작성해야 합니다.
2.2) 명확성
- 일관되고, 오해의 여지가 없도록 작성해야 합니다.
2.3) 완전성
- 필요 및 요구되는 모든 것을 빠짐없이 작성해야 합니다.
2.4) 일관성
- 공통 기능 간에 충돌이 없도록 작성해야 합니다.
2.5) 추적성
- 공통 기능에 대한 요구사항 출처와 관련 시스템의 관계를 추적할 수 있도록 작성해야 합니다.
4. 모듈화
1) 개념
- 프로그램이 효율적으로 관리될 수 있도록 분할하여 1)성능 2)수정 3)재사용 4)유지관리에 이득을 얻기 위함입니다.
- 모듈화 기법에는 전체를 포함하여 루틴이라 부르며, 메인 루틴(주요 부분)과 서브루틴(메인 루틴에 의해 호출)로 나뉩니다.
5. 좋은 모듈화는 무엇인가?
- 모듈의 크기와 개수가 적당해야합니다.
*모듈의 크기가 작고 개수가 많으면, 통합 비용이 증가합니다.
*모듈의 크기가 크고 개수가 적으면, 개별 개발 비용이 증가합니다.
6. 응집도와 결합도
- 응집도는 높을 수록 독립성이 뛰어납니다
- 결합도는 낮을 수록 독립석이 뛰어납니다.
1) 응집도
- 응집도는 모듈 내부 구성원들의 관련 정도를 나타냅니다.
*모듈 '내부'임을 확실히 기억해야 합니다.
- 우연적<논리적<시간적<절차적<통신적<순차적<기능적 순으로 응집도가 높아지며 독립성이 뛰어납니다.
2) 결합도
- 결합도는 모듈 간의 상호 의존성을 나타내는 것입니다.
*모듈과 '모듈 간'임을 확실히 기억해야 합니다.
- 내용>공통>외부>제어>스탬프>자료 결합도 순으로 결합도가 낮아지며, 독립성이 높아집니다.
7. 효율적인 모듈 설계 유의사항
- 모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상됩니다.
- 중복되는 것을 줄이고, 일관적이 되도록 유지시켜야 합니다.
- 모듈의 기능은 예측가능하되, 지나치게 제한적이면 안됩니다.
- 유지 보수가 용이 하며, 모듈의 수와 크기를 적당히 유지해야 합니다.
*모듈의 수가 지나치게 증가하면 과부하(Overload) 현상이 나타납니다.
8. Fan In/Out
- 쉽게 생각하면, 팬인(Fan-In)은 능동적으로 영향을 미치는 것이고 팬아웃(Fan-Out)은 수동적으로 영향을 받는 것입니다.
- 팬인과 팬아웃의 계산방법은 알아두시는 편이 좋습니다.
9. 마치며
- 모두 해당 자료로 공부하여, 정보처리기사 필기 시험을 잘 보시기 바랍니다.
자료는 요약본이 올라가며, 모르는 용어와 그림은 직접 찾아보면 공부에 더 큰 도움이 될 것입니다.
긴 글 읽어주셔서 감사합니다.
- 다음 포스팅은 '설계 모델링과 객체 지향 설계'에 대해 알아보겠습니다.
'정보처리기사[필기]' 카테고리의 다른 글
[정보처리기사][요약]1. 소프트웨어 설계(4)설계 모델링 (0) | 2023.05.19 |
---|---|
[정보처리기사][요약]1. 소프트웨어 설계(2)화면 설계 (0) | 2023.05.15 |
[정보처리기사][요약]1. 소프트웨어 설계(1)요구사항확인(3.분석모델) (0) | 2023.05.15 |
[정보처리기사][요약]1. 소프트웨어 설계(1)요구사항(2.확인) (0) | 2023.05.11 |
[정보처리기사][요약]1. 소프트웨어 설계(1)요구사항(1.현행시스템) (0) | 2023.05.09 |