정보처리기사 정리 - SW 설계
SW 설계
아키텍쳐 패턴
- Layer Pattern(계층) : 상하위 계층구조로 이루어진 패턴으로 위아래로만 상호작용 함
- Client-Server Pattern : 1개의 Server와 여러개의 Client로 구성된 아키텍쳐 패턴
- Pipe-filter Pattern : Sub 시스템이 입력받아 처리 후 다음 시스템으로 전송하는 패턴
- MVC Pattern :
- Model : 서브시스템의 핵심 기능과 데이터를 보관한다.
- View : 사용자에게 정보를 표시한다.
- Controler : 사용자로붙터 받은 입력을 처리한다.
디자인 패턴
디자인 패턴은 각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
GOF(Gang of Four)
생성패턴 5개, 구조 패턴 7개, 행위 패턴 11개로 총 23개로 구성된다.
- 생성 패턴(Creational Pattern) : 객체의 생성과 관련된 패턴
- 추상 팩토리(Abtract Factory) : 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관 의존하는 객체들의 그룹으로 추상적으로 표현
- 빌더(Builder) : 작게 분리된 인스턴스를 건축하듯이 조합하여 객체를 생성한다.
- 팩토리 메소드(Factory Method) : 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
- 프로토타입(Prototype) : 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
- 싱글톤(Singleton) : 하나의 객체를 생성하면 생선된 객체를 어디서든 참조할 수 있지만 여러 프로세스가 동시에 참조는 안되는 디자인 패턴. 클래스 내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화할 수 있다.
- 구조 패턴(Structual Pattern) : 클래스나 객체를 조합하여 더 큰 구조로 만드는 패턴
- 어댑터(adapter) : 호환성이 없는 ㅡ클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환하는 패턴
- 브리지(Bridge) : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구선한 패턴
- 컴포지트(Composite) : 여러 객체를 가진 복합 객체와 단일 객체를 구분없이 다루고자 할 때 사용하는 패턴
- 데코레이터(Decorator) : 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
- 파사드(Facade) : 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
- 플라이웨이트(Flyweight) : 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 한 공유해서 사용해 메모리를 절약하는 패턴
- 프록시(Proxy) : 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 하는 패턴
- 행위 패턴(Behavioral Pattern) : 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴
- 책임연쇄(Chain of Responsibility) : 요청을 처라할 수 있는 객체가 둘이상 존자해여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
- 커멘드(Command) : 요청을 객체의 현태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청해 필요한 정보를 저장하거나 로그에 남기는 패턴
- 인터프리터(Interpreter) : 언어의 문법 표현을 정의하는 패턴
- 반복자(Iterator) : 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
- 중재자(Mediator) : 수많은 객체들 간의 복잡한 상효작용을 캡슐화하여 객체로 정의하는 패턴
- 메멘토(Memento) : 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
- 옵저버(Observer) : 한 객체의 상태가 변화하면 객체에 상속되어있는 다른 객체들에게 변화된 상태를 전달하는 패턴
- 상태(State) : 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
- 전략(Strategy) : 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
- 템플릿 메소드(Template Method) : 상위클래스에서 골격을 정의하고, 하위 클래스에서 세부처리를 구체화하는 구조의패턴
- 방문자(Visitor) : 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴
모듈(Module)
모듈의 개요
- 모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, SW 내의 프로그램, 작업 단위등과 같은 의미로 사용된다.
- 단독으로 컴파일 가능하며 재사용할 수 있다.
- 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정되며 독립성을 높이려면 모듈의 결합도는 약하게 응집도는 강하게 모듈의 크기는 작게 만들어야 한다.
결합도(Coupling)
- 내공외제스자(강 -> 약)
- 내용결합도, 공유결합도, 외부결합도, 제어결합도, 스템프결합도, 자료결합도
응집도(Cohesion)
- 우논시절교순기(약 -> 강)
- 우연적응집도, 논리적응집도, 시간적응집도, 절차적응집도, 교환적응집도, 순차적응집도, 기능적응집도
요구사항
요구사항 정의
요구사항은 SW가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 필요한 제약조건등을 나타낸다.
- 요구사항 유형
- 일반적 기술 내용
- 기능 요구사항
- 비기능 요구사항
- 기술관점 및 대상의 범위
- 사용자 요구사항
- 시스템 요구사항
- 일반적 기술 내용
- 요구사항 개발 프로세스!!
- 타당성 조사
- 도출 : 유스케이스, 프로토타이핑, 설문 인터뷰 등
- 분석
- 명세
- 확인
- 요구사항 확인과 검증
- 확인(Validation) : 고객의 요구사항 만족
- 검증(Verification) : 기능이 정확히 수행하는지 확인
요구사항 분석
개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호한 부분을 걸러내기 위해 사용
- 요구사항 분류
- 개녕 모델링
- 요구사항 할당
- 요구사항 협상
- 정형분석
요구사항 확인 기법
요구사항 개발과정을 거처 문서화된 요구사항 관련 내용 확인, 검증
- 요구사항 검토
- 프로토타이핑
- 모델검증
- 인수테스트
UML(Unitied Modeling Language)
시스템 분석 설계 구현등 시스템 개발 과정에서 시스템 개발자와 고객, 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
- 사물 : 구조사물, 행동사물, 그룹사물, 주해사물
-
관계 : 연관(Assosiation), 집합(Aggregation), 포함(Composition), 일반화(Generalizaiton), 의존(Depending), 실체화(Relization)
- 구조적 다이어그램 : 클래스, 객체, 컴포넌트, 배치, 복합체, 패키기
- 행위 다이어그램 : 유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 상호작용, 타이밍
클래스 다이어그램
- 구성요소
- 클래스 : 각각의 객체들이 갖는 속성과 오퍼레이션
- 클래스 이름
- 속성 : 클래스의 상태 또는 정보
- 오퍼레이션 : 연산, 클래스 수행할 수 있는 함수
- 제약조건
- 관계 : 연관, 집합, 포함, 일반화, 의존
- 클래스 : 각각의 객체들이 갖는 속성과 오퍼레이션
- 클래스의 접근 제어자
- Public +
- Private -
- Protected #
- Package ~
- 관계
- 1, n, 0..1, 0,,*, 1..*, n..*, n..m
유스케이스 다이어그램
사용자와 외부 시스템이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자 관점에서 표현
- 구성요소
- 시스템/시스템 범위
- 액터(시스템과 상호작용하는 외부요소)
- 주액터
- 부액터
- 유스케이스(서비스 또는 기능)
- 관계
- 포함관계 : 두개 이상의 유스케이스에 공통으로 적용하는 기능을 새로운 유스케이스로 만들 경우 («include»)
- 확장관계 : 유스케이스의 기능이 확대 («extends»)
- 일반화 : 유사한 유스케이스 또는 액터를 그룹으로 묶거나 일반적으로 만들 때
활동 다이어그램
자료 흐름도와 유사한 것으로 사용자 관점에서 시스템이 수행하는 기능을 처리 흐름에 따라 순서대로 표현
- 구성요소
- Action : 더 이상 분해할 수 없는 단일 작업
- Activity : 몇개의 액션으로 분리될 수 있는 작업
- 제어흐름 : 실행의 흐름, 화살표
- 시작노드 : 하나의 다이어그램에는 1개의 시작점(점)
- 종료노드 : Activity의 흐름 종료(◎)
- 조건노드 : 제어흐름(입력 1개 출력 여러개)
- 병합노드 : 여러경로를 합쳐 하나의 경로로 만듬(입력 여러개 출력 1개)
- 포크노드 : Activity의 흐름을 분리(입력1개 출력 여러개)
- 조인노드 : 분리된 Activity를 합침(입력 여러개, 출력 1개)
- 스웜레인 : Activity를 수행하는 주체
시퀀스 다이어그램
시스템이나 객체들이 메시지를 주고 받으며 시간의 흐름에 따라 상호작용하는 과정 표현
- 구성요소
- Actor : 외부시스템, 사람
- 객체(Object) : 메시지 주고 받는 주체
- 라이프 라인 : 객체가 메모리에 존재하는 기간
- 활성상자 : 객체가 메시지를 주고 받으며 구동됨을 표시
- 메시지 : 동기, 비동기, 생성, 응답
- 객체 소멸
- 프레임
커뮤니케이션 다이어그램
시퀀스 다이어그램 처럼 메시지를 주고 받으며 시간의 흐름에 따라 상호작용 추가로, 객체를 연결하는 링크가 추가되어 객체 사이의 관계가 있다.
- 구성요소
- Actor
- Object
- Link
- Message
상태 다이어그램
객체들 사이에 발생하는 이벤트에 의한 객체 들의 상태 변화 표시
럼바우(Rumbaugh)의 객체제향 분석
소프트웨어 구성요소를 그래픽 표기법을 이용하여 모델링하는 객체 지향 분석 방법(객동기)
- 객체 모델링
- 동적 모델링
- 기능 모델링