3. 어플리케이션 설계
1) 소프트웨어 아키텍쳐
- SW아키텍쳐
- 뜻 : 기본구조, 개발기반
- 역할 : 품질유지, 원칙, 지침
- 모듈 : 부품
- 기본원리
- 모듈화 : 유지관리에 좋음.(많으면 통합 비용 증가, 적으면 개발비용 증가)
- 추상화 : 포괄적 개념. 구체화하기 위해 피룡. 가성비. 구조파악 용이.
- 단계적 분해 : 하향식. 추상화의 반복으로 더 많은 단계의 분해 가능
- 정보은닉 : 접근금지. 별도의 인터페이스 사용. 유지보수에 용이
- 품질속성 : 시스템(성능,보안) / 비즈니스(비용,자원) / 아키텍쳐(결함)
- 설계과정 : 목표-시스템타입-아키텍쳐패턴-시스템구체화-검토
- 아키텍쳐패턴 : 미리 만들어 둔 공식
2) 아키텍쳐 패턴
- 레이어 : 상/하위 계층끼리 상호작용
- P2P : 서버와 클라이언트 역할 변경가능
- 모델-컨트롤러-뷰 : 대화형 어플리케이션에 적합
- 서버-클라이언트 : 1:다 / 항시대기 / 독립적 기능
- 파이프-필터 : 재사용, 확장, 변환, 동기화, 버퍼링
- 블랙보드 : 공유 데이터 검색, 인식, 식별
3) 객체지향
- 절차(구조적)지향 : 프로그램을 하나의 큰 절차(순서)로 구성
데이터 | 기능 |
상수 | 실행문 |
변수 | 분기문 |
배열 | 반복문 |
구조체 | 함수 |
- 클래스 : 캡슐화 [데이터구조, 함수] => 정보은닉, 재사용, 확장(유지보수)
- 클래스-인스턴스 : 캡슐화 [데이터구조, 함수] => 정보은닉, 재사용, 확장(유지보수)
- 클래스를 재사용하기 위해서는 복제를 해야 하며, 이 과정을 인스턴스화라고 하며, 복제된 결과물을 인스턴스라고 함
- 이 결과물들을 통칭하는게 객체임
- 클래스-상속 : 캡슐화 [데이터구조, 함수] => 정보은닉, 재사용, 확장(유지보수)
- 복제된 객체들은 같은 클래스의 구조를 가지지만, 내용을 서로 다르게 가질 수 있음
- 상속을 통해 확장이 가능해지며, 상속 받은 하위 클래스는 상위 클래스의 모든 요소에 더해
자신의 요소까지 전부 사용이 가능한 인스턴스를 생성할 수 있음
- 상속을 통해 재사용 + 확장의 개념까지 가질 수 있음
- 다형성 : 일일이 특정 기능만 수행하는 객체들을 따로 생성할 필요없이 하나의 통합 객체로 여러가지 일을 수행할 수 있음
4) 모듈
- 모듈
- 뜻 : 모듈화된 기능. 서브루틴, 서브시스템 등으로도 불림. 재사용 가능
- 독립성 판단 : 약한 결합도와 강한 응집도. 품질과 연관.
- 결합도
- 뜻 : 모듈간 상호 의존(영향을 미치는) 정도
- 종류 => 자료 : 데이터, 스탬프 : 자료구조, 제어 : 제어요소, 외부 : 외부참조, 공유 : 공통 데이터, 내용 : 내부 직접 참조
- 응집도
- 뜻 : 정보은닉 개념 확장, 내부 요소들끼리의 관련 정도
- 종류 => 기능 : 단일 연결, 순차 : 이전출력-다음입력, 통신 : 동일입출력 다른기능, 절차 : 다수의 기능을 순차적으로, 논리 : 유사한 기능 모음
- 팬
- 인 : 해당 모듈을 제어하는. 들어오는 화살표
- 아웃 : 해당 모듈이 제어하는. 나가는 화살표
- 공통모듈
- 명세기법 => 정확 : 필요성, 명확 : 비중의적, 완전 : 필요한 모든 것, 일관 : 중복 방지, 추적 : 출처/관계 파악
5) 코드/디자인 패턴
- 코드는 일정한 규칙에 따라 만들어진 기호로, 이 기호는 식별, 분류, 배열의 기능을 가짐
- 순차 : 말 그대로 숫자가 차례대로 입력되어 있는 일련번호
- 블록코드 : 구역을 구분한 뒤에 순차코드를 붙임
- 10진 코드 : 항목들을 10진 분할(10개로 나눔)하며, 이 과정을 필요할 때까지 반복해서 코드를 부여함
- 그룹분류코드 : 하이픈으로 구분하고, 항목별로 일련번호를 부여함.
10진 분할은 1자리씩, 그룹분류는 2자리 이상의 일련번호 부여가 가능함.
- 연상 코드 : 코드만 봐도 어떤 제품인지 연상되는 형태
- 표의 숫자 코드 : 해당 제품의 수치 등을 코드에 사용한 것으로, 유효 숫자 코드라고도 불림.
- 디자인 패턴 : 서브 시스템에 대한 상세구현에 대한 공식.
- 디자인 패턴은 생성 5개, 구조 7개, 행위 11개로 구성됨
- 생성 패턴 : 객체 생성에 대한 패턴으로, 캡슐화, 유연성을 목표로 함
- Abstract Factory : 객체 생성코드가 상위클래스에 존재. 하위(구체화) 클래스가 받아 씀
- Factory Method :객체를 하위 클래스에서 구체화
- Builder : 분리된 인스턴스를 조합하여 객체 생성
- Prototype : 원본 복제. 비용 저렴
- Singleton : 클래스 내 인스턴스 하나뿐임을 보장. 동시 참조 불가능
- 구조 패턴 : 복잡한 구조의 시스템 개발에 필요
- Adaptar : 서로 일치하지 않는 인터페이스 변환
- Bridge : 추상층(기능)과 구현층(구체화)을 분리하여 독립적 확장
- Composite : 트리구조 구성. 단일과 복합 개체 구분없이 다룸
- Decorator : 기능 추가위해 다른 객체를 덧붙임
- Facade : 서브 클래스들의 통합 인터페이스를 제공(wrapper 객체)하는 상위 클래스 구성
- Flyweight : 다수의 유사 객체 생성이 필요할 때 최대한 공유해서 사용(메모리 절약)
- Proxy : 접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행
- 행위 패턴 : 상호 작용, 책임 분배. 결합도 최소화
- Chain of Responsibility : 둘 이상의 객체가 연결(chain)되어 책임이 차례로 넘어감
- Interpreter : 문법 표현 정의. 맞춤법 검사
- Command : 명령어 객체화(추상과 구체). 로그 기록
- Iterator : 접근이 잦은 객체는 동일한 인터페이스 사용하도록. 순차접근
- Mediator : 복잡한 상호작용 캡슐화
- Memento : 특정 시점의 상태 객체화. 되돌리기
- Observer : 상태가 변하면 전달, 이벤트 발행, 구독
- State : 상태에 따라 동작을 다르게
- Strategy : 동일 계열 알고리즘 상호 교환. 독립적 사용
- Template Method : 상위에서 인터페이스 정의. 하위에서 구체화(유지보수)
- Vistor : 처리 기능을 별도의 클래스로 구성
'자격증 > 정보처리기사' 카테고리의 다른 글
소프트웨어 설계 - 4. 인터페이스 설계 (0) | 2022.02.25 |
---|---|
소프트웨어 설계 - 2. 화면설계 (0) | 2022.02.24 |
소프트웨어 설계 - 1. 요구사항 확인 (0) | 2022.02.24 |
댓글