현행 시스템 파악
정의 : 현행 시스템 파악은 현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보, 기술 요소 등을 사용하는지 파악하는 활동
1) 소프트웨어 아키텍쳐 4+1 뷰
고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어 적인 접근 방법으로 각 구조는 아키텍처 개념을 제시하고, 4개의 구조의 충돌 유무 및 시스템의 요구사항을 충족시키는지 확인하기 위해 유스케이스를 사용한다.
4개의 뷰와 이 4뷰를 검증하기 위한 유스케이스 뷰를 4+1이라고 표현하며 4개의 뷰는 (논리, 프로세스, 구현, 배포)로 구성되어 있다.
논리 뷰(Logical View)는 설계자와 개발자 관점에서 시스템의 기능적 요구사항이 어떻게 제공되는지를 설명해주는 뷰
프로세스 뷰(Process View)는 개발자와 시스템 통합자의 관점에서 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
구현 뷰(Implementation View)는 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
배포 뷰(Deployment View)는 컴포넌트가 물리적인 아키텍쳐에 어떻게 배치되는가를 매핑해서 보여주는 뷰
유스케이스 뷰(Usecase)는 개발자, 사용자, 테스트 관점이서 다른 뷰를 검증하는 데 사용하는 뷰
2) 소프트웨어 아키텍쳐 패턴
소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식으로 개발에 대한 시행착오를 줄여 개발 시간을 단축하고 높은 품질의 소프트웨어를 생산하기 위함이다.
계층화 패턴(Layered Pattern) : 시스템을 계층(Layer)으로 구분해 구성하는 패턴으로 서로 마주 보는 두 개의 계층 사이에서만 상호 작용이 이루어짐
클라이언트-서버 패턴(Client-Server Pattern) : 하나의 서버와 다수의 클라이언트로 구성된 패턴으로 사용자는 클라이언트를 통해 서버에 서비스를 요청하고 서버는 클라이언트에 서비스를 제공하는 방식
파이프-필터 패턴(Pipe-Filter Pattern) : 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴으로 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 시스템으로 넘겨주는 과정을 반복하는 방식
브로커 패턴(Broker Pattern) : 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트들은 원격 서비스 실행을 통해 상호 작용이 가능한 패턴으로 브로커는 컴포넌트 간의 통신을 조정하는 역할을 수행
모델-뷰-컨트롤러 패턴(MVC : Model View Controller Pattern) : 대화형 애플리케이션을 모델, 뷰, 컨트롤러 3개의 서브 시스템으로 구조화 하는 패턴으로 각 부분이 별토의 컴포넌트로 분리되어 있어 서로 영향을 받지 않고 개발 가능
3) 소프트웨어 아키텍쳐 비용 평가 모델
아키텍쳐 접근법이 품질 속성에 미치는 영향을 판단하고, 아키텍쳐의 적합성을 평가하는 모델
종류 | 설명 |
SAAM(Software Architecture Analysis Method) | 변경 용이성과 기능성에 집중, 평가가 용이해 경험이 없는 조직에서도 활용 가능한 비용 평가 모델 |
ATAM(Architecture Trade-off Analysis Method) | 아키텍쳐 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상충관계까지 평가하는 모델 |
CBAM(Cost Benefit Analysis Method) | ATAM 바탕의 시스템 아키텍쳐 분석 중심으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델 |
ADR(Active Design Review) | 소프트웨어 아키텍쳐 구성요소 간 응집도를 평가하는 모델 |
ARID(Active Reviews for Intermediate Designs) | 전체 아키텍쳐가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델 |
4) 디자인 패턴
디자인 패턴은 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴인데, 이 패턴들을 참고해 개발할 경우 효율성과 유지보수성, 운용성 등이 높아지며 프로그램의 최적화에 도움이 된다.
디자인 패턴의 유형을 구분하는 방식은 목적에 따른 구분과 범위에 따라 구분하는데, 목적에 따라(생성, 구조, 행위)의 유형이 있고, 범위에 따라 클래스와 객체의 유형이 있다.
<생성 패턴>
빌프팩앱싱(빌더,프로토타입,팩토리메소드,추상팩토리,싱글톤)
1) 빌더(Builder)는 복잡한 인스턴스를 조립해 만드는 구조로 생성과 표기를 분리해 복잡한 객체를 생성한다.
2) 프로토타입(Prototype)은 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정해 사용하는 패턴으로, 기존의 객체를 복사함으로써 객체를 생성한다.
3) 팩토리 메소드(Factory Method)는 상위 클래스에서는 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서는 인스턴스를 생성하도록 하는 방식으로 함수들을 오버라이딩해서 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 특성을 갖는 디자인 패턴이다.
4) 추상 팩토리(Abstract Factory)는 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴으로 사용자에게 API(인터페이스)를 제공한다.
5) 싱글톤(Singleton)은 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴이다.
<구조 패턴>
브데페플프컴어(브릿지,데코레이터,페세이드,플라이웨이트,프록시,컴포지트,어댑터)
1) 브릿지(Bridge)는 기능의 클래스 계층과 구현의 클래스 계층을 연결하고 구현부에서 추상 계층을 분리해 추상화된 부분화 실제 구현 부분을 독립적으로 확장할 수 있다.
2) 데코레이터(Decorator)는 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴으로 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있다.
3) 페세이드(Facade)는 복잡한 시스템에 대해 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 혹은 다른 시스템 간 결합도를 낮춰 시스템 구조에 대해 파악을 쉽게하는 패턴이다.
4) 플라이웨이트(Flyweight)는 클래스의 경량화를 목적으로 하는 디자인 패턴으로 여러 개의 가상 인스턴스를 제공해 메모리를 절감한다.
5) 프록시(Proxy)는 실체 객체에 대한 대리 객체로 특정 객체로의 접근을 제어하기 위한 용도로 사용하며 정보은닉도 가능하다.
6) 컴포지트(Composite)는 객체들의 관계를 트리 구조로 구성해 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모드 동일하게 다루도록 하는 패턴이다.
7) 어댑터(Adapter)는 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴이다.
<행위 패턴>
미인이템옵스비커스매체(미디에이터,인터프리터,이터레이터,템플릿 메서드,옵져버,스테이트,비지터,커맨드,스트레티지,메멘토,체인오브리스폰시빌리티)
1) 미디에이터(Mediator) : 객체 지향 설계에서 중재자를 두고, 중재자에게 모든 것을 요구해 통신의 빈도수를 줄여 객체 지향의 목표를 달성해주는 디자인 패턴으로 상호 작용의 유연한 변경을 지원한다.
2) 인터프리터(Interpreter) : 문법 자체를 캡슐화해서 사용하며 언어의 다양한 해석을 할 수 있게만드는 디자인 패턴
3) 이터레이터(Iterator) : 내부구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴
4) 템플릿 메소드(Templete Method) : 상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행하며 상위 메소드에선 추상 메소드를 통해 기능의 골격을 제공하고, 하위 클래스는 세부 처리를 구체화 해서 코드 양을 줄이고 유지보수를 용이하게 만드는 디자인 패턴
5) 옵저버(Observer) : 객체의 상태 변화에 따라 다른 객체의 상태도 연동 및 일대 다의 의존성을 가지며 상호 작용하는 객체 사이에서는 가은하면 느슨하게 결합하는 디자인 패턴
6) 스테이트(State) : 기능을 분리해 별도의 클래스를 만들고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴으로, 객체의 구조는 변경하지 않되 기능만 따로 추가하거나 확장할 때 사용하는 디자인 패턴
7) 커맨드(Command) : 실행될 기능을 캡슐화해서 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
8) 스트레티지(Stratgy) : 알고리즘 군을 정의, 캡슐화한 후 서로 교환을 통해 사용할 수 있게 하는 패턴으로 행위 객체를 클래스로 캡슐화해 동적으로 행위를 자유롭게 변환하는 디자인 패턴
9) 메멘토(Memento) : 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴으로 Undo 기능을 개발할 때 사용하는 디자인 패턴
10) 체인 오브 리스폰시빌리티(Chain of Responsibility) : 기능에 대한 연결이 하드코딩 되어 있을 때 기능의 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 디자인 패턴
-OSI 7계층-
물리-데이터링크-네트워크-전송-세션-표현-응용 (물리가 가장 아랫계층) 으로 구성되어 있음
물리 계층(Physical Layer) 전기적 신호, 선, 하드웨어 와 관련된 계층으로 Bit(비트)라는 단위를 이용하며 Rs-232C 프로토콜을 이용한다.
데이터 링크 계층(Data Link Layer)은 인접 시스템 간 데이터를 전송하고, 전송 오류를 제어하는데 동기화 및 흐름 제어 등의 전송 기능을 제공한다. 이 때 프레임(Frame)이라는 단위를 이용하며 이더넷 프로토콜을 이용한다.
네트워크 계층(Network Layer)은 단말기 간 데이터 전송을 위해 최적화 된 경로를 제공하며 패킷(Packet)이라는 단위를 이용하며 IP, ICMP 프로토콜을 이용한다.
전송 계층(Transfer Layer)은 신뢰성 있는 통신을 보장하며 데이터의 분할과 재조립, 흐름 제어, 오류 제어, 혼잡제어 등을 담당하며 세그먼트(segment)라는 단위를 이용하며 TCP, UDP 프로토콜을 이용한다.
세션 계층(Session Layer)은 연결 접속 및 동기제어를 하며 데이터(Data)라는 단위를 이용하며 SSH, TLS 프로토콜을 이용한다.
표현 계층(Presentaion Layer)은 데이터 형식 설정과 부호교환, 암/복호화를 하며 세션계층과 동일한 단위를 사용하며 JPEG, MPEG라는 프로토콜을 이용한다
응용 계층(Application Layer)은 사용자와 네트워크 간 응용 서비스를 연결, 데이터를 생성하며 세션계층과 동일한 단위를 사용하며 HTTP, FTP 프로토콜을 이용한다.
'자격증 > 정보처리기사' 카테고리의 다른 글
3장 데이터 입출력 구현 - (2) 물리 데이터 저장소 설계 (0) | 2022.07.08 |
---|---|
3장 데이터 입출력 구현 - (1) 논리 데이터 저장소 확인 (0) | 2022.07.07 |
2장 화면 설계-(2) UI 설계 (0) | 2022.07.03 |
2장 화면 설계-(1) UI 요구사항 확인 (0) | 2022.07.01 |
정보처리기사 - 1장 요구사항 확인(소프트웨어 개발 방법론) (0) | 2022.06.24 |