01 소프트웨어 구축 Section 1. 소프트웨어 공학 개념
1. 소프트웨어 공학
⑴ 소프트웨어 공학의 정의
- 소프트웨어 위기를 극복하고 품질 높은 소프트웨어를 개발하기 위한 학문
⑵ 소프트웨어 위기의 원인
- 소프트웨어 특성에 대한 이해 부족
- 소프트웨어 관리 방법론 부재
- 올바른 설계 없이 프로그래밍에만 치중
- 소프트웨어 개발에 대한 전문적 교육 부족
- 작업일정과 비용의 추정치가 부정확
⑶ 소프트웨어의 위기의 결과
- 개발 인력의 부족과 인건비 상승
- 소프트웨어 성능 및 신뢰성 부족
- 개발 기간 및 비용의 증가
- 소프트웨어 품질저하 및 유지보수 비용 증가
- 소프트웨어의 생산성 저하
2. 소프트웨어 공학의 3R
⑴ 역공학(Reverse Engineering)
- 기존 개발된 시스템을 CASE도구를 이용하여 사양서, 설계서 등의 문서로 추출하는 작업
⑵ 재공학(Re-engineering)
- 기존 시스템의 기능이나 성능을 업그레이드 하는 작업
⑶ 재사용(Reuse)
- 이미 개발되어 그 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용
■ 재사용 방법
- 합성 중심(Composition Based) : 소프트웨어 모듈끼워 맞추어 소프트웨어를 완성시키는 방법
- 생성 중심(Generation Based) : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
3. 소프트웨어 개발 단계
Section 2. 소프트웨어 개발 방법론
1. 소프트웨어 개발 방법론 종류
⑴ 구조적 방법론
- 절차지향 소프트웨어 개발 방법론
- 요구사항 분석 → 구조적 분석 → 구조적 설계 → 구조적 프로그래밍
- 구조적 방법론 구성요소 : 데이터 흐름도(DFD), 자료사전(DD), 상태전이도(STD), 소단위 명세서(Minispec)
⑵ 정보공학 방법론
- 기업의 주요 부분을 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합, 적용하는 데이터
중심 방법론
- 정보전략계획 수립단계 → 업무영역 분석단계 → 시스템 설계단계 → 시스템 구축단계
⑶ 객체지향 개발 방법론
- 현실세계의 개체(Entity)를 속성(Attribute)과 메서드(Method)형태로 표현
⑷ CBD( Component Based Development ) 분석 방법론
- 재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 어플리케이션 개발
⑸ 애자일 방법론
- 기존 방법론들이 절차를 중시한 나머지 변화에 빠른 대응을 할 수 없는 단점 개선을 위해 등장
2. 소프트웨어 개발 모델
⑴ 폭포수 모델(Waterfall Model)
- 계획, 분석, 설계, 구현, 테스트, 운영 등 전 과정을 순차적으로 접근하는 개발모델
⑵ 프로토타이핑 모델(Prototyping Model)
- 고객이 요구한 주요 기능을 프로토타입으로 구현하여 완성해가는 모델
- 계획수립 → 프로토타입 개발 → 사용자 평가 → 구현 → 인수
⑶ 나선형 모델(Spiral Model)
- 폭포수 모델과 프로토타이핑 모델의 장점을 수용하고, 위험 분석을 추가한 점증적 개발 모델
- 계획수립(planning) → 위험분석(Risk Analysis) → 공학적 개발(Development) → 평가(Evaluation)
⑷ RAD(Rapid Application Development) 모델
- 매우 짧은 개발 주기를 강조하는 점진적 소프트웨어 개발 방식
- CASE(Computer Adied Software Engineering) 도구를 이용해 시스템을 개발
⑸ V 모형
- 폭포수 모델에 시스템 검증과 테스트 작업을 강조
⑹ 4세대 기법(4th Generation Techniques)
- CASE등의 자동화도구를 이용하여 요구사항 명세로부터 원시코드를 자동으로 생성
3. 애자일(Agile) 방법론
⑴ 애자일 방법론의 개념
- 애자일 방법론은 소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과, 계획이 지나치게 많은 개발
방법들 사이에서 타협점을 찾고자 하는 방법론
⑵ 애자일 선언문
- 공정과 도구보다 개인과 상호작용을
- 포괄적인 문서보다 작동하는 소프트웨어를
- 계약 협상보다 고객과의 협력을
- 계획을 따르기보다 변화에 대응하기를
- 우리는 왼쪽 항목의 가치를 인정하면서도 오른쪽 항목을 더 중요하게 여긴다.
⑶ 애자일 방법론 종류
① XP(eXtream Programming)
■ XP 5가지 핵심가치
- 용기 : 고객의 요구사항 변화에 능동적인 대처
- 존중 : 개발자의 역량을 존중하고 충분한 권한과 권리를 부여
- 의사소통 : 개발자, 관리자, 고객 간의 원활한 의사소통
- 피드백 : 의사소통에 따른 즉각적인 피드백
- 단순성 : 부가적 기능, 사용되지 않는 구조와 알고리즘 배제
② 스크럼 (SCRUM)
- 개발 주기는 30일 정도(스프린트)로 조절하고 개발 주기마다 실제 동작할 수 있는 결과를 제공
- 날마다 15분 정도의 회의
③ 그 외 애자일 방법론
- 크리스털 패밀리(Crystal)
- Feature-Driven Development (FDD)
- Adaptive Software Development, ASD
'information processing' 카테고리의 다른 글
3. 소프트웨어 설계 (0) | 2022.07.05 |
---|---|
2. 프로젝트 계획 및 분석 (0) | 2022.07.05 |
1-25. 애플리케이션 통합 테스트 (0) | 2022.06.29 |
1-23,24. 애플리케이션 테스트케이스 설계(1),(2) (0) | 2022.06.27 |
1-21,22. 객체지향 설계 (0) | 2022.06.27 |