객체지향설계 프로젝트 결과보고서

본 보고서를 객체지향설계 교과목의 최종보고서로 제출합니다.

학과(전공):
담당 교수:
조 명:
제 출 일:		0000년 00월 00일
	조 장 :	○ ○ ○	(20181234)
	조원1 :	○ ○ ○	(20181235)
	조원2 :	○ ○ ○	(20181236)
	조원3 :	○ ○ ○	(20181237)
	조원4 :	○ ○ ○	(20181238)
	조원5 :	○ ○ ○	(20181239)

동 의 대 학 교

컴퓨터소프트웨공학과장  귀하

〈 요  약  문 〉

프로젝트 목표 (300자내외)
내용 (500자내외)
기대효과 (200자내외)
Keywords

※ 이하 결과보고서 목차 및 내용은 예시이며, 분반별로 변경하여 활동 가능합니다.

목 차

1. 프로젝트 개요	5

1.1 비전	5

1.2 문제 기술	5

1.3 특징 목록	5

1.4 관련 기술	6

1.5 이해 당사자 요구사항	6

2. 교정 유지보수	7

2.1 분석	7

2.2 설계	7

2.3 구현	7

2.4 테스팅	7

3. 적응 유지보수	8

3.1 분석	8

3.2 설계	8

3.3 구현	8

3.4 테스팅	8

4. 완전화 유지보수	9

4.1 분석	9

4.2 설계	9

4.3 구현	9

4.4 테스팅	9

5. 예방 유지보수	10

5.1 분석	10

5.2 설계	10

5.3 구현	10

5.4 테스팅	10

6. 프로젝트 평가	11

6.1 프로젝트 완성도	11

6.2 일정 계획 평가	11

6.3 형상 관리 평가	11

6.4 프로젝트 활동 평가	12

6.5 설계 구성요소	13

6.6 현실적 제한조건	14

7. 소감	15

1. 프로젝트 개요

1.1 비전

프로젝트에서 개발한 소프트웨어 시스템의 목적과 가치를 간략하게 기술한다.

1.2 문제 기술

소프트웨어를 사용하여 해결하려는 문제를 간략하게 기술한다.

1.3 특징 목록

특징 주도 개발을 하기 위하여 주어진 문제로부터 도출된 특징 목록을 특징 이름과 설명을 포함하는 표 형태로 기술한다. (REQ.01 1.기능 참조)

예)

연번	요구사항	추정치
SFR-WM101	사용자 정보를 폼 입력받는다.	2
SFR-WM102	사용자 인증을 한다.	3
SFR-WM103	관리자 또는 일반 메일 사용자에 맞는 화면을 보여준다.	2
SFR-WM104	로그인 실패 시 로그인 실패 화면을 보여준다.	1
SFR-WM201	사용자 추가 또는 삭제를 선택할 수 있다.	2

1.4 관련 기술

특징 목록에 있는 각 특징을 분석/설계/구현하는데 필요한 관련 기술을 설명한다. (SW 개발에 필요한) 최신 정보와 관련 연구 결과를 잘 활용함을 보여야 한다. (컴퓨팅문제수준설명 속성 1: 지식의 깊이) (REQ.01 1.기능 참조)

예)

연번	요구사항	관련 기술
SFR-WM101	사용자 정보를 폼 입력받는다.	HTML form 태그 사용. 폼 입력 유효성 검사를 위한 JavaScript 적용
SFR-WM102	사용자 인증을 한다.	Pop3Agent 클래스 사용 (Pop3Agent.java 파일 참조)
SFR-WM103	관리자 또는 일반 메일 사용자에 맞는 화면을 보여준다.	사용자 화면을 HTML5 사용하여 개선
SFR-WM104	로그인 실패 시 로그인 실패 화면을 보여준다.	없음
SFR-WM201	사용자 추가 또는 삭제를 선택할 수 있다.	...

1.5 이해 당사자 요구사항

SW 제품에 대한 요구사항(특징 포함)을 도출하는데 여러 요구사항 도출 기법을 사용하여 관련된 다양한 이해 당사자로부터 요구사항을 정의한다. (컴퓨팅문제수준설명 속성 6: 이해 당사자의 요구수준 및 범위) (REQ.01 0.이해관계자 참조)

예)

연번	이해 당사자	요구사항
STR-001	고객	SMTP 프로토콜을 사용하여 메일을 송신할 수 있어야 한다.
STR-002	사용자 (or 관리자)	POP3 프로토콜을 사용하여 메일을 수신할 수 있어야 한다.
STR-003	개발자	사용자 추가, 삭제 등의 관리를 할 수 있어야 한다.

2. 교정 유지보수

해답이 명확하지 않은 문제를 해결하기 위해 깊이 있는 사고와 분석과정을 다룰 수 있어야 한다. Unified Process의 분석/설계 과정을 활용하여 문제에 대한 패턴을 찾고 이에 대한 해결방안을 제시할 수 있다. (컴퓨팅문제수준설명 속성 3: 분석의 깊이)

2.1 분석

