소프트웨어 생명 주기 ★★★
소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 각 단계별로 나눈 것
1. 소프트웨어 생명주기 모형 폭프나반
1) 폭포수 모형
이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여
승인 과정을 거친 후 다음 단계를 진행하는 개발 방법론
→ 한 단계가 완전히 끝나야만 다음 단계로 넘어가는 개발 방법론
2) 프로토타입 모형
사용자의 요구사항을 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품(Prototype)을 만들어
최종 결과물을 예측하는 모형.
※ 견본품은 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발
3) 나선형 모형 (Boehm이 제안)
여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모형
계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가 (반복)
4) 애자일 모형
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일저안 주기를 반복하면서 개발하는 모형
→ 고객과의 소통에 초점을 맞춘 방법론, 폭포수 모형이랑 대조적
▶ 종류
① 스크럼(Scrum)
- 팀이 중심이 되어 개발의 효중성을 높이는 기법
- 제품 책임자(PO), 스크럼 마스터(SM), 개발팀(DT)
- 개발 프로세스
스프린트 계획 회의 → 진행(스프린트) → 일일 스크럼 회의 → 스프린트 검토 회의 → 스프린트 회고
※ 백로그(우선순위 목록), 소멸 차트(작업 진행 상황)
② XP(eXtreme Progamming)
- 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와
개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
- 핵심가치 용단의피존
용기(Courgae), 단순성(Simplicity), 의사소통(Communication), 피드백(Feedback), 존중(Respect)
- 개발 프로세스
릴리즈 계획 수립 → 진행(이터레이션) → 승인 검사 → 출시(소규모 릴리즈)
- 주요 실천 방법
짝 프로그래밍(Pair Programming), 공동 코드 소유(Collectiv Ownership),
테스트 주도 개발(Test-Driven Development), 전체 팀(Whole Team)
계속적인 통합(Continuous Integration), 리팩토링(Refactoring)
소규모 릴리즈(Small Releases)
※ 리팩토링의 목적 : 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발하기 위해
③ 칸반(Kanban)
④ 린(Lean)
- 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여
품질을 향상시킨 방법론
- 7가지 원칙 낭품지 확인사전
낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
⑤ 기능중심개발(FDD; Feature Driven Development)
▶ 핵심가치 개변동고
개인과 상호작용, 변화에 대응, 동작하는 소프트웨어, 고객과 협업 에 가치를 둔다
소프트웨어 개발 방법론
소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론
소프트웨어 개발, 유지보수 등에 필요한 수행 방법과 각종 기법 및 도구를 체계저긍로 정리하여 표준화 한 것1. 목적 : 생산성과 품질향상
2. 종류 1) 구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 방법론
- 나씨-슈나이더만 차트 : 논리의 기술에 중점을 둔 도형식 표현방법
2) 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
3) 객체 지향 방법론: '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
4) 컴포넌트 기반 방법론 (CBD) : 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
5) 애자일 방법론 : 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서
효율적인 시스템 개발할 수 있는 신속 적응적 개량 개발 방법론
6) 제품 계열 방법론: 특정 제품에 적용하고 싶은 공통된 기능을 정의해 개발하는 방법론, 임베디드 S/W작성에 유용
소프트웨어 공학(SE; Software Engineering)
소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문, 소프트웨어의 품질과 생산성 향상이 목적
- 소프트웨어 공학의 기본 원칙
- 현대적인 프로그래밍 기술을 계속적으로 적용
- 개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증
- 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지
개발 기술 환경 파악
1. 운영체제(OS, Operating System)
컴퓨터 시스템의 자원을 효율적으로 관리하며,
사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어
- 운영체제 관련 요구사항 식별 시 고려사항
가용성, 성능, 주변기기, 기술 지원, 구축 비용
2. 데이터베이스 관린 시스템(DBMS, Database Management System)
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고,
데이터베이스를 관리해 주는 소프트웨어
※ 기존의 파일시스템이 갖는 데이터의 종속성과, 중복성 문제를 해결하기 위해 제안된 시스템
- DMBS 관련 요구사항 식별 시 고려사항 가성호기구
가용성, 성능, 상호 호환성, 기술 지원, 구축 비용
3. 웹 어플리케이션 서버(WAS; Web Application Server)
사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
주로 데이터베이스 서버와 연동해서 사용
- WAS 관련 요구사항 식별 시 고려사항
가용성, 성능, 기술지원, 구축 비용
4. 오픈 소스(Open Source)
누구나 별다른 제한 없이 사용할 수 있도록 소스 코드를 공개한 소프트웨어
- 오픈소스 관련 요구사항 식별 시 고려사항
라이선스의 종류, 사용자의 수, 기술의 지속 가능성
요구사항 정의
소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약조건
1. 기능 요구사항
시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
- 시스템의 입,출력으로 무엇이 포함되어야 하는가
- 시스템이 어떤 데이터를 저장, 연산을 수행해야 하는지
- 시스템이 반드시 수행해야 하는 기능
- 사용자가 시스템을 통해 제공받기를 원하는 기능
2. 비기능 요구사항
품질이나 제약사항과 관련된 요구사항
- 시스템 장비 구성 요구사항
- 테스트 요구사항, 인터페이스 요구사항, 보안 요구사항
- 품질 요구사항 : 가용성, 정합성, 상호 호환성, 대응성, 이식성, 확장성, 보안성 등
- 제약 사항
- 프로젝트 관리 요구사항, 프로젝트 자원요구사항
3. 사용자 요구사항
사용자 관점에서 본 시스템이 제공해야 할 요구사항
사용자를 위한 것으로, 친숙한 표현으로 이해하기 쉽게 작성
4. 시스템 요구사항
개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에 재공해야 할 요구사항
전문적이고 시술적인 용어로 표현
요구사항 개발 프로세스
도분명확
1. 도출(Elicitation)
시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항을 어떻게 수집할 것인지 식별하고 이해하는 과정
소프트웨어 개발 생명 주기(SDLC) 동안 지속적으로 반복
- 주요 기법
청취와 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스
2. 분석(Analysis)
요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정
요구사항의 타당성 조사하고 비용과 일정에 대한 제약 설정
- 대표적인 도구 : 자료흐름도(DFD), 자료 사전(DD)
3. 명세(Specification)
분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것
기능 요구사항은 모두, 비기능 요구사항은 필요한 것만 기술
소단위 명세서
4. 확인(Validation)
요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동
비용 산정 기법
1. 하향식 산정방법
경험이 많은 전문가에게 비용산정 의뢰 또는 전문가와 조정자를 통해 비용산정
1) 전문가 감정 기법 : 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
2) 델파이 기법 : 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 조합하여 산정하는 기법
2. 상향식 산정방법 : 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
1) 코드 라인 수(LoC: Lines of Code)
원시 코드 라인수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구해 비용산정
2) Man Month : 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 비용산정
3) COCOMO 모형 : 보헴이 제안한 모형으로 프로그램의 규모에 따라 비용산정
- 조직형(Organic Mode): 5만(50KDSI)라인 이하, 사무처리용, 업무용, 과학용 응용 S/W에 적합
- 반 분리형(Semi-Detached Mode): 30만(300KDSI)라인 이하, 컴파일러, 인터프리터와 같은 유틸리티에 적합
- 임베디드형(Embedded Mode): 30만(300KDSI)라인 이상, 실시간 처리 시스템 등의 프로그램 개발에 적합
4) 푸트남(Putnam) 모형: 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
5) 기능점수(FP) 모형: 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하여 비용산정
3. 비용 산정 자동화 추정 도구
- SLIM: Rayleigh-Norden곡선과 Putnam예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS: 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로 하여 개발된 자동화 추정 도구
현행 시스템 분석
현행 시스템의 어떤 기술 요소 사요을 하는지 파악하는 활동
1. 현행 시스템 파악 절차
구성/기능/인터페이스 파악 → 아키텍처 및 소프트웨어 구성 파악 → 하드웨어 및 네트워크 구성 파악