전공 공부/소프트웨어공학

[소프트웨어공학] 절차지향, 객체지향

Yujin Chang 2024. 10. 17. 20:36

절차지향

프로그램을 순차적으로 실행되는 절차나 함수로 구성하는 방식. 프로그램을 큰 문제에서 작은 문제로 분할하고, 이를 해결하기 위한 일련의 절차를 설계하는 것이 핵심이 됨.

구조적 분석 및 설계 (SASD)

절차지향 프로그램 개발을 위한 전통적인 소프트웨어 개발 방법론. 문제를 체계적으로 분석하고, 구조적인 방식으로 설계하는 프로세스를 따름.

  • Top-Down 방식의 분할 정복 (큰 문제를 여러 개의 작은 문제로 나누고, 이를 각각 해결해 나가면서 전체 문제를 해결하는 방식 - 최상위의 추상적인 문제를 시작으로 점점 세부적인 하위 문제로 분할하여 설계와 구현을 진행)
  • 데이터 흐름도 (DFD): 시스템 내에서 데이터가 어떻게 흐르고 처리되는지를 시각적으로 나타내는 절차지향 개발의 중요한 분석 도구

객체지향

프로그램을 데이터와 그 데이터를 처리하는 방법을 함께 묶은 객체로 구성하는 방식. 이 방식은 문제를 객체 간의 상호작용으로 모델링하며, 시스템을 더 유연하고 확장 가능하게 설계하는 데 중점을 둠.

객체지향 분석 및 설계 (OOAD)

프로그램을 현실 세계의 개념이나 객체로 모델링하는 방식. 객체지향 분석과 객체지향 설계로 나뉨.

  • 객체지향 분석 (OOA)
    • 도메인 개념 및 객체를 발견하는 과정. 프로그램에서 다루어야 할 현실 세계의 중요한 개념(객체)을 식별하고, 이를 기반으로 도메인 모델을 구축하는 것
    • 요구사항을 정의하기 위해 Use-Case Model을 사용하여 User Requirements를 정확히 이해하고 System의 Goal을 설정함
  • 객체지향 설계(OOD)
    • 분석 과정에서 발견한 객체들을 소프트웨어에서 어떻게 구현할지 정의하는 단계.
    • 클래스 다이어그램을 통해 각 객체가 가지는 속성(데이터)과 동작(메서드)을 정의하고, 객체들 간의 관계를 나타냄.
    • 시퀀스 다이어그램을 통해 객체들 간의 상호작용을 모델링하여 각 객체가 수행해야 할 작업과 상호작용을 명확히 파악함.


절차지향 vs 객체지향

  1. 문제 해결 방식
    • 절차지향: 절차나 함수의 연속적인 실행을 통해 문제를 해결함.
    • 객체지향: 객체 간의 상호작용으로 문제를 해결함. 데이터와 해당 데이터를 처리하는 메서드가 하나의 객체로 캡슐화됨.
  2. 프로그램 구조
    • 절차지향: 프로그램이 순차적으로 흐르며, 데이터를 처리하는 절차나 함수가 프로그램의 핵심이 됨.
    • 객체지향: 프로그램은 객체들이 협력하는 구조로 이루어지며, 각 객체는 상태(속성)와 행동(메서드)을 가짐.
  3. 재사용성과 유지보수성
    • 절차지향: 코드가 절차에 따라 작성되기 때문에 재사용이 어렵고, 코드 수정 시 여러 부분을 변경해야 할 수 있음.
    • 객체지향: 객체 단위로 프로그램이 구성되기 때문에 재사용이 용이하고, 유지보수도 상대적으로 간편함. 객체 간의 의존성이 낮아 수정이 쉬움.