o 교정 유지보수와 관련된 기존 코드 오류를 나열하고 간단하게 설명한다.

o AN.01 문서의 관련 유스케이스를 추가하고 교정 유지보수 전후 내용에 대하여 간단하게 설명한다.

2.2 설계

o 기존 코드에서 교정 유지보수를 위하여 수행한 설계 활동을 기술한다.

o 교정 유지보수 전후의 클래스 다이어그램과 통신 다이어그램을 보여주고 간단하게 설명한다.

2.3 구현

o 교정 유지보수를 수행하기 위하여 수정된 코드 중 대표적인 것을 나열하고 기술한다.

o 사소한 오류 수정이나 반복적으로 수행된 교정 유지보수 중 대표적인 것만 기술한다.

2.4 테스팅

o 적용된 교정 유지보수가 정상적으로 동작함을 보이기 위하여 수행한 테스팅 활동을 기술한다.

o TEST.01의 관련 테스트 케이스를 보여주고 간단하게 설명한다.

3. 적응 유지보수

3.1 분석

o 기존 코드에서 어떠한 환경 변화로 인하여 유지보수가 필요한지 분석 결과를 기술한다.

o AN.01 문서의 관련 유스케이스를 추가하고 적응 유지보수 전후 내용에 대하여 간단하게 설명한다. 단, 적응 유지보수로 인하여 유스케이스의 변화가 없으면 관련 있는 기존 유스케이스만 설명.

3.2 설계

o 기존 코드에서 적응 유지보수를 위하여 수행한 설계 활동을 기술한다.

o 환경 변화만 있어 기존 소스 코드 수정이 전혀 없는 경우 “해당 사항 없음”으로 표기하고, 관련 내용 설명을 생략할 수 있다.

3.3 구현

o 적응 유지보수를 수행하기 위하여 수정된 코드 중 대표적인 것을 나열하고 기술한다.

o 사소한 코드 수정이나 반복적으로 수행된 적응 유지보수 중 대표적인 것만 기술한다.

o 적응 유지보수를 하기 위하여 변경된 개발 환경에 대하여 상세하게 설명한다.

3.4 테스팅

o 적용된 적응 유지보수가 정상적으로 동작함을 보이기 위하여 수행한 테스팅 활동을 기술한다.

o TEST.01의 관련 테스트 케이스를 보여주고 적응 유지보수 전후에 동일하게 동작함을 간단하게 설명한다.

4. 완전화 유지보수

4.1 분석

o 새로운 기능 추가, 변경을 위하여 수행한 분석 활동을 기술한다.

- 확장 유스케이스 (이벤트 흐름 포함)

- 본문 분석 (후보 클래스와 후보 오퍼레이션 도출 결과)

- 시스템 순차 다이어그램 (시스템 오퍼레이션 도출 목적)

- 도메인 모델 (분석 초기 단계에서 찾은 클래스 이름과 클래스 간 관계를 보여주는 개념 수준의

클래스 다이어그램)

o AN.01 문서의 관련 유스케이스를 추가하고 완전화 유지보수 전후 내용에 대하여 간단하게 설명한다. 단, 완전히 새로운 기능을 추가하여 기존 기능과 연관이 없는 경우에는 새로 추가된 내용만 기술하면 됨.

4.2 설계

o 아래 내용을 기술한다.

- 시스템 오퍼레이션 정의 (각 시스템 오퍼레이션의 실행 결과로 도출할 수 있는 사후 조건(객체 생성/소멸, 연관 형성/소멸, 애트리뷰트 변경)을 표 형태로 기술한다.)

- 통신 다이어그램 (시스템 오퍼레이션에 대한 확장을 통하여 특징 구현에 필요한 클래스와 오퍼레이션을 추가로 도출 가능)

- 설계 클래스 다이어그램 (기존 도메인 모델에 새로 도출된 클래스와 오퍼레이션 추가)

o GRASP, GoF 패턴, 객체지향 원리(SOLID)가 적용된 부분에 대하여 기술한다.

4.3 구현

o 4.2절에서 보인 설계 클래스 다이어그램을 코딩으로 변환하면서 GRASP, GoF 패턴, 객체지향 원리(SOLID)가 적용된 부분에 대하여 기술한다.

4.4 테스팅

o 적용된 완전화 유지보수가 정상적으로 동작함을 보이기 위하여 수행한 테스팅 활동을 기술한다.

o TEST.01의 관련 테스트 케이스를 보여주고 간단하게 설명한다.

5. 예방 유지보수

5.1 분석

o 예방 유지보수와 관련되어 기존 코드에서 예상되는 문제점을 나열하고 간단하게 설명한다.

o 기존 코드에 대한 정적 분석 결과를 설명한다.

5.2 설계

o 기존 코드에서 예방 유지보수를 위하여 수행한 설계 활동을 기술한다.

o 예방 유지보수 전후 수정된 클래스 다이어그램과 통신 다이어그램이 있으면 이를 보여주고 간단하게 설명한다.

5.3 구현

