프로그래밍[Univ]/소프트웨어 공학론

[소프트웨어공학론] Basic

Cloud Travel 2012. 3. 8. 11:58
* 소프트웨어공학론을 배우는 이유
 ⓐ 전문적인(Professional) 소프트웨어 개발을 잘 하기 위한 이론, 방법, 도구들을 알기 위해서 
 ⓑ 최근 System의 비용은 소프트웨어 비용에 의해서 결정되는 경향이다.
  - 소프트웨어 개발의 비용을 최소화 하기 위한 법을 알기 위해서
 ⓒ  더 나아가 소프트웨어를 개발 하는 것보다 유지 보수하는 비용이 더 많이 든다.
  - 소프트웨어 유지 비용을 최소화 하기 위한 법을 알기 위해서
 ⓓ ⓑ,ⓒ를 통틀어 Cost-Effective Software Development(효율적 비용 소프트웨어 개발)를 위해서 배운다.

* Software (Engineering)
 ⓐ Software = Computer programs + associated documentation.
  - Software를 만들기 위해서는 프로그래밍보다 문서 작성(설계 및 분석)작업이 더 많이 필요하다.
 ⓑ 좋은 소프트웨어의 조건  
  - 소프트웨어의 목적에 따라서 좋은 소프트웨어의 조건은 유동적이다 
  - 일반적으로 기능, 성능, 유지보수의 용이성, 의존성(신뢰성), 사용의 용의성, 낮은 가격등이 존재한다.
  - 의존성은 신뢰, 보안, 안전을 포함하고 있다.
  - 효율성 판단의 기준으로 응답시간, 처리시간 메모리 사용등이 존재한다.
  - 사용상 편의해야하며, 상호 호환이 가능해야한다. 
 ⓒ 소프트웨어공학에 기본적으로 항상 존재하는 행동
  - 소프트웨어의 기능 명세화, 검증, 개발, 진화 단계가 존재한다.
  - 소프트웨어 명세 : 기능을 구체화 하며 명세화 하는 과정 
 ⓓ 컴퓨터공학과 컴퓨터과학의 차이
  - 컴퓨터 공학 : 정답이 없으며, 현재 있는 조건에서 최적화된 값을 추구한다.
  - 컴퓨터 과학 : 정답이 있으며, 현재 조건에서 완벽한 값이 존재하지 않으면 불가능하다.
 ⓔ 시스템공학안에 소프트웨어 공학이 존재하지만 시스템공학의 90%를 소프트웨어 공학이 차지한다.
 ⓕ 현재 소프트웨어공학이 직면해있는 Topic
  - 다양성, 신뢰성있는 소프트웨어 개발
  - 다양성 : 다양한 분산 시스템과 상호 작용해야한다.
  - 비지니스와 사회변화에 빠르게 따라가야한다.
  - 보안성과 신뢰감을 주는 소프트웨어여야 한다.
 ⓖ 소프트웨어 개발시 필요한 비용의 사용 비율 : 60%(개발) 40%(테스팅) 
  - 소프트웨어 개발이 종료된후 유지 보수와 진화하는 비용은 개발비용보다 훨씬 많이 든다.
 ⓗ 소프트웨어 공학에는 정답이 없으며, 어떤 종류의 프로그램을 만드느냐에 따라서 답이 다르다. 
 ⓘ 소프트웨어에서의 Web이 방대해지면서 사용가능한 서비스가 많아졌다. 또한 분산처리시스템이 가능하다.
  - 웹 분야에서의 소프트웨어개발 또한, 그 소프트웨어의 목적에 따라서 기본적인 소프트웨어공학을 따른다. 
 ⓙ 소프트웨어공학이란?
  - 현실적 제한에서 소프트웨어 개발에 대한 모든 측면을 연구하는 학문이다. 
 ⓚ 모든 종류의 소프트웨어 시스템에 사용될 수 있는 원리 
  - 시스템 개발은 관리되고, 이해가 되는 개발 과정이 사용된다.
  - 의존성과 행동은 개발하는 시스템 타입에 따라 변화된다.
  - 개발하는 소프트웨어의 이해와 소프트웨어의 명세, 요구사항을 아는 것은 중요하다.
  - 재사용을 많이해라. (재사용 되는 것은 이미 비용이 낮고, 보안이 높은 신뢰성이 판단된 제품이다)

* 소프트웨어 제품의 분류
 ⓐ Generic products
  - 일반적인 사용자를 대상으로 하는 자체적으로 설치가능한 제품
   ex) PC software, CAD, Office-software
  - 소프트웨어 개발자가 명세 및 변경을 주도한다.
 ⓑ Customized products
  - 특정 사용자의 필요를 만족시키기 위해 발주된 제품
  - 고객이 명세 및 변경을 주도한다. 때에 따라 개발자와 고객간 많은 접촉이 필요하다. 

* 응용프로그램(소프트웨어)의 타입
 ⓐ Stand-alone application
  : 네트워크 연결이 필요없어야 한다. 자체적으로 모든 것을 해결 가능해야한다.(officeware)
 ⓑ Interactive transaction-based application
  : 상호통신하는 방법이 필요. 웹 응용프로그램등에서 많이 사용된다.(지속적인 변경)(e-commerce)
 ⓒ Embedded control systems
  : 하드웨어 측면이 들어가며, 변경이 적어야한다. (처음에 모든 명세를 확실히...)(smart phone 개발)
 ⓓ Batch processing systems(일괄처리시스템) :  ⓑ와 반대대는 개념
 ⓔ Entertainment systems : 유저를 즐겁게하기 위한 시스템(UI적 요소가 많다)
 ⓕ Systems for modelling and simulation
 ⓖ Data collection systems : 센서를 이용해 정보 수립후 그것을 응용(세콤, 기상정보등)
 ⓗ Systems of Systems : 복합 System