[SW] #1 소프트웨어 개발 방법론

g.pm·2022년 11월 3일
2

소프트웨어 공학

목록 보기
1/1
post-thumbnail

Jira를 공부하면서 스크럼(Scrum)칸반(Kanban) 이라는 단어를 오랜만에 접하게 되었고 관련된 기능들을 다루면서 갑자기 많은 것이 궁금해졌다. 애자일과 Devops 등 다양한 개발 방법론들과 나선형, UP모델과 같은 개발 프로세스들의 개념들에 대해 좀 더 깊이 공부하고 싶어졌고 개발 방법론을 시작으로, 프로젝트 관리의 세부내용까지 다뤄볼 예정이다.


1. 소프트웨어 개발 방법론

소프트웨어 개발 방법론은 소프트웨어를 개발하는 방법에 대한 이론으로서, 소프트웨어 개발 과정, 절차, 방법, 산출물, 기법, 도구들을 체계적으로 정리하고 표준화시킨 것이다

  • 소프트웨어 개발의 생명주기에 정형화된 방법 및 절차, 도구 등을 체계적으로 정리하여 표준화한 문서
  • 구성 : 작업절차, 방법, 산출물, 관리, 기법, 도구 등으로 구성

  • 종류 : 구조적, 정보공학, 객체지향적, CBD, 애자일 등.

개발 프로세스 VS 방법론
소프트웨어 개발 프로세스(software development process)는 소프트웨어 시스템을 개발하거나 유지보수할 목적으로 수행되는 활동 일체 또는 절차를 뜻한다. 비슷한 말로 소프트웨어 생명 주기가 있다. 즉, 요리로 치면 개발 프로세스는 요리 레시피(what)에 해당하며, 방법론은 이것을 삶아서 할지 구워서 할지(How)를 고민하는 그 자체를 의미한다.


01. 구조적 방법론

  • 정형화된 분석 절차에 따라 사용자 요구 사항을 파악하여 문서화하는 처리 중심의 분석이론
  • 소프트웨어 모듈화의 활성화를 시작으로 기능적인 분할을 시도하여 하향식 방식을 수행하는 개발방법

구조적 방법론 기본 개발 과정

  • 요구사항 : 분석 고객이 원하는 요구사항을 끌어내 명세화 하는 것.
  • 구조적 분석 : 고객이 원하는 기능 및 데이터를 종합하여 데이터 흐름도(Data Flow - Diagram) 작성
  • 구조적 설계 : 모듈 중심 설계 단계, 목적 : 재활용, 결합도를 낮춰 독립성을 높임
  • 구조적 프로그래밍 : 순차, 선택, 반복의 논리 구조 구성으로 프로그램 복잡성 최소화

구성요소

데이터흐름도 DFD(Data Flow Diagram) : 각 기능을 분할하여 표현한 구조도
자료사전 DD(Data Dictionary) :

  • 자료나 의미나 자료의 단위 및 값에 대한 사항을 정의하는 도구
  • DFD에 표현된 자료 저장소를 구체적으로 명시하기 위해 사용

상태전이도 STD(State Transition Diagram) : 보통 어떤 상태에서 다른 상태로 변경되는 과정 및 해당 과정의 프로세스 명세
소단위명세 Minispec(Mini Specification) : 쪼갤 수 없을 정도 까지의 기능으로 분리 후 명세(구조 언어 사용하거나 N-S Chart 이용)

구조적 개발 방법론 장점

  1. 정형화/체계화 : 명확한 요구사항을 추출하여 설계에 반영 가능
  2. 모듈화 : 효율적인 재사용 및 유지보수 가능

구조적 개발 방법론 단점

  1. 거시적 관점 인식 부족 : 방법론에 대한 다양한 시도를 하고 있지 않다는 뜻으로 프로젝트에서만 사용하는 추세
  2. 실제 사례 자료 부족으로 데이터 모델링 방법과 명확한 방법론적 지침이 미흡함
  3. 유지보수성 및 재사용성이 낮기 때문에 기능이 불완전하고 자주 변한다.