o 기존 코드에서 예방 유지보수를 수행하기 위하여 수정된 코드 중 대표적인 것을 나열하고 기술한다. 사소한 코드 수정이나 반복적으로 수행된 예방 유지보수 중 대표적인 것만 기술한다.

5.4 테스팅

o 적용된 예방 유지보수가 정상적으로 동작함을 보이기 위하여 수행한 테스팅 활동을 기술한다.

o TEST.01의 관련 테스트 케이스를 보여주고 간단하게 설명한다.

6. 프로젝트 평가

6.1 프로젝트 완성도

o 계획한 유지보수 유형 각각의 완성도를 평가하고, 이를 평균하여 전체 프로젝트 완성도를 평가한다.

o QA.01의 내용을 활용한다.

6.2 일정 계획 평가

프로젝트 계획 단계에서 수행하였던 문제 정의시 작성하였던 작업 분해 구조의 소작업 목록을 활용하여 일정 계획 대비 달성도를 자체 평가하여 기술한다.

6.3 형상 관리 평가

형상관리 진행 상황 캡처 화면을 보여주고, 형상관리를 프로젝트에 적용한 결과를 간단하게 기술한다.

예)

6.4 프로젝트 활동 평가

프로젝트 진행을 위하여 사용한 도구와 방법에 대한 분석 결과를 간단하게 기술한다.

예)

스프린트 01: 2018/03/02~2018/03/16

- 스프린트 기간 동안 프로젝트 진행에 대한 분석 내용을 간단하게 기술한다.

6.5 설계 구성요소

프로그램이 자체적으로 수립한 일련의 설계 구성요소를 포함하고 있음을 제시해야 한다. 기초설계와 종합설계 교과목에서는 모두 포함하고 있음을 보여야 한다. (컴퓨팅문제수준설명 속성 8: 다양한 분야에 미치는 영향을 고려하고 있다.)

항목	내 용
분석	문제 정의와 작업 분해를 통하여 시스템 범위를 이해하고 유지보수와 관련된 요구사항을 도출하고, 분석할 수 있다.
	‘요구사항 도출’을 하기 위해 수행했던 활동을 나열하고 설명한다. 예) ~ 유스케이스: ~ 기능을 수행하기 위한 이벤트 흐름을 기술하였음.
구현	정해진 일정에 맞추어 프로젝트를 진행하여 계획한 유지보수 유형을 기존 시스템에 구현할 수 있다.
	교정 유지보수를 하기 위하여 발견된 문제점은 ~이고, 이를 ~하게 해결함. 교정 유지보수를 하기 위하여 발견된 문제점은 ...이고, 이를 ...하게 해결함.
테스팅 (시험)	교정/적응/완전화/예방 유지보수 적용 여부를 테스트를 통하여 보여줄 수 있다.
	‘테스팅’을 하기 위해 수행했던 활동을 나열하고 설명한다. 예) 구현한 ~ 유지보수가 정상적으로 동작함을 증명하기 위하여 단위/통합/시스템 테스팅(2.x.4절)을 수행하였음.

6.6 현실적 제한조건

설계 수행 과정에서 다수의 현실적 제한조건을 반영해서 설계하고 있음을 제시해야 한다. 기초설계와 종합설계 교과목에서는 다수의 현실적 제한조건을 설계 절차나 설계 결과물에 반영하고 있음을 보여주어야 한다. (컴퓨팅문제수준설명 속성 8: 다양한 분야에 미치는 영향을 고려하고 있다.)

항목	내 용
생산성	웹 응용 프로그램을 작성하기 위하여 모든 구성요소를 직접 프로그램하지 않고 레거시 시스템 또는 라이브러리를 활용하여 코딩의 효율성 및 테스트가 보다 간편해짐을 이해하고 활용할 수 있다.
	NetBeans IDE의 maven 빌드 도구를 사용하여 라이브러리 설치를 자동으로 하게 하였으며, FindBugs 정적 분석 도구를 사용하여 발견된 주요 결함(major 이상)을 제거하였다. 개발된 프로그램을 사용하면 학생들의 성적 증명서를 입력으로 하여 졸업 이수요건을 자동으로 검증하게 하여 기존 수작업에 비하여 소요시간 측면에서 비교불가할 정도로 빠른 처리가 가능하다
산업표준	프로젝트를 수행하기 위하여 객체지향 분석, 설계의 기본 요소인 클래스 표기 방법인 UML 클래스 다이어그램을 활용할 수 있어야 하며, 적절한 SW 개발 방법론과 테스팅, 형상 관리 기법을 적용할 수 있어야 한다.
	개발 프로세스로 애자일 개발 방법론인 스크럼을 사용하였다. 개발 단계에서 테스팅시 ISO/IEC/IEEE 29119 SW 테스팅 국제 표준에서 정의하는 테스트 케이스 설계 기법(경계값 분석, ISO/IEC 25010 품질 특성 중 신뢰성,
기타	개발 환경은 NetBeans IDE를 사용하여야 하며, 자바용 프로젝트 관리 도구인 maven을 사용하여 개발을 할 수 있다.

7. 소감

프로젝트 진행 관련하여 그동안 느낀 점을 간단하게 기술한다.