10. 애플리케이션 설계 B - TOTOLII/study GitHub Wiki
객체지향
-
객체 : 데이터와 그 데이터에 관련되는 동작을 모두 포함한 개념.
-
객체지향 : 현실세계의 객체를 속성과 메소드가 결합된 형태의 객체로 표현하는 개념이다.
-
객체 지향의 구성요소
- 객체 : 데이터 + 연산
- 메소드 : 객체의 구체적인 연산을 정의한 것
- 클래스 : 유사한 객체들을 모아 공통된 특성을 표현한 것.
클래스로 부터 생성된 새로운 객체를 인스턴스라고 한다. - 메시지 : 객체들 간의 상호작용이 일어나기 위해서 메세지가 필요하며
메세지를 통항 객체의 동작이 수행된다.
-
객체 지향기법
- 캡슐화 : 감춰 놓았다고 생각해보면 됨 (정보은닉)
- 상속 : 부모로 부터 물려받는 것이다.
- 추상화 : 단순화
- 다형성 : 고유한 방법으로 응답할 수 있는 것.
-
모듈화
모듈이란 소프트웨어를 각 기능별로 분할하는 것으로,
소프트웨어 구조를 이루는 기본 단위이다.
모듈의 특성은 독립성, 응집성, 결합성으로 총 3가지가 있는데,
결합성이란 모듈과 모듈 사이의 관련성으로 낮으면 낮을 수록 좋다.
응집성이란 모듈 안에 있는 명령어들 사이의 관련성으로 높으면 높을 수록 좋다.
독립성은 전체적으로 높아야 하며 결합도와 응집도에 의해 측정된다. -
결합도
한 모듈과 다른 모듈간의 상호의존도를 측정하는 것으로
독립적인 모듈이 되기 위해서는 결합도가 약해야 한다. -
결합도 종류
-
내용 결합도
하나의 모듈이 다른 모듈의 내용을 참조 하는 것.
하나의 모듈에서 내용을 바꾸면 다른 모듈에도 영향을 주는 것. -
공통 결합도
여러 모듈이 공통의 자료영역을 사용할 경우
따라서 자료영역을 조금만 변경해도 영향을 받는다. -
외부 결합도
외부로 선언한 데이터를 다른 모듈에서 참조 하는 것. -
제어 결합도
다른 모듈에 제어요소가 전달 될 때 사용됨. -
스탬프 결합도
배열이나 자료구조 혹은 레코드가 전달 될때의 결합도 -
데이터 결합도
모듈과 모듈간의 관계가 자료요소로만 이루어진것.
위의 순서대로 결합도가 강하다.(순서가 매우 중요함 '내공외제스데'로 암기할 것.)
-
-
응집도
한 모듈 내에 있는 구성 요소들이 서로 관련되어 있는 정도를 의미하며,
관련성을 측정 하는 것으로 응집도가 높도록 설계되어야 한다. -
응집도의 종류
-
기능적 응집도
모듈 내부의 모든 기능요소들이 단일 문제와 연관된 것이다. -
순차적 응집도
모듈 내의 하나의 활동으로 부터 나온 출력 결과가 다음 활동에 입력 데이터로 사용이 되는 경우 -
통신적(교환적) 응집도
동일한 입력 출력을 사용하는데, 서로 다른 기능을 수행하는 구성요소들이 모인 경우. -
절차적 응집도
모듈 안의 구성요소들이 순차적으로 수행될 경우 -
시간적 응집도
특정 시간에 처리되는 몇개의 기능을 모아서 하나의 모듈로 작성하는 경우 -
논리적 응집도
유사한 성격을 갖거나 특별한 형태로 분류되는 처리 되는 요소들이 하나의 모듈로 작성되는 경우 -
우연적 응집도
서로 관련 없는 요소들을 하나의 모듈로 작성하는 경우
-
-
공통 모듈
전체 프로그램의 기능 중 공통적으로 사용할 수 있는 모듈 -
공통 모듈 명세 작성 원칙
-
정확성
시스템 구현을 할 때 해당 기능이 필요한가 알수 있도록 정확하게 작성하는 것. -
명확성
해당 기능을 이용할 때 중의적으로 해석되지 않도록 명확하게 작성하는 것. -
완전성
시스템 구현을 위한 모든 것을 기술한다. -
일관성
공통된 기능들이 상호 충돌을 잃으키지 않도록 작성하는 것. -
추적성
기능에 대한 요구사항의 출처, 관계를 파악하여 작성 하는 것.
-