02. 정보공학 방법론

  • 기업 전체 , 또는 기업의 주요부분을 계획 , 분석 , 설계 및 구축에 정형화된 기법들을 상호 연관성 있게 통합 , 적용하는 데이터 중심 방법론
  • James Martin 이 비즈니스 시스템 즉, 정보시스템 개발을 공학적으로 접근하기 위해 체계화시킨 개발 방법론 (Information Engineering)

절차 및 기본개념

  1. 정보전략계획 수립단계(Information Strategy Planning) ": 기업의 경영전략을 뒷받침할 수 있는 정보화 전략을 수립하기 위해 현행 업무프로세스와 시스템을 분석하고 미래 아키텍처와 전략계획을 수립하게 된다.
  • 경영전략, 관련조직, 업무자료 거시적 분석
  • 현행시스템의 평가
  1. 업무영역 분석단계(Business Area Analysis) : 기업의 업무 현황을 분석해서 개념 수준의 데이터와 프로세스를 설계하는 업무분석 단계이다.
  • 데이터 모델링 : ERD
  • 프로세스 모델링 : 프로세스 계층도(PHD), 프로세스 의존도(PDD), 자료흐름도(DFD)
  1. 시스템 설계단계(System Design) : 실질적으로 시스템을 설계하는 단계로 우리가 많이 사용하고 있는 논리적 ER 다이어그램으로 데이터를 설계하고 분할 다이어그램, 액션 다이어그램, 의존 다이어그램을 사용해 프로세스를 설계한다.
  • BSD(Business System Design)
  • 업무절차 정의
  • Presentation 설계
  • 분산 설계
  1. 시스템 구축단계(Construction) : 확정된 설계명세서로부터 데이터베이스 생성기와 프로그램 코드 생성기를 이용해 데이터베이스와 실행 가능한 프로그램 코드를 생성한다

정보공학 개발 방법론 장점

  1. 경쟁우위 확보의 전략적 기회 식별 및 방안 제공
  2. 일관성 있고 통일된 정보시스템 구축 가능
  3. 시스템의 장기적인 진화, 발전 허용
  4. 데이터 중심으로 업무절차 및 환경변화에 유연

정보공학 개발 방법론 단점

  1. 정보공학의 효과를 위해 장기간 필요
  2. 소규모의 자동화 요구 사업영역에서는 시간이 오래 걸림
  3. 특정 사업영역으로부터 독립된 시스템 개발에는 부적합

03. 객체지향 방법론

  • 현실 세계의 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의 객체(Object)로 표현
  • 현실세계에 존재하는 실체 및 개념들을 객체(Object)라는 독립된 단위로 구성하고 이 객체들이 메시지 교환을 통해 상호작용함으로써 전체시스템이 운영되는 개념

절차 및 기본개념

  1. 개념화 단계(Inception Phase)
  • 시스템에 대한 비즈니스 사례(Business Case)를 만들고 프로젝트 범위(Scope)를 정의한다.
  • 시스템과 상호작용을 하는 모든 외부 엔티티(Actor)를 명시하고, 상위 레벨(High Level)에서 상호작용의 특징을 정의한다.
  • 모든 유스케이스(Use Case)를 명시하고 중요한 몇 가지를 설명하는 것도 포함된다.
  • 비즈니스 사례는 성공기준(Success Criteria), 위험관리(RiskManagement), 필요한 자원의 평가, 주요한 이정표 날짜를 보여주는 단계별 계획을 포함한다.
  • 개념화 단계의 마지막에는 프로젝트 목적을 검사하고 개발 진행여부를 결정한다.
  1. 상세화 단계(Elaboration Phase)
  • 문제영역(Problem Domain)을 분석하고 견고한 아키텍처 토대를 마련하고 프로젝트 계획을 개발하며 프로젝트에서 가장 위험한 요소를 제거하는 것이다.
  1. 구축 단계(Construction Phase)
  • 구축 단계에서는 사용자들(User Community)에게 전이할 수 있도록 반복 및 점증적으로 제품을 완전히 개발하는 것이다. 이것은 나머지 유스케이스를 기술하고 설계부문을 더욱 충실하게 하며, 구현을 완전히 끝내고 소프트웨어를 테스트하는 것을 의미한다.
  1. 전이 단계(Transition Phase)
  • 소프트웨어를 사용자들(User Community)에게 전달하는 것이다.

