소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것
IEEE의 소프트웨어 공학 표준 용어 사전
Fairley : 지정된 비용과 기간 내에 소프트웨어를 체계적으로 생산하고 유지보수하는데 관련된 기술 원리
Boehm : 과학적인 지식을 소프트웨어 설계와 제작에 응용하고 이를 개발, 운용, 유지보수하는데 필요한 문서 작성 과정
소프트웨어 개발도 이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 다음 단계로 진행
특징
1. 제품의 일부가 될 매뉴얼을 작성
2. 각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확히 산출되어야함
사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물 예측
특징
1. 견본품은 의뢰자나 개발자 모두에게 공동의 참조 모델이 됨
2. 새로운 요구사항이 도출될 때마다 이를 반영한 모델을 만들어 소프트웨어 구현
3. 단기간이 목표라 비효율적인 언어나 알고리즘이 사용될 수 있음
보헴이 제안 폭포수와 프로토의 합체
특징
1. 위험 관리 및 최소화하는 것이 목적
2. 핵심 기술에 문제가 있거나 사용자의 요구사항이 이해하기 어려운 경우 적합
3. 유지보수 필요없음
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기 반복하며 개발
특징
1. 고객과의 소통에 초점
2. 스프린트, 이터레이션 주기 반복
3. 소규모 프로젝트, 고객의 요구사항에 우선순위를 부여하는 개발 작업
4. 스크럼, 칸반, Lean, 크리스탈, ASD, FDD, DSDM
나선형 모델 개발 순서
계획 수립 > 위험 분석 > 개발 및 검증 > 고객 평가
스스로가 스크럼 팀 구성, 스스로 문제 해결해야함, 단기간 작업
스프린트 = 애자일에서 말하는 개발 주기
이해관계자 중 개발될 제품에 대한 이해도가 높고 요구사항을 책임, 요구사항 작성 주체
백로그를 작성하고 우선순위 지정
백로그란?
제품 개발에 필요한 요구사항을 모두 모아 우선순위 부여해 놓은 목록
스크럼 팀이 스크럼을 잘 수행하게 객관적 조언, 일일 스크럼 회의 주관, 장애 공론화
PO와 SM을 제외한 모든 팀원. 개발자 외에도 디자이너도 DT가 될 수 있음
문제를 풀어보니 순서가 중요
스프린트 계획 회의 > 일일 스크럼 회의 > 스프린트 > 스프린트 검토 회의 > 스프린트 회고
수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화
얘도 마찬가지로 애자일이므로 테스트 반복
의사소통, 단순성, 존중, 용기, 피드백
refactoring : 동작의 변화 없이 내부 구조를 변경하는 것
문제를 풀어보니 뭐가 뭐를 파악하는지만 알고 넘어가면 될 듯 하다
각 업무에 속하는 단위 업무 정보시스템들의 명칭, 주요 기능 명시
주요 기능과 하부 기능, 세부 기능으로 구분
데이터의 종류, 형식, 프로토콜, 연계 유형, 주기 등을 명시
어떠한 기술 요소들이 사용되는지 최상위 수준에서 계층별로 표현한 아키텍처 구성도
라이선스 관련
서버의 주요 사양과 수량, 이중화 적용 여부 명시
서버간의 네트워크 연결 방식을 네트워크 구성도로 작성
현행 시스템 분석에서 인적 자원은 분석할 필요가 없음
풀 때 어떤 구성에서 어떤 키워드를 중심으로 파악하는지 확인하기
운영체제, DBMS, WAS 모두 공통적으로 가용성이 고려사항이 됨
가용성 : DBMS 이중화 및 복제 지원
성능 : 대규모 데이터 처리, 대용량 트랜잭션, 튜닝 옵션의 다양화, 취소화된 설정과 비용 기반 질의 최적화 지원
상호 호환성 : JDBC, ODBC와의 호환 여부
WAS의 종류와 DBMS의 종류, 가용성의 특징에 대해서 출제됐었음
WAS의 종류에서 문제를 잘 읽어보면 풀 수 있음
요구사항 : 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 제약 조건
기능 요구사항
EX) 사용자는 회원 ID와 비밀번호를 입력하여 로그인할 수 있다
비기능 요구사항
EX) 시스템은 1년 동안 계속 운용이 가능해야함 등등
가용성, 정합성, 상호 호환성, 대응성, 이식성, 확장성
사용자 요구사항
사용자 관점에서 본 시스템이 제공해야 할 요구사항, 사용자 친화
시스템 요구사항
개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에 제공해야 할 요구사항, 기술적 용어 표현
개발 대상에 대한 요구사항을 체계적으로 도출하고 이를 분석한 후 결과를 명세서에 정리한 다음 마지막으로 이를 확인 및 검증하는 구조화된 활동
요구사항 개발 프로세스가 진행되기 전 타당성 조사가 선행되어야함
순서
도출 > 분석 > 명세 > 확인
요구사항을 만들어내는 것, 생명 주기 동안 지속적으로 반복, 도출하는 단계에서 개발자와 고객 사이의 관계가 만들어지며 이해관계자가 식별된다
주요 기법 : 청취와 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스
유스 케이스 : 사용자의 요구사항을 기능 단위로 표현하는 것
사용자가 말한 요구사항 중 명확하지 않거나 모호할 때 이를 걸러내야함
DFD, DD(자료 사전) 등의 도구가 사용됨
요구사항 명세는 분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것을 의미
기능 요구 사항은 완벽히 작성하고 비기능 요구사항은 필요한 것만 명확히 기술
정형 명세
수학적 원리, 기호 기반
요구사항 정확 간결
VDM, Z ,Petri-net, CSP
비정형 명세
비정형 : 상태/기능/객체 중심, 자연어 기반
내용 이해가 쉬우나 자연어라 해석이 달라질 수 있음
FSM, 의사결정테이블, ER 모델링, SADT
이해관계자가 실시하며 완전하게 작성되었는지 확인함
요구사항 검증을 통해 모든 문제를 확인할 수 있는 것은 아님
요구사항 관리 도구를 이용하여 요구사항 정의 문서들에 대해 형상 관리를 수행
형상관리 : 얘는 요구사항 관련이 아님, 소프트웨어 시스템이 사용되는 동안 발견되는 오류를 정리하는 것
기능/비기능에 대한 문제가 많이 나옴
요구사항 개발 프로세스의 순서
도출 > 분석 > 명세 > 확인(검증)
도출 기법도 나옴. 프로토타이핑에 대한 종류가 여러개니 헷갈리지 말자
자료의 흐름과 처리를 중심으로 함
도형 중심의 분석용 도구, 하향식 방법, 개발의 모든 단계에서 명세서 작성이 가능
Data Flow Diagram으로 요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 분석
구조적 분석 기법임! 시간의 흐름을 나타내진 못함!
https://devinus.tistory.com/8 에서 가져왔는데 출처를 이렇게 다는게 맞는지?
자료 저장소 : =
단말 : 사각형
자료 흐름 : 화살표
프로세스 : 동그라미
프로세스를 거쳐 자료 흐름이 변환될 때마다 새로운 이름이 부여되어야한다
상위 단계의 처리는 하위 단계와 같아야함(?)
입력 화살표가 있다고 반드시 출력 화살표가 있어야하는 것은 아님!!
= : 자료의 정의
+: and
() : 생략
[|] : 자료 선택 혹은 or
{} : 자료 반복
** : 주석
자료사전, DFD 관련 문제가 많이 나옴. 프로세스의 이름이 변하는 것, 입출력 화살표 관련
DFD 구성요소의 이름을 정확히 아는 것이 중요
요구사항을 자동화 도구를 이용해 분석한다
SADT : SoftTech 사에서 개발한 것으로 시스템 정의, 소프트웨어 요구사항 분석 등 구조적 분석 및 설계 도구, 블록 다이어 그램을 채택
SREM : TRW 사가 우주 국방 시스템 그룹에 의해 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기하도록 할 목적으로 개발. RSL과 RREVS를 사용하는 자동화 도구
PSL/PSA : 미시간 대학에서 태어남
TAGS : 시스템 공학 방법 응요에 대한 자동 접근 방법
HIPO : 시스템의 분석 및 설계나 문서화할 때 사용되는 기법으로 시스템 실행과정인 입력, 처리, 출력의 기능을 나타냄
하향식 소프트웨어 개발을 위한 도구이고 변경과 유지보수가 용이하며 시스템의 기능을 여러개의 고유 모듈들로 반할해 계층 구조로 표현할 수 있다
HIPO CHART : 가시적 도표(Visual Table), 총체적 도표(Overview Diagram), 세부적 도표(Detail diagram)
HIPO와 나머지 도구들을 비교하고 각자의 특징을 물음
가시적 도표 : 시스템의 전체적인 기능과 흐름을 보여주는 트리 구조
총체적 도표 : 프로그램을 구성하는 기능을 기술한 것으로 입력, 처리, 출력에 대한 전반적인 정보를 제공하는 도표
세부적 도표 : 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표
HIPO의 도표들은 무조건 나올 듯