소프트웨어설계공학

동의대학교 컴퓨터소프트웨어공학과

소프트웨어공학

프로젝트 결과 보고서

강의실 예약 시스템: [부제]

소속 학과	컴퓨터소프트웨어공학과
제출일	OOOO년 OO월 OO일
O분반 O조	팀원: 홍길동(학번), 전우치(학번)

© 2018 동의대학교 컴퓨터소프트웨어공학과 이종민 교수

이 문서는 소프트웨어설계공학 교과목의 설계 프로젝트용 최종결과보고서 양식입니다.

목 차

1. 프로젝트 개요	3

1.1 비전	3

1.2 문제 기술	3

1.3 특징 목록	3

1.4 관련 기술	4

1.5 이해 당사자 요구사항	4

2. 시스템 분석	5

2.1* 유스케이스 “제목1” (UC-100)	5

3. 시스템 설계 및 구현	5

3.1* ~ 패턴 적용	5

3.1.1 문제점	5

3.1.2 해결 방안	5

3.1.3 관련 코드 설명	5

4. 시스템 테스트	6

4.1* “~ 패턴” 테스트	6

4.1.1 관련 테스트 코드	6

4.1.2 테스트 실행 결과	6

5. 프로젝트 결과	6

5.1 프로젝트 완성도	6

5.2 일정 계획 평가	7

5.3 형상 관리 평가	7

5.4 설계 구성요소	8

5.5  현실적 제한조건	9

6. 소감	10

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: 지식의 깊이)

예)

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

1.5 이해 당사자 요구사항

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

예)

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

2. 시스템 분석

해답이 명확하지 않은 문제를 해결하기 위해 깊이 있는 사고와 분석과정을 다룰 수 있어야 한다. 프로그램을 개발하기 위하여 사용한 유스케이스(또는 시나리오)를 나열하고 설명한다. (컴퓨팅문제수준설명 속성 3: 분석의 깊이)

2.1* 유스케이스 “제목1” (UC 식별자1)

적용한 유스케이스를 표 형태로 나열하고 설계 단계에서  ~ 패턴 들이 적용되었는지 간단하게 설명한다. 패턴 관련 상황을 기술하여 3절에 적용하는 패턴에 대한 근거를 제시해 줄 수 있어야 한다. 참고) ‘*’는 반복을 의미한다. 유스케이스는 시스템 기능에 대한 주흐름, 대안 흐름, 예외 흐름을 나타내는 것으로 간단하게 말하자면 해당 기능을 구현하기 위하여 필요한 시스템의 동작 절차를 의미한다.

2.2* 유스케이스 “제목2” (UC 식별자2)

2.3* 유스케이스 “제목3” (UC 식별자3)

3. 시스템 설계 및 구현

시스템 기능인 유스케이스를 어떻게 구현할 것인지 해결 방안을 설명한다.

(주의) UP에 기반하여 각 유스케이스별로 주요 클래스를 보여주는 설계 클래스 다이어그램(DCD)과

3.1 유스케이스 “제목1”

각 유스케이스별로 분석된 문제(SW 요구사항)와 설계 단계에서 이를 어떻게 해결하였는지를 간략하게 설명한다.

3.1.1 시스템 오퍼레이션

해당 유스케이스에서 SSD를 사용하여 시스템 오퍼레이션을 정의하는 과정을 보여 준다.

3.1.2 설계

언급한 문제점을 해결하기 위하여 제시한 설계 클래스 다이어그램을 보여주고, 이를 해결하기 위하여 설계한 통신 다이어그램을 보여주고 설명을 추가해야 한다.

3.1.3 구현

바로 위에서 제시한 클래스 다이어그램과 관련있는 소스 파일 목록과 함께 클래스의 중요 코드를 보여주고 간단하게 설명한다. (일반적으로 알 수 있는 단순한 코드는 굳이 보여줄 필요 없으며, 문제 해결에 핵심이 되는 코드 위주로 설명하면 됨.)

3.2 유스케이스 “제목2”

각 유스케이스별로 분석된 문제(SW 요구사항)와 설계 단계에서 이를 어떻게 해결하였는지를 간략하게 설명한다.

3.2.1 시스템 오퍼레이션

해당 유스케이스에서 SSD를 사용하여 시스템 오퍼레이션을 정의하는 과정을 보여 준다.

3.2.2 설계

언급한 문제점을 해결하기 위하여 제시한 설계 클래스 다이어그램을 보여주고, 이를 해결하기 위하여 설계한 통신 다이어그램을 보여주고 설명을 추가해야 한다.

3.2.3 구현

