일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 컴파일
- 정보검색
- 운영체제
- 언어모델
- React
- 스케줄러
- 자연어처리
- OS
- 파싱
- DB
- 객체지향설계
- 컴파일러
- C언어
- css
- 데이터분석
- 랩실일기
- NLP
- Agile
- 가상메모리
- 오픈소스웹소프트웨어
- 836
- 소프트웨어공학
- 벡터
- 프로세스
- 애자일
- 파싱테이블
- 웹소프트웨어
- Linear Algebra
- 데이터베이스
- 클래스
- Today
- Total
observe_db
[소프트웨어공학] #2 Software Processes 본문
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: 최적화까지 가능.
'학교 공부 > 소프트웨어공학(3-2)' 카테고리의 다른 글
[소프트웨어공학] #3-2 Project Planning (1) | 2023.11.14 |
---|---|
[소프트웨어공학] #3-1 Project Management (0) | 2023.11.02 |
[소프트웨어공학] #3 DevOps (0) | 2023.10.15 |
[소프트웨어공학] #2 Software Process(2) Agile (0) | 2023.09.26 |
[소프트웨어공학] #1 Software Quality and Principle (0) | 2023.09.08 |