1장 소프트웨어 공학 개요

inhalin·2022년 5월 31일
0

1.1 소프트웨어

정의

  • 컴퓨터 프로그램과 관련 데이터의 묶음
  • 데이터 입력 -> 출력 제공에 사용되는 명령어들의 집합
  • Software is the collection of computer programs, procedure rules and associated documentation and data. - IEEE

분류

  • 시스템 소프트웨어: 컴퓨터 운영 목적, 응용 SW 실행시키는 플랫폼 제공
  • 응용 소프트웨어: 사용자가 실제 업무에 사용하는 프로그램
  • 일반(generic) 소프트웨어: 요구사항이 일반적/안정적, 상용 소프트웨어
  • 맞춤형(customized) 소프트웨어: 특정 산업의 고유 업무 프로세스를 위해 작성된 것 aka 주문형(bespoke) 소프트웨어

성질

  • 무형의 인공물, 추상적, 마모 되지 X
  • 개발 비용 대부분이 노동력
  • 버그 수정 용이
  • 설계 변경 요구 -> 유지보수 필요
  • 시간에 따른 고장률 그래프
    고장률
    • 1-1은 하드웨어 고장률, 1-2는 소프트웨어 고장률.

소프트웨어 위기 현상

  • 정의: 요구사항이 다양해지면서 해결할 문제는 복잡해졌는데 SW 기술 진보가 더딘 것
  • 소프트웨어 위기 현상 종류
    • 개발 일정 지연, 초과 비용, 제품 신뢰도 결여, 명세 불일치, 품질 저하, 유지보수 어려움 등
  • 주요 원인
    • 전문 인력 부족, 경영층 인식 부족, 방법론 및 지원 도구 문제, SW 개발 생산성 저하, SW 자체의 복잡성 증가 등

소프트웨어 공학

  • 소프웨어 위기 현상을 부각하고 문제 해결 방식과 고품질 소프트웨어 생산 및 유지보수를 연구하는 학문 분야
  • 신뢰성 있고 요구기능을 효율적으로 수행하는 소프트웨어를 경제적으로 생산하기 위해 건전한 공학적 원리와 방법을 만들고 사용하는 것이다. - 프리츠 바우어(Fritz Bauer)
  • 공학 기술의 적용
  • 소프트웨어 생산 과정의 관리

소프트웨어 공학 환경 - 계층화된 기술

sw-1-4

각 계층은 그 아래 계층에 기초하고, 아래 계층에 비해 변경 가능성이 높다.

  • 원리: 소프트웨어 프로세스와 제품의 바람직한 측면을 기술하는 일반적, 추상적 설명
  • 방법과 기술: 개발 구현시 따라야 하는 가이드라인 또는 구조화된 접근 방법
  • 방법론: 문제 해결에 사용할 방법과 기술을 지정
  • 도구: 기술과 방법, 방법론 적용을 지원하고, 도구를 사용하는 걸 자동화라고 한다.

좋은 소프트웨어의 기준

  • 신뢰도 reliability - 오랜 시간 작동, 치명적 오류 X, 오류 후 복구됨
  • 정확성 correctness - 요구사항과 얼마나 일치하는가
  • 성능 performance - 지정된 시간안에 처리 가능한 작업량
  • 사용성 usability - 편리하고 융통성 높은가
  • 상호운영성 interoperability - 다른 시스템과 공존하고 협력하는 능력
  • 유지보수성 maintainability - 기능의 추가, 개선, 수정, 오류 수정이 쉬운가
  • 이식성 portability - 다른 환경에서 쉽게 동작하는가
  • 검사성 verifiability - SW 속성 검사가 쉬운가
  • 추적성 traceability - 요구사항, 설계, 소스코드 간 관계 정의, 기록, 유지 방법이 있는가

0개의 댓글