1. 현행 시스템 파악
- 사용하는 소프트웨어/하드웨어/네트워크 구성이 어떻게 되어 있는지 파악하는 활동
- 절차
: 구성/기능/인터페이스 파악 -> 아키텍처/소프트웨어 구성 파악 -> 하드웨어/네트워크 구성 파악
2. 소프트웨어 아키텍처
- 소프트웨어 구성요소, 구성요소의 특성, 구성요소 간 관계를 표현하는 시스템 구조
- 소프트웨어 아키텍처 프레임워크: 아키텍처 기술 표준
- 소프트웨어 아키텍처 4+1뷰: 요구사항을 정리한 시나리오를 4개의 관점에서 바라보는 졉근 방법.
1-유스케이스 뷰, 4-논리(기능), 프로세스(비기능), 구현(모듈), 배포 뷰
- 소프트웨어 아키텍처 패턴: 소프트웨어 설계 시 참조할 수 있는 일반화된 솔루션
1) 계층화 패턴: 마주보는 두 개의 계층 사이에서만 상호작용
2) 클라이언트-서버 패턴: 서버/클라이언트
3) 파이프-필터 패턴: 서브시스템이 입력데이터 받아 처리하고, 결과를 다음 서브시스템으로 전달
4) 브로커 패턴: 클라이언트가 브로커에 서비스를 요청하면 적합한 서비스로 리다이렉션
5) MVC 패턴: 모델/뷰/컨트롤러
3. 디자인 패턴
- 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
- 유형
1) 목적: 생성 / 구조 / 행위
2) 범위: 클래스 / 객체
- 종류
1) 생성 패턴
- Builder: 복잡한 인스턴스를 조립. 생성과 표기를 분리
- Prototype: 원형을 만들어 놓고 복제
- Factory Meethod: 상위클래스에서 인터페이스 정의, 하위클래스에서 인스턴스 생성
- Abstract Factory: 동일한 주제의 팩토리를 묶음. API 제공
- Singleton: 객체를 하나만 생성해 어디서든 참조. 한 클래스에 한 객체만 존재
2) 구조 패턴
- Bridge: 구현부에서 추상 계층을 분리
- Decorator: 기존 구현된 클래스에 필요한 기능 추가
- Facade: 단순하고 통합된 인터페이스 제공
- Flyweight: 클래스의 경량화. 가상 인스턴스
- Proxy: 접근제어. 정보 은닉
- Composite: 복합 객체와 단일 객체를 동일하게 취급
- Adapter: 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 맞춰줌
3) 행위 패턴
- Mediator: 중재자를 두어 통신의 빈도수를 줄임
- Interpreter: 구문의 해석을 맡는 클래스
- Iterator: 내부구조를 노출하지 않고 순차적 접근
- Template Method: 서브 클래스로 작업의 일부분을 수행
- Observer: 객체 상태 변화에 따라 다른 객체 상태도 연동
- State: 객체의 상태에 따라 행위 내용을 변경
- Visitor: 데이터 구조로부터 처리 기능 분리. 구조 변경 없이 기능 확장
- Command: 기능을 캡슐화
- Strategy: 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 변환
- Memento: 객체의 정보 저장. Undo
- Chain of responsibility: 한 요청을 2개 이상의 객체에서 처리
4. 개발 기술 환경 현행 시스템 분석
1) 운영체제 현행 시스템 분석
- 운영체제: 시스템이 제공하는 하드웨어/소프트웨어를 사용할 수 있게 하고, 컴퓨터 사용자와 하드웨어 간의 인터페이스를 담당하는 프로그램
- 종류: Windows, UNIX, Linux, Android, iOS
2) 네트워크 현행 시스템 분석
- 네트워크: 컴퓨터 장치들의 데이터 링크를 사용해 데이터를 교환할 수 있도록 하는 기술
3) DBMS 현행 시스템 분석
- DBMS: 데이터베이스라는 데이터의 집합의 생성, 저장, 관리 기능을 제공하는 응용 프로그램
- 기능: 중복제어, 접근통제, 인터페이스 제공, 관계 표현 등
4) 미들웨어 현행 시스템 분석
- 미들웨어: 분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있도록 제어하는 소프트웨어. ex) WAS
'기본 지식' 카테고리의 다른 글
논리 데이터 저장소 (0) | 2021.07.01 |
---|---|
화면 설계 (0) | 2021.07.01 |
요구사항 (0) | 2021.07.01 |
소프트웨어 개발방법론 (0) | 2021.06.29 |
예외처리 (Exception Handling) (0) | 2021.03.23 |
댓글