실용주의 소프트웨어 개발 - ChoDragon9/posts GitHub Wiki

생명주기

  • 폭포수 모델
    • 계획 -> 분석 -> 설계 -> 개발 -> 테스트를 순서대로 진행
  • 반복형 모델: 계획 / 분석 / 설계 / 개발 / 테스트를 반복
    • 점진적 모델
      • 기능 묶음을 단계적으로 개발하고 통합
      • 애자일
    • 진화적 모델
      • 릴리즈 할 때 마다 기능의 완성도를 업그레이드
      • UP(Unified Process): 도입 -> 정련 -> 구축 -> 전이 총 4단계

소프트웨어 개발의 단계

  1. 분석: 요구사항이 무엇인지 정의
  2. 설계: 요구사항을 어떻게 구현할지
  3. 개발: 요구사항을 시스템이 이해할 수 있는 언어로 변환하는 과정
  4. 테스트: 요구사항이 제대로 구현되었는지 검증하고 확인하는 과정

요구사항

요구사항이란?

시스템이 제공해야 할 기능과 시스템이 충족해야 할 조건

요구사항 종류

  • 비즈니스 요구사항
    • 프로젝트의 비전, 목표
    • 산출물: 제안서, 수행 계획서
  • 사용자 요구사항
    • 사용자가 무엇을 할 수 있는 지 설명
    • 산출물: Use Case 시나리오, 사용자 스토리 보드
  • 기능 요구사항
    • 개발자가 개발해야 하는 것
    • 산출물: 요구사항 정의서, 메뉴 구조도
  • 비기능 요구사항
    • 제품의 상태, 조건, 특징을 설명
    • 산출물: ISO 25010, 품질 목표
  • 비즈니스 규칙
    • 이 자체가 요구사항이 되지 않음
    • 특정 기능의 요구사항은 어떤 비즈니스 규칙으로 파생되었는지 추적
    • 산출물: 회사의 정책, 산업표준
  • 인터페이스
    • 시스템과 외부 세계를 사이를 연결하는 것
    • 산출물: 인터페이스 정의서
  • 시스템 요구사항
    • 사용자 관점에서 보여지는 시스템의 행위에 대한 설명
    • 산출물: 운영 환경 기술서

비기능 요구사항

  • ISO 25010
  • 종류
    • 성능: 얼마나 빨리 처리할 수 있는지. 처리량과 자원의 최대 사용치
    • 신뢰성: 고장없이 서비스 수행. 고장 발생시, 결함복구에 걸리는 시간의 목표시간
    • 사용성
    • 유지보수성
    • 이식성
    • 보안성
    • 인터페이스

요구사항을 정의할 때 쉽게 저지르는 실수

  • 소프트웨어 개발의 전체 범위
  • 요구사항을 What이 아니라 How 중심으로 기술
  • 비즈니스 용어가 아닌 기술용어를 사용

요구사항 누락을 막는 방법

  • 왜?
    • 나중에 수정하게 되면 요구사항 정의 단계에서 결함을 해소하는 것보다 많은 비용 발생
    • 비유: 호미로 막을 수 있는 것을 포크레인으로 막아야 한다.
  • 빈번한 위치
    • 비기능 요구사항: 응답 속도, UI/UX 등 사용성, 보안, 멀티플랫폼과 같은 품질요구사항
      • 왜?
        • 시스템 아키텍쳐와 관련된 사항이기 때문에
        • 프로젝트 초기에 조직의 역할과 처리 정보에 대한 정리
  • 어떻게?
    • 사용자 화면 정의, 프로토타이핑, 유즈케이스 모델링

요구사항 개발을 위한 핵심역량

  • 요구사항 방법론
    • 요구사항(기능, 비기능)을 개발하는 절차(도출, 분석, 명세화, 검토)
  • 휴먼스킬
    • 커뮤니케이션 / 인터뷰 / 협상
  • 업종/업무 지식
    • 업무 절차 및 룰 / 업종, 업무의 전문 용어 / 업계 관행 / 사례
  • 요구사항 모델링
    • 요구사항을 모델링하는 기법(비즈니스 프로세스 모델링, 유스 케이스 모델링)