Ch 01
소프트웨어 = 프로그램 + 모든 엔지니어링 산출물(ex) 설계 문서, 자료구조, DB구조 등)
소프트웨어의 특징
- 복잡성 2. 변경성 3. 비가시성 (개념적 + 무형적 -> 쉽게 파악 어려움) 4. 순응성
소프트웨어의 유형
- 주문형 소프트웨어 : 요구를 만족시키기 위하여 제작한 소프트웨어
- 패키지 소프트웨어 ex) 오피스, 아레아 한글
- 임베디드 소프트웨어 : 다른 시스템에 내장된 소프트웨어로 제약이 많고 리스크가 O
소프트웨어 개발 작업
- 개발 기본 활동
ㄱ. 명세화(요구사항을 명확히함, 형용적X, 정량적) ㄴ. 구현 ㄷ. 검증 ㄹ. 유지보수
- 개발 작업 특징
ㄱ. 명세화의 어려움 : 고객의 의도를 처음부터 명확히 알기 어려움
ㄴ. 예측의 어려움 : 외부요소의 영향으로 프로젝트 규모 예측 어려움
=> 예측을 통해 예산 요청을 할 수 O
ㄷ. 재사용의 어려움
ㄹ. 유지보수의 어려움
ㅁ. 고품질의 어려움 : 모든 과정에서 오류를 모두 잡기가 어려움
소프트웨어 공학 정의
: 소프트웨어의 개발과 운영, 유지보수, 소멸에 대한 체계적인 접근 방법
=> 공학적인 원리를 적용하여 품질 좋은 소프트웨어를 개발
소프트웨어 공학 목표
: 품질 좋은 소프트웨어를 최소의 비용으로 계획된 일정에 맞추어 개발
소프트웨어 공학의 주제
주제 1 : 단계적 프로세스
: 코딩에 치중X, 정해진 절차에 따라 작업
(정해진 시점에 품질과 생산성을 효율적으로 점검할 수 O)
=>
분석 : 무엇을 만들 것인가 -> 요구 분석 명세서
설계 : 어떻게 구축할 것인가 -> 설계 명세서
구현 : 코딩 및 단위 테스트 -> 코드
테스팅 : 요구에 맞게 실행되는가 -> 테스트 결과 보고서
주제 2 : 품질 보증
: 개발하고 있는 소프트웨어가 요구와 품질 수준을 만족시키는지 검토, 확인, 테스팅
검토 : 각 단계의 작업이 제시된 절차와 방법에 맞게 진행되었는지 체크
확인 : 개발 완료된 결과물이 품질 수준에 맞게 생산되었는지 검사
테스팅 : 구현된 소프트웨어를 실행하여 예상된 결과를 보이는지 확인
주제 3 : 프로젝트 관리
: 프로젝트의 제약조건들 (시간, 비용 = 인력, 범위)을 파악하고 적절히 관리하는 것이 필수
-
프로젝트 계획 :
-
자원 관리 :
-
리스크 관리 :
-
프로젝트 수행과 모니터링 :
소프트웨어 공학 지식 체계 : SWEBOK(Software Engineering Body Of Knowledge)
: 소프트웨어 공학을 10개의 주요 지식 영역과 5개의 연관 학문 지식 영역을 정리
-> 각 지식 영역과 관련된 활동을 규정한 표준 문서
컴퓨터과학과 소프트웨어 공학
-
컴퓨터 과학 : 계산적 효율, 자원 공유, 정확성, 최적화, 성능을 강조 (원리와 기초)
=> 자료구조, 데이터베이스, 알고리즘, 운영체제 : 기술적 측면, 즉시 측정 가능
-
소프트웨어 공학 : 생산성, 품질 비용, 시간을 강조
=> 기술적 측면과 기술 외적인 측면 고려 - 방법, 도구, 프로세스 측정에 긴 시간 필요
CH 02
프로세스와 방법론
- 프로세스
ㄱ. 특징
a. 단계적인 작업의 틀을 정의
b. 무엇을 하는가에 중점
c. 결과물의 표현에 대해 언급 X
d. 패러다임에 독립적
e. 각 단계가 다른 방법론으로도 실현 가능
ㄴ. 사례
a. 폭포수 프로세스 b. 나선형 프로세스 c. 프로토 타입 프로세스
d. unified 프로세스 e. 애자일 프로세스
- 방법론
ㄱ. 특징
a. 프로세스의 구체적인 구현에 이름
b. 어떻게 하는가에 중점
c. 결과물을 어떻게 표현하는지 표시
d. 패러다임에 종속적
e. 각 단계의 절차, 기술, 가이드라인을 제시
ㄴ. 사례
a. 구조적 분석, 설계 방법론
b. 객체지향 방법론
c. 컴포넌트
d. 애자일 방법론
소프트웨어 생명주기 (SDLC : software development life cycle)
: 개발과 유지보수등에 필요한 작업들을 체계적으로 정리
=> 요구분석 - 설계 - 구현 -테스팅 - 유지보수
프로세스 : 소프트웨어를 개발하는데 수행되는 작업단계들 (높은 품질, 낮은 비용, 일정 단축을 위한 수단)
=> 작업 결과와 검증 조건을 명확하게 정의, 각 단계를 명확히 정의하고 끝나는 시점에 검증이 필요
좋은 프로세스의 특성
- 예측 가능성 : 프로젝트 완성 전 프로세스 결과가 얼마나 정확하게 예측할 수 있는지의 정도
=> 과거 경험을 이용해 비용과 품질을 제어하려면 예측 가능한 프로세스 사용