실용주의 소프트웨어 개발 - ChoDragon9/posts GitHub Wiki
생명주기
- 폭포수 모델
계획 -> 분석 -> 설계 -> 개발 -> 테스트
를 순서대로 진행
- 반복형 모델:
계획 / 분석 / 설계 / 개발 / 테스트
를 반복- 점진적 모델
- 기능 묶음을 단계적으로 개발하고 통합
- 애자일
- 진화적 모델
- 릴리즈 할 때 마다 기능의 완성도를 업그레이드
- UP(Unified Process): 도입 -> 정련 -> 구축 -> 전이 총 4단계
- 점진적 모델
소프트웨어 개발의 단계
- 분석: 요구사항이 무엇인지 정의
- 설계: 요구사항을 어떻게 구현할지
- 개발: 요구사항을 시스템이 이해할 수 있는 언어로 변환하는 과정
- 테스트: 요구사항이 제대로 구현되었는지 검증하고 확인하는 과정
요구사항
요구사항이란?
시스템이 제공해야 할 기능과 시스템이 충족해야 할 조건
요구사항 종류
- 비즈니스 요구사항
- 프로젝트의 비전, 목표
- 산출물: 제안서, 수행 계획서
- 사용자 요구사항
- 사용자가 무엇을 할 수 있는 지 설명
- 산출물: Use Case 시나리오, 사용자 스토리 보드
- 기능 요구사항
- 개발자가 개발해야 하는 것
- 산출물: 요구사항 정의서, 메뉴 구조도
- 비기능 요구사항
- 제품의 상태, 조건, 특징을 설명
- 산출물: ISO 25010, 품질 목표
- 비즈니스 규칙
- 이 자체가 요구사항이 되지 않음
- 특정 기능의 요구사항은 어떤 비즈니스 규칙으로 파생되었는지 추적
- 산출물: 회사의 정책, 산업표준
- 인터페이스
- 시스템과 외부 세계를 사이를 연결하는 것
- 산출물: 인터페이스 정의서
- 시스템 요구사항
- 사용자 관점에서 보여지는 시스템의 행위에 대한 설명
- 산출물: 운영 환경 기술서
비기능 요구사항
- ISO 25010
- 종류
- 성능: 얼마나 빨리 처리할 수 있는지. 처리량과 자원의 최대 사용치
- 신뢰성: 고장없이 서비스 수행. 고장 발생시, 결함복구에 걸리는 시간의 목표시간
- 사용성
- 유지보수성
- 이식성
- 보안성
- 인터페이스
요구사항을 정의할 때 쉽게 저지르는 실수
- 소프트웨어 개발의 전체 범위
- 요구사항을 What이 아니라 How 중심으로 기술
- 비즈니스 용어가 아닌 기술용어를 사용
요구사항 누락을 막는 방법
- 왜?
- 나중에 수정하게 되면 요구사항 정의 단계에서 결함을 해소하는 것보다 많은 비용 발생
- 비유: 호미로 막을 수 있는 것을 포크레인으로 막아야 한다.
- 빈번한 위치
- 비기능 요구사항: 응답 속도, UI/UX 등 사용성, 보안, 멀티플랫폼과 같은 품질요구사항
- 왜?
- 시스템 아키텍쳐와 관련된 사항이기 때문에
- 프로젝트 초기에 조직의 역할과 처리 정보에 대한 정리
- 왜?
- 비기능 요구사항: 응답 속도, UI/UX 등 사용성, 보안, 멀티플랫폼과 같은 품질요구사항
- 어떻게?
- 사용자 화면 정의, 프로토타이핑, 유즈케이스 모델링
요구사항 개발을 위한 핵심역량
- 요구사항 방법론
- 요구사항(기능, 비기능)을 개발하는 절차(도출, 분석, 명세화, 검토)
- 휴먼스킬
- 커뮤니케이션 / 인터뷰 / 협상
- 업종/업무 지식
- 업무 절차 및 룰 / 업종, 업무의 전문 용어 / 업계 관행 / 사례
- 요구사항 모델링
- 요구사항을 모델링하는 기법(비즈니스 프로세스 모델링, 유스 케이스 모델링)