바로 위에서 제시한 클래스 다이어그램과 관련있는 소스 파일 목록과 함께 클래스의 중요 코드를 보여주고 간단하게 설명한다. (일반적으로 알 수 있는 단순한 코드는 굳이 보여줄 필요 없으며, 문제 해결에 핵심이 되는 코드 위주로 설명하면 됨.)

4. 시스템 테스트

3절에서 기술한 설계 패턴이 어떻게 동작하는지 작성한 테스트 코드와 함께 실행 결과를 보여준다.

4.1 유스케이스 “제목1”  테스트

4.1.1 관련 테스트 케이스

유스케이스를 구현한 후 결함 발견 및 기능 구현이 잘 되었음을 보여주기 위하여 설계한 테스트 케이스와 이를 구현한 테스트 코드를 보여준다.

4.1.2 테스트 실행 결과

유스케이스 관련 코드에 대한 테스트 코드의 실행 결과를 보여주고 부연 설명한다.

4.2 유스케이스 “제목2”  테스트

4.2.1 관련 테스트 케이스

유스케이스를 구현한 후 결함 발견 및 기능 구현이 잘 되었음을 보여주기 위하여 설계한 테스트 케이스와 이를 구현한 테스트 코드를 보여준다.

4.2.2 테스트 실행 결과

유스케이스 관련 코드에 대한 테스트 코드의 실행 결과를 보여주고 부연 설명한다.

5. 프로젝트 결과

5.1 프로젝트 완성도

계획한 설계 패턴 각각의 완성도를 평가하고, 이를 평균하여 전체 프로젝트 완성도를 평가한다.

5.2 일정 계획 평가

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

5.3 형상 관리 평가

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

예)

5.4 설계 구성요소

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

항목	내 용
계획	주제 선정시 기본 주제(또는 자유 주제)를 바탕으로 설계 프로젝트의 최종 목표를 팀원 간의 합의에 의하여 도출하고, 프로젝트 주제에 대한 이해 및 해야 할 일을 계획할 수 있다.
	‘계획’을 하기 위해 수행했던 활동을 나열하고 설명한다. 예) 소작업을 ~하게 정의하고 일정 계획을 ~하게 수행하였음.
분석	문제 정의와 작업 분해를 통하여 디자인 패턴을 적용하기 위한 요구사항을 도출할 수 있다. (분석 모델링은 없음)
	‘요구사항 도출’을 하기 위해 수행했던 활동을 나열하고 설명한다. 예) ~ 유스케이스: ~ 기능을 수행하기 위한 이벤트 흐름을 기술하였음.
상세 설계	요구사항으로부터 문제점을 발견하고 디자인 패턴을 적용하여 설계 모델링을 할 수 있다.
	‘설계 모델링’을 하면서 정의한 디자인 패턴을 나열하고 간략하게 설명한다. 예) ~ 패턴: ~한 문제점을 해결하기 위하여 적용함.
테스팅 (시험)	적용된 디자인 패턴이 올바르게 동작함을 보이기 위해 수행한 통합/시스템 테스팅을 수행할 수 있다.
	‘테스팅’을 하기 위해 수행했던 활동을 나열하고 설명한다. 예) ~ 패턴을 구현했음을 증명하기 위하여 시스템 테스팅(결과 보고서 4.x.x절)을 수행하였음.

5.5 현실적 제한조건

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

항목	내 용
생산성	코딩만 수행하는 기존 프로그래밍 기법의 한계를 극복하고 보다 좋은 구조를 가지는 프로그램을 제작하여 생산성을 높인다. (bouml, git 형상관리도구 활용 측면)
	개발된 프로그램을 사용하면 학생들의 성적 증명서를 입력으로 하여 졸업 이수요건을 자동으로 검증하게 하여 기존 수작업에 비하여 소요시간 측면에서 비교불가할 정도로 빠른 처리가 가능하다
산업표준	프로젝트를 수행하기 위하여 객체지향 분석, 설계의 기본 요소인 클래스 표기 방법인 UML 클래스 다이어그램을 활용할 수 있어야 하며, 적절한 SW 개발 방법론과 테스팅, 형상 관리 기법을 적용할 수 있어야 한다.
	예) 개발 프로세스로 애자일 개발 방법론인 스크럼을 사용하였다. 예) 개발 단계에서 테스팅시 ISO/IEC/IEEE 29119 SW 테스팅 국제 표준에서 정의하는 테스트 케이스 설계 기법(경계값 분석, 동등 분할, 문장 테스팅, 분기 테스팅 등)을 적용하였다.
기타	개발 환경은 NetBeans IDE(maven)를 사용하여야 한다.
	예) NetBeans IDE의 maven 빌드 도구를 사용하여 라이브러리 설치를 자동으로 하게 하였으며, FindBugs 정적 분석 도구를 사용하여 발견된 주요 결함(major 이상)을 제거하였다.

6. 소감

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