소프트웨어 공학이란?

소프트웨어공학

2020. 4. 14. 01:04

1. Programmer VS Engineer

  • Programmer : 번역가와 같음. 디자이너가 고안한 프로그램을 코드로 만들어내는 사람
  • Engineer : 주어진 문제를 해결할 수 있는 솔루션을 직접 디자인하고 개발할 수 있는 능력을 갖춘사람

 

2. Software Engineering

  • 소프트웨어공학은 여러사람들이 함께 작업하기 위해서는 필요한 필수적인 소양임
  • 수만줄의 프로그램과 수백줄의 프로그램을 개발할 때는 다른 방법을 적용하여 개발해야함
  • 고층빌딩을 짓는 것과 애완견의 집을 만들 때, 접근 방법이 완전히 다른 것과 비슷함
  • Software Engineering의 최종 Goal : 품질(Quality)와 생산성(Productivity)

 

3. Software Development Methodology의 지표

개발 방법론에는 일관성과 재현성이 매우 중요하며 이러한 방법론들은 표준화가 필요함.

 

  • 1) 일관성/예측가능성 : 프로젝트의 결과를 어느정도 예측가능해야함 (방법론이 일관되게 좋아야함)
  • (+ 예를들어 개발팀 A가 이 방법 써서 성공했는데, 개발팀 B가 이 방법 써서 실패하면 일관성이 나쁜것임)
  • 2) 재현성 : 개발하는 시스템마다 높은 품질/생산성을 갖게 하는 것
  • 3) 표준화 : 개발 방법론 및 프로세스의 표준화가 필요함 (ISO9001 / CMM 등)

 

4. Software Engineering Approach

  • 품질과 생산성을 좌우하는 세가지 요소 : 인력, 프로세스, 기술
  • 그러나 인력, 프로세스, 기술을 모두 프로젝트 매니저가 결정할 수가 없음.

 

5. 단계적 프로그래밍

  • 개발프로세스를 소프트웨어 그 자체와 분리해야함.
  • 즉, 냅다 앉아서 개발하는 것이 아니라 단계적으로 계획하고 개발해야함
  • 계획/요구분석 → 설계 → 구현 → 테스팅(검증) → 유지보수 단계로 개발함

  • Requirement : 무엇을 만들것인지, 어떤 기능들이 들어가야하는지 고민하는 단계 
  • Design : 아키텍처 혹은 디자인패턴과 구체적 구현방법(클래스, 함수 등)을 고안하는 단계
  • Implementation : 실제로 코드를 구현하는 단계
  • Verification : 구현된 소프트웨어가 실제로 잘 동작하는지 검증해보는 단계
  • Maintenance : 소프트웨어를 유지하고 업데이트(보수)하는 단계

 

6. 각 단계에서 할 일과 산출물

  • Requirement : 분석전략, 요구결정, 사례분석, 정적/동적 모델링 요구사항 명세서
  • Design : 설계전략, 아키텍처 수립, 인터페이스/프로그램 설계, DB설계 → 설계명세서 (UML등)
  • Implementation : 프로그래밍, 단위테스팅 → 소스코드
  • Verification : 통합테스팅, 시스템테스팅, 인수테스팅 → 테스트 결과보고서

 

7. 그 외 필요한 (배울) 사항

  • 품질 보증
  • 프로젝트 관리 (프로젝트 사이클)

 

8. Reference

 

소프트웨어공학 개론

소프트웨어를 개발하고 유지보수하는 데 적용되는 체계적이며 원리적인 접근 방법을 소개한다. 소프트웨어를 개발하는 프로젝트를 계획하는 기법, 사용자의 요구를 분석하는 기법, 소프트웨어 구조를 설계하는 기법, 모듈과 사용자 인터페이스를 설계하는 기법, 코딩 스타일, 테스팅 기법, 유지보수 기법, 소프트웨어 품질 보증 활동을 다룬다.

www.kocw.net