수정입니다

Software Development Process 본문

전공/소프트웨어공학

Software Development Process

nongdamgom 2024. 4. 20. 13:29

Terminologies

 

  • development project는 여러개의 activity로 구성
  • activity는 여러개의 task로 구성
  • task는 여러개의 resource를 사용하여, 여러개의 work product를 산출
  • resource는 인적,물적,시간 자원등을 포함
  • work product는 system, model, documen 등을 포함.

Activities in software development

 

 

Software development process

  • software development를 위한 set of activities와 그들 사이의 relationship
  • 이 복잡한 관계에 order를 주는 것
  • Software Development Life Cycle (SDLC)
  • sw cirsis에 대한 solution이 된다.
  • 이 software process의 가장 fundamental한 activities가 위 사진

 

Software development process model

  • 특정한 관점에서, software process를 abstraction 하는 것. 
  • ex) SDLC model
  • process와 process model은 다른 것이다. 구별!!

1) Sequential models => 반복을 가정하지 않고 만든 모델

  • Waterfall model
  • V-model

2) Iterative models => 반복 모델 (최근 트렌드)

  • Spiral model
  • Unified Process (UP)

 

Plan-driven and agile processes

1) Plan-driven processes

  • activity가 미리 계획되고, 이것이 잘 수행되는지 감시하는 방식

2) Agile processes

  • plan 자체가 점진적으로 세워지고, requirement 변화에 유연하다

 

두 process 중 뭐가 좋은지 정답은 x, 실제로는 두 성격을 모두 가진 경우가 많다 (비율의 차이)

 

 

Waterfall Model

  • 이 전 단계가 완수되어야지만, 다음 단계로 진행되는 모델
  • 각 activity를 한번씩만 수행함
  • => 잘못됐을 때 loop back이 가능하지만, 현실적으로 panelty가 매우 큼.
  • Plan-driven approach
  • Advantage
  • 각 phases가 확실히 구분되고, 모델 자체의 concept을 이해하기 쉬움
  • 가장 자연스러운? 떠올리기 쉬운? 문제 해결 방식
  • 각 단계별 수행이 확실하기 때문에 관리자 입장에서 쉽다.
  • requirement가 이해하기 쉽거나, 변화가 적은 기술을 사용하는 업장에서 자주 사용됨
  • large system이나, 여러 도시에 하부 조직이 존재하는 곳에서 사용
  • => 국방이나 항공사업 ==> 작은 오차도 중요하므로 문서 중심으로 움직여야함

 

  • Disadvantage
  • 너무 일찍 requirement를 fix해서 정확히 파악 불가
  • hw나 다른 기술도 너무 일찍 fix 해버림
  • 개발을 다 하고 나서야 완성품이 보이므로(오래걸림) => 잘못되면 big risk
  • 유저/client도 개발 초기단계에 모든 requirement를 다 말해야해서 불필요한게 생김 
  • very document oriented => 정해진 틀이 존재하므로, 문서 검증 overhead 존재

 

V-Model

  • waterfall model의 변형
  • testing의 효율성을 끌어낼 수 있고, 더 높은 퀄리티의 작업을 낼 수 있음
  • 하지만 여전히 waterfall model의 단점을 안고 간다.

 

Coping with change

  • requirment는 ALWAYS 변함
  • 이 Change 는 rework를 가져옴 ==> cost
  • 이러한 cost에 대한 대응방안이 필요함

1) Prototype

2) Iterative and incremental development

 

1) Development of prototype

  • 중요한 key가 되는 부분 중, 잘 이해가 안가는 부분만 prototype을 제작
  • => feedback을 받으면서 그 부분에 대해 이해도를 높일수 있음
  • quick에 dirty하게 만든다 (퀄리티 신경 x)
  • requirement를 도출하기 힘들거나, 자신감이 없을 때 적용 가능
  • Advantage
  • requirement를 더 안정적이게 할 수 있고, 더 나중에 fix할 수 있게 됨
  • main development를 위한 경험이 됨

 

  • disadvantage
  • prototype을 만드는데 시간과 비용이 듦
  • => 하지만 장기적으로 실패 리스크를 생각하면, 이걸 하는게 오히려 이득일 수 있음

 

2) Iterative and incremental Development

  • release하는 버전을 계속 계속 기능적으로 발전시키면서 만들기
  • prototype의 장점도 살릴 수 있다.
  • Advantage
  • Risk reduction, Flexibility, Efficient feedback, high quality

 

  • Disadvantage
  • architecture나 design이 optimal 하지 않을 수 있다
  • => 모든 requirement를 다 이해하고 설계하는게 아니기 때문
  • rework가 증가 => total cost 증가

 

  • Applicability
  • response time이 중요 할 때 (시장 반응? 이 중요할 때)
  • 일부 release에 대한 response time을 줄여서 미리 공개 => feedback후 방향 결정
  • 긴 프로젝트에서의 risk를 감수할 수 없을 때
  • 모든 requirement를 다 모를 때

 

Spiral model

  • activity들을 점진적으로 결정하는 모델
  • 프로젝트 성격에 따라 반복적 개발, 위험관리가 가능한 모델

1) Object setting

2) Risk assessment & reduction

3) Development and validation

4) Planning

 

Rational Unified Process(RUP) & Unified Process(UP)

  • Iterative
  • Architecture-centric (초반에 구조 확립 후 점진적 개발)
  • Use-case driven
  • UML : visual language part
  • UP : process part
  • RUP => UP가 좀 더 상업적으로 확장된 모델

 

Dynamic Structure of UP

 

4 Phases

1) Inception   ==> 얘는 iteration이 없다

  • scope, feasibility
  • Most influential and risky req identified

2) Elabolation

  • risk 완화, architectrue baseline 잡기
  • Build the core architecture, resolve the high-risk elements, define most requirements and estimate the overall schedule and resources.
  • Domain model(분석), design model(설계) 시작

3) Construction

  • 남은 부분 develop 

4) Transition

  • customer acceptance

 

 

** ? use case ranking

  • Risk
  • Coverage
  • Criticality
  • 이거 고려해서 먼저 구현 / 나중에 순서 결정

  • waterfall model에 대응해서 생각하면 안됨.
  • 각 phase마다 iteration이 있고, 각 iteration마다 모델링부터 요구분석, 개발, 테스트까지 다 들어감
  • 그럼 phase마다의 차이는 뭐냐?
  • 하는 행위는 비슷하지만, 행위의 구성 내용이 다른 것.
  • 뭘 더 중점적으로 하냐의 차이.

 

Risk Profile of an Iterative Development

  • UP는 각 phase를 거치면서 iteration에 따라 risk를 점진적으로 줄여나갈 수 있게 된다. 

'전공 > 소프트웨어공학' 카테고리의 다른 글

Use-case & Use-case Diagram  (1) 2024.04.20
Software Requirements  (0) 2024.04.20
sequence diagram  (0) 2024.04.17
class diagram  (0) 2024.04.16
  (0) 2024.04.02