[객체지향개발론] 00 Overview
2023. 7. 28. 23:34
1
- 소프트웨어 개발 어려움의 이유는 무엇일까? → 크기 자체가 크기 때문에 유지 보수가 어렵다는 점 때문!
“All systems change during their life cycles. This must be borne in mind when developing systems expected to last longer than the first version.”(모든 시스템은 수명 주기 동안 변화합니다. 이는 첫 번째 버전보다 더 오래 지속될 것으로 예상되는 시스템을 개발할 때 명심해야 한다.) - Ivar Jacobson
- 설계, 테스트, 문서 등등 보다 유지보수에 들어가는 cost가 훨씬 크다. 따라서 유지보수 비용을 줄이는 방법을 생각해보아야 한다.
2 패러다임의 변화
- 유지보수에 들어가는 비용을 줄이기위해 패러다임을 완전 바꾸어보자.
- Innovation of development Process. 기존의 폭포수 모델에서 변화
- Iterative and incremental (기능을 하나씩 반복하면서 개발)
- architecture-centric (뼈부터 시작하여 살까지 개발)
- use case-driven process
- 메인스트림(mainstream)의 변화 : Procedure → Object oriented
- Programming
- Imperative Programming
- Procedural(or Structured) Paradigm
- Object-Oriented Paradigm
- Tell how to do it : 일을 어떻게 해야하는지 방법을 말해줘야함.
- Mutability : 상태 기반 머신이다. (∴ 교착상태가 발생하기도 함.)
- Declarative Programming
- Functional Paradigm
- Logic Paradigm
- Tell what to do : 무슨 일을 해야하는지 지시해야함.
- Immutability
- 근데 그 전에, programming이 대체 뭐지?
- [Real-World (Problem Space)] → [Software (Solution Space)]
: 현실세계의 문제를 컴퓨터가 대신 계산하도록 자동화하는 과정! 옮겨가는 Mapping 과정에서 solution space에 반영해야할 것들을 선택하고 추출해 추상화 abstraction 한다.
eg) 캐리커쳐 : 종이에 반영해야할 얼굴 특징을 선택, 추상화한다.- Procedural Paradigm 에서는 Program 을 Data Structures 와 Algorithms 의 합성으로 바라본다!
- [Real-World (Problem Space)] → [Software (Solution Space)]
- Imperative Programming
3 Object-Oriented
그럼 앞으로 programming은 한 마디로 현실세계와 소프트웨어의 매핑이라고 설명할 수 있다. 이는 Object-oriented programming의 관점으로 보았을 때 쉽게 매핑할 수 있다.
- A program is a collection of interacting objects. 프로그램은 상호 작용하는 객체의 집합이다.
- Objects communicate by sending ‘messages’ to each other. 개체는 서로 '메시지'를 보내며 소통한다. (request for action)
- 매핑 과정
- object 구현
- message - method 구현
- 시퀀스별 구성 (ex. 고객이 웨이터에게 주문을 한다. 웨이터는 기록한 주문서를 계산원에게 업데이트하고 요리사에게 알린다...)
'* CS > 객체지향개발론' 카테고리의 다른 글
[객체지향개발론] 05 SSD and Domain Model(1) (0) | 2023.08.05 |
---|---|
[객체지향개발론] 04 Use Case (0) | 2023.08.04 |
[객체지향개발론] UML (0) | 2023.08.02 |
[객체지향개발론] Fundamental Concepts of OO (0) | 2023.07.30 |
[객체지향개발론] Motivation for OO Modeling (0) | 2023.07.29 |