View

Section 01. 소프트웨어 생명 주기

소프트웨어는 요구사항을 분석해서 설계하고 그에 맞게 개발한 후 소프트웨어의 품질이 항상 최상의 상태를 유지할 수 있도록 관리하는데, 이러한 과정을 단계로 나눈 것을 소프트웨어 생명주기라고 한다.

소프트웨어 생명 주기를 표현하는 형태를 소프트웨어 생명 주기 모형이라고 하며, 개발자는 문제의 유형이나 개발 방법 등에 따라 특정 모형을 선택하여 사용할 수도 있고, 개별적인 모형을 사용할 수도 있다.

 

폭포수 모형 : 한 단계가 완전히 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형 (두 개 이상의 과정이 병행하여 수행하지 않음)

나선형 모형 : 소프트웨어 개발 과정을 여러번 반복하면서 점진적으로 완벽한 최종 소프트웨어를 개발하는 점진적 모형 (유지보수 과정X)

애자일 모형 : 고객의 다양한 요구사항의 변화에 유연하게 대응하기 위해 일정한 개발 주기를 반복하는 개발 모형

                    (반복되는 주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극 수용)

  •  애자일 모형을 기반으로 하는 소프트웨어 개발 모형 : 스크럼,XP,칸반,Lean,크리스탈,ASD,FDD,DSDM,DAD 등

* 폭포수 모형과 애자일의 비교

구분 폭포수 모형 애자일
새로운 요구사항 반영 어려움 지속적으로 반영
고객과의 의사소통 적음 지속적임
테스트 마지막에 모든 기능을 테스트 반복되는 일정 주기가 끝날 때마다 테스트
개발 중심 계획,문서(매뉴얼) 고객

 

Section 02. 스크럼(Scrum) 기법

1. 스크럼은 팀이 중심이 되어 개발의 효율성을 높인다는 의미가 내포된 용어이다.

 

제품 책임자(PO; Product Owner)

  • 이해관계자들의 의견을 종합하여 제품에 대한 요구사항을 책임지고 의사 결정할 주체
  • 요구사항이 담긴 백로그를 작성하고 백로드에 대한 우선순위를 지정한다.

스크럼 마스터(SM; Scrum Master)

  • 스크럼 팀이 스크럼을 잘 수행할 수 있도록 객관적인 시각에서 조언을 해주는 가이드 역할
  • 일일 스크럼 회의를 주관하여 진행 사항을 점검하고, 개발 과정에서 발생된 장애 요소를 공론화하여 처리한다.

개발팀(DT; Development Team)

  • 제품 책임자와 스크럼 마스터를 제외한 모든 팀원

2. 스크럼 개발 프로세스

제품 백로그(Product Backlog)

  • 제품 개발에 필요한 모든 요구사항을 우선순위에 따라 나열한 목록
  • 개발 과정에서 새롭게 도출되는 요구사항으로 인해 지속적으로 업데이트된다.

스프린트 계획 회의(Sprint Planning Meeting)

  • 제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정을 수립하는 것
  • 스프린트에서 처리할 요구사항을 개발자들이 나눠서 작업할 수 있도록 태스크라는 작업 단위로 분할한 후 개발자별로 수행할 작업 목록인 스프린트 백로그를 작성한다.

스프린트(Sprint)

  • 실제 개발 작업을 진행하는 과정
  • 스프린트 백로그에 작성된 태스크를 대상으로 작업 시간(양)을 추정한 후 개발 담당자에게 할당한다.
  • 개발 담당자에게 할당된 태스크는 보통 할 일(To Do), 진행 중(In Progress), 완료(Done)의 상태를 갖는다.

일일 스크럼 회의(Daily Scrum Meeting)

  • 모든 팀원이 매일 약속된 시간에 짧은 시간동안 진행 상황을 점검한다.
  • 남은 작업 시간은 소멸 차트에 표시한다. (시간 경과에 따라 남은 작업 시간을 그래프로 표현한 것)
  • 스크럼 마스터는 발견된 장애 요소를 해결할 수 있도록 도와준다.

스프린트 검토 회의(Sprint Review)

  • 부분 또는 전체 완성 제품이 요구사항에 잘 부합되는지 사용자가 포함된 참석자 앞에서 테스팅을 수행한다.
  • 제품 책임자는 개선할 사항에 대한 피드백을 정리한 후 다음 스프린트에 반영할 수 있도록 제품 백로그를 업데이트한다.

스프린트 회고(Sprint Retrospective)

  • 스프린트 주기를 되돌아보며 정해놓은 규칙을 잘 준수했는지, 개선할 점은 없는지 등을 확인하고 기록한다.
  • 해당 스프린트가 끝난 시점에서 수행하거나 일정 주기로 수행한다.

 

Section 03. XP(eXtreme Programming)기법

1. XP

