soominkim Study
article thumbnail
728x90

 

소프트웨어 생명주기(SDLC; Software Development Life Cycle)은 시스템의 요구분석 부터 유지보수 까지 전 공정을 체계화한 절차이자 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화 한 것입니다.

 

소프트웨어 생명 주기 모델 프로세스는 다음 순서를 가집니다.

순서 프로세스 설명 활동
1 요구사항 분석 개발할 소프트웨어의 기능과 제약조건, 목표 등을 사용자와 함께 명확히 정의하는 단계 기능 요구사항
비기능 요구사항
2 설계 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계 시스템 구조설계
프로그램 설계
사용자 인터페이스 설계
3 구현 언어 선택, 기법, 스타일, 순서 등을 결정하는 단계 인터페이스 개발
자료구조 개발
오류처리
4 테스트 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계 단위 테스트
통합 테스트
시스템 테스트
인수 테스트
5 유지보수 시스템이 인수되고 설치된 후 일어나는 모든 활동 예방, 완전, 교정, 적응, 유지보수

 

소프트웨어 생명 주기 모델 종류에는 다음과 같습니다.

순서 설명
폭포수 모델(Waterfall Model) 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델
가장 오래된 모델이며 선형 순차적 모형으로 고전적 생명주기 모형이라고도 한다.
단계별 정의와 산출물이 명확하며 요구사항 변경이 어렵다.

[절차]
타당성 검토 ➡️ 계획 ➡️ 요구사항 분석 ➡️ 설계 ➡️ 구현 ➡️ 테스트 ➡️ 유지보수
프로토타이핑 모델(Prototyping Model) 고객이 요구한 주요 기능을 프로토타입으로 구현하고 고객의 피드백을 반영하여 만들어간다.
발주자나 개발자 모두에게 공동의 참조 모델을 제공한다.
나선형 모델(Spiral Model) 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해가는 모델

[절차]
계획 및 정의 ➡️ 위험 분석 ➡️ 개발 ➡️ 고객평가
반복적 모델(Iteration Model) 구축대상을 나누어 병렬적으로 개발 후 통합하거나 반복적으로 개발하여 점증 완성시키는 SDLC 모델로 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발한다.

 

소프트웨어 개발 방법론(Software Development Methodology)는 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법으로 소프트웨어를 하나의 생명으로 간주하고 시작부터 사용하지 않는 과정까지의 전 과정을 형상화한 방법론 입니다.

 

소프트웨어 개발 방법론 종류는 다음과 같습니다.

순서 설명
구조적 방법론(Structured Development) 전체 시스템을 기능에 따라 나누어 개발하고 이를 통합하는 분할과 정복 접근 방식의 방법론
프로세스 중심의 하향식 방법론
구조적 프로그래밍 표현을 위해 나씨 - 슈나이더만(Nassi-Shneiderman) 차트를 사용한다.

[나씨 슈나이더만(Nassi-Shneiderman)]
- 논리의 기술에 중점을 둔 도형식 표현 방법
- 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현
- 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합
정보공학 방법론(Information Engineering Development) 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
객체 지향 방법론(Object-Oriented Development) 객체라는 기본 단위로 시스템을 분석 및 설게하는 방법론
복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
객체, 클래스, 메시지를 사용
컴포넌트 기반 방법론(CBD; Component Based Development) 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론으로 개발 기간으로 인한 생산성 향상이 있다.
새로운 기능을 추가하기 쉽고 소프트웨어 재사용이 가능하다.

[Component]
- 원하는 데이터베이스와 소프트웨어의 개발된 모듈 단위
애자일 방법론(Agile Development) 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적인 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론이다..
제품 계열 방법론(Product Line Development) 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론으로 임베디드 소프트웨어를 작성하는 데 유용한 방법론이다.
영역 공학과 응용 공학으로 구분된다.

[영역공학]
- 영역분석, 영역설계, 핵심 자산을 구현하는 영역

[응용공학]
- 제품 요구분석, 제품 설계, 제품을 구현하는 영역

애자일 방법론은 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론입니다. 개발 기간이 짧고 신속하며 폭포수 모형과 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적으로 개발할 수 있습니다.

 

1. XP(eXtreme Programming)

의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론으로 1~3주의 반복(Iteration) 개발주기를 가집니다. 또한 5가지 가치와 12개의 실천항목이 존재합니다.

  • 용기(Courage) : 용기를 가지고 자신감 있게 개발
  • 단순성(Simplicity) : 필요한 것만 하고 그 이상의 것들은 하지 않는다.
  • 의사소통(Communication) : 개발자, 관리자, 고객 간의 원활한 소통
  • 피드백(Feedback) : 의사소통에 대한 빠른 피드백
  • 존중(Respect) : 팀원 간의 상호 존중

