Modular Programming
Modular Programming ⊆ Structured Programming
- Divide-and-Conquer 이론: Module 화의 기본
(문제를 여러 개로 분해하여 해결한 후 풀린 부분 문제들을 거꾸로 조합하여 원래의 문제를 푸는 방식이다.)
Module의 특징
1. 독립적으로 Test / 수행이 가능
2. 하나의 Entry(입구)와 하나의 Exit(출구)가 존재
3. 제어 구조를 가짐(순차구조, 선택구조, 반복구조)
(Module화는 Program의 복잡도, 개발유지/보수 비용, Error 발생률을 제어해준다.)
Modular Programming의 장점
1. Program을 이해하는데 용이
2. Test하는데 용이
3. 수정 / 보완에 용이
4. 유지 / 보수 비용 감소
(Module의 크기가 작기때문에 이러한 장점이 나타난다.)
Module의 크기 결정
- IBM > 50 라인 이하를 권장
- Weinberg > 30개 이하의 명령어가 적당
- 일반적으로, 10~100개 정도의 명령어가 적당(1개의 Module 안에)
* Structured Programming은 Object-Oriented Programming(객체 지향)으로 발전 후 CBD(Component-based-Develoment)기법으로 발전
Object-Oriented Programming 객체 지향 기술 요소 - 객체(Object): Data + 연산으로 이루어짐 - 클래스(Class): Data + Method로 이루어짐 - 메시지(Message): 객체와 객체 간의 정보 교한 CBD 기법 재사용 - Component를 생성/통합 - 품질 향상, 안정성 확보, 개발 전체 비용 감소, 유지/보수 비용 감소 - Plug & Play 기술 개발 *Plug & Play란? 꽂아서(Plug) 바로 사용(Play)한다는 의미로 컴퓨터에 주변기기를 추가할 때 별도의 물리적인 설정을 하지 않아도 설치만 하면 그대로 사용할 수 있도록 하는 기능 |
복잡도 측정법
- 1970년대 개발
- Module의 크기가 주된 요인
- 자동화 가능
1. S/W Science 이론
- Module 길이(N) = N1 + N2 (N1: 연산자의 총 수, N2: 피연산자의 총 수) - 기준(N') = n1log2n1 + n2log2n2 (n1: 서로 다른 연산자 총 수, n2: 서로 다른 피연산자 총 수) - 자신이 디자인한 Module의 길이(N)와 기준(N')이 비슷할 때가 가장 이상적임 |
2. Control Variable Complexity 기법
- Cm = C + V (C: 비교 횟수, V: 비교시 참조된 유일한 변수의 수) - (Cm1 + Cm2 + ... + Cmn) / n = 평균 복잡도 - 평균 복잡도를 구한 후 Module들을 평균 복잡도 근처 값으로 조절 |
3. Cyclomatic Number 기법
- Module의 제어흐름에 의해 복잡도 측정 - 수학적 관점 > Cyclomatic Number = edge 수 - node 수 + 2*접속 성분 수 - 복잡도 관점 > Cyclomatic Number = 비교 횟수 + 1 (기준 = 10) |
Module 간의 관계성
- 결합도(Coupling): Module들 간의 독립성 정도
- 반 결합도(Decoupling)
- 응집도(Cohesion): Module의 기능이 독립적으로 확실히 정의되었을 때
<결론>
좋은 프로그래밍이란?
- 좋은 프로그래밍은 Module들 간 결합도는 낮고 응집도는 높은 프로그래밍이다.
'소프트웨어공학' 카테고리의 다른 글
[S/W] DFD(Data Flow Diagram) & DD(Data Dictionary) (0) | 2022.11.25 |
---|---|
[S/W] Programming 개발 방법론 & Diagrams (0) | 2022.11.18 |
[S/W] Structured Program의 성격 (0) | 2022.10.26 |
[S/W] Structured Programming(구조화 프로그래밍) & H/W의 발달 (0) | 2022.10.19 |
[S/W] S/W Cost Estimation(S/W 비용 추정) (0) | 2022.10.12 |