전공공부/소프트웨어 설계 (Software Design) 6

[소프트웨어 설계] TDD

TDD는 Test Driven Development의 약자로, 직역하면 테스트 주도 개발입니다. 소프트웨어 개발 방법론 중 하나로, 테스트 케이스를 작성하고, 이 테스트 케이스를 통과하는 코드를 개발하는 방식입니다. 일반적인 개발 프로세스는 설계 -> 개발 -> 테스트의 형태로 이루어집니다. 이 경우 테스트 중에 오류가 발생했을 때, 전체 프로그램을 확인해야 하며, 설계 변경 등의 이유로 작은 기능을 수정하더라도 전체 코드가 잘 작동하는지 확인해야 합니다. 당연히 유지보수에도 어려움이 있겠죠. 이를 개선하고자 작은 기능부터 테스트를 거치면서 개발을 진행하자는 방식이 바로 TDD입니다. 이 TDD의 개발순서, 장장점, 단점에 대해 하나씩 알아보겠습니다. TDD 개발 순서 1. 설계 단계에서 개발 목적을 정..

[소프트웨어 설계] 모듈의 결합도와 응집도

1. 모듈 (Module) 모듈이란 모듈화를 통해 분리된 시스템의 각 기능을 뜻합니다. 모듈화는 시스템을 모듈 단위로 나누는 것을 뜻하며, 이를 통해 시스템의 수정 및 재사용, 그리고 유지, 관리가 용이해지고, 소프트웨어의 성능을 향상할 수도 있습니다. 이 모듈은 단독으로 컴파일이 가능하고, 또 재사용이 가능합니다. 이 모듈들이 시스템 안에서 얼마나 독립적으로 기능을 하는지를 모듈의 기능적 독립성이라고 합니다. 즉 모듈이 하나의 기능만을 수행하고, 다른 모듈과의 과도한 상호작용을 줄이는 것이 기능적 독립성을 높일 수 있는 방법이며, 기능적 독립성이 높을수록 모듈화의 장점들을 더 부각할 수 있습니다. 시스템이 독립성이 높은 모듈들로 구성이 되어야 모듈을 수정하더라도 다른 모듈들에 영향을 최대한 덜 미칠 수..

[소프트웨어 설계] UML

UML(Unified Modeling Language)는 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어입니다. UML은 사물(Things), 관계(Relationships), 다이어그램(Diagram)으로 이루어집니다. 1. 사물 사물은 모델을 구성하는 가장 중요한 기본 요소입니다. 다이어그램에서 관계가 형성될 수 있는 대상들을 말합니다. 사물은 아래의 4가지로 분류할 수 있습니다. 1. 구조 사물 - 시스템의 개념적, 물리적 요소를 표현 (Class, Use Case, Component...) 2. 행동 사물 - 시간과 공간에 따른 요소들의 행위를 표현 (Interaction, State Machine...) 3..

[소프트웨어 설계] XP 기법

스크럼 기법과 더불어 애자일 모형의 대표적인 개발 기법인 XP(eXtreme Programming) 기법은 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상하는 방법입니다. 1. XP 기법이란? XP 기법은 짧고 반복적인 개발 주기, 단순한 설계, 그리고 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 합니다. XP의 5가지 핵심 가치로는 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)이 있습니다. XP 기법에서 몇 개의 요구사항이 적용되어 부분적으로 기능이 완료된 제품을 제공하는 것을 릴리즈(Release)라고 합니다. XP 기법에서는 이 릴리즈를 최대한 많이 반복하여, 고객..

[소프트웨어 설계] 스크럼 기법

스크럼 기법은 애자일 모형에 기초를 둔 소프트웨어 개발 모형입니다. 이번 글에서는 이 스크럼 기법에 대해 알아보도록 하겠습니다. 1. 스크럼(Scrum) 기법이란? 스크럼이란 럭비에서 양 팀이 서로 대치해있을 때의 팀의 대형을 뜻하는 단어입니다. 즉 팀의 중요성을 강조하는 단어로, 스크럼 기법 역시 팀이 중심이 되어 개발의 효율성을 높이는데 중점을 두는 기법입니다. 스크럼 기법을 위해서는 하나의 스크럼 팀을 구성하여 개발에 들어갑니다. 스크럼 팀의 구성원으로는 제품 책임자, 스크럼 마스터, 개발팀이 있습니다. 우선 제품 책임자(PO, Product Owner)는 의견을 종합하여 제품에 대한 요구사항을 작성하는 사람입니다. 주로 개발될 결과물에 대한 이해도가 높고, 의사결정에 책임을 질 수 있는 사람이 제..

[소프트웨어 설계] 소프트웨어 생명 주기 모형

소프트웨어 생명 주기(Software Life Cycle)는 소프트웨어를 개발하기 위한 정의, 운용, 유지 보수 등의 과정들을 단계별로 나눈 것입니다. 그리고 그 방식에 따라 여러 가지 모형(model)들이 존재합니다. 개발을 시작할 때 그 특성에 따라 생명 주기의 모형을 선택할 수 있습니다. 이번 글에서는 어떤 모형들이 있는지를 알아보도록 하겠습니다. 1. 폭포수 모형 (Waterfall Model) 가장 많이 사용되는 모형인 폭포수 모형부터 알아보겠습니다. 폭포수 모형은 폭포에서 물이 한번 떨어지면 다시 올라갈 수 없듯이, 한번 지나간 단계는 다시 살피지 않는다는 뜻을 지닌 모형입니다. 즉, 한 단계를 완벽하게 완성하고 마무리 한 뒤에 다음 단계로 넘어가며, 넘어간 뒤에는 다시 돌아오지 않습니다. 그..