정보처리기사

[실기] 요구사항 확인 - 소프트웨어 생명 주기

kelly09 2024. 8. 2. 20:15

🍰 소프트웨어 생명 주기

: 소프트웨어 개발을 위한 설계, 운용, 유지보수 등 과정을 단계별로 나눈 것

폭포수 모형

  • 이전 단계로 돌아갈 수 없음을 전제
  • 각 단계 확실히 → 검토, 승인 → 다음 단계 진행
  • 가장 오래되고 폭넓게 사용됨
  • 고전적 생명 주기 모형
  • 각 단계 끝난 후 다음 단계 수행을 위한 결과물이 명확하게 산출돼야 함

프로토타입 모형

  • 실제 개발될 SW에 대한 견본품(prototype) 만들어 최종 결과물 예측
  • 사용자 - 시스템 사이의 인터페이스에 중점 두어 견본품 개발

나선형 모형(점진적 모형)

  • SW 개발 과정을 여러 번 거쳐 점진적으로 개발
  • 보헴이 제안
  • 누락/추가된 요구사항 첨가 가능
  • 유지보수 과정 필요 X
  • 계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가

애자일 모형

  • 고객의 요구사항 변화에 유연하게 대응, 일정 주기 반복하면서 개발
  • 고객과이 소통에 초점
Scrum, XP(eXtreme Programming), Kanban, Lean, FDD(Feature Driven Development)

네 가지 핵심 가치

프로세스와 도구 < 개인과 상호작용

방대한 문서 < 실행되는 SW

계약 협상 < 고객과 협업

계획 따르기 < 변화에 반응

소프트웨어 공학(Software Engineering)

  • 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
# 기본 원칙
1. 현대적인 프로그래밍 기술 계속적 적용
2. 개발된 SW 품질이 유지되도록 지속적 검증
3. SW 개발 관련 사항 및 결과에 대한 명확한 기록 유지

🍰 스크럼 기법

: 팀이 중심이 되어 개발 효율성 ⬆

제품 책임자

  • 백로그 작성 주체
  • 개발될 제품에 대한 이해도⬆
  • 요구사항 책임지고 의사 결정할 사람 선정

스크럼 마스터

  • 팀이 스크럼 잘 수행할 수 있게 가이드 역할 수행

개발팀

  • 나머지 모든 팀원, 제품 개발 수행

프로세스

  1. 스프린트 계획 회의
  2. 스프린트
  3. 일일 스크럼 회의
  4. 스프린트 검토 회의
  5. 스프린트 회고

 

🍰 XP 기법

: 요구사항에 유연하게 대응하기 위해 고객 참여와 개발 과정의 반복 극대화, 개발 생산성 향상

  • 짧고 반복적인 개발 주기
  • 단순한 설계
XP의 5가지 핵심 가치
- 의사소통
- 단순성
- 용기
- 존중
- 피드백

프로세스

  • 릴리즈 계획 수립
  • 이터레이션
  • 승인 검사
  • 소규모 릴리즈

주요 실천 방법

Pair Programming

Collective Ownership(공동 코드 소유)

Test-Driven Development(테스트 주도 개발)

Whole Team

Continuous Integration(계속적인 통합)

Refactoring 목적: 프로그램을 쉽게 이해/수정하여 빠르게 개발할 수 있도록.

Small Releases

 

🍰 개발 기술 환경 파악

OS(Operating System)

: 컴퓨터 시스템의 자원 효율적 관리, 컴퓨터를 편리/효육적으로 사용할 수 있도록 환경 제공하는 SW

운영체제 관련 요구사항 식별 시 고려사항

가용성, 성증, 기술 지원, 주변 기기, 구축 비용

DBMS(DataBaseManagement System)

: 사용자-DB 사이에서 정보 생성, DB 관리해 주는 SW

  • 데이터의 종속성, 중복성 문제 해결 위해 제안

DBMS 관련 요구사항 식별 시 고려사항

가용성, 성능, 기술 지원, 상호 호환성, 구축 비용

웹 애플리케이션 서버(Web Application Server)

: 동적인 콘텐츠 처리를 위해 사용되는 미들웨어

관련 요구사항 식별 시 고려사항

가용성, 성능, 기술 지원, 구축 비용

오픈 소스

: 누구나 제한 없이 사용할 수 있도록 소스 코드를 공개한 SW

오픈 소스 관련 요구사항 식별 시 고려사항

라이선스의 종류, 사용자 수, 기술의 지속 가능성

 

🍰 요구사항 정의

: SW가 어떤 문제 해결을 위해 제공하는 서비스에 대한 설명, 정상적으로 운영되는데 필요한 제약조건

기능 요구사항(Functional requirements)

: 기능이나 수행과 관련된 요구사항

비기능 요구사항(Non-functional requirements)

: 품질, 제약사항과 관련된 요구사항

  • 성능, 인터페이스, 시스템 장비 구성 요구사항 등

사용자 요구사항(User requirements)

: 사용자 관점에서 본 시스템이 제공해야 할 요구사항

시스템 요구사항

: 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항