[정보처리기사-실기] 1장 요구사항 확인
<CH1 SW개발 방법론>
소프트웨어 생명주기
시스템의 요구분석~유지보수까지 전 공정을 체계화한 절차
모델 종류
- 폭포수 모델: 가장 오래됨, 각 단계 마무리 후 다음
- 프로토타이핑 모델 : 주요 기능 프로토타입으로 구현, 고객의 피드백 중심
- 나선형 모델 : 점진적 개발 → 위험 최소화
- 반복적 모델 : 구축 대상 나눠 병렬적 개발 후 통합
소프트웨어 개발 방법론
소프트웨어 개발부터 폐기까지 전과정을 형상화한 방법론
- 애자일 방법론
- 객체 지향 방법론
- 구조적 방법론
- 정보공학 방법론
- 컴포넌트 기반 방법론
- 제품 계열 방법론
애자일(Agile) 방법론
XP(eXtreme Programming)
스크럼(Scrum)
린(Lean)
객체 지향 방법론
객체 지향 분석(OOA)
사용자 요구사항 분석 → 클래스, 속성과 연산 정의
OOSE(Object Oriented Software Engineering): 야콥슨
OMT(Object Modeling Technology): 럼바우
분석 절차 : 객체 모델링 → 동적 모델링 → 기능 모델링
- 객체 모델링 - ER 다이어그램
- 동적 모델링 - 상태 다이어그램
- 기능 모델링 - DFD(자료 흐름 다이어그램)
비용산정 모형
하향식 산정
전문가와 조정자를 통한 비용산정
- 델파이 기법 : 경험적 지식 → 문제 해결 및 예측
상향식 산정
요구사항, 기능에 따른 비용산정
- LoC(Lines of Code) : 낙관치, 중간치, 비관치 → 예측치
- Man Month : 1사람이 1개월 동안 하는 일을 기준
- COCOMO : 보헴이 제안, 프로그램 규모 기준
- 조직형(Organic Mode) : 5만 라인 이하
- 반 분리형(Semi-Detached Mode) : 30만 라인 이하
- 임베디드형(Embedded Mode) : 30만 라인 이상
- Putnam(푸트남) : 개발 단계별 인력의 분포를 가정
- FP(기능 점수) : 기능별로 가중치 부여
비용산정 자동화 추정 도구
SLIM
Rayleigh-Norden 곡선, Putnam 예측 모델 → 자동화 추정 도구
ESTIMACS
FP모형 기초 → 자동화 추정 도구
일정 관리 모델
프로젝트가 일정 기한 내에 완료될 수 있도록 관리
- CPM(Critical Path: 주 공정법)
- PERT
- CCPM(중요 연쇄 프로젝트 관리)
<CH2 현행 시스템 분석>
현행 시스템 파악
현행시스템의 기술 요소를 파악함
1. 구성/기능/인터페이스 파악
구성 : 기간업무와 지원업무 구별
⚠️명칭, 주요 기능 명시
기능 : 제공하는 기능
⚠️주요기능과 하부기능을 계층형으로 표시
인터페이스 : 데이터 종류, 형식, 프로토콜, 연계유형, 주기 명시
2. 아키텍처 및 소프트웨어 구성 파악
아키텍처 구성도 → 그림으로 파악
⚠️핵심기능을 중심으로 파악해야함
소프트웨어 구성도(시스템 명, SW제품명, 용도, 라이선스 적용방식, 라이선스 수)
⚠️보유한 라이선스 수량 파악 중요!(비용 문제)
3. 하드웨어 및 네트워크 구성 파악
하드웨어 구성도 : 이중화가 적용됐는지 여부
⚠️인프라 구축 기술 난이도, 비용 증가 가능성
네트워크 구성도 : 위치, 용도, 장비 제품명, 주요 사양, 수량
⚠️서버 위치, 연결 방식 고려
현행 시스템 분석서 작성
1.현행 시스템 관련 자료 수집
2. 수집한 자료 분석
3. 분석한 결과 → 산출물
4. 작성된 산출물 검토
💡 현행 시스템을 분석하기 위해서는 많은 시간과 비용이 들기 때문에 분석 범위와 수준을 정함
SW 아키텍처
소프트웨어 구성요소, 외부적 특성, 관계를 표현하는 시스템의 구조
SW 아키텍처 4+1 뷰
요구사항을 정리해놓은 시나리오를 4개의 관점에서 바라봄
- 유스케이스 뷰
- 논리 뷰
- 프로세스 뷰
- 구현 뷰
- 배포 뷰
SW 아키텍처 패턴
- 계층화 패턴
- 클라이언트-서버 패턴
- 파이프-필터 패턴
- 브로커 패턴
- 모델-뷰-컨트롤러 패턴
SW 아키텍처 비용 평가 모델
- SAAM
- ATAM
- CBAM
- ADR
- ARID
디자인 패턴
SW 설계에서 공통적으로 발생하는 문제를 자주 쓰이는 설계 방법으로 정리함
디자인 패턴 유형
목적
생성 패턴 | 구조 패턴 | 행위 패턴 |
객체의 생성과 관련된 패턴 | 클래스나 객체들을 조합하여 더 큰구조로 만들 수 있게 해주는 패턴 | 클래스나 객체들이 상호작용 하는 방법이나 책임 분배 방법을 정의하는 패턴 |
- 추상 팩토리(Abstract Factory) - 팩토리 메소드(Factory Method) - 빌더(Builder) - 프로토타입(Prototype) - 싱글톤(Singleton) |
- 어댑터(Adapter) - 브리지(Bridge) - 컴포지트(Composite) - 데코레이터(Decorator) - 퍼사드(Facade) - 플라이웨이트(Flyweight) - 프록시(Proxy) |
- 책임 연쇄(Chain of Responsibility) - 커맨드(Command) - 인터프리터(Interpreter) - 반복자(Iterator) - 중재자(Mediator) - 메멘토(Memento) - 옵서버(Observer) - 상태(State) - 전략(Strategy) - 템플릿 메소드(Template Method) - 방문자(Visitor) |
생성 패턴
- 추상 팩토리
동일한 주제의 다른 팩토리를 묶어줌
구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴 - 빌더
생성과 표기를 분리해 복잡한 객체를 생성 - 팩토리 메소드
생성할 객체의 클래스를 국한하지 않고 객체를 생성
객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패턴 - 프로토타입
기존 객체를 복제함으로써 객체를 생성 - 싱글톤
한 클래스에 한 객체만 존재하도록 제한
전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며,
생성된 객체를 어디서든지 참조할 수 있도록 하는 패턴
구조 패턴
- 어댑터
인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록,
타 클래스의 인터페이스를 기존 인터페이스에 덧씌움 - 브리지
추상화와 구현을 분리해 둘을 각각 따로 발전시킬 수 있음 - 컴포지트
0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있음
복합 객체와 단일 객체를 클라이언트에서 구별없이 다루게 해주는 패턴 - 퍼사드
많은 분량의 코드에 접근할 수 있는 단순한 인터페이스 제공 - 프록시
접근 조절, 비용 절감, 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공함
행위 패턴
- 커맨드
위의 명령어를 각각 구현하는 것보다는 하나의 추상 클래스에 메서드를 하나 만들고
각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행하는 것
실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계 - 옵저버
어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들의 내용이 자동으로 갱신되는 패턴 - 템플릿 메소드
상위 클래스에서는 추상적으로 표현하고, 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴
작업 처리 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 동일하게하고, 특정 단계에서 수행하는 내역을 바꾸는 패턴
범위
- 클래스 패턴
상속 관계, 컴파일 타임에 정적으로 결정 - 객체 패턴
객체 간 관련성, 런타임에 동적으로 결정
디자인 패턴 종류
- 생성패턴 : Builder, Prototype, Factory Method, Abstract Factory, Singleton
- 구조패턴 : Bridge, Decorator, Facade, Flyweight, Proxy, Composite, Adapter
- 행위패턴 : Mediator, Interpreter, Iterator, Template Method, Observer, State, Visitor, Command, Strategy, Memento, Chain of Responsibility
OSI 계층
네트워크 통신에서 충돌 문제를 완화하기 위해 국제 표준화 기구(ISO)에서 제시한 모델
이미지 출처:[https://shlee0882.tistory.com/110]
(22.04.08확인)
- 응용 계층(Application Layer)
사용자와 네트워크 간 응용서비스 연결, 데이터 생성 - 표현 계층(Presentation Layer)
데이터 형식 설정과 부호교환, 암/복호화 - 세션 계층(Session Layer)
연결 접속 및 동기 제어 - 전송 계층(Transport Layer)
신뢰성 있는 통신 보장, 데이터 분할과 재조립, 흐름제어, 혼잡제어 - 네트워크 계층(Network Layer)
단말 간 데이터 전송을 위한 최적화된 경로 제공 - 데이터 링크 계층(Data Link Layer)
인접 시스템 간 데이터 전송, 전송 오류 제어 - 물리 계층(Physical Layer)
0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
개발 기술 환경
1.운영체제
2. DBMS
3. 미들웨어
4. 오픈소스
1. 운영체제
HW와 SW 리소스 관리
신뢰도 : 장애 발생 가능성
성능 : 대규모 동시 사용자 처리
기술지원 : 안정적 기술지원
주변기기 : 설치 가능한 HW
구축비용 : 유지 및 관리 비용
2. DBMS
사용자, 애플리케이션, 데이터베이스와 상호작용하여 데이터 저장 및 분석함
가용성 : 장애 발생 가능성
성능 : 데규모 데이터 처리
기술지원 : 안정적 기술지원
상호 호환성 : 설치 가능한 운영체제
구축비용
3. 미들웨어
종류
RPC(Remote Procedure Call) : 원격 동작 프로시저 호출
MOM(Message Oriented Middleware) : 메시지 송수신
ORB(Object Request Broker) : 객체지향 시스템에서 객체 및 서비스 요청 및 전송
DB 접속 미들웨어 : app과 DB 서버 연결
TR 모니터(Transaction Processing) : 분산 시스템 app 지원, 트랜잭션 처리 감시 및 제어
웹 애플리케이션 서버 : 웹 앱 지원
OS 와 SW 애플리케이션 사이, 운영체제 제공서비스를 확장
가용성
성능
기술지원
구축비용
4. 오픈소스
소스코드 공개하여 제한없이 코드 보고 사용가능
오픈소스 라이선스를 만족하는 SW
라이선스 종류
사용자 수
기술의 지속 가능성
개발 기술 환경 정의
1.기술 환경 정의를 위한 자료 수집
2. 조사자료 분석, 개발 기술 환경 설정
1. 기술 환경 정의를 위한 자료 수집
- 시스템 구축 형태
- 사용자 수
- 트랜잭션 수
- 온라인 업무
- 배치 업무
- 데이터베이스
- 데이너 벡업
- 운영시간
2. 조사자료 분석, 개발 기술 환경 결정
- 운영체제 - 리눅스, 유닉스, 윈도우
- DBMS - 상용 DBMS, 오픈 소스 DBMS
- 웹 앱 서버 - 개발용 , 운영용
- 시스템 용량 산정 = 온라인 트랜잭션 처리(OLTP:Online Transaction Processing), web/was기초 자료 조사 항목 값 이용
<CH3 요구사항 확인>
요구사항
- 기능적 요구사항
- 시스템이 제공하는 기능, 서비스 요구사항
- 기능성, 완전성, 일관성
- 비기능적 요구사항
- 품질과 관련된 사항
- 신뢰성, 사용성, 효율성, 유지보수성, 이식성, 보안성, 제약사항
요구사항 개발 프로세스
요구사항 도출, 분석, 명세, 확인 및 검증하는 일련의 구조화된 활동
1. 도출(Eliciation: 요수사항 수집)
- stakeholder들이 의견 교환하여 요구사항 식별 및 이해
- SDLC(SW Development Life Cycle)동안 지속적 반복
- 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑 유스케이스
2. 분석(Analysis)
- 개발 대상의 사용자 요구사항 이해
- 모호한 요구사항 발견하기 위한 과정
- 상충되는 요구사항 중재
3. 명세(Specification)
- 분석된 요구사항 바탕으로 모델 작성 및 문서화
- 기능 요구사항 전부, 비기능 요구사항 필요한 것만 작성
4. 확인(Validation: 요구사항 검증)
- 요구사항 할당 전, 요구사항 명세서가 정확 안전하게 작성됐는지 검토
- 이해관계자들이 검토
- 요구사항 관리 도구로 요구사항 정의 문서에 대해 형상관리(SCM) 수행
요구사항 도출 기법
인터뷰, 브레인스토밍, 델파이기법 (경험적 지식으로 문제해결 & 예측), 롤 플레잉, 워크숍, 설문조사
요구사항 확인 및 검증 기법
- 정형 기술 검토(FTR- Formal Technical Review)
- 동료 검토 : 2~3명 리뷰 진행, 요구 명세서 설명하며 이해관계자들이 들으면서 결함 발견
- 워크 스루 : 회의 전 검토 자료 배포, 짧은 회의
- 인스펙션 : 외부 전문가가 검사하여 오류를 찾아냄
- 프로토타이핑 활용
- 모델 검증
- 테스트 케이크 및 테스트
- CASE 도구 활용 검증
- 베이스라인 검증
- 요구사항 추적표(RTM) 이용한 검증
<CH4 분석모델 확인하기>
분석 모델 검증 방법
유스케이스 모델
개념수준의 분석 클래스
분석 클래스
💡 참고 블로그
https://dustink.tistory.com/152
https://velog.io/@mrnglory/정처기-요약-요구사항
디자인 패턴: https://ss-o.tistory.com/141?category=1013696