logo
Published on

CH1. 소프트웨어 공학 개요

Authors
  • avatar
    Name
    seren-wib
    Twitter
Contents

1. 소프트웨어 공학의 기초

1.1 소프트웨어란 무엇인가?

  • 시스템 = 하드웨어 + 소프트웨어
  • 소프트웨어 = 특정 목적을 수행하는데 필요한 사용지침, 데이터, 프로그램, 관련 문서를 통틀어 말함.
  • 소프트웨어의 특징: 무형, 비가시성, 복잡성, 비정형성

프로그램 VS 소프트웨어

  • 프로그램: 명령어의 집합
  • 소프트웨어: 프로그램을 포함한 절차, 데이터, 지침의 집합

1.2 소프트웨어 분류

하드웨어 ← 시스템 SW (유틸리티는 이 안의 일부) ← 응용 SW ← 최종사용자

시스템 소프트웨어

  • 사용자와 하드웨어 사이에서 상호작용하는 소프트웨어
  • OS, 펌웨어, 로더, 링커 같은거

유틸리티 소프트웨어(서비스 프로그램)

  • 시스템 최적화, 유지관리, 분석 서비스 제공
  • 시스템 소프트웨어의 일부, 컴퓨터가 계속 실행되는 동안 백그라운드에서 작업함
  • 백신, 최적화 프로그램 같은거

응용 소프트웨어

  • 시스템 소프트웨어 위에서 돌아가는 소프트웨어
  • 최종 목표를 도와주는 프로그램
  • 워드, dbms, 브라우저 등등

1.3 Code-and-Fix 모델과 소프트웨어공학의 필요성

  • Code-and-Fix: 계획없이 코드부터 짜고 나중에 코드따라 문서 작성하는 방식
  • 위 방식으로 코드짜면 개발 지연, 비용 손실, 품질 저하, 낮은 신뢰성, 인수인계 어려움, 유지보수 어려움과 같은 문제 발생
  • 소프트웨어의 위기 특징 4개: 양, 질, 비용, 마감 지연

1.4 소프트웨어공학이란?

  • IEEE 정의: 소프트웨어 생애 주기인 계획수립, 개발, 전개, 유지보수, 폐기의 모든 공정에 대한 효율적이고 체계적인 관리 방법론
  • SESC(Software Engineering Standards Committee)

1.5 소프트웨어 개발 생산성에 영향을 주는 핵심 요소

PPT(People, Process, Technology) 프레임워크

  1. 인력
  2. 기술
  3. 프로세스

1.6 소프트웨어 개발 생명주기

1.6.1 소프트웨어 개발 생명주기란?

SDLC: 계획수립 → 요구사항분석 → 설계 → 개발(구현) → 테스트 → 전개 및 유지보수

1.6.2 소프트웨어 개발 생명주기 적용의 이점 (프로젝트 관리자, 개발자 측면)

관리자 측면

  1. 프로젝트 관리가 편리하고 책임 중복 회피 가능
  2. 자원 관리 용이, 비용 효율성
  3. 문제점을 명확히 인지
  4. 충분한 테스트를 거칠 수 있다.
  5. 개발자가 중도 이탈해도 큰 손실이 없다.

개발자 측면

  1. 명확한 작업일정.
  2. 장애 발생시 문제가 해결될 때 까지 동일 절차를 따를 수 있다.