CH 01 Software Engineering Principle

Huisu·2021년 10월 16일
0

DataStructure

목록 보기
1/10
post-thumbnail

Software

The Software Life Cycle

  • Problem Analysis
  • Requrements Elicitation (요구 조건 도출)
  • Software Specification
  • High-and-low-level Desing
  • Implementation (구현)
  • Testing and Verification
  • Delivery
  • Operation
  • Maintanance (버그 수정 및 업데이트)

Software Engineering

  • 컴퓨터 프로그램의 설계, 생산 및 유지 관리에 대한 규율화된 접근 방식
  • 제시간, 자금 내 개발 필요
  • 소프트웨어의 complexity를 잘 관리하는 tool 필요

Programmers ToolBoxes

  • Hardware
  • Software
  • Ideaware (Knowledge)
  • Algorithm: 주어진 문제를 해결하기 위해 밟아야 하는 절차

Goals of Quality Software

  • Working (작동성)
  • odification (modification에 드는 시간과 노력)
  • Reuseability (재사용 가능성)
  • On time / Within budget (시간과 예산)

Specification

Specification

  • 소프트웨어가 어떻게 동작하는지가 아닌 무엇을 실행하는지 기술
  • 프로그램에 대해 문서 형식으로 작성

Abstraction

  • 만들고자 하는 것을 다 구현하는 것은 지나치게 복잡
  • 추상화시켜 간단한 형태로 변형
  • 간단한 형태: 사용자 입장에서 essential한 정보만 남는 것
  • Information hiding (정보 은닉): 중요한 부분의 디테일만 보여지고 나머지 디테일은 감춰지는 것

Stepwise Refinement

  • Top-down: 제일 큰 기능부터 쪼개 나가는 방식
    • Functional Decomposition: 어떤 식으로 프로그램을 진행해 나갈 것인지 Process 관점 (Verb)
    • Round-trup gestalt design: 무엇이 필요한지 객체지향 object 관점 (Noun)
  • Bottom-up: 밑에서부터 필요한 기능 나열해 두고 결합해 나가는 방식

Testing

Verification & Validation

  • Verification: 소프트웨어 개발 프로세스 관점에서 잘하고 있는가?
  • Validation: 스펙대로 만들고 있는가?

Errors

  • 오류가 하위 단계에서 발견될수록 수정 비용이 많이 발생
  • 오류는 가급적 조기 발견
  • Robustness: 오류가 있어도 파일이 작동하게 하는 것
  • Precondition & Postcondition: Validation을 만족한 프로그램인지 수학적으로 증명하려는 시도

0개의 댓글