본문 바로가기

ComputerScience/Software Engineering

OOP - 1. What Is Good Software?

728x90

1. What Is Good Software?

- Correctness

- Efficiency (Time & Space(memomory), HW utilization(GPU))

- Easy to maintain (related to cost)

  • modifiability
  • readability
  • reuseablility
  • easy to debug, repair
  • testability
  • easy to extend
  • platform-independent

- robustness, reliable, dependable

- Secure (security)

- documentation (versionning/github)

- easy to use (usability, user interface)

2. Software Crisis

- 매우 빠른 하드웨어 발전 속도를 소프트웨어가 따라가지 못하고 있다.

- correct, understandable, and verifiable computer programs를 작성하는 것은 매우 어렵다.

3. Software Life Cycle

- maintain(change, enhancement, improvement) -> cost

4. Software Engineering

- The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently

- engineering : applying science theory to real life practical problems

- produce a correct, efficient, and reliable software to minimize the cost of software development and maintenance

5. Software Properties

- Modularity : divide and conquer.

- Encapsulation : hide the implementation.

- Localization : collect similar things together.

- Abstraction : simplifying complex reality.

- Uniformity : make everything look similar.

- Completeness : do everything required.

- Confirmability : be able to prove that the software works properly.

6. Programming Methodology

Unstructured Programming

-only one main program, global data, use goto statement

 

Procedural Programming, Structured Programming

- sequence of procedure call

- procedure 별로 유지 보수 가능, c프로그래밍이 이에 속한다.

- top-down approach (하나의 복잡한 문제를 쪼개고 쪼개서 쉬운 문제들의 합으로 해결한다, divide and conquer와 유사)

- functional decomposition (함수들로 동작을 분해)

Modular Programming 

- procedural programming에서 procedure들을 module화 하는 방법

- 하나의 프로그램을 비슷한 동작을 하는 부분들로 구성된 모듈로 분리

* Global Variable 사용 피하기 -> OOP 등장

- global variable은 access범위가 제한되지 않기 때문에 unsafe하다.

- 여러 모듈이 global variable의 공유가 가능하기 때문에 modular programming 원칙에 위배된다.

- 즉 global variable 때문에 모듈과의 depency가 생기게 된다.

- 따라서 data를 module안에서 localize해야한다. -> safe

 

Object Oriented Programming

- program consist of a set of interacting objects.

- class로 data와 functions를 함께 묶는다.

- object는 class의 instance이다. 

- bottom - up approach (가장먼저 객체들을 정의하고 객체들을 모아서 전체를 완성한다.)

- 큰 규모의 sw를 개발하는데 적합한 방법

- maintainablility, reusablity가 높다

728x90
반응형

'ComputerScience > Software Engineering' 카테고리의 다른 글

소프트웨어공학 - 2. SW Development Process  (0) 2022.03.10
소프트웨어공학 - 1. Introduction  (0) 2022.03.02
UML (Unified Modeling Language)  (0) 2021.12.02
OOP - 3. Technique  (0) 2021.09.29
OOP - 2. OOP concepts  (0) 2021.09.08