본문 바로가기

CS BASIC/정보시스템 일반

[CS BASIC] 소프트웨어와 소프트웨어 공학

소프트웨어(Software)란?

- 컴퓨터를 동작시키고 어떤 일의 처리 순서와 방법을 지시하는 명령어의 집합인 프로그램과 프로그램 수행에 필요한 절차, 규칙, 관련 문서를 총칭하는 것

 

소프트웨어 관련 용어

  • 프로그램(Programme) : 컴퓨터를 동작시키고 어떤 일의 처리 순서와 방법을 지시하는 명령어의 집합
  • 자료 구조(Data Structure) : 컴퓨터 기억 장치 내에 자료의 표현, 처리, 저장 방법 등을 총칭하는 것으로, 데이터 간의 논리적 관계나 처리에 대한 알고리즘을 의미
  • 문서(Paper) : 소프트웨어를 개발함에 있어서 사용자 설명서, 소프트웨어 요구사항 명세서, 평가서, 프로젝트 계획서 등을 포함

 

소프트웨어의 특징

 상품성 : 소프트웨어를 개발하면 상품이 되어 판매가 용이

 복잡성 : 개발하는 과정으 복잡하고 관리가 어려움

 변경 가능성 : 프로그램을 일부 수정하여 업그레이드 및 오류 수정을 할 수 있음

 복제성 : 복제가 용이하여 쉽게 복사 및 유통이 가능함.

 

 

시스템(System)의 개요와 기본 요소

시스템이란?

-컴퓨터로 처리 가능한 자료를 입력하고, 저장, 처리, 가공하여 출력할 수 있도록 설계/구현된 정보 체계.

하나의 목적을 위해 다양한 요소가 유기적으로 결합된 것을 의미.

 

시스템의 기본요소

 입력  처리  출력  제어  피드백

 

fig 1.0. 시스템의 기본요소

 

소프트웨어 위기(Software Crisis)

컴퓨터의 발달 과정에서 소프트웨어의 개발 속도가 하드웨어의 개발 속도를 따라가지 못해 사용자들의 요구 사항을 감당할 수 없는 문제가 발생하는 현상

 

소프트웨어 위기의 원인

 하드웨어 비용을 초과하는 개발 비용의 증가

 개발 기간의 지연

 개발 인력 부족 및 인건비 상승

 성능 및 신뢰성 부족

 유지보수의 어려움에 따른 엄청난 비용

 

소프트웨어 공학이란?

  • 경제적으로 신뢰도 높은 소프트웨어를 만들기 위한 방법, 도구와 절차들의 체계
  • 전기전자학회(IEEE, Institute of Electrical and Electronics Engineers)에서는 소프트웨어의 개발, 운용, 유지보수 및 파기에 대한 체계적이고 접근 방법이라 정의.

* 전기전자학회(IEEE) : 전기/전자/전산 분야의 국제 기구 및 학회

https://www.ieee.org/

 

IEEE - The world's largest technical professional organization dedicated to advancing technology for the benefit of humanity.

IEEE is the world's largest technical professional organization dedicated to advancing technology for the benefit of humanity.

www.ieee.org

 

 

소프트웨어 공학의 기본 원칙 (10)

 현대적인 프로그래밍 기술을 적해야 한다.

 신뢰성이 높아야 한다.

 사용자 편리성과 유지보수성이 높아야 한다.

 지속적인 검증 시행을 해야 한다.

 결과에 대한 명확한 기록을 유지해야 한다.

 사용자가 원하는 대로 동작해야 한다.

 시스템의 안정성과 보안에 만전을 기한다.

 최신 프로그램 언어, 최신 알고리즘 사용 현황 등을 확인한다.

 소프트웨어 개발 비용을 최소화하도록 노력한다.

 개발 단계와 소스코드 등의 문서화를 통해 명확성을 유지하도록 한다.

 

공학적으로 좋은 소프트웨어의 조건

 신뢰성이 높고 효율적이어야 하며, 사용자의 의도대로 동작해야 한다.

 편리성을 젝 hd하고, 잠재적 에러를 최소화해야 한다.

 유지보수성이 용이해야 한다.

 

소프트웨어 공학 계층 구조

fig1.1.소프트웨어 공학 계층 구조

  • 도구 : 프로세스와 방법을 제공하는 것
  • 방법론 : 소프트웨어를 설계하는데 기술적인 방법을 제공하는 것
  • 프로세스 : 소프트웨어의 가장 기초, 개발에 사용되는 방법론과 도구가 적용되는 순서 또는 절차를 의미.

 

소프트웨어 품질

 사용자의 요구대로 만들어져야 한다.

 유지 보수가 쉬워야 한다.

 에러를 최소화해야 한다.

 초반에 정한 비용에 맞추어 개발해야 한다.

 정확한 결과가 도출되어야 한다.

 원하는 시간에 원하는 기능을 수행할 수 있어야 한다.

 

소프트웨어 공학의 목표

 최소의 비용으로 단기간에 시스템에 적합한 소프트웨어를 개발하는 것이다.

 소프트웨어 제품의 품질을 향상시키고, 소프트웨어 생산성과 작업 만족도를 증대시키는 것이 목적이다.

 신뢰성 있는 소프트웨어를 경제적인 비용으로 획득하기 위해 공학적 원리를 정립하고 이를 이용하는 것이다.