몇 개의 요구사항이 적용된 일부 기능이 완성될 때마다 이를 고객에게 보여주고 이에 대한 반응을 확인하는 과정을 최종 제품이 완성         될 때까지 지속적으로 반복하여 개발 생산성을 향상시키는 방법

  • XP는 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 한다.
  • 릴리즈의 기간을 짧게 반복하면서 고객의 요구사항 반영에 대한 가시성을 높인다.
  • XP의 5가지 핵심 가치 :  의사소통, 단순성, 용기, 존중, 피드백

2. XP 개발 프로세스

사용자 스토리(User Story)

  • 고객의 요구사항을 간단한 시나리오로 표현한 것
  • 내용은 기능 단위로 구성하며, 필요한 경우 간단한 테스트 사항(Test Case)도 기재한다.

릴리즈 계획 수립(Release Planning)

  • 몇 개의 요구사항이 적용되어 부분적으로 기능이 완료된 제품을 제공하는 것을 릴리즈라고 한다.
  • 부분 혹은 전체 개발 완료 시점에 대한 일정을 수립한다.

스파이크(Spike)

  • 요구사항의 신뢰성을 높이고 기술 문제에 대한 위험을 감소시키기 위해 별도로 만드는 간단한 프로그램
  • 처리할 문제 외의 다른 조건은 모두 무시하고 작성한다.

이터레이션(Iteration)

  • 하나의 릴리즈를 더 세분화 한 단위를 이터레이션이라고 한다.
  • 이 기간(일반적으로 1~3주) 중에 새로운 스토리가 작성될 수 있으며, 작성된 스토리는 진행 중인 이터레이션 혹은 다음 이터레이션에 포함될 수 있다.

승인 검사(Acceptance Test, 인수 테스트)

  • 하나의 이터레이션 안에서 계획된 릴리즈 단위의 부분 완료 제품이 구현되면 수행하는 테스트
  • 사용자 스토리 작성 시 함께 기재한 테스트 사항에 대해 고객이 직접 수행한다.
  • 테스트가 완료되면 다음 이터레이션을 진행한다.

소규모 릴리즈(Small Release)

  • 릴리즈를 소규모로 하게 되면, 고객의 반응을 기능별로 확인할 수 있어, 고객의 요구사항에 좀 더 유연하게 대응할 수 있다.
  • 릴리즈가 최종 완제품이 아닌 경우 다음 릴리즈 일정에 맞게 개발을 계속 진행한다.
  • 모든 이터레이션이 완료되면 고객에 의한 최종 테스트를 수행한 후 릴리즈, 즉 최종 결과물을 고객에게 전달한다.

Section 06. 요구사항 정의

1. 요구사항의 유형

   기능 요구사항

  • 시스템이 무엇을 하는지, 어떤 기능을 하는지에 대한 사항
  • 시스템의 입력이나 출력으로 무엇이 포함되어야 하는지, 시스템이 어떤 데이터를 저장하거나 연산을 수행해야 하는지에 대한 사항
  • 시스템이 반드시 수행해야 하는 기능
  • 사용자가 시스템을 통해 제공받기를 원하는 기능

   비기능 요구사항

  • 시스템 장비 구성 요구사항
  • 성능 요구사항
  • 인터페이스 요구사항
  • 데이터 요구사항
  • 테스트 요구사항
  • 보안 요구사항
  • 품질 요구사항
  • 제약사항
  • 프로젝트 관리 요구사항
  • 프로젝트 지원 요구사항

2. 요구사항 개발 프로세스 : 도출 - 분석 - 명세 - 확인

 

Section 08. 요구사항 확인 기법

요구사항 확인 기법 : 요구사항 검토, 프로토타이핑, 모델 검증, 인수 테스트 등

 

* 프로토타이핑(Prototyping) : 초기 도출된 요구사항을 토대로 프로토타입을 만든 후 대상 시스템의 개발이 진행되는 동안 도출되는 요구사항을 반영하면서 지속적으로 프로토타입을 재작성하는 과정이다.

  • 상품이나 서비스가 출시되기 전에 개발 대상 시스템 또는 그 일부분을 개략적으로 만든 원형을 프로토타입이라고 한다.
  • 소프트웨어 요구사항에 대한 소프트웨어 엔지니어의 해석이 맞는지 확인하기 위한 수단으로 주로 사용된다.

 

Section 09. UML(Unified Modeling Language)

1. UML의 개요

  • UML은 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향모델링 언어이다.
  • UML은 공통된 표현법을 사용해 개발할 대상물을 다이어그램으로 표현하는 도구이다.
  • UML의 구성요소에는 사물, 관계, 다이어그램 등이 있다.

2. 사물

  • 다이어그램 안에서 관계가 형성될수 있는 대상들
  • 구조 사물 : 시스템의 개념적, 물리적 요소를 표현 (ex. 클래스, 컴포넌트, 노드 등)
  • 행동 사물 : 시간과 공간에 따른 요소들의 행위를 표현
  • 그룹 사물 : 요소들을 그룹으로 묶어서 표현 (ex. 패키지)
  • 주해 사물 : 부가적인 설명이나 제액조건 등을 표현

