개발의변화
1-3 애플리케이션 설계 본문
재사용
함수와 객체 재사용
컴포넌트 재사용
애플리케이션 재사용
모듈의 특징
독립성, 다양한 조합, 재사용, 영향 최소화
공통 모듈 원칙(정명완일추)
정확성, 명확성, 완전성, 일관성, 추적성
모듈화
바람직한 모듈 설게 방안
루틴, 메인 루틴, 서브 루틴
바람직한 모듈 설계 방안
모듈의 독립성과 재사용성을 높이기 위하여 결합도는 낮추고 응집도는 높인다
모듈의 복잡도와 중복성을 줄이고 일관성을 유지
모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다
응집도: 모듈의 내부 요소들의 서로 관련되어 있는 정도, 독립적인 기능으로 정의되어 있는 정도
결합도: 모듈 간에 상호 의존하는 정도, 두 모듈 사이의 연관 관계를 맺고 있는 정도
응집도
모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
정보 은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미
우연적 < 논리적< 시간적< 절차적< 통신적< 순차적<기능적 응집도
우연적 응집도(Coinicidental)
서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도
논리적 응집도(Logical)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
시간적 응집도(Temporal)
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적 응집도(Procedural)
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적 응집도(Communication)
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모아 있을 경우의 응집도
순차적 응집도(Sequential)
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
기능적 응집도(Functional)
모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도
결합도(내공외제스자)
내용 결합도(Content Coupling)
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도, 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도
공통 결합도(Common Coupling)
피라미터가 아닌 모듈 밖에 선언되어 있는 전역변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우 결합도
공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
외부 결합도(External Coupling)
두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도
제어 결합도(Control Coupling)
어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우의 결합도
스탬프 결합도(Stamp Coupling)
모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
두 모듈이 동일한 자료 구조를 조회하는 경우 결합도, 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미치게 됨
자료 결합도(Data Coupling)
모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도
설계 모델링
요구사항 분석 단계에서 규명된 필수 기능들의 구체적인 구현 방법을 명시
소프트웨어 설계 유형
자료구조 설계, 아키텍처 설계, 인터페이스 설계, 프로시저 설계, 협약에 의해 설계
소프트웨어 설계 원리
상향식 설계: 하위 기능들로부터 시작하여 제일 상위에 있는 기능 접근해가는 방식(기존 컴포넌트들을 조합하여 시스템을 개발하는 경우)
하향식 설계: 상위에 있는 기능에서 시작하여 기능을 하위 기능들로 분할해 가면서 설계(시스템 명세가 명확한 경우와 모든 것을 새로 개발하는 작업에 적합)
코드의 기능
표준화,분류,식별,배열,간소화,연상,암호화,오류 검출
코드 설계 종류
연상 코드
코드만 보고 대상을 연상할 수 있도록 명칭 일부를 약호 형태로 넣어 연상할 수 있도록 하는 코드
블록 코드
공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 코드
순차 코드
일정한 기준에 따라 순서대로 일련번호를 부여하는 코드
표의 숫자코드
대상 자료의 물리적인 수치인 길이, 넓이, 옹량 등을 표현한 코드
십진 코드
10진수 형태로 표현한 코드
그룹 분류식 코드
코드 오류 종류
사본 오류(Transcription Error)
한 자리를 잘못 표기할 경우=> 필사 오류, 오자 오류라고도 불림
전위 오류(Transposition Error)
연속된 두 글자가 서로 바뀌어 표기된다
생략 오류(Omission Error)
한 글자를 빼먹고 기술한 경우
첨가 오류(Addition Error)
한 글자를 추가되어 기술한 경우
이중 전위 오류(Double Transposition Error)
전위 오류가 중복 발생한 경우
HIPO(Hierarchy Input Process Output)
시스템의 분석 및 설계, 문서화할 떄 사용되며, 하향식 소프트웨어 개발을 위한 문서화 도구
HIPO 차트 종류에는 가시적 도표, 총체적 도표, 세부적 도표
기능과 자료의 의존관계를 동시에 표현할 수 있다
파이프 필터 형태의 소프트웨어 아키텍처
서브 시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복
소프트웨어의 상위 설계
아키텍처 설계, 인터페이스 정의, 사용자 인터페이스 설계
소프트웨어의 하위 설계
모듈 설계
객체 지향 설계
클래스
객체
일정한 기억장소 가지고 있음
객체마다 각각의 상태를 갖고 있다
식별성을 가진다
행위에 대하여 그 특징을 나타낼 수 있다
메서드
메시지
객체에게 어떤 행위를 하도록 지시하기 위한 방법
인스턴스
각각의 객체를 의미, 프로그램에서 클래스를 통해 만든 실제의 실행 객체, 프로그램의 실행 단계에서 나타남
속성
객체 지향 기법
캡슐화
서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
결합도가 낮아지고 재사용이 용이
인터페이스가 단순화됨
정보 은닉과 관계가 깊음
변경 발생 시 오류의 파급 효과가 적음
상속성
상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법
다형성
하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용
오버로딩: 매개변수의 유형과 개수를 다르게 하여 같은 이름의 메서드 여러 개 가지는 기법
오버라이딩: 상위 클래스에서 정의한 일반 메서드의 구현을 하위 클래스에서 무시하고 재정의할 수 있는 기법
추상화
공통 성질을 추출하여 추상 클래스를 설정하는 기법
자료 추상화, 제어 추상화, 과정 추상화
정보 은닉
캡슐화와 연관(Encapsulation)
고려되지 않은 영향들을 최소화하기 위하여
코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
필요하지 않은 정보는 접근할 수 없도록 하여 한 모듈 또는 하부 시스템이 다른 모듈의 구현에 영향을 받지 않게 설계됨
관계성
두 개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내느 기법
연관화: is-member-of 관계, 클래스와 객체의 참조 및 이용관계, 같은 계층에 속하는 클래스들 사이의 상호 의존성을 보여주는 비계층적 관계성
집단화 : is part of,part whole 관계, 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체를 만드는 특징
분류화
is-instance-of, 공통된 속성에 의해 정의된 객체 구성원들의 인스턴스
일반화
is-a , 클래스 간의 개념적인 포함 관계
특수화
is-a, 상위 클래스의 특성들을 상속받으면서 하위 클래스에서 나름대로 수정을 가하고 자기 자신의 고유한 특성을 갖는 관계
객체 지향 설계 원칙(SOLID)
단일 책임의 원칙(Single Responsibility Principle)
하나의 클래스는 하나의 목적을 위해서 생성되며, 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 것
개방 폐쇠 원칙(Open Close Principle)
소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)
리스코프 치환의 원칙(Liskov Substitution Principle)
서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입으로 교체할 수 있어야 한다는 원칙
인터페이스 분리의 원칙(Interface Segregation Principle)
한 클래스는 자신이 사용하지 않은 인터페이스는 구현하지 말아야 한다는 원칙
의존성 역전의 원칙(Dependency Inversion Principle)
실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙
객체 지향 방법론
OOSE(야콥슨)
유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용되는 방법론
OMT(럼바우)
그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링
객체-동기-기능(객동기)
ODD(부치)
설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
분석과 설계의 분리가 불가능
분석하는 데 이용된 객체 모델의 설계 시 적용
Coad와 Yourdon
E-R다이어그램을 사용하여 객체의 행위를 모델링하여, 객체 식별, 구조 식별,주체 정의 등의 과정으로 구성되는 방법
Wirls-Brock
분석과 설계 간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 분석 방법
ㅜ
디자인 패턴 구성요소(패문솔사결샘)
패턴의 이름, 문제 및 배경, 솔루션, 사례, 결과, 샘플 코드
디자인 패턴 유형
생성 패턴, 구조 패턴, 행위 패턴
생성
Builder: 복잡한 인스턴스를 조립하여 만드는 구조
분석, 설계, 구현 단계
'정보처리기사 준비' 카테고리의 다른 글
2-2 통합 구현 (0) | 2023.05.08 |
---|---|
2-1 데이터 입출력 구현 (1) | 2023.05.08 |
1-1 요구사항 확인 (0) | 2023.05.06 |
5-4 시스템 보안 구축 (0) | 2023.05.06 |
5-3 소프트웨어 개발 보안 구축 (0) | 2023.05.06 |