1. SW 아키텍처 : 비기능적 요구사항 반영, 기능적 요구사항 구현
┌ 모듈화 : 모듈 단위로 나눔, 기능별로 분해, 재사용성↑, 모듈 크기 작게 나누면 통합 비용 높아짐,
크게 나누면 개발 비용 높아짐
┢ 추상화 : 불필요 생략, 필요한 부분만 강조 => 개략화, 모델화 // 추상화 유형 => (과정, 데이터, 제어) 추상화
┢ 단계적 분해 : 하향식 설계 전략, 추상화의 반복에 의해 세분화, 점차적 구체화, 상세 내역 뒤로 미룸
└ 정보 은닉 : 필요한 정보만 주고받음, (수정, 시험, 유지보수) 용이 => 다른 모듈 영향 주지 않기 때문에,
독립적 수행
- SW 아키텍처의 품질 속성
● 시스템 측면 : 성능, 보안, 가용성, 기능성, 사용성, 변경 용이성, 확장성, 기타 속성(테스트 용이성, 배치성, 안정성)
● 비즈니스 측면 : 시장 적시성, 비용과 혜택, 예상 시스템 수명, 기타 속성(목표 시장, 공개 일정, 기존 시스템과의 통합)
● 아키텍처 측면 : 개념적 무결성, 정확성, 완결성, 구축 가능성, 기타 속성(변경성, 시험성, 적응성, 일치성, 대체성)
- 과정
① 설계 목표 설정 ➙ ② 시스템 타입 결정 ➙ ③ 아키텍처 패턴 적용 ➙ ④ 서브시스템 구체화 ➙ ⑤ 검토
└ 표준 아키텍처 설계
┌ = 아키텍처 스타일, 표준 아키텍처
2. 아키텍처 패턴 : 기본적인 윤곽 제시, 역항 정의, 규칙·지침 포함, 초기 설계 시 발생 문제 해결
- 장점 : 시간 단축, 고품질, 안정적, 의사소통 간편, 일반인도 쉽게 유지보수, 예측 가능
┌ 레이어 패턴 : 계층, 변경 작업 용이
┢ 클라이언트 - 서버 패턴 : 사용자는 클라이언트와만 의사소통, 서버는 항시 대기,
(Client, Server)는 동기화 경우 제외하고 독립적
┢ 파이프 - 필터 패턴 : 필터는 재사용성 좋고 추가 쉬워 확장 용이, 재배치하여 다양한 pipe line 구축,
데이터 변환, 동기화, 버퍼링에 사용 ex) UNIX의 쉘
┌ 정보 표시┌ 입력 처리, 인터페이스 담당, 뷰의 제어
┢ 모델 - 뷰 - 컨트롤러 : 서로 영향 X, 대화형 애플리케이션에 적합(여러 개의 뷰 생성)
└ 핵심 기능과 데이터 보관
┢ 마스터 - 슬레이브 패턴 : 다시 돌려받는 방식으로 작업 수행 => 장애 허용 시스템, 병렬처리 시스템에서 주로 활용
┢ 브로커 패턴 : 분산 환경 시스템
┢ 피어 투 피어 : 멀티 쓰레딩 방식
┢ 블랙보드 패턴 : 해결책 명확하지 않은 문제 처리 시 유용 => 차량 식별 시스템
┢ 인터프리터 패턴 : 특정 언어로 작성된 프로그램 코드 해석 시 사용
└ 이벤트 - 버스 : 이벤트 메시지 발행 => 구독자들이 메시지 받아 이벤트 처리
3. 객체지향(Object - Oriented) : 개체(Entity) 조립, 절차 지향보다 속도 느림 ✹ 속성<객체<클래스
┌ 구조적 기법(모아서 큰 작업 수행)의 해결책, 자연적인 모델링
┢ 재사용 및 확장 용이 => 고품질 SW 빠르게 개발, 유지보수 용이
┢ 복잡한 구조 단계적 · 계층적 표현, 멀티미디어 데이터 및 병렬처리 지원
└ 현실 세계 모형화 => 쉽게 이해 가능
● 객체(Object) : 데이터, 함수 캡슐화 한 SW 모듈
- 독립적 식별 가능 이름 가짐, 상태(객체 가질 수 있는 조건)는 시간에 따라 변함, 상호 연관성에 의한 관계 형성
- 객체가 반응할 수 있는 메시지의 집합 = 행위, 객체는 행위의 특징을 나타냄, 일정 기억장소 가짐
● 클래스(Class) : 공통된 속성과 연산(행위)을 갖는 객체의 집합, 객체의 일반적 타입
- 동일 클래스에 속한 각각의 객체(인스턴스)들은 공통된 속성 행위 가짐➜정보가 서로 달라 동일 기능 여러 가지 객체 나타냄
- 최상위 클래스는 상위 클래스 갖지 않음
● 캡슐화(Encapsulation) : 데이터, 함수를 하나로 묶음, 파급효과적음, 재사용 용이, 인터페이스 단순, 결합도 낮아짐, 연산 복잡
● 상속(inheritance) : 재사용
● 다형성(Polymorphism) : 하나의 메시지에 여러 가지 형태 응답, 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미 응답함
● 인스턴스(Instance) : 어떤 클래스에 속하는 구체적인 객체
❈ 중복성, 종속성은 배제하고 독립성을 가져야 함
❈ 낮은 결합도, 높은 응집도를 가져야 이상적인 모델
4. 모듈 ≒ 서브루틴, 서브시스템, 작업 단위, SW 내의 프로그램 등과 같은 의미로 쓰임
- 단독 컴파일 · 재사용 가능, 하나의 기능만을 수행하고 과도한 상호작용 배제함으로써 독립적임
┌ 의존도, 상호작용
- 결합도 약하게, 응집도 강하게, 모듈 크기는 작게해야 독립성이 높아짐 => 품질 상승
└ 관련 정도, 기능적 연관, 독립적인 기능으로 정의되어 있는 정도
5. 공통 모듈
- 명세 기법 : 정확성, 명확성, 완전성, 일관성, 추적성, 단순성
- 재사용 : 사용법 공개, 외부 모듈과 결합도 낮고 · 응집도 높음
- 재사용 규모에 따른 분류
┌ 함수와 객체 : 클래스나 메소드 단위의 소스코드 재사용
┢ 컴포넌트 : 컴포넌트 자체 수정 없이 인터페이스 통해 통신으로 재사용
└ 애플리케이션 : 공유하는 방식 재사용
6. 코드 : 자료를 처리하는 과정에서 분류 · 조합 및 집계를 용이하게 하고 특정 자료 추출을 쉽게 하기 위해 사용하는 기호
┌ 식별 기능 : 데이터 간 성격에 따라 구분이 가능
- 기능 ┢ 분류 기능 : 동일한 유형 데이터 그룹화
└ 배열 기능 : 의미를 부여하여 나열 가능
- 종류
┌ 순차 코드 : 일련번호 ex) 1~10
┢ 블록 코드 : 블록 구분 ex) 총무부, 영업부 ex) 1001~1010 : 총무부
┢ 10진 코드 : 도서 분류식 코드 ex) 1000:공학
┢ 그룹 분류 코드 : 대분류, 중분류, 소분류 ex) 1-01-001 = 본사-총무부-인사계
┢ 연상 코드 : 기호 코드 ex) TV-40 = 40인치 TV
┢ 표의 숫자 코드 : 유효 숫자 코드 ex) 길이, 넓이, 부피, 높이, 지름 245-178-44-55
└ 합성 코드 : 2개의 코드를 조합 ex) 연상 코드 + 순차 코드
- 코드 부여 체계 : 식별 및 추출 용이, 코드 부여 전 고유 코드 정의, 자릿수·구분자·구조 상세히 명시, 하나 이상 코드 조합
7. 디자인 패턴 : 인테리어, 재사용 가능, 변화하는 특징
정보처리기사 2과목 소프트웨어 개발 - 2장 통합 구현 요점 정리 (0) | 2020.06.03 |
---|---|
정보처리기사 2과목 소프트웨어 개발 - 1장 데이터 입 · 출력 구현 요점 정리 (0) | 2020.06.03 |
정보처리기사 1과목 소프트웨어 설계 - 4장 인터페이스 설계 요점 정리 (0) | 2020.06.03 |
정보처리기사 1과목 소프트웨어 설계 - 2장 화면 설계 요점 정리 (0) | 2020.05.22 |
정보처리기사 1과목 소프트웨어 설계 - 1장 요구 사항 확인 요점 정리 (0) | 2020.05.21 |
댓글 영역