Ch 01

소프트웨어 = 프로그램 + 모든 엔지니어링 산출물(ex) 설계 문서, 자료구조, DB구조 등)

소프트웨어의 특징

  1. 복잡성 2. 변경성 3. 비가시성 (개념적 + 무형적 -> 쉽게 파악 어려움) 4. 순응성

소프트웨어의 유형

  1. 주문형 소프트웨어 : 요구를 만족시키기 위하여 제작한 소프트웨어
  2. 패키지 소프트웨어 ex) 오피스, 아레아 한글
  3. 임베디드 소프트웨어 : 다른 시스템에 내장된 소프트웨어로 제약이 많고 리스크가 O

소프트웨어 개발 작업

  1. 개발 기본 활동 ㄱ. 명세화(요구사항을 명확히함, 형용적X, 정량적) ㄴ. 구현 ㄷ. 검증 ㄹ. 유지보수
  2. 개발 작업 특징 ㄱ. 명세화의 어려움 : 고객의 의도를 처음부터 명확히 알기 어려움 ㄴ. 예측의 어려움 : 외부요소의 영향으로 프로젝트 규모 예측 어려움 => 예측을 통해 예산 요청을 할 수 O ㄷ. 재사용의 어려움 ㄹ. 유지보수의 어려움 ㅁ. 고품질의 어려움 : 모든 과정에서 오류를 모두 잡기가 어려움 소프트웨어 공학 정의 : 소프트웨어의 개발과 운영, 유지보수, 소멸에 대한 체계적인 접근 방법 => 공학적인 원리를 적용하여 품질 좋은 소프트웨어를 개발 소프트웨어 공학 목표 : 품질 좋은 소프트웨어를 최소의 비용으로 계획된 일정에 맞추어 개발

소프트웨어 공학의 주제 주제 1 : 단계적 프로세스 : 코딩에 치중X, 정해진 절차에 따라 작업 (정해진 시점에 품질과 생산성을 효율적으로 점검할 수 O) => 분석 : 무엇을 만들 것인가 -> 요구 분석 명세서 설계 : 어떻게 구축할 것인가 -> 설계 명세서 구현 : 코딩 및 단위 테스트 -> 코드 테스팅 : 요구에 맞게 실행되는가 -> 테스트 결과 보고서 주제 2 : 품질 보증 : 개발하고 있는 소프트웨어가 요구와 품질 수준을 만족시키는지 검토, 확인, 테스팅 검토 : 각 단계의 작업이 제시된 절차와 방법에 맞게 진행되었는지 체크 확인 : 개발 완료된 결과물이 품질 수준에 맞게 생산되었는지 검사 테스팅 : 구현된 소프트웨어를 실행하여 예상된 결과를 보이는지 확인 주제 3 : 프로젝트 관리 : 프로젝트의 제약조건들 (시간, 비용 = 인력, 범위)을 파악하고 적절히 관리하는 것이 필수

  1. 프로젝트 계획 :

  2. 자원 관리 :

  3. 리스크 관리 :

  4. 프로젝트 수행과 모니터링 : 소프트웨어 공학 지식 체계 : SWEBOK(Software Engineering Body Of Knowledge) : 소프트웨어 공학을 10개의 주요 지식 영역과 5개의 연관 학문 지식 영역을 정리 -> 각 지식 영역과 관련된 활동을 규정한 표준 문서 컴퓨터과학과 소프트웨어 공학

  5. 컴퓨터 과학 : 계산적 효율, 자원 공유, 정확성, 최적화, 성능을 강조 (원리와 기초) => 자료구조, 데이터베이스, 알고리즘, 운영체제 : 기술적 측면, 즉시 측정 가능

  6. 소프트웨어 공학 : 생산성, 품질 비용, 시간을 강조 => 기술적 측면과 기술 외적인 측면 고려 - 방법, 도구, 프로세스 측정에 긴 시간 필요

CH 02

프로세스와 방법론

  1. 프로세스 ㄱ. 특징 a. 단계적인 작업의 틀을 정의 b. 무엇을 하는가에 중점 c. 결과물의 표현에 대해 언급 X d. 패러다임에 독립적 e. 각 단계가 다른 방법론으로도 실현 가능 ㄴ. 사례 a. 폭포수 프로세스 b. 나선형 프로세스 c. 프로토 타입 프로세스 d. unified 프로세스 e. 애자일 프로세스
  2. 방법론 ㄱ. 특징 a. 프로세스의 구체적인 구현에 이름 b. 어떻게 하는가에 중점 c. 결과물을 어떻게 표현하는지 표시 d. 패러다임에 종속적 e. 각 단계의 절차, 기술, 가이드라인을 제시 ㄴ. 사례 a. 구조적 분석, 설계 방법론 b. 객체지향 방법론 c. 컴포넌트 d. 애자일 방법론 소프트웨어 생명주기 (SDLC : software development life cycle) : 개발과 유지보수등에 필요한 작업들을 체계적으로 정리 => 요구분석 - 설계 - 구현 -테스팅 - 유지보수

프로세스 : 소프트웨어를 개발하는데 수행되는 작업단계들 (높은 품질, 낮은 비용, 일정 단축을 위한 수단) => 작업 결과와 검증 조건을 명확하게 정의, 각 단계를 명확히 정의하고 끝나는 시점에 검증이 필요 좋은 프로세스의 특성

  1. 예측 가능성 : 프로젝트 완성 전 프로세스 결과가 얼마나 정확하게 예측할 수 있는지의 정도 => 과거 경험을 이용해 비용과 품질을 제어하려면 예측 가능한 프로세스 사용