1. 현행 시스템 파악(1)
현행 시스템 파악은 요구분석 -> 설계 -> 구현 -> 테스트 -> 유지보수 중에서 요구분석 단계에 해당한다.
현행 시스템 파악 : 현행 시스템이 어떤 하위 시스템으로 구성되어 있고 제공 기능, 연계 정보는 무엇이며 어떤 기술을 요소를 사용하는지 파악하는 활동. 재구축하는 시스템일 경우 현행 시스템 파악이 매우 중요
현행 시스템 파악 절차 : 구성/기능/인터페이스 파악 -> 아키텍처/SW구성 파악 -> HW, NW 구성 파악
소프트웨어 아키텍처 개념 : 소프트웨어 구성요소와 구성요소 관계를 표현하는 시스템 구조
소프트 아키텍처 프레임워크 개념 : 시스템에서 아키텍처가 표현해야 하는 내용 및 이들 간의 관계를 제공하는 ⭐아키텍처 기술 표준. 제약사항과 품질 속성을 파악 => ⭐비기능 요구사항
소프트 아키텍처 프레임워크 구성도
소프트웨어 아키텍처 4+1 뷰 : 요구사항을 정리한 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법
설명을 하고 어떤 구성 요소를 말하는지 단답형으로 작성하는 문제가 출제 될 수 있다.
구성요소 : 유스케이스 뷰 / 논리 뷰 / 프로세스 뷰 / 구현 뷰 / 배포 뷰
유스케이스 뷰 : 다른 뷰를 검증
논리 뷰 : 기능적인 요구사항이 어떻게 제공되는지(기능 요구사항)
프로세스 뷰 : 비기능적 속성으로 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현. 개발자, 시스템 통합자 관점
**프로그램이 동작하는 것 == 프로세스.
구현 뷰 : 모듈 구성
배포 뷰 : 구현된 컴포턴트가 어떻게 배치 되는지 보여주는
소프트웨어 아키텍처 패턴 : 설계할 때 참조할 수 있는 전형적인 해결 방식
소프트웨어 아키텍처 패턴 유형
계층화 패턴(Layered Pattern) : 계층 사이에 상호작용한다. 단, 위 아래끼리
클라이언트-서버 패턴(C-S Pattern) : 클라이언트와 서버 사이와 통신
파이프-필터 패턴 : 데이터 소스를 받으면 파이프가 필터링 해주고 해주고... 해서 sINK로 넘겨준다. 앞에 명령을 처리하고 필터링해서 다음 과정으로 넘겨주고... 필터는 데이터가 정제되고 변형을 시켜줄 수 있고 파이프는 데이터가 흐르는 공간이다.
브로커 패턴 : 클라이언트와 서버 사이에 브로커가 삽입된 구조
모델-뷰-컨트롤러 패턴(MVC) : model(db), view(클라이언트 화면), controller(클라이언트가 입력한 값)
설명 후 종류의 이름을 작성하는 단답형 문제가 출제될 수 있음. 무조건 영어로 암기하기^.^
소프트웨어 아키텍처 비용 평가 모델 : 아키텍처의 적합성을 평가
종류 : SAAM, ATAM, CBAM, ADR, ARID
SAAM(Software Architecture Analysis Method) : 가장 먼저 출시. 소프트 아키텍처를 분석하는 일반적인 모델, 변경 용이성과 기능성 중심으로 평가
ATAM(Architecture Tradeoff Analysis Method) : 품질 속성, 성능을 분석
CBAM(Cost Benefit Analysis Method) : 비용, 경제적 측면에서 분석
ADR(Active Design Review) : 응집도 분석
ARID(Active Revies for Intermediate Degins) : 특정 부분의 품질 요소를 분석
1. 현행 시스템 파악(2)
디자인 패턴을 설계 단계에 해당한다.
** 인터넷 강의 보면서 설명 더 들으면 객체 다이어그램 보면서 공부하기
설명하고 단답형으로 작성하는 문제가 나올 수 있습니뎃. 영어로 외우기!!
https://refactoring.guru/ko/design-patterns/structural-patterns <-여기 참고
디자인 패턴 : 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
** 쉽게 말하면 클래스의 관계를 나타낸 것
구성요소 : 패턴의 이름 / 문제 및 배경 / 솔루션 / 사례 / 결과 / 샘플 코드
⭐목적에 따른 디자인 패턴 유형 : 생성(Instance) 패턴 / 구조 패턴 / 행위 패턴
⭐생성 패턴 : 생성 - 빌더 패턴 / 프로토타입 패턴 / 팩토리 메소드 / 앱스트랙트 팩토리 / 싱글톤
⭐구조 패턴 : 구조 패턴 - 브리지 / 데코레이터 패턴 / 퍼사이드 패턴 / 플아이 웨이트 패턴 / 프록시 패턴 / 컴포지트 패턴 / 어댑터 패턴
⭐행위 패턴 : 행위패턴 - 미디에이터 / 인터프리터 / 이터레이터 / 템플릿 메소드 / 옵져버 / 스테이트 / 비지터 / 커맨드 / 스트레티지 / 메멘토 / 체인 오브 리스판서빌리티
Builder 패턴 : 복잡한 인스턴스를 조립하여 만드는 구조
Prototype : 처음부터 원형을 만들고 그것을 복사(clone)한 후 필요한 부분만 수정
Factory Method : 상위클래스에서 인스턴스만 정의하고 실제 생성은 서브 클래스가 담당
Abstract Factory : 의존하지 않고 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공
Singleton : 객체 하나만 생성하여 생성된 객체를 어디서든지 참조할 수 있도록 하는 디자인 패턴. 한번만 생성
Bridge : 기능 클래스, 구현 클래스를 연결
Decorator : 기존에 구현된 클래스에 필요한 기능을 추가
Facade : 불어로 건물의 정면. 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴. Facade 객체를 생성해서 해당 객체를 통해서만 다른 객체를 호출할 수 있게!
Flyweight : 가볍다^.^. 메모리를 절약하고 클래스 경량화를 목적으로. new를 최소화. 생성되어 있으면 공유하여 사용
** 가벼운 것과 무거운 것. 메모리를 적게 사용하는
Proxy : 대리인. 대리 객체. 외부에서는 proxy에 접근. 할 수 있으면 본인이 처리하고 안되면 Real subject로 전달
Composite : 객체들의 관계를 트리구조로 구성하여 부분-전체 계층을 표현. 사용자가 단 객체와 복합 객체 모두 동일하게 다루도록!! 단일 객체(leaf)인데 더이상 내려갈 수 없는 폴더로 생각하면 되고(종단), 복합 객체(Composite)를 폴더, 디렉토리라고 생각하면 된다.
Adapter : 개조. 중간에 맞춰주는 역할을 하는 인터페이스를 만드는 패턴. adapter가 adaptee와 target에서 상속 받아 둘 다(?) 사용할 수 있는
Mediator : 중개자. 객체가 많아지면 통신이 복잡해지는데 이러면 느슨한 결합의 특성을 해칠 수 있다. 그래서 중간에 이를 통제하고 지시할 수 있는 역할을 하는 중재자를 둔다. 브로커와 유사
Interpreter : 통역. 해석. 구문 해석을 맡는 클래스를 각각 작성하여 구문을 해석할 수 있게 만듦
Iterator : 반복자. 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공. 인덱스를 만들어주는 것과 비슷하다.
Template Method : 전체 일을 수행하는 구조는 바꾸지 않으면서 수행하는 내역을 바꾸는 패턴. 보통 추상 클래스를 통해 골격을 만들고 하위 클래스에서 세부처리를 구체. 상위는 교체하지 않고 하위가 변경되면 하나 만들들어버리긔~
Observer : 관찰자. 상태가 바뀌면 의존하는 타 객체들에게 연락하고 자동으로 내용이 갱신
State : 상태. 객체 상태를 캡슐화. 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경. State객체를 상속받은 클래스1과 클래스 2. 낮에는 클래스 1을 실행하고 밤엔 클래스 2를 실행하게 하도록 하는 느낌
Visitor : 방문자. 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴. 파일/디렉토리를 다 뒤지고 다니는거랑 비슷
Command : 명령. 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행.
Strategy : 전략. 알고리즘 군을 정의하고 필요할 때 서로 교환해서 사용할 수 있게 해주는 패턴
Memento : 기념품. Undo 기능을 개발할 때 사용하는 패턴. 객체를 이전 상태로 복구 시켜야하는 경우
Chain of Responsibility : 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결. Handler에 next를 만들면 자기 자신을 참
2. 개발 기술 환경 정의
요구분석
운영체제 : 컴퓨터 사용자, 하드웨어 간의 인터페이스를 담당하는 프로그램
⭐운영체제 현행 시스템 분석 시 고려사항 : 신뢰도 / 성능 / 기술 지원 / 주변 기기 / 구축 비용
⭐운영체제 종류 및 특징
Windows
Mac
Unix
Linux : Lunus Torvalds
Android : Linux를 사용하고 휴대폰에서 실행된다.
iOS
네트워크 : 컴퓨터 장치 노드간 연결을 사용하여 서로 데이터를 교환할 수 있도록 하는 기술
네트워크 분석 시 고려사항 : 물리적인 위치 관계 파악, 조직 내 보안 취약성 분석 및 대응 고려
OSI 7계층 : 네트워크 통신에서 생기는 여러가지 충돌 문제를 완화하기 위해 국제 표준화 기구 ISO에서 제시한 네트워크 기본 모델
아파서티내타피 : Application, Presentation, Session, Transport, Network, Data link, Physical
** 이후에서 더 자세하게 다룰 예정이나 미리 확인하기!
DBMS : 데이터베이스라는 데이터 집합을 만들고 저장 및 관리할 수 있는 기능들을 제공하는 응용 프로그램
DBMS의 기능 : 중복제어, 접근 통제, 인터페이스 제공, 관계 표현, 샤딩/파티셔닝, 무결성 제약조건, 백엽 및 회복 기능
** 이후 더 자세히 다룰 예정!
DBMS 형행 시스템 분석시 고려사항 : ⭐가용성 / 성능 / 상호 호환성 / 기술 지원 / 구축 지원
상호호환성에서 JDBC, ODBC. 호옥시 단답으로 나올 수 있다.
JDBC : 자바에서 데이터베이스를 사용할 수 있도록 연결해주는 응용 프로그램 인터페이스
ODBC : 그냥 데이터베이스에 엑세스하기 위한 표준 개방형 응용 프로그램 인터페이스
⭐미들웨어 : 중간에서 중재를 해주는 소프트웨어. 통신이 이루어질 수 있도록 제어해줌. 대표적인 것이 WAS
웹 애플리케이션 서버 : 서버계층에서 어플리케이션이 동작할 수 있는 환경을 제공.
웹 브라우저 - 웹 서버 - WAS - DB 이렇게 통신
미들웨어 현행 시스템 분석 시 고려사항 : 가용성 / 성능 / 기술 지원 / 구축 비용
가용성 : 안정적인 처리 능력
성능 : 대규모 데이터 처리 능력
기술 지원 : 공급사에서 안정적으로 기술 지원
구축 비용 : 라이센스 정책 및 유지관리 비용
오픈 소스 사용 시 고려 사항 : 라이센스 종류, 사용자 수, 기술의 지속 가능성 등을 고려
'자격증 > 1. 요구사항 확인' 카테고리의 다른 글
03. 요구사항 확인 (0) | 2023.03.03 |
---|---|
01. 소프트웨어 개발방법론 (2) | 2023.03.01 |
1. 요구사항 확인(진행중) (0) | 2023.02.22 |