1과목. 소프트웨어 구축 - 1.소프트웨어 공학
1. 소프트웨어 공학
정의: 소프트웨어 위기를 극복하고 효율적으로 품질 높은 소프트웨어를 개발하기 위한 학문
#정처기중요
2. 소프트웨어 공학의 3R
완성된 소프트웨어를 기반으로 역공학, 재공학, 재사용을 통해 소프트웨어 생산성을 극대화하는 방법
역공학(Reverse-Engineering)
- 기존 개발된 소프트웨어를 CASE(Computer Aided Software Engineering)도구를 이용하여 요구분석서, 설계서 등의 문서로 추출
재공학(Re-Engineering)
- 기존 소프트웨어를 폐기하지 않고 기능을 개선시키거나 새로운 소프트웨어로 재활용
- 예방 유지보수(Preventitive Maintenance)
- 분석(Anaylysis)-재구성(Restructuring)-역공학(Reverse Engineering)-이관(Migration)
재사용(Re-use)
- 이미 개발된 소프트웨어의 전체나 일부분을 재사용
- 함수와 객체 재사용, 컴포넌트 재사용, 애플리케이션 재사용
- 재사용 방법:
- 합성 중심(Composition Based, 블록 구성): 블록(모듈)을 끼워 맞추는 방식
- 생성 중심(Gernation Based, 패턴 구성): 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방식
3. 소프트웨어 개발 단계
계획-분석-설계-구현-테스트-유지보수
1. 계획
- 개발 주체, 범위 정의 및 결정
- 비용과 기간 예측
2. 요구사항 분석(Requirements Analysis)
- 기능, 제약조건, 목표등을 고객과 함께 정의
- 요구사항의 정확한 이해와 요구사항 유도
- 고객의 요구를 명확히 이해
3. 소프트웨어 설계(Design)
- 모델링
- 요구사항을 기준으로 입력자료, 처리내용, 출력자료등을 정리
- 시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계
4. 구현(Development)
- 실제 프로그래밍
- 코딩과 디버깅, 단위 테스트 진행
5. 테스팅(Testing)
- 구현된 소프트웨어가 요구사항을 만족하는지 검사
- 테스트 계획, 통합 테스트 결과서 등을 작성
6. 유지보수(Maintenance)
- 문제점을 수정, 새로운 기능 추가
- 더 발전시키는 단계