본문 바로가기
정보처리/소프트웨어설계

요구사항 확인 소프트웨어 개발 방법론 3/4

by 피갓자 2025. 3. 31.

요구사항 확인 소프트웨어 개발 방법론
요구사항 확인 소프트웨어 개발 방법론

소프트웨어 개발 방법론

객체 지향 분석 방법론

객체 지향(Object Oriented) 개념

  • 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법

객체 지향 구성요소

래스(Class)

  • 특정 객체 내에 있는 변수와 매서드를 정의하는 일종의 틀
  • 객체 지향 프로그래밍에서 데이터를 추상화하는 단위
  • 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현
  • 속성은 변수의 형태로, 행위는 메서드 형태로 선언

체(Object)

  • 물리적, 추상적으로 자신과 다른 것을 식별할 수 있는 대상
  • 클래스에서 정의한 것을 토대로 메모리에 할당됨
  • 객체마다 각각의 상태와 식별성을 가짐

서드(Method)

  • 클래스로부터 생성된 객체를 사용하는 방법
  • 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산
  • 전통적 시스템의 함수(Function) 또는 프로시저(Procedure)에 해당하는 연산 기능

시지(Message)

  • 객체 간 상호 작용을 하기 위한 수단
  • 객체에 어떤 행위를 하도록 지시하는 방법
  • 객체 간의 상호 작용은 메시지를 통해 이루어짐
  • 메시지는 객체에서 객체로 전달됨

스턴스(Instance)

  • 객체 지향 기법에서 클래스를 통해 만든 실제의 실형 객체
  • 클래스에 속한 각각의 객체
  • 실제로 메모리상에 할당

성(Property)

  • 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의
  • 성질, 분류, 식별, 수량, 현재 상태 등에 대한 표현 값

객체 지향 기법

슐화(Encapsulation)

  • 서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
  • 결합도가 낮아지고 재사용이 용이
  • 인터페이스가 단순화됨
  • 정보 은닉과 관계가 깊음
  • 변경 발생 시 오류의 파급 효과가 작음

속성(Inheritance)

  • 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법

형성(Polymorphism)

  • 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
  • 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질
  • 오버로딩(Overloading) : 매개변수의 유형과 개수를 다르게 하여 같은 이름의 메서드를 여러 개 가지는 기법
  • 오버라이딩(Overriding) : 상위 클래스에서 정의한 일반 메서드의 구현을 하위 클래스에서 무시하고 재정의할 수 있는 기법

상화(Abstraction)

  • 공통 성질을 추출하여 추상 클래스를 설정하는 기법
  • 과정 추상화(Process Abstraction) : 복잡한 처리 과정을 단순하게 제공
  • 자료 추상화(Data Abstraction) : 복잡한 자료 구조를 단순하게 제공
  • 제어 추상화(Control Abstraction) : 복잡한 제어 과정을 단순하게 제공

보 은닉(Information Hiding)

  • 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하게 하는 코드 보안 기술
  • 필요하지 않은 정보는 접근할 수 없도록 하여 한 모듈 또는 하부 시스템이 다른 모듈의 구현에 영향을 받지 않게 설계됨(고려되지 않은 영향인 Side Effect들을 최소화)
  • 모듈 내부의 자료 구조와 접근 동작들에만 수정을 국한하지 않기 때문에 요구사항 등 변화에 따른 수정이 가능
  • 모듈 사이의 독립성을 유지하는 데 도움을 줌
  • 설계에서 은닉되어야 할 기본 정보로는 IP 주소와 같은 물리적 코드, 상세 데이터 구조 등이 존재

계성(Relationship)

  • 두 개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내는 기법
  • 연관화(Association) : is-member-of, 참조 및 이용 관계
  • 집단화(Aggregation) : is part of, part-whole, 객체 간의 구조적인 집약 관계
  • 분류화(Classification) : is-instance-of, 클래스의 인스턴스 관계
  • 일반화(Generalization) : is-a, 클래스 간의 개념적인 포함 관계
  • 특수화(Specialization) : is-a, 클래스 간의 개념적인 포함 관계

객체 지향 설계 원칙(SOLID)

단일 책임의 원칙(SRP, Single Responsibility Principle)

  • 하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙

개방 폐쇄 원칙(OCP, Open Close Principle)

  • 소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙

리스코프 치환의 원칙(LSP, Liskov Substitution Principle)

  • 서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙

인터페이스 분리의 원칙(ISP, Interface Segregation Principle)

  • 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙

의존성 역전의 원칙(DIP, Dependency Inversion Principle)

  • 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙

객체 지향 분석(OOA, Object Oriented Analysis)의 개념

사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법

객체 지향 분석 방법론 종류

OOSE(Object Oriented Software Engineering)

  • 야콥슨(Jacobson)이 제시하였음
  • 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론
  • 분석, 설계, 구현 단계로 구성
  • 기능적 요구사항 중심의 시스템

OMT(Object Modeling Technology)

  • 럼바우(Rumbaugh)가 제시하였음
  • 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
  • 체 모델링(Object Modeling) : 시스템에서 요구하는 객체를 찾고 객체 간의 관계를 정의하여 E-R 다이어그램을 만드는 과정까지의 모델링으로 객체 다이어그램을 활용하여 표현
  • 적 모델링(Dynamic Modeling) : 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링으로 상태 다이어그램을 활용하여 표현
  • 능 모델링(Functional Modeling) : 프로세스들의 자료 흐름을 중심으로 처리 과정을 표현하는 모델링으로 자료 흐름도(DFD)를 활용하여 표현

OOD(Object Oriented Design)

  • 부치(Booch)가 제시하였음
  • 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
  • 분석과 설계의 분리가 불가능
  • 분석하는 데 이용된 객체 모델의 설계 시 적용

코드-요든(Coad-Yourdon) 방법

  • E-R 다이어그램을 사용하여 객체의 행위를 모델링하는 방법론
  • 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성

워프-브록(Wirfs-Brock) 방법

  • 분석과 설계 간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 방법론

기능 모델링 주요 기법

데이터 흐름도(DFD, Data Flow Diagram)

데이터 흐름도 개념

  • 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타낸 그림
  • 시스템 분석과 설계에서 매우 유용하게 사용되는 다이어그램
  • 자료 흐름 그래프 또는 버블(Bubble) 차트라고도 함

데이터 흐름도 특징

  • 구조적 분석 기법에 이용
  • 데이터(Data)의 흐름에 중심을 두는 분석용 도구
  • 제어(Control)의 흐름은 중요하지 않음
  • 시간 흐름을 명확하게 표현할 수는 없음

자료 사전

자료 사전(DD, Data Dictionary) 개념

  • 자료 요소, 자료 요소들의 집합, 자료의 흐름, 자료 저장소의 의미와 그들 간의 관계, 관계 값, 범위, 단위들을 구체적으로 명시하는 사전
  • 파일 혹은 데이터베이스에 있는 자료에 대한 자료 또는 각 자료 항목에 주어진 이름과 길이, 서술과 같은 데이터를 포함하는 참조를 위한 작업

자료 사전의 작성 목적

  • 조직에 속해 있는 다른 사람들에게 특정한 자료 용어가 무엇을 의미하는지를 알려주기 위하여, 용어의 정의를 조정하고 취합하고 문서로 명확히 하는 것
  • 자료 흐름도에 나타나는 어떤 자료의 흐름도 자료 사전에 정의되어 있어야 함