📌소프웨어란?
- Code : 프로그램의 한 부분
- Program : 실행가능한 컴퓨터 명령어임을 표시
- Software : program + document(요구사항 분석, 디자인, 계획 등 문서)
📖소프트웨어 특징
- Complexity : 복잡성
- Conformity : 적합성, 각 요구사항에 맞게 만들어져야 한다
- Changeability : 계속해서 변경, 업데이트 해야한다
- Invisibility : 코드만으로 구성이나 로직을 파악하기 어렵다
📖하드웨어와 비교
- 하드웨어 실패율
- 소프트웨어 실패율
📖소프트웨어 종류
- Custom Software : 고객이 특정 사람들을만을 위함(xx학교 포털사이트)
- Package Software : Commercial Off-The Shelf, 누구나 들어와서 이용할 수 있음
- Embedded software : 사양이 낮은, 혹은 작은 기기안에 삽입된 소프트웨어
- SaaS(Software as a Service) : 브라우저를 통해 설치없이 사용할 수 있는 소프트웨어
📌소프트웨어 공학이란
- 소프트웨어 개발, 운용, 유지보수, 폐기에서 체계적인 접근방법
- 사람에 의존적인 개발 방법론을 공학적으로 접근하자
📖소프트웨어 비즈니스의 문제
- High cost
- Project delay
- Low reliability(bugs, defects)
- Maintenance
📖소프트웨어 공학이 다루는 문제
- Scale : 큰 규모의 소프트웨어를 어떻게 잘 만들까
- Quality and Productivity : 어떻게 높은 퀄리티와 높은 생산성으로 만들까
- SW Quality Attributes
- Functionality : 필요한 기능 제공하는지
- Reliability : 오랫동안 기능 수행하는지
- Usability : 편리한지
- Efficiency : 효율적으로 실행하는지
- Maintainability : 유지보수가 쉬운지
- Portability : 다른 컴퓨터 환경으로 쉽게 옮길 수 있는지
- Security : 권한이 허용된 범위안에서만 사용하는지(위치 권한 등)
- Compability : 호환성이 있는지(hwp는 낮음, pdf 높음)
- Consistency and Reproducibility : 어떻게 일관성있게 만들고 유지보수 해나갈까(이직해서 다루는 사람이 바뀌어도 잘 작성된 문서를 보고 파악)
- Changes : 변경되는 요구사항들에 어떻게 잘 대응할 것 인가
📖소프트웨어의 구성 요소
📖소프트웨어 공학의 문제 접근방법
- software development process : 개발 과정
- 요구사항 분석
- 디자인, 설계
- 코딩(구현)
- 테스트
- software quality assurance : 품질 보장
- Validation(고객의 요구사항에 따라 만들어졌는가)
- Verification(내 의도대로 함수가 만들어졌는가)
- project management : 개발 과정에서 관리, 평가 방법
- product Metrics : 필요한 기능 있나, 효율적이냐? 등의 평가 기준
- process Metrics : 요구사항이 완료되었는가, 잘되었는가 등의 과정에대한 평가 기준
📖소프트웨어 공학의 범위