3. 관계

  • 사물과 사물 사이의 연관성을 표현하는 것

  연관(Association) 관계 : 2개 이상의 사물이 서로 관련되어 있음

  • 사물 사이를 실선으로 연결하여 표현하며, 방향성은 화살표로 표현한다.
  • 서로에게 영향을 주는 양방향 관계의 경우 화살표를 생랼하고 실선으로만 연결한다.
  • 연관에 참여하는 객체의 개수를 의미하는 다중도를 선 위에 표기한다.
다중도 의미
1 1개의 객체가 연관되어 있다.
n n개의 객체가 연관되어 있다.
0..1 연관된 객체가 없거나 1개만 존재한다.
0..* 또는 * 연관된 객체가 없거나 다수일 수 있다.
1..* 연관된 객체가 적어도 1개 이상이다.
n..* 연관된 객체가 적어도 n개 이상이다.
n..m 연관된 객체가 최소 n개에서 최대 m개이다.

사람이 집을 소유하는 관계 ( 사람은 자기가 소유하고 있는 집에 대해 알고있지만 집은 누구에 의해 자신이 소유되고 있는지 모른다는 의미)

  • 사람 쪽에 표기된 다중도가 1이므로 집은 한 사람에 의해서만 소유될 수 있다.
  • 집 쪽에서 표기된 다중도가 1이므로 사람은 집을 하나만 소유할 수 있다.

선생님은 학생을 가르치고 학생은 선생님으로부터 가르침을 받는 것과 같이 선생님과 학생은 서로 관계가 있다.

  • 선생님 쪽에 표기된 다중도가 1..* 이므로 학생은 한 명 이상의 선생님으로부터 가르침을 받는다.
  • 학생 쪽에 표기된 다중도가 1..* 이므로 선생님은 한 명 이상의 학생을 가르친다.

 집합(Aggregation) 관계 : 하나의 사물이 다른 사물에 포함되어 있는 관계

  • 포함하는 쪽과 포함되는 쪽은 서로 독립적이다.
  • 포함되는 쪽에서 포함하는 쪽으로 속이 빈 마름모를 연결하여 표현한다.

프린터는 컴퓨터에 연결해서 사용할 수 있으며, 다른 컴퓨터에 연결해서 사용할수도 있다.

포함(Composition) 관계 : 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계

  • 포함하는 쪽과 포함되는 쪽은 서로 독립될 수 없고 생명주기를 함께한다.
  • 포함되는 쪽에서 포함하는 쪽으로 속이 채워진 마름모를 연결하여 표현한다.

문을 열 수 있는 키는 하나이며, 해당 키로 다른 문은 열 수 없다. 문이 없어지면 키도 더 이상 필요하지 않다.

일반화(Generalization) 관계 : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현한다.

  • 예를 들어 사람은 여자와 남자보다 일반적인 개념이고 반대로 여자와 남자는 사람보다 구체적인 개념이다.
  • 보다 일반적인 개념을 상위(부모), 보다 구체적인 개념을 하위(자식)라고 부른다.
  • 구체적(하위)인 사물에서 일반적(상위)인 사물 쪽으로 속이 빈 화살표를 연결하여 표현한다.

아메리카노와 에스프레소는 커피이다. 다시 말하면, 커피에는 아메리카노와 에스프레소가 있다.

의존(Dependency) 관계 : 연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계

  • 하나의 사물과 다른 사물이 소유 관계는 아니지만 사물의 변화가 다른 사물에도 영향을 미치는 관계
  • 영향을 주는 사물(이용자)이 영향을 받는 사물(제공자) 쪽으로 점선 화살표를 연결하여 표현한다.

등급이 높으면 할인율을 적용하고, 등급이 낮으면 할인율을 적용하지 않는다.

실체화(Realization) 관계 : 사물이 할 수 있거나 해야 하는 기능(행위, 인터페이스)으로 서로를 그룹화 할 수 있는 관계를 표현한다.

  • 사물에서 기능 쪽으로 속이 빈 점선 화살표를 연결하여 표현한다.

비행기는 날 수 있고 새도 날 수 있다. 그러므로 비행기와 새는 날 수 있다는 행위로 그룹화 할 수 있다.

4. 다이어그램 : 사물과 관계를 도형으로 표현한 것

구조적 다이어그램 (정적 모델링) 행위 다이어그램 (동적 모델링)
클래스 다이어그램 유스케이스 다이어그램 : 사용자의 요구를 분석
객체 다이어그램 시퀸스 다이어그램 : 상호작용하는 시스템이나 객체들의 메시지
컴포넌트 다이어그램 커뮤니케이션 다이어그램 : 시퀸스 다이어그램 + 객체들간의 연관
배치 다이어그램 상태 다이어그램
복합체 구조 다이어그램 활동 다이어그램
패키지 다이어그램 상호작용 개요 다이어그램
  타이밍 다이어그램

 

728x90
Share Link
reply
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31