observe_db

[소프트웨어공학] #2 Software Processes 본문

학교 공부/소프트웨어공학(3-2)

[소프트웨어공학] #2 Software Processes

쩡윤 2023. 9. 14. 23:20

9/14 9/19

 

2-1: Definition of software process

Software lifecycle(소프트웨어 생애주기)

요구분석(Req. analysis)-설계(Design)-구현(Implemetation)-테스팅(testing)-유지보수(maintenance)

 

소프트웨어 프로세스(software process)란? : 구조화된 activity들의 집합

명세화(specification): 시스템이 무엇을 하는지 상세히 기술한 것

개발(design and implementation): 구조와 프로그래밍

검증(validation): 요구된 행동을 하는지 확인

진화(evolution): 변화된 고객의 니즈를 반영하게 수정.''

 

만약 개발에서 프로세스가 없다면?

실패하기 쉬움

계획도, 목표도 아무것도 없음.

code-and-fix(주먹구구식)이라고 말함.

 

필수적인것: 데이터모델 지정, UI 설계, 이 순서들을 정하는 것.

고려할 사항: 프로세스의 산출물들(product), 역할(role), 사전/사후 조건.

 

좋은 프로세스의 특징

-예측 가능성(predictability)

-테스팅과 유지보수 용이성(testing and maintainability)

-변경지원(supporting change)

-결함 제거(remove error)

 

plan-driven과 agile 프로세스

둘다 같이 쓰기는 한다.

정답은 없음!

 

 

2-2 Software Process Models

waterfall/incremental/integration&configuration

 

waterfall model

다시 올라가는게 어려움

문제

-변화하는 요구에 반응하기 어려움

-오히려 대형 시스템에서 사용되기도 함.(변경이 힘들기 때문)

 

 

Incremental development

이득

-요구사항이 구체화되며 비용도 줄어듬

-피드백 받기가 유용

-인도가 빨라지고, 프로그램 활용이 가능

 

문제점

-가시적이지 않음.(문서쓸 시간이 줄어듬)

-기능이 추가되면서 복잡도가 증가함.

 

Integration and configuration(통합&식별)

SW 재사용

가져다가 조합하기

표준 기반, 오브젝트의 모임, 웹 서비스

 

장점

-돈과 수고가 줄어듦

-빠름

단점

-사용자가 만족하지 못하는 경우가 있음.

 

 

2-3: Process Activities

프로세스는 기술들의 과정으로 직조된다(inter-leaved)

4개의 기본 프로세스 활동은 

1) specification 2) development 3) validation 4) evolution

 

명세

specification: 어떤 service를 제공할지. 어떤 제약조건을 설정할지 결정

요구사항을 이끌어내고 분석

요구사항 명세화

요구사항 검증

설계&구현

목표: 실행가능한 시스템으로 구현

구현이란 코드로 만들어서 실행가능하게 하는 것.

 

구현

- 소프트웨어는 개발되는 프로그램(들)이나 설정된 어플리케이션 시스템으로 구현됨

- 많은 sw 시스템에서 설계와 구현은 서로 간섭되는 activity.

- 프로그래밍은 표준이 없는 개별적 activity

- 디버깅은 fault를 찾아서 고치는 activity

 

 

검증

verification: 스팩대로 구현되었는지

validation: 요구사항이 구현되었는지

실제 실행해서 testing하는 경우도 있음.

 

component testing-system testing-customer testing

evolution

- 소프트웨어는 선천적으로 유연하고 변경 가능하다.

- 비즈니스 환경 변화로 인한 요구 변경 -> 소프트웨어 또한 발전/변경되어야한다.

- 개발과 진화(유지보수) 사이에 경계가 존재했지만 완전히 새로운 시스템이 점점 더 적어짐에 따라 이는 점점 더 관련성이 없다.

 

 

2-4: Coping with change

(변경처리 등)

요구사항의 변경, 새로운 기술, 플랫폼 변경

수지타산을 따져서 새로 구현하는 경우도 있다.

 

변경 예측(change anticipation): 프로토타입 구현

변경 허용(change tolerance): 변경 가능을 감안하고 증분 형식 개발 

 

프로토타입의 장점

-사용성 향상

-실제 니즈와 가까워짐

-설계 질 향상

-유지력 향상

-드는 노력 감소

단계적 인수(Incremental delivery)

요구사항을 뽑아, 기능을 나열한 후, 우선순위대로 넘겨주어 개발/인수

실제 활용이 되니까 현실적인 평가가 가능.

기존의 완전한 대체는 어려움.

장점

-빠른 개발

-초기 개발이 프로토타입이 되어서 개선을 도움

-적은 리스크

-우선순위가 높은 것에 확실한 테스팅

 

2-5: Process Improvement

프로세스 개선.

소규모 조직에서는 어려움.

기존 프로세스를 평가/분석하고 개선

 

접근법

process maturity(프로세스 성숙도)

agile: 오버헤드가 발생하는 부분을 식별

 

사이클

측정-분석-변경을 반복한다.

 

가능하고, 정량적인 다양한 데이터가 필요함.

시간, 인력, size등의 수치가 기술되어있어야한다.

프로세스 달성에 필요한 리소스(자원, 사람)

특정 이벤트(error)의 빈도

 

성숙도 단계

initial: 관리분석 X

Repeatable: 재사용가능

Defined: 프로시저와 전략

Managed: 고퀼의 전략& 사용

Optimising: 최적화까지 가능.

Comments