소프트웨어 공학의 필요성

하나·2022년 3월 6일
0

CS

목록 보기
1/7
post-thumbnail

1. 소프트웨어 공학의 필요성

프로그램 vs 소프트웨어 vs 시스템

프로그램 : 실행 가능한 컴퓨터 명령어의 집합

소프트웨어 : 분석, 설계, 프로젝트 계획 등을 포함한 관련 문서 with 프로그램

시스템 : 어떤 특정 요구를 충족시키기 위해 주어진 공통 목적을 함께 수행하는 상호 연관된 구성품(components)으로 통합된 것, 구성품은 소프트웨어, 하드웨어, 서브 시스템 등으로 다양

과학 vs 공학

자연과학 : 자연의 법칙을 탐구

공학 : 자연의 법칙을 적용하여 실제적인 문제들을 해결

소프트웨어 공학 : 컴퓨터 과학 지식을 적용하여 실제적인 문제들을 해결

소프트웨어 공학의 정의

소프트웨어 공학이란 소프트웨어의 품질 향상생산성을 향상시키기
위하여 사용자의 요구사항을 체계적으로 분석하여 설계 및 구현, 구현된
시스템의 시험 그리고 유지보수 및 폐기 시까지 소프트웨어의 전 수명주기
간에 걸쳐 이루어지는 체계적인 접근법을 말한다.

(Summerville, in “Software Engineering”)

소프트웨어의 개발, 운영 및 유지보수에 체계적이고, 훈련이 잘 된 정량적인
접근 방법
을 적용하는 것으로, 소프트웨어 개발 및 관리를 공학적으로 접근
하는 것을 말한다. (Definition by IEEE Computer Society)

왜 필요한가?

• 납기 지연(Late Delivery)
• 예산 초과(Over Budget)
• 명세와의 불일치(Inconsistent with the specification)
• 이해하기 어려움(Difficult to understand)
• 수정과 개선이 어려움(Too costly to modify or improve)

소프트웨어의 특성

  • 비가시성 (Invisibility)
  • 복잡성 (Complexity)
  • 변경성 (Changeability)
  • 순응성 (Comformity)
  • Time-to-Market : 점점 짧아지고 있음
  • 규제 및 법제의 강화
  • 다양한 서브시스템의 집합
  • 거대한 소스 코드

실제 소프트웨어 개발

  • 개발 과정에서 변경
  • 개발 후 변경
  • 환경은 급진적으로 발전
  • 변경 시에 side effects 발생

소프트웨어 조직의 구성요소

  1. people
  2. technology
  3. processes

참고 : https://www.codepresso.kr/ 'SW공학기초' 강의

0개의 댓글