본문 바로가기

CS BASIC/소프트웨어 설계와 방법론

(10)
[CS BASIC] 익스트림 프로그래밍(XP, eXtreme Programming) 익스트림 프로그래밍(XP, eXtreme Programming)이란? 익스트림 프로그래밍(XP, eXtreme Programming) 란 소프트웨어 개발 방법론 중 하나로, 기존의 개발 방법론들이 가지고 있던 일부 한계를 극복하고 빠른 속도로 변화에 대응하기 위해 만들어졌습니다. 켄트 백 등이 제안한 소프트웨어 개발 방법으로, 비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법입니다. XP는 애자일(Agile) 개발 프로세스의 한 가지로 분류되는 개발 프로세스입니다. 그렇기에 특히 작은 규모의 개발 팀에서 유연하고 빠르게 소프트웨어를 개발하고 유지보수하는 데 중점을 두고 있습니다. 익스트림 프로그래밍(XP, eXtreme Programming)의 특징 XP의 특징은 다음과 같습니다. 특징..
[CS BASIC] 사용자 요구 사항(User Requirements)과 사용자 인터페이스(User Interface) 개요 오늘은 소프트웨어 개발을 위해 사용자로부터 요구사항(User Requirements)을 도출하는 방법과 분석 절차, 그리고 사용자 인터페이스(UI, User Interface)의 설계 과정에 대해서 알아보도록 하겠습니다. 개인 또는 기업과 같은 고객이 비즈니스 목적을 위해 개발자 또는 IT 회사에 프로그램을 만들어줄 것을 의뢰할 수 있습니다. 이때, 고객으로부터 어떤 프로그램을 제작하길 원하는지 니즈를 반영하고 이에 맞는 현실적은 개발 계획을 수립하는 것은 당연한 과정일 것입니다. 하지만, 고객으로부터 어떤 요청을 받았는지 체계적으로 기록해두지 않으면 향후 개발 과정에서 예기치 못한 문제가 생겼거나, 상황에 따라서는 요청한 내용을 고객과 협의하여 정정해야할 수도 있을 것입니다. 이러한 상황에 가장 ..
[CS BASIC] 소프트웨어 테스트, 분석 도구, 소프트웨어 재공학(Software Testing, Analysis Tools And Software Reengineering) 개요 오늘은 소프트웨어의 테스트 기법과 원리 그리고 이에 활용되는 다양한 분석 도구와 소프트웨어 재공학(Software Reengineering)에 대해서 알아보도록 하겠습니다. 지난 포스팅에서는 소프트웨어의 개발과 설계 그리고 실제 개발에서 활용되는 다양한 개발 방법론 등에 대해서 살펴 보았는데요. 오늘은 소프트웨어 개발을 위해 열심히 설계하고 만드는 과정을 거쳐 어떤 테스트, 즉 검증 과정을 거쳐야하는지 알아보도록 하겠습니다. 제법 규모가 있는 소프트웨어 회사라면 사내에 별도로 테스트를 전문으로 하는 인력이 존재하기도 합니다. 만들어진 소프트웨어 대해서 꼼꼼히 검증 작업을 수행하고, 결함이나 놓친 부분은 없는 지 체크를 해주는 일을 QA(Quality Assurance)라고 하며, 소프트웨어 뿐만 아..
[CS BASIC] 개발 일정 관리 모델(Development Managing Model)과 다양한 개발 도구(Development Kit)들 개요 지난 포스팅에서는 소프트웨어를 잘 설계하기 위한 다양한 다이어그램, 모델링 기법을 중점으로 알아보았는데요. 오늘은 소프트웨어의 개발 일정 관리 모델(Development Managing Model)과 형상 관리(Configuration Management), 그리고 개발 방법론 그리고 다양한 개발 도구(Development Kit)에 대해서 알아보도록 하겠습니다. 소프트웨어 일정 관리 모델 일정 관리 모델 설명 주 공정법 (CPM, Critical Path Method) 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법 모든 자원 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드(Node)와 노드 간의 연결을 통해 공정을 계산하기 위한 액티비티(Activity) 표기법..
[CS BASIC] COCOMO, 자료흐름도(DFD), 자료 사전(DD), 코드 설계(Code Design) 개요 지난 포스팅에서는 소프트웨어의 모델(Model)에 대해서 알아보고, 이러한 모델을 효과적으로 만들기 위한 모델링 기법과 코드 설계에 대해서 알아보았습니다. 소프트웨어 공학(Software Egineering)에서 모델링(Modeling)은 고객이 요청한 요구사항을 만족하는 소프트웨어를 제공하기 위하여, 소프트웨어의 내부적인 구조, 동적인 행위 등을 만들고 분석, 검증하는 과정을 통해 만들어진 모든 산출물을 총칭하는 개념입니다. 요약하자면, 주어진 요구사항으로 부터 앞으로 어떻게 소프트웨어를 개발할지 청사진을 그려가는 과정이라고 할 수 있습니다. 소프트웨어 모델링에 대한 자세한 설명은 아래의 포스팅을 참고하시면 좋을 것 같습니다. https://1-hee.tistory.com/55 [CS BASIC]..
[CS BASIC] 모델(Model)과 UML, 다이어그램(Diagram) 개요 오늘은 소프트웨어의 모델링(Modeling)에 사용하는 통합 모델링 언어(UML, Unified Modeling Language)와 다양한 다이어그램(Diagram)에 대해서 알아보도록 하겠습니다. 소프트웨에서 모델(Model)이란 요구사항을 이해하기 쉽도록 현실의 상황을 단순화하여 개념적으로 표현한 것입니다. 모델(Model)은 문제가 발생하는 상황에 대하여 원인을 진단하고, 이해도를 높여주어 해결 방안을 모색할 수 있도록 도움을 줍니다. 따라서, 소프트웨어를 개발하기 위해 요구사항을 분석할 때에 핵심이라고 할 수 있습니다. 모델은 개발 대상의 종류, 범위, 역할 등에 따라 고유한 도메인(Domain)으로 분류할 수 있는데, 이렇게 특정한 목적을 위해 설계된 모델이 고유한 분야를 가지면서 다른 모..
[CS BASIC] 소프트웨어의 디자인 패턴 개요 오늘은 소프트웨어 개발에 사용 되는 다양한 디자인 패턴(design patterns)에 대해서 알아보도록 하겠습니다. 소프트웨어는 다양한 모듈과 함수, 프로퍼티, 객체 지향 프로그래밍에서는 객체 들 까지 서로 상호작용하여 하나의 기능을 제공하게 됩니다. 이러한 소프트웨어는 개발자가 어떻게 그 프로그램을 설계하고 개발 했는지에 따라서 종류를 구분할 수 있는데요. 정말 신기하게도 지구상에 존재하는 국적, 인종, 나라 별로 다양한 배경에서 프로그래밍을 하는 개발자라도 큰 틀에서 보면 그들이 만든 소프트웨어 모듈의 구조와 설계한 방식은 비슷한 경향성을 띄게 된다고 합니다. 그리고 이러한 소프트웨어가 설계된 방식, 사용 방법, 모듈의 구조 등을 종합적으로 평가하여 분석해보면 몇 가지 비슷한 경향성을 갖는 종..
[CS BASIC] 모듈(Module)과 모듈 평가 기준, 소프트웨어 아키텍처 뷰와 프레임워크 개요 오늘은 소프트웨어의 모듈(Module)에 대해서 알아보고, 모듈을 평가하는 기준, 그리고 소프트웨어 아키텍처 뷰와 프레임워크에 대해서 알아보도록 하겠습니다. 만일 여러분이 개발자가 되어 프로그램을 하나 만들어야 하는데, 그 프로그램을 오로지 하나의 파일로 작성하도록 요구 받았다면 어떨까요? 요구사항 명세서에 C언어로 개발해야 하며, 프로그램의 모든 코드는 메인 함수를 벗어날 수 없고 모든 변수와 기능은 메인 함수의 스코프 안에서 모두 이루어져야 한다면요? 자바(Java)를 예로 들자면, 하나의 .java 파일에서 벗어날 수 없고 궁극적으로는 하나의 클래스 파일 안에서 모든 기능을 구현해야 한다면 어떨까요? 잠시 상상만 하더라도 정말 쉽지 않은 프로그래밍이 될 것 같습니다. 설령 실제로 그러한 프로그..