객체지향 개발 방법론 장점

  1. 클래스의 재사용과 확장에 의한 빠른 개발이 가능
  2. 이론적으로 재사용성이 용이하다.

객체지향 개발 방법론 단점

  1. 개발 수준이 저 수준의 추상화 개념이므로 실제로 재사용 가능한 소프트웨어 개발은 기대하기 어렵다.
  2. 개발의 생산성 및 유지보수성을 위한 아키텍처 및 표준 적용이 어렵다.
  3. 대규모 프로젝트에서의 확장성이 떨어진다.

04. CBD 방법론

특정 기능 수행을 위해 독립적으로 개발, 잘 정의된 인터페이스(I/F)를 가지며, 다른 부품과 조립되어 응용시스템 구축에 사용되는 SW 단위를 컴포넌트라고 하는데, 개발된 S/W 컴포넌트를 조립, 시스템을 개발하여 객체지향의 단점인 S/W 재사용성을 극대화한 개발방법론

절차 및 기본개념

  1. 요구파악
  • 요구사항 이해 : 사용자 요구사항 수집, 도메인 분석. 요구사항 기술서, 용어사전, 개념 모델
  • 요구사항 정의 : 요구사항 이해 기반, 유즈케이스 작성, Usecase Model
  1. 분석 및 설계
  • 요구사항 분석 : 객체 모델 프로토타이핑, UI 기획, 객체 모델, UI 설계서
  • 아키텍처 정의 : 소프트웨어 컴포넌트 아키텍처 정의, 아키텍처 기술서
  • 컴포넌트 설계 : 아키텍처 기반 I/F 명세화, 모델링,인터페이스 명세서 , 컴포넌트 명세서
  • 데이터베이스 설계 : 객체 모델의 엔티티 클래스를 대상으로 DB 모델링, ERD, DB 설계서
  1. 구현
  • 개발표준 정의 : 플랫폼 특성 검토, 표준 수립, 명명규칙, 코딩규칙, 프로그래밍가이드
  • 코드 구현 : 플랫폼 따른 전용 Compiler 이용
  1. 테스트
  • 테스트 계획 : 테스트 목표, 대상, 방법, 절차수립, 테스트 계획서
  • 테스트 수행/보고 : 테스트 수행, 절차 기록 및 승인, 컴포넌트 테스트 통합테스트 인수테스트 보고서

CBD 개발 방법론 장점

  1. 재사용을 통한 생산성 향상 à 반복적 활용에 의한 수익성 제고 및 개발 기간 단축, 개발 비용 감소
  2. 검증된 Component 사용으로 S/W 품질 수준 향상
  3. 지적 자산의 재활용 범위 확대
  4. 소프트웨어 개발, 유지보수 부문의 생산성 극대화 가능

CBD 개발 방법론 단점

  1. 파라다임 변화에 따른 시행 착오 à Component 선정/제작/검증/활용 능력 부족.
  2. 고객과의 문제 à 잦은 프로젝트 범위 변경 요청 및 지적 재산권
  3. 초기 선행 투자
  4. 조립식 정보시스템 구축에 따른 책임 소재

05. 애자일(Agile) 방법론

  • 애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다.
  • 소프트웨어 개발 방법론에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론

텍스트 공정과 도구보다 개인과 상호작용을
포괄적인 문서보다 작동하는 소프트웨어를
계약 협상보다 고객과의 협력을
계획을 따르기보다 변화에 대응하기를

종류

스크럼, 칸반, XP

profile
다재다능

0개의 댓글