[소프트웨어공학] 1. Introduction

1 분 소요

본 포스팅은 광운대학교 이기훈 교수님의 소프트웨어공학 수업을 듣고 공부하며 정리한 노트입니다.

소프트웨어 공학에 대하여 자주 묻는 질문

Q. 소프트웨어란?

A. 컴퓨터 프로그램과 관련된 문서들을 말합니다. 소프트웨어는 고객의 요구에 의해 개발되거나 제품 출시를 위해 개발됩니다.

Q. 좋은 소프트웨어란?

A. 좋은 소프트웨어는 요구된 기능과 성능을 수행하며 유지 가능하고 신뢰할 수 있고 쓸 수 있어야 합니다.

Q. 소프트웨어 공학이란?

A. 소프트웨어 공학은 요구 사항 분석부터 품질 관리까지 소프트웨어 제품 생산과 관련된 모든 측면에 대한 전략을 연구합니다.

Q. 소프트웨어 공학의 핵심 작업들

A. 소프트웨어 요구 사항 분석(Software Specification), 소프트웨어 개발(Software Developement), 소프트웨어 검증(Software Validation), 소프트웨어 유지 관리(Software Evolution)

Q. 소프트웨어 공학의 중요성

A. 점점 고객이 요구하는 개발 시간이 줄어들고 요구 사항이 다양해지고 있습니다. 소프트웨어 공학을 통해 이전보다 더 빠르고 경제적으로 신뢰성을 보장하는 시스템을 만들 수 있습니다.

Q. 소프트웨어 공학 소요 비용이란?

A. 소프트웨어 공학에 소요되는 비용의 60%는 개발 비용이고 나머지 40%는 테스트 비용입니다. 경우에 따라서 맞춤형 소프트웨어는 업데이트 비용이 개발비용보다 클 수 있습니다.

Q. 가장 좋은 소프트웨어 공학 방법론은?

A. 소프트웨어 프로젝트에 제일 적합한 방법론이 가장 좋은 방법론이라고 할 수 있습니다. 예를 들어, 게임 개발은 프로토타이핑을 많이 하는 것이 좋은 반면, 보안 시스템 개발은 완벽한 요구 사항 분석을 하는 것이 좋습니다.

소프트웨어 제품 분류

  • Generic products

일반 소비자들을 대상으로 만든 스탠드 얼론(stand-alone) 시스템을 말합니다. 개발자가 소프트웨어 명세서를 소유하고 변경하는 권한을 갖습니다. Agile 방법론으로 개발하는 것이 좋습니다.

  • Customized products

고객의 요구 사항을 맞춰 만들어진 소프트웨어를 말합니다. 고객이 소프트웨어 명세서를 소유하고 변경하는 권한을 갖습니다.

좋은 소프트웨어가 갖춰야 하는 필수적인 속성들

소프트웨어 공학의 근본적인 개념들은 모든 종류의 시스템 개발에 적용할 수 있습니다.

  • 유지 가능성(Maintainability)

소프트웨어는 고객의 요구 사항 변화에 따라 수정될 수 있어야 합니다.

  • 신뢰성과 보안(Dependability and security)

소프트웨어는 전체 시스템에 물리적이거나 경제적인 손상을 발생시키면 안됩니다. 또한 불특정한 유저가 시스템을 접근하거나 손상시킬 수 없어야 합니다.

  • 효율성(Efficiency)

소프트웨어는 메모리와 프로세서와 같은 시스템 자원을 효율적으로 사용해야 합니다.

  • 수용성(Acceptablity)

소프트웨어는 사용자에 의해 이해할 수 있고 쓸 수 있어야 하고 다른 시스템과 호환되어야 합니다.

소프트웨어에 영향을 주는 주요 요인들

  • 이질성(Heterogeneity)

사용자들은 갈수록 시스템이 네트워크를 통해 분산 시스템으로 운영되도록 요구합니다.

  • 빠른 비즈니스 환경 변화
  • 신뢰성과 보안
  • 규모(Scale)

웹 애플리케이션이란?

요즘은 로컬 시스템보다 웹 기반 시스템 개발을 더 많이 합니다. 웹 애플리케이션을 개발할 때 모든 요구 사항을 미리 명세화 하는 것은 실용적이지 않습니다. 따라서 웹 애플리케이션 개발은 점진적으로 개발되어야 합니다.

댓글남기기