Computer Science/Software Engineering

[소프트웨어공학][01] 소프트웨어의 이해

김민지 2020. 4. 3. 22:19

쉽게 배우는 소프트웨어 공학

01장 소프트웨어 공학 소개

01 소프트웨어의 이해

 

1 소프트웨어의 사용 예와 정의

 

  • 프로그램: 프로그래밍한 원시 코드 자체를 말한다.
  • 소프트웨어프로그램(코드)을 비롯해 개발 과정에서 생성되는 모든 산출물(자료 구조, 데이터베이스 구조, 테스트 결과 등)을 포함하고, 각 단계에서 만들어지는 문서와 사용자 매뉴얼 등도 포함한다. 프로그램뿐 아니라 그 이상의 것도 포함하는 매우 포괄적인 개념이다.

 

2 소프트웨어의 분류

 

  • 관리 소프트웨어자료를 받아들여 가공한 후 정보를 제공하는 소프트웨어이다.
    • 고객의 자산 정보를 취급하는 인터넷 뱅킹 시스템, 학생 관련 정보를 다루는 대학의 종합정보시스템

  • 제어 소프트웨어: 각종 센서를 이용하거나 기기들의 동작을 제어하는 소프트웨어이다.
    • 교통신호 제어, 의료기기 제어

  • 임베디드 소프트웨어: 장비나 기기에 내장된 형태의 소프트웨어이다.
    • 일상생활에서 사용하는 가전제품, 각종 공정제어 시스템

 

3 소프트웨어의 특징

 

  • 제조가 아닌 개발: 제조는 능력에 따른 결과물의 차이는 크지 않지만 개발은 개인 능력에 따라 차이가 크다.
  • 소모가 아닌 품질 저하: 소프트웨어는 소모가 아닌 품질 저하가 발생한다.
    • 아래 A그림은 하드웨어 실패 곡선이다. 초기 실패율이 매우 높지만 오류를 해결하고 나면 큰 문제없이 오래 지속되는 것을 알 수 있다. 그러다 오래 사용하면 주변 환경의 문제로 실패율이 다시 높게 치솟는다.

    • 아래 B그림은 이상적인 소프트웨어 실패 곡선이다. 개발 후 처음 사용할 때는 오류가 많아 실패율이 매우 높다가 오류를 해결한 후에는 큰 문제없이 쓸 수 있다. 하지만 이는 개발 완료 후 변경 사항이 없을 때의 이상적인 상황이다.

    • 아래 C그림은 실제 소프트웨어의 실패 곡선이다. 소프트웨어의 특징 중 하나는 사용 시작 단계부터 사용자의 요구가 계속 발생한다는 것이다. 또한 설치 환경이 달라질 수도 있다. 이처럼 새로운 기능 추가 등 변경 사항이 발생한다. 이때 변경으로 인한 부작용으로 실패율이 급격히 증가할 수 있고, 반복적인 변경으로 인해 실패율도 반복적으로 증가한다.

왼쪽부터 순서대로 (A 하드웨어의 실패 곡선) / (B 이상적인 소프트웨어의 실패 곡선) / (C 실제 소프트웨어의 실패 곡선)

 

 

4 소프트웨어의 당면 문제

 

  • 소프트웨어 개발의 느린 발전 속도: 하드웨어에 비하면 개발 속도가 상당히 느리다.
  • 새로운 소프트웨어에 대한 사용자 요구의 증가: 새로운 소프트웨어에 대한 사용자 요구가 날로 증가하고 있지만 소프트웨어의 발전 속도는 이를 만족시키지 못하고 있다.
  • 관리 기술의 부분적 활용: 납기에 맞추기 급급해 관리 기술을 제대로 활용하지 못하는 경우가 많고, 관리에 대한 인식도 부족하여 소홀히 생각하는 경우가 많다. 

 

5 소프트웨어 개발의 어려움

 

  • 개발 과정이 복잡하다: 무엇이든지 복잡하면 문제가 많이 발생할 수 있는데 소프트웨어 개발도 예외가 아니다. 그래서 소프트웨어 공학에서는 개발의 복잡함을 줄이기 위한 방법과 기술을 제시한다.
  • 참여 인력이 많다: 인력이 많으면 의사소통 경로가 많아져 의사 결정 과정도 복잡할 것이다. 또한 협력도 쉽지 않다. 그리고 중간에 이직하는 사람, 새로 투입되는 사람 등 변화도 많이 발생한다. 그래서 소프트웨어 공학에서는 개발에 참여하는 팀을 구성하고 관리하는 효율적인 방법을 제시한다.
  • 개발 기간이 길다: 개발 기간이 길면 프로젝트 진행 상황을 파악하기 쉽지 않고 개발 비용 산정도 어렵다. 그래서 소프트웨어 공학에서는 프로젝트를 효율적으로 관리하기 위한 프로젝트관리지식체계를 소개한다.

 

 


 

이 글은 다음 책을 참고하여 작성했습니다.

 

김치수 쉽게 배우는 소프트웨어 공학 한빛아카데미 2015

 

쉽게 배우는 소프트웨어 공학

소설처럼 술술 익히는 소프트웨어 공학은 중요하지만 다소 뜬구름 잡는 얘기 같았던 소프트웨어 공학 이론을 핵심만 추려 명쾌하게 정리해준다. 일상에서 흔히 접할 수 있는 예시를 통해 소프트웨어 공학의 핵심 개념을 이끌어내고, 풍부한 삽화와 도해를 더해 기초 지식이 없어도 쉽게 이해할 수 있도록 하였다. 또한 정보처리기사, 감리사, 공무원 시험 기출 문제를 활용한 연습문제를 실어 각종 자격증 취득과 취업 준비에도 도움이 되도록 하였다.

book.naver.com