Software Lifecycle
- Problem Analysis: 문제를 정의하고 해결해야할 요소 식별
- Requirements Elicitation: 사용자로부터 소프트웨어 요구사항 수집
- Software Specification: 요구사항을 바탕으로 명세서를 작성해서 시스템 동작방식을 명확히 함
- High, Low level design: high level에서는 시스템의 전체구조와 아키텍쳐를 정의하고 저수준에서서는 각 모듈의 세부적인 구현방법 정함.
- Implementation: Design단계의 내용을 바탕으로 코드를 작성함
- Testing and Verification: 개발된 소프트웨어가 요구사항을 충족하는지 확인. unit test, integrated test등을 수행하고 에러를 발견하고 수정
- Delivery: 고객에게 소프트웨어 전달
- Operation: 소프트웨어를 실제 환경에서 운영
- Maintenance: 운영중 발견된 버그 수정 및 추가 요구사항 반영
Algorithms
A logical sequence of discrete steps that describes a complete solution to a given problem computable in a finite amount of time.
Abstraction
A model of a complex system that includes only the details essential to the
perspective of the viewer of the system.
복잡한 시스템이지만 사용자는 모든 내용을 알 필요 없고 필요한 내용만 제공하는것이 abstraction
Approaches to build Managable Modules
Fuctional Decomposition: 기능분해. 문제를 여러개의 subtask로 나눠서 해결
Object-oriented Design: 문제를 해결하는데 필요한 데이터와 operation으로 구성된 객체를 식별함
V&V
Program verification is the process of determining the degree to whic a software product fulfills its specification.