[객체지향개발론] 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 의 합성으로 바라본다!

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)
  • 매핑 과정
    1. object 구현
    2. message - method 구현
    3. 시퀀스별 구성 (ex. 고객이 웨이터에게 주문을 한다. 웨이터는 기록한 주문서를 계산원에게 업데이트하고 요리사에게 알린다...)

BELATED ARTICLES

more