Post

소프트웨어 공학 - OOLC (Object-Oriendted Software Life Cycle) 개요

소프트웨어 공학

학부 시절 소프트웨어 공학을 배울때 이런 쓸데없는걸 왜 배우는가에 대한 의문을 가졌던 때가 있었다.
회로 부터 운영 체제, 프로그래밍 언어, 컴파일러 등등 배울게 얼마나 많은데 이런 쓸데없는 절차에 대해서 배우고 있냐 싶었던 것이다. 일단 수업 자체도 재미가 없었거니와 아마 당시 수업을 맡으신 교수님도 소프트웨어 공학 쪽 전공이 아니라서 잘 모르셔서 모호하게 설명하신 탓도 있을거라 생각한다.
하지만 취직하고 보니, 이 소프트웨어 공학에 따른 개발은 사실상 보험과 비슷하다는 생각을 갖게 되었다.
지금 당장은 비용이 크고 부담스러울 수는 있으나 나중에 높은 확률로 일어날 사고(담당자의 퇴사, 내가 작성했지만 오래되서 까먹은 코드의 유지보수)에 대한 든든한 방패가 되기 때문이다.

이번에는 SDLC(Software Development Life Cycle)에서 객체 지향 모델에서 사용하는 OOLC(Object-Oriendted Software Life Cycle)에 대해서 알아보려고한다. 차후 워터폴이나 프로토타입, 스파이럴, 애자일과 같은 모델들을 나중에 가능하다면 알아보도록 하겠다.

※ UML(Unified Modeling Language)

객체 지향 소프트웨어 시스템을 시각적으로 표현하는 대표적인 모델링 언어로 아래의 특징을 가지고 있다.

– 객체 지향 개발을 위한 표준화된 표기법 – OMT, Booch 및 유스케이스 표기법을 결합 – 객체 지향 요구사항, 분석 및 설계 결과물을 설명하는 그래픽 언어 – 객체 관리 그룹(OMG)의 표준으로 승인됨

1. OOLC (Object-Oriendted Software Life Cycle) 개요

객제 지향 소프트웨어 생명 주기이다. 기본적으로 SDLC인데 분석·설계·구현 전반에서 객체, 클래스, 인터페이스 같은 개념을 일관되게 사용하는 접근법을 말한다. 이번 포스팅에서는 OOLC에 더해 COMET(Concurrent Object Modeling and architectural design mEThod) 방식을 사용할 것이다. 순서는 아래와 같다.

1) 요구사항 모델링

요구사항 모델링에서는 Use Case 모델링을 진행한다. 이는 소프트웨어 기능 요구사항을 Use Case 및 Actor로 정의하는 것이다.

2) 분석 모델링

말 그대로 요구사항을 분석하는 것이다. 개발자가 이해하는 과정으로 정적 모델링(Static Modeling)과 동적 모델링(Dynamic Modeling)이 있다. 정적 모델링은 클래스 간의 구조적 관계를 정의하며 클래스 다이어그램을 사용하여 클래스와 클래스 간의 관계를 나타내는 것이고 동적 모델링은 상태에 따라 달라지는 제어 객체에 대한 상태도를 정의하는 것이다.

이 정적 모델링과 동적 모델링에 대해서는 차후 좀 더 자세하게 다룰 것이다.

3) 디자인 모델링

전체 소프트웨어 아키텍처를 설계하고, 시스템을 하위 시스템으로 구조화하며, 상세 설계를 진행한다.

4) 점진적 소프트웨어 구축

유스케이스를 기반으로 시스템의 일부를 선택하여 상세 설계, 코딩 및 단위 테스트를 수행한다.

5) 점진적 소프트웨어 통합

점진적 소프트웨어 통합을 위해서 아래의 절차를 진행한다.

  • 각 시스템 단계별 통합 테스트
  • 사용 사례 기반 통합 테스트 – 각 사용 사례에 대한 통합 테스트 케이스 개발 – 화이트 박스 테스트
  • 사용 사례 내 객체 간 인터페이스 테스트

6) 시스템 테스팅

기능적 요구사항에 대한 블랙박스 테스트를 수행하여 시스템을 최종 검증한다.

2. Prototyping

1) Throwaway Prototyping

요구사항 모델링 단계에서는 일회용 프로토타이핑(Throwaway Prototyping)이 포함되어있다. 이는 요구사항 모델링만으로는 이해하기 힘드므로 사용자의 요구사항과 기대를 한번 더 확인하는 부분이다. 이후 해당 프로토타입은 그 다음 절차에 쓰지 않고 결과물을 폐기한다.

2) Incremental Prototyping

점진적 프로토 타이핑은 분석 모델링과 디자인 모델링, 점진적 소프트웨어 구축, 점진적 소프트웨어 통합, 시스템 테스팅에서 받은 피드백을 이전 단계에 피드백해서 고치는 프로토 타이핑을 말한다.

※ 추가 업데이트 및 검증 예정이다.

참고 자료

  • H. Gomaa, “Chapter 6 - Designing Concurrent, Distributed, and Real-Time Applications with UML”, Addison Wesley Object Technology Series, July, 2000

원문 참고 자료

  • J. Rumbaugh et al, “Object-Oriented Modeling and Design”, Prentice Hall, 1991
  • I Jacobson et al, “Object-Oriented Software Engineering”, Addison Wesley, Reading MA, 1992.
This post is licensed under CC BY 4.0 by the author.