Jira를 공부하면서 스크럼(Scrum)
과 칸반(Kanban)
이라는 단어를 오랜만에 접하게 되었고 관련된 기능들을 다루면서 갑자기 많은 것이 궁금해졌다. 애자일과 Devops 등 다양한 개발 방법론들과 나선형, UP모델과 같은 개발 프로세스들의 개념들에 대해 좀 더 깊이 공부하고 싶어졌고 개발 방법론을 시작으로, 프로젝트 관리의 세부내용까지 다뤄볼 예정이다.
소프트웨어 개발 방법론은 소프트웨어를 개발하는 방법에 대한 이론으로서, 소프트웨어 개발 과정, 절차, 방법, 산출물, 기법, 도구들을 체계적으로 정리하고 표준화시킨 것이다
개발 프로세스 VS 방법론
소프트웨어 개발 프로세스(software development process)
는 소프트웨어 시스템을 개발하거나 유지보수할 목적으로 수행되는 활동 일체 또는 절차를 뜻한다. 비슷한 말로 소프트웨어 생명 주기가 있다. 즉, 요리로 치면 개발 프로세스는 요리 레시피(what)에 해당하며, 방법론은 이것을 삶아서 할지 구워서 할지(How)를 고민하는 그 자체를 의미한다.
- 정형화된 분석 절차에 따라 사용자 요구 사항을 파악하여 문서화하는 처리 중심의 분석이론
- 소프트웨어 모듈화의 활성화를 시작으로 기능적인 분할을 시도하여 하향식 방식을 수행하는 개발방법
요구사항
: 분석 고객이 원하는 요구사항을 끌어내 명세화 하는 것.구조적 분석
: 고객이 원하는 기능 및 데이터를 종합하여 데이터 흐름도(Data Flow - Diagram) 작성구조적 설계
: 모듈 중심 설계 단계, 목적 : 재활용, 결합도를 낮춰 독립성을 높임구조적 프로그래밍
: 순차, 선택, 반복의 논리 구조 구성으로 프로그램 복잡성 최소화데이터흐름도 DFD(Data Flow Diagram) : 각 기능을 분할하여 표현한 구조도
자료사전 DD(Data Dictionary) :
상태전이도 STD(State Transition Diagram) : 보통 어떤 상태에서 다른 상태로 변경되는 과정 및 해당 과정의 프로세스 명세
소단위명세 Minispec(Mini Specification) : 쪼갤 수 없을 정도 까지의 기능으로 분리 후 명세(구조 언어 사용하거나 N-S Chart 이용)
- 기업 전체 , 또는 기업의 주요부분을 계획 , 분석 , 설계 및 구축에 정형화된 기법들을 상호 연관성 있게 통합 , 적용하는 데이터 중심 방법론
- James Martin 이 비즈니스 시스템 즉, 정보시스템 개발을 공학적으로 접근하기 위해 체계화시킨 개발 방법론 (Information Engineering)
정보전략계획 수립단계(Information Strategy Planning)
": 기업의 경영전략을 뒷받침할 수 있는 정보화 전략을 수립하기 위해 현행 업무프로세스와 시스템을 분석하고 미래 아키텍처와 전략계획을 수립하게 된다.업무영역 분석단계(Business Area Analysis)
: 기업의 업무 현황을 분석해서 개념 수준의 데이터와 프로세스를 설계하는 업무분석 단계이다.시스템 설계단계(System Design)
: 실질적으로 시스템을 설계하는 단계로 우리가 많이 사용하고 있는 논리적 ER 다이어그램으로 데이터를 설계하고 분할 다이어그램, 액션 다이어그램, 의존 다이어그램을 사용해 프로세스를 설계한다.시스템 구축단계(Construction)
: 확정된 설계명세서로부터 데이터베이스 생성기와 프로그램 코드 생성기를 이용해 데이터베이스와 실행 가능한 프로그램 코드를 생성한다
- 현실 세계의 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의 객체(Object)로 표현
- 현실세계에 존재하는 실체 및 개념들을 객체(Object)라는 독립된 단위로 구성하고 이 객체들이 메시지 교환을 통해 상호작용함으로써 전체시스템이 운영되는 개념
개념화 단계(Inception Phase)
상세화 단계(Elaboration Phase)
구축 단계(Construction Phase)
전이 단계(Transition Phase)
특정 기능 수행을 위해 독립적으로 개발, 잘 정의된 인터페이스(I/F)를 가지며, 다른 부품과 조립되어 응용시스템 구축에 사용되는 SW 단위를
컴포넌트
라고 하는데, 개발된 S/W 컴포넌트를 조립, 시스템을 개발하여 객체지향의 단점인 S/W 재사용성을 극대화한 개발방법론
요구파악
분석 및 설계
구현
테스트
- 애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다.
- 소프트웨어 개발 방법론에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론
텍스트 공정과 도구보다 개인과 상호작용을
포괄적인 문서보다 작동하는 소프트웨어를
계약 협상보다 고객과의 협력을
계획을 따르기보다 변화에 대응하기를
스크럼
, 칸반
, XP