다음은 12개의 기본원리 중 대표적인 것입니다.

  • 짝 프로그래밍(Pair Programming) : 개발자 둘이서 짝으로 코딩하는 원리
  • 공동 코드 소유(Collective Ownership) : 시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리
  • 지속적인 통합(CI; Continuous Integration) : 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
  • 계획 세우기(Planning Process) : 고객이 요구하는 비지니스 가치를 정의하고 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다는 원리
  • 메타포어(Metaphor) : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원할하게 한다는 원리
  • 테스트 기반 개발(TDD; Test Driven Develop) : 작성하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
  • 리팩토링(Refactoring) : 프로그램 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템을 재구성한다는 원리

2. 스크럼(SCRUM)

매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론입니다.

순서 설명
백로그(Backlog) 제품과 프로젝트에 대한 요구사항
스프린트(Sprint) 2~4 주의 짧은 개발 기간을 반복적 수행으로 개발질 향상
스크럼 미팅(Scrum Meeting) 매일 15분 정도의 미팅으로 To-Do List 계획을 수립
데일리 미팅(Daily Meeting)이라고도 한다.
스크럼 마스터(Scrum Master) 프로젝트 리더, 스크럼 수행 시 문제를 인지하고 해결하는 사람
스프린트 회고(Sprint Retrospective) 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부 개선점을 확인 및 기록
해당 스프린트가 끝난 시점이나 일정 주기로 시행한다.
번 다운 차트(Burn Down Chart) 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
백로그는 보통 수직축에 위치하고 시간은 수평축에 위치한다.

 

3. 린(LEAN)

도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론으로 JIT(Just In Time), 칸반(Kanban) 보드를 사용한다.

린(LEAN)에는 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화 7가지 원칙이 있다.

 

객체 지향 분석 방법론은 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법입니다.

종류 만든이 설명
OOSE(Object Oriented Software Engineering) 야콥슨(Jacobson) 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론
분석, 설게, 구현 단계로 구성되어 있으며 기능적 요구사항 중심의 시스템이다.
OMT(Object Modeling Technology) 럼바우(Rumbaugh) 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론

[절차]
객체 모델링 ➡️ 동적 모델링 ➡️ 기능 모델링

- 객체 모델링(Object Modeling) : 정보 모델링이라고도 하며 시스템에서 요구하는 객체를 찾고 관게를 정의하여 ER 다이어그램을 만드는 과정(객체 다이어그램)
- 동적 모델링(Dynamic Modeling) : 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동적 순서 등의 동적인 행위를 표현하는 모델링(상태 다이어그램)
- 기능 모델링(Functional Modeling) : 프로세스들의 자료 흐름을 중심으로 처리 과정을 표현하는 모델링 (자료흐름도)
OOD(Object Oriented Design) 부치(Booch) 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
분석과 설계의 분리가 불가능하며 분석하는 데 이용된 객체 모델의 설계시 적용

 

소프트웨어를 개발하는 방법론, 모델도 중요하지만 비용산정 역시 중요한 문제입니다. 비용산정 모형은 소프트웨어 규모를 파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식입니다. 이러한 비용산정 모형은 하향식, 상향식 산정방법으로 나뉘어 있습니다.

 

1. 하향식 산정방법

경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정하는 방식입니다.

  • 전문가 판단
  • 델파이 기법(전문가 합의법)

2. 상향식 산정방법

세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식입니다.

  • 코드 라인 수(LoC)
  • Man Month
  • COCOMO 모형
  • 푸트남 모형
  • 기능점수(FP) 모형

소프트웨어 개발 방법과 비용을 산정했다면 이제 일정관리를 수립해야 합니다. 일정관리 모델은 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델입니다.

모델 설명
주 공정법(CPM; Critical Path Method) 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
모든 자원 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드(Node)와 노드 간을 연결을 통해 공정을 계산하기 위한 액티비티(Activity) 표기법이다.

[임계 경로(Critical Path)]
프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로
PERT(Program Evalution and Review Technique) 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리하는 기법
중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management) 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법
728x90

'자격증 > 정보처리기사' 카테고리의 다른 글

[정보처리기사] 서버 프로그램 구현  (0) 2023.04.16
profile

soominkim Study

@soominkim

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그