3-1공부/소프트웨어공학론

1. 소프트웨어 개요

KGW2027 2022. 4. 17. 16:44
728x90
반응형

소프트웨어구성

 - Code : 프로그램의 일부

 - Program : 실행 가능한 컴퓨터 명령어

 - Software : 프로그램 + 프로그램 개발에 사용된 문서 정보 ( 디자인, 프로젝트 계획, 분석 자료 등... )

 

소프트웨어성질

 - 복잡성 ( Complexity ) : 각각의 모듈이 특징을 지녀, 스케일이 커질수록 복잡해진다.

 - 적합성 ( Conformity ) : 개발의도에 맞는 소프트웨어가 개발되어야 한다.

 - 가변성 ( Changeability ) : 소프트웨어는 끊임없이 변경될 것을 요구받는다.

 - 불가시성 ( Invisility ) : 소프트웨어의 구성을 파악하기 어렵다.

 

오류율 ( Failure rates )

 - 하드웨어는 개발 과정에서 오류율이 높다가, 개발 완성단계에서 안정되고, 마모(Wear out)되면 다시 상승하는 형세.

 - 소프트웨어는 개발 과정에서 오류율이 높다가, 개발 완성단계에서 안정되지만, 오류나 내용 변경과 같은 Side effect에 의해 오류율이 다시 높아질 수 있음.

 

 소프트웨어의 종류

 - Custom Software : 단일 사용자를 위해 제작되는 소프트웨어 ( 단일은 개인 뿐 아니라 단체 등도 의미할 수 있음 )

 - Package Software : Commercial Off-The-Shelf, COTS 라고 표현되며, 누구든 사용 가능한 소프트웨어 (상용제품)

 - Embedded Software : 특정 하드웨어를 위한 소프트웨어

 - SaaS ( Software as a Service ) : 사용자가 설치하지 않고 사용할 수 있는 서비스 소프트웨어 ( ex: Gmail 같은.. )

 

 

소프트웨어 공학론 (Software Engineering)

 "소프트웨어 공학론은 1960년대 대규모의 복잡한 소프트웨어를 개발하는 것에 대한 어려움 (Software Crisis)로 인해 등장하게 되었다."

 - High cost : 한 달에 한 사람이 300~1000 라인의 코드를 개발한다.

  -> 이 때, 코드 줄수를 LOC (Lines of Code, =FP), 한 사람이 한 달에 하는 양을 MM (Man-Month, =PM)이라고 한다.

  -> 위의 설명의 경우 '300~1000 LOC / MM'

 

 - Project Delay : 1983~2009년의 약 13k개의 프로젝트를 분석한 결과. 프로젝트 사이즈가 커질수록 취소되거나 딜레이된 프로젝트의 수가 많아졌다.

  -> On-Time ( 제시간 출시 ) > Canceled ( 취소됨 ) > Delayed ( 지연됨 ) > Early ( 일찍 출시됨 )

 

 - Software Defects / Low Reliability : 버그로 인한 사고 발생 가능성 등.. 결함이나 낮은 신뢰성을 해결해야 한다.

  -> 1996년 Ariane 5 로켓 발사 실패 사건 등에서 알 수 있다.

 

 - Maintenance : 새로운 기능 요구, 하드웨어의 업그레이드, 작동 상 결함, 요구사항 변경 등.. 유지보수가 필요하다.

  -> 유지보수 비용과 개발비용은 8:2 에서 6:4 정도로 유지보수 비용이 많이 들어간다.

 

소프트웨어 공학에서의 목표

 - 소프트웨어의 개발, 운영, 유지보수, 폐기에 대한 체계적인 접근 방법을 만든다. (by IEEE Computer Society)

 - 공학적, 과학적, 수학적 원리를 통해 경제적이고 높은 퀄리티의 SW를 만든다. (by Watts Humphrey)

 

 소프트웨어의 문제

  1. 규모(Scale)

   - 규모가 큰 소프트웨어를 개발할 때, 관리와 개발이 체계적이고 형식적이여야 한다.

   - kLOC(Kilo LOC)에 따라 규모를 정의한다.

     -> small, medium, large, very large 등으로 구분하며 10^n kLOC 이다.

  2. 품질 생산성 ( Quality of Productivity )

   - ISO/ICE 25010 표준에 따라 품질을 판정해야 한다.

     = Functionality : 기능이 충분한가?

     = Reliability : 안정적으로 작동하는가?

     = Usability : 편리한가?

     = Efficiency : 효율적인가?

     = Maintainability : 유지보수가 쉬운가?

     = Portability : 다른 컴퓨팅 환경으로 쉽게 이식할 수 있는가?

     = Security : 권한 내에서 작동하는가?

     = Compatibility : 호환성이 좋은가?

 3. 일관성재현성 ( Consistency & Reproducibility )

  - 어느 개발자가 오더라도 일관적인 방법으로 개발에 참여할 수 있어야 한다.

 4. 변경 ( Changes )

  - 쉽게 바꿀 수 있어야 한다.

 

 => 이 문제를 해결하기 위해서는 어떻게 해야하는가?

  - 소프트웨어 개발 절차를 제대로 둔다. ( 요구사항 분석 > 설계 > 코딩 > 테스트 )

  - SQA(Software Quality Assurance) 에 따라 설계대로 개발되었는가?(Verification)사용자의 요구사항이 충족되었는가?(Validation)검증하는 시험을 거친다.

  - 절차대로 제대로 진행되고 있는지를 확인한다.

 

SWEBOK ( Software Engineering Body of Knowledge, IEEE & ACM )

 - 소프트웨어 공학의 범위를 정하는 내용을 담고 있다. 

 

 

 

728x90
반응형