CMM约束下软件项目管理系统

更新时间:2024-06-14 21:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

届 别 .. 学 号

毕业设计(论文)

CMM约束下软件项目管理系统

姓 名 系 别、 专 业 导 师 姓 名、职 称 讲 师 完 成 时 间 年4月26

www.51jplw.com

摘 要

CMM约束下的软件项目管理系统是为了方便软件开发公司人员内部,项目进程管理、人员管理而建立起来的网上建信工具,主要包话:项目管理、项目组成员管理、状态管理、进程管理、日志管理、CMM等级约束等几个功能。在项目管理、状态管理、进程管理、日志管理等功能中实现CMM等级的跟踪。从而促进公司项目开发部的CMM能力成熟度的提高。为此建立的数据库必须满足一致性、完整性和数据安全性等几个要求。因此明确区分总工程师、项目经理、项目经理助理、商务专员、分析员、程序员的权限。以达到运行稳定、功能齐全、易使用的目的。通过因特网,所以无论在任何地方都可以方便访问方便生活和工作。

本系统是一个基于WEB方式的网上项目管理系统。使用SQL Server2000 作为数据库服务器。使Jbuilder2006编写代码。Photoshop7.0和Dreamweaver MX 2004编辑页面。创建Struts框架下的JSP网站。

关键字:CMM;Struts框架;JSP

www.51jplw.com

I

www.51jplw.com

ABSTRACT

CMM bound by the software project management system is intended to facilitate software development company personnel, project management process. personnel management and established online letter building tool. Mainly including : project management, members of the project team management, state management, process management, log management, CMM level constraints, and several other functions. In project management, state management, process management, log management, and other functions to achieve CMM level tracking. Company projects so as to promote the development of the CMM Capability Maturity improved. That the database must meet the consistency, completeness and data security, and several other demands. Thus a clear distinction between the chief engineer and project manager, assistant project manager and Trade Commission, analysts, programmers competence. To achieve stable operation, complete functions, easy-to-use purposes. Through the Internet, so no matter where the visit can facilitate the convenient life and work.

The system is a Web-based forms of online project management system. Using SQL Server 2000 as the database server. Jbuilder2006 prepared to make code. Photoshop 7.0 and Dreamweaver MX 2004 editorial pages. Struts framework of the creation of JSP web site.

Key words: CMM;Struts framework;JSP

www.51jplw.com

II

www.51jplw.com

目 录

摘要 ..................................................... I ABSTRACT ................................................ II 1引言 .................................................... 1 1.1国内外的研究动态 ...................................... 1 1.2课题的目的和意义 ...................................... 1 1.3 方案论证 ............................................. 2 2 系统相关知识 ........................................... 3 2.1 CMM简介 .............................................. 3 2.2 B/S结构 .............................................. 3 2.3.J2EE平台 ............................................. 3 2.4.STRUTS框架 ............................................ 4 2.5 SQL SERVER2000关系数据库 .............................. 5 3需求分析 ................................................ 6 3.1功能规定 .............................................. 6 3.2软件环境 .............................................. 7 3.3功能介绍 .............................................. 7 4方案设计 ................................................ 8 4.1概念结构设计 .......................................... 8 4.2逻辑结构设计 .......................................... 9 4.2.1数据字典设计 ........................................ 9 4.2.2基础对象表 .......................................... 9 4.3.软件部署设计 ........................................ 13 4.4总体设计 ............................................. 14 4.4.1功能需求与程序的关系 ............................... 14 5具体实现 ............................................... 16 5.1登陆模块设计 ......................................... 16 5.2查询模块设计 ......................................... 17 5.2.1项目信息查询子模块 ................................. 17 5.3数据维护模块设计 ..................................... 19 5.3.2状态管理子模块 ..................................... 20 5.3.3进程管理子模块 ..................................... 20 5.3.4日志管理子模块 ..................................... 21

www.51jplw.com

III

www.51jplw.com

5.3.5用户管理子模块 ..................................... 21 5.3.6组员管理子模块 ..................................... 25 5.4 CMM信息模块 ......................................... 27 5.4.1CMM管理子模块 ...................................... 27 5.4.2 CMM信息查询模块 ................................... 28 总结 .................................................... 30 参考文献 ................................................ 31 致谢 .................................................... 32

www.51jplw.com

IV

www.51jplw.com

1引言

1.1国内外的研究动态

目前市场上有大量的简单的项目管理软件,也有许多\公开源代码\的项目管理软件。这些软件一般只完成项目管理某一阶段和某一方面如计划安排、人员管理、风险分析等功能。国内很多单位已接收了国外项目管理的思路,很多单位也引进了国际先进的项目管理软件,已经积累了部分经验和数据。目前在国内使用项目管理软件进行项目管理的项目和企业已有上千家。

各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。软件项目管理是为了使软件项目能按照预定的成本、进度、质量顺利完成。CMM约束下的软件项目管理系统。就是让CMM软件能力成熟度模型贯彻在整个软件开发的过程中。

CMM被用作评价软件承包商能力并帮助组织改善软件过程质量,是目前国际上最流行、最实用的一种软件生产过程标准,成为当今企业从事规模软件生产不可缺少的一项内容。

CMM约束下的软件项目管理系统要研究和解决的问题便是开发出一个能满足软件项目开发需要的项目管理系统。其主面的技术要求是CMM软件能力成熟度如何在软件开发过程中实现。

CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化,使企业能够更好的实现商业目标。它侧重于软件过程开发的管理及软件工程能力的改进与评估。

1.2课题的目的和意义

CMM软件项目管理系统的目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。

CMM的企业实施CMM模型并评估可为企业带来如下好处:指导软件组织提高软件开发管理能力;降低软件承包商和采购者的风险;评估软件承包商的软件开发管理能力;帮助软件企业识别开发和维护软件的有效过程和关键实践;帮助软件企业识别为达到CMM更高成熟等级所必须的关键实践;增加软件企业的国际竞争能力。

软件项目管理系统的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。而研究软件项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则,方法,同时避免前人的失误。

进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企

www.51jplw.com

1

www.51jplw.com

业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定、持续地发展。

关注软件项目管理,以期缩短项目完成时间、节约项目成本,以及希望了解软件项目管理的人员。CMM软件能力成熟度模型应用到实际软件生产中的项目管理过程中去。就是本系统的目的。促进软件开发过程健康稳定的发展就是本系统的意义。

1.3 方案论证

随着科学技术的迅速发展,其重要组成部分——因特网,作为人们在信息时代中交流沟通的工具,其地位显得日趋重要。别一面现行的有多种web开发语言如Asp、Jsp 、Php等的网页开发技术已经日渐完善,而针对各种WEB开发语言的开发平台及框架等使软件的开发更为方便。而作为软件工程和计算机工业的完美交集CMM软件成熟度模型已是软件工作者耳熟能详的标准。所以CMM约束下的软件项目管理系统的开发过程不会有技术问题的障碍。

信息时代的到来,人们逐步意识到信息对于生活工作学习的重要性,在获取信息上的投入越来越多。而CMM约束下的软件项目管理系统作为软件开发人员数字办工的一部分。方便了软件工作者的工作生活,使企业开发者大幅缩短投放市场时间的体系结构。所以对于软件开发公司来说对项目管理方面的资源投入是必需的。且在当前技术条件下,开发一个适用的软件项目管理系统资金上的投入是有限的。以有限的投入换取无限的商机何乐而不为。综上所述,CMM约束下的软件项目管理系统在经济上应该有巨大的潜力。

计算机IT业已经逐步成为国家支柱产业,数字化办工,数字化管理将成为世界发展的主流。而今网络将会是日常生活中必不可缺的一部分。随着网络技术的不断完善和成熟,在软件行业推行网上的办工平台逐渐成为软件开发管理的一项重要而且有效的措施。让软件行业走在数字化办工的前列,带动软件需求市场的发展。网上的项目管理系统将有广阔的发展空间和前景。综上所述,CMM约束下的软件项目管理系统具有一定的社会可行。

www.51jplw.com

2

www.51jplw.com

2 系统相关知识

2.1 CMM简介

CMM是Capability Maturity Model for Software的简称,中文叫“软件能力成熟度模型”,是对组织软件过程能力的描述。CMM的出现是为了克服软件生产的危机。所谓软件生产的危机是指尽管新的软件开发方法和技术不断生产,但软件生产率和质量并未得到有效提高,软件产品不能按时完成,软件生产预算超支,而且交付客户使用的软件产品(特别是大型软件工程)中由于各种原因产生的错误无法克服。

2.2 B/S结构

B/S结构具有以下优点:

安全性高。中间件服务器层隔离了客户端程序对数据服务器的直接访问,保护了数据信息的安全。

易维护。由于业务逻辑在中间件服务器上,当业务规则变化后,客户端程序基本不做改动,只需要升级应用服务器层的程序即可。

快速响应。通过中间件服务器层的负载均衡及缓存数据能力,可以大大提高对客户端的响应速度。

运行环境可以是Unix、Linux、Windows、MAC-OS。可以用PC、PDA、POS、互联网终端设备的接入方式。可以实时升级,不影响在线客户使用,升级费用低廉。三层结构的系统架构。互联网:通过宽带使用浏览器实现企业间信息共享。达到电信级安全,专业的技术设备和技术人员, 365天×24小时的全天候服务。只有企业授权用户可以接触企业数据。实时范围多公司/多企业/多集团实时。业务集成范围供应链/需求链/客户全面集成。

2.3 J2EE平台

J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。其最终目的就是成为一个J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,增强了安全机制,提高了性能。

J2EE的优势:J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制。

www.51jplw.com

3

www.51jplw.com

高效的开发:J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间供应商去完成。这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级中间供应商提供以下这些复杂的中间件。

支持异构环境:J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、一中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件,把他们部署到异构环境中,节省了由自己制定整个方案所需的费用。

可伸缩性:企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足那些在他们系统上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上。J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。

稳定的可用性:一个服务器端平台必须能全天候运转以满足企业客户、合作伙伴的需要。因为Internet是全球化的二无处不在的。J2EE部署到可靠的操作环境中,他们支持长期的可用性。一些J2EE部署在Windows环境中,客户也可选择健壮性能更好的操作系统如Sun Solaris、IBM OS/390。最健壮的操作系统可达到99. 999%的可用性或每年只需5分钟停机时间。这是实时性很强商业系统理想的选择。

2.4.Struts框架

Struts 是一个开放源代码软件,Struts依靠绝大多数开发者已熟知的标准技术—Java servlet、JavaServer Page、JavaBean等,为开发者搭建了一个Web应用的基本框架。开发者可在这个框架基础上进行“填空式”的进行软件开发,轻松实现MCV模式的Web应用。软件应用的相似性要远比比不同点要多。因为它们运行在相同的机器上,从相同的设备输入信息,输出到相同的显示设备,并且存储数据到相同的硬盘设备。应用框架在这些公共基础上,为开发人员提供了健壮的、可重用的服务基础架构。

当用户访问一个使用Struts框架的Web应用程序时,用户请求首先会到达ActionServlet对象。ActionServlet 根据请求中的参数,选择并创建合适的ActionForm对象,这个过程我们称为“匹配”。当匹配好后,ActionServlet 为属性调用setter方法,并将请求中的值传入到ActionForm对象中。然后将其传递给Action对象。Action 通常负责对请求进行处理的逻辑实现,如:输入参数组合校验,存取业务信息,决定向Servlet返回哪个ActionForward作为用户可见的页面。 并在struts-config.xml中添加配置信息。但是借助JBuilder提供的Action Wizard工具,

www.51jplw.com

4

www.51jplw.com

我们可以大大简化这些过程。

2.5 SQL Server2000关系数据库

关系型数据库系统(RDBMS)是目前最实用、最成熟的数据库管理系统,实体-联系方法是关系数据建模的最常用技术,采用关系数据库管理和存储数据,可以保持数据存储与应用相分离,达到数据复用和共享的目的。本次设计的系统可以充分利用这些特性。

SQL SERVER2000是Microsoft Corporation 推出的,是目前广为使用的大型数据库系统之一,是一种综合的,通用的,功能极强的关系数据库语言,包括数据定义、数据操纵、数据管理、存取保护、处理控制等多种功能。利用表、索引、码、行和列等来确定存储位置。作为本系统的后台数据库开发工具,SQLSERVER2000是最佳选择。

www.51jplw.com

5

www.51jplw.com

3需求分析

3.1功能规定

CMM约束下的软件项目管理系统包括项目管理和CMM两个方面的内容,而CMM的信息又和项目开发的各个进度关联在一起,在部署上为了实现权限设计上的便利及功能的归类划分,系统大体可分为三个模块:

(1)数据查询模块

数据查询模块可分为5个部分。在主页上查看全部项目信息、项目组信息、状态信息、进程信息、日志信息。可以按所选项目查看相关的项目组信息、状态信息,按所选状态信息查看相关的进程信息,按所选进程信息查看相关日志信息。

(2)CMM信息模块

CMM信息模块包括CMM等级信息和CMM信息维护。可在CMM约束页面下显示相关信息,对CMM信息进行维护管理。

(3)数据维护模块

系统的所有数据基本是在数据维护模块中完成。除了项目的相关数据,还有系统用户信息数据维护。在数据维护模块中主要的功能是用户权限的区分。这也是整个项目管理系统中,管理方面的体现。在数据维护模块中按用户的权限等级。第一类用户可以实现项目管理、项目组管理、状态管理、进程管理、日志管理、用户管理。第二类用户可以实现第一类用户的除了项目管理以外的所有功能。第三类用户只能实现日志管理模块,及账号的管理。

图3.1系统结构图

www.51jplw.com

6

www.51jplw.com

3.2软件环境

开发环境 开发时操作系统:Windows XP;开发平台:Tomcat;开发语言:jsp 开发工具:Jbuider2006+SQL Server 2000

+Dreamweaver MX2004+Photoshop 7.0

3.3功能介绍

CMM约束下项目管理系统的核心是权限管理上面的分配。在本系统中体现用户权限的地方是在系统数据维护模块中。在这里主面介绍系统数据维护模块的活动图。

登 陆 数据维护模块 判断用户权限 项目管理 项目组管理 状态管理 用户管理 进程管理 日志管理 退 出 图3.2 系统维护模块活动图

www.51jplw.com

7

www.51jplw.com

4方案设计

4.1概念结构设计

概念结构的主要特点是能真实、充分地反映现实世界;易于理解;易于更改;易于向关系、网状、层次等各种数据模型转换。下面为本系统的E-R图

图4.1系统的实体关系图

www.51jplw.com

8

www.51jplw.com

4.2逻辑结构设计

4.2.1数据字典设计

数据库的逻辑结构设计是把上面的设计用逻辑表格的形式加以表示,并对数据的类型进行定义,以及数据类型是否为是进行说明,在整个过程中必须严格定义每一个具体的数据,形成数据字典。

用户信息=用户ID+用户姓名+登陆账号+登陆密码+职位+权限

项目组信息=项目ID+用户ID+职责

项目信息==项目ID+项目经理ID+项目描述+启动日期+完成日期+CMM 级别+进行状态

状态信息==状态ID+项目ID+状态名称+完成标志+状态描述+启动日期+完成日期+CMM 级别

进程信息=进程ID+状态ID+负责人ID+进程名称+进程描述+启动日期+完成日期+CMM 级别

日志信息=日志ID+进程ID+负责人ID+日志名称+日志描述+启动日期+完成日期+CMM 级别+完成状态

项目信息=CMM级别+CMM名称+CMM描述 4.2.2基础对象表

下面是本信息咨询服务系统所涉及到的数据信息表: 1.人员基本信息表:Emp

表Emp的职位position是对于部门的,如(总工程师,项目经理,助理,商务专员,分析员,程序员。)

表Emp的权限role是对于整个系统的。联系着系统模块的显示。

所有人的权限:查看项目信息、项目组信息、状态信息、进程信息、日志信息、CMM信息。修改账号密码。

总工程师的权限:管理项目、管理项目组、管理状态、管理进程、管理日志、管理人员信息、管理CMM信息。

项目经理、项目经理助理的权限:管理项目组、管理状态、管理进程、管理日志、管理人员信息、管理CMM信息。商务专员、分析员、程序员的权限:管理日志。

表4.1人员基本信息表

字段名 empid empname 描述 用户ID (自动增加) 用户姓名 类型 int varchar 长度 4 50 9

为空 否 否 重复 否 主键 是 外键 www.51jplw.com

www.51jplw.com

username password position role 登陆账号 登陆密码 职位 权限 varchar varchar varchar int 50 50 50 4 否 否 否 否 否 2.项目基本信息表:Project

因为项目经理也会参与到别的项目的项目组中。而在那个项目中他并不是项目经理。所以项目经理ID要存贮在项目基本信息表中。而不从项目组成员表中提取。完成日期减去启动日期为实施过程中项目的完成时间。CMM级别为项目计划安排中的项目所要达到的CMM级别。进行状态标示出项目是在调研。进行。完成。等状态 。

表4.2项目基本信息表

字段名 projectid managerid projname bewrite startdate compldate wholetime condition 描述 项目ID (自动增加) 项目经理ID 项目名称 项目描述 启动日期 完成日期 CMM级别(计划内) 进行状态 类型 int int varchar varchar datetime datetime int varchar 长度 4 4 50 1024 8 8 4 50 为空 否 否 重复 否 主键 是 外键 是 是

3.项目组成员表:Progroup

一个项目只有相应的一个项目组。项目组只有一个项目经理。只有属于此项目的成员才有其相应的权限。项目经理的设计表Progroup的职责duty是对于该项目的,如(项目调研,项目管理,系统分析,编码,维护、编制手册等)

www.51jplw.com

10

www.51jplw.com

表4.3项目组成员信息表

字段名 projectid empid duty 描述 项目ID 用户ID 职责 类型 int int varchar 长度 4 4 50 为空 否 否 否 重复 否 主键 是 是 外键 是 是 4.项目状态进程表:State

项目的状态及完成标志:需求调研(需求报告书),启动(需求规格说明书),需求分析(需求规格说明书),概要设计(概要设计说明书),详细设计(详细设计说明书),编程(目标程序代码),测试(测试报告),联调(测试报告),初验(系统初验报告),系统终端(用户使用手册、系统终验报告)。 项目进程是在各个项目状态下进行的。

表4.4项目状态信息表

字段名 stateid projectid statename symbol bewrite startdate compldate wholetime 描述 状态ID (自动增加) 项目ID 状态名称 完成标志 状态描述 启动日期 完成日期 CMM 级别 (计划内) 类型 int int varchar varchar varchar datetime datetime int 长度 4 4 50 50 1024 8 8 4 为空 否 否 否 重复 否 主键 是 外键 是 是 5.项目进程安排表:Process

进程是具体某一状态下的如概要设计下的数据库设计、功能设计。详细设计下的每个功能模块的设计实现。

www.51jplw.com

11

www.51jplw.com

表4.5项目进程安排表

字段名 processid stateid Inchargeid procname bewrite startdate compldate wholetime 描述 进程ID (自动增加) 状态ID 负责人ID 进程名称 进程描述 启动日期 完成日期 CMM级别 (计划内) 类型 int int int varchar varchar datetime datetime int 长度 4 4 4 50 1024 8 8 4 为空 否 否 否 否 重复 否 主键 是 外键 是 是 是 6.项目进程日志表:Logbook

通过项目进程日志表的数据进行项目统计报告。从统计数据及实现的过程,来观察该公司设计部所达到的CMM级别。在下一个项目的开发中,吸取教训,补充自已所不足的部分。

表4.6项目进程日志表

字段名 logid processid Inchargeid logname bewrite startdate compldate 描述 日志ID (自动增加) 进程ID 负责人ID 日志名称 日志描述 启动日期 完成日期 类型 int int int varchar varchar datetime datetime 长度 为空 重复 主键 外键 4 4 4 50 1024 8 8 12

否 否 否 否 是 是 是 www.51jplw.com

www.51jplw.com

wholetime CMM级别 (最终结果) int 4 是 7.CMM约束表:CMM

通过在每个项目中对CMM的约束。来渐进地提高软件成熟度。

表4.7CMM约束表

字段名 cmmid cmmname bewrite 描述 CMM级别 CMM名称 CMM描述 类型 int varchar varchar 长度 4 50 1024 为空 否 否 重复 否 主键 是 外键

4.3.软件部署设计

首先本系统涉及到的软件:Windows XP操作系统、Apache Tomcat 5.0、 J2SDK 1.5.0、SQL Server 2000。WINDOWS操作系统为现今软件开发必备之基础,J2SDK 1.42及相关系列版本JAVA运行的基本平台,有涉及到JAVA的都得在此平台上运行,两者为总体开发环境搭建的平台,也是现今软件开发必备基础,这里对这两个部署就无须介绍,只需在开发软件之前先安装操作系统和JAVA运行平台即可。

Apache Tomcat 5.0是JSP引擎,为JSP运行配置了环境,对于本系统来说TOMCAT也是本系统的运行环境,因为本系统所用及的开发软件都是基于JSP进行部署和协同工作。

由于系统与后台数据库数据的交互主要是基于JSP进行,而在JSP中主要是使用JAVA的JDBC技术,实现对数据库中表记录的查询、修改、删除等操作。所以JDBC技术在JSP开发中占有很中重要的地位。JDBC 为工具/数据库开发人员提供了一个标准的 API,使得能够用纯Java API 来编写数据库应用程序。下图直观的介绍了java应用程序与数据库的访问机制:

JDBC API JDBC驱动程序管理器 JDBC驱动程序 API JDBC网络驱动程序 JDBC-ODBC桥驱动程序 Java应用程序 DBMS 图4.2数据库访问机制图

www.51jplw.com

13

www.51jplw.com

JDBC作为一种数据库访问技术,鉴于其具有简单易用的优点,则采用JDBC网络驱动程序直接进行后台数据库的连接。具体过程大体为:装载数据库驱动程序;通过JDBC建立数据库连接;访问数据库,执行SQL语句;断开数据库连接。

在使用JDBC连接配置时会遇到问题:

[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket

在WinXP sp2下,sqlserver 不能用jdbc,下载 sql server sp3,下载jdbc sp3的驱动,装上以后就正常了:下载Microsoft SQL Server 2000 ervice Pack 4并安装,SQL请选用混和安装模式;下载SQL Server 2000 Driver for JDBC Service Pack 3 并安装。另外一种解决办法:本机的SQL Server 2000 当客户端,直接连接到主机(Windows XP)上的SQL Server 2000数据库,也就是在本机上新注册一个SQL Server,指向服务器上的SQL Server。这样再运行一原来的Java 程序就不会出现Error establishing socket这个错误。

4.4总体设计

4.4.1功能需求与程序的关系

CMM约束下软件项目管理系统功能实现与程序的关系一览表

表4.8功能需求和程序关系表

第一层 系统登陆模块 信息查询模块 项目查询页面 selproject.jsp 主界面 items.jsp 第二层 登陆页面 处理程序 login.jsp 所涉及的javabean sqlBean.java DB5.java project.java projectBean.java state.java stateBean.java process.java processBean.java logbook.java logbookBean.java project.java projectBean.java 备注 www.51jplw.com

14

www.51jplw.com

状态查询页面 进程查询页面 日志查询页面 系统维护模块 菜单栏界面 项目管理页面 状态管理页面 进程管理页面 日志管理页面 用户管理页面 组员管理页面 selstate.jsp state.java stateBean.java stringBean.java 是用来做字符串的转换的,在所有的查selprocess.jsp process.java processBean.java sellogbook.jsp logbook.java logbookBean.java update.jsp sleft.jsp addproject.jsp updateproject.jsp addstate.jsp updatestate.jsp addprocess.jsp updateprocess.jsp addlogbook.jsp updatelogbook.jsp adduser.jsp updateuser.jsp updatepassword.jsp progroup.jsp Project.java projectBean.java state.java stateBean.java Process.java processBean.java Logbook.java logbookBean.java user.java userBean.java DB5.java progroup.java progroupBean.java 询、修改、删除页面都有调用到过。 www.51jplw.com

15

www.51jplw.com

5具体实现

5.1登陆模块设计

用户登陆页面login.jsp的主要功能是对用户在登录框内输入的用户名及密码,检查用户的用户名和用户密码与数据库中表的数据是否匹配,如果匹配则登录成功,如果不匹配则提示出错。本系统的采用的是MD5的加密方法来对用户密码来行加密。具有一定安全性。

在本系统中,用户使用唯一的用户登录名登录,而用户一旦登录,通过读取Session对象,我们可以清楚地掌握当前用户的信息。在Session中存贮登陆账号username、用户ID empid、用户权限userrole。为系统的后续模块做准备。下面是登陆界面,当用户登陆成功后,会显示登陆成功的界面:欢迎你;不成功就会显示:你输入的信息无效.

图5.1登陆页面

实现代码:

public class loginForm extends ActionForm {

private String password; private String username;

public String getPassword() { return password; }

public void setPassword(String password) { this.password = password; }

public void setUsername(String username) { this.username = username; }

public String getUsername() { return username; }

www.51jplw.com

16

www.51jplw.com

public ActionErrors validate(ActionMapping actionMapping,

HttpServletRequest httpServletRequest) { /** @todo: finish this method, this is just the skeleton.*/ return null; }

public void reset(ActionMapping actionMapping,

HttpServletRequest servletRequest) { } }

5.2查询模块设计

5.2.1项目信息查询子模块

项目信息查询页面items.jsp的主要功能是对所有项目的信息进行查询。在项目档中显示所有项目的项目名。点击项目名后的详细链接可以查看该项目的详细信息。当点击项目名时,会根据项目名查询出项目ID为该项目ID的状态以及项目组成员。显示在状态档及组员档里。

状态档里显示的是项目的状态。项目的状态所描述的是项目软件开发的生存周期。状态信息是由总工程师。项目经理、项目经理助理来维护,是项目开发的计划制定。举例如:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、软件测试、运行维护等状态。点击状态名后的详细链接可以查看该状态的详细信息。当点击状态名时,会根据状态名查询出状态ID为该状态ID的进程。显示在进程档里。

进程档里显示的是项目的进程。项目的进程所描述的是在某个状态下软件的进程安排及负责人。进程是项目开发的较详细的计划安排。举例如:在详细设计的状态下,可以有每个功能模块的详细设计的进程式。点击进程名后的详细链接可以查看该进程的详细信息。当点击进程名时,会根据进程名查询出进程ID为该进程ID的日志内容显示在日志档中。

日志档里显示的是项目的日志。描述项目的完成情况。点击日志名后的详细链接可以查看该日志的详细信息。

当点击菜单档的主页时。回到items.jsp页面。显示的是系统的所有项目,参与了项目的所有人员,所有的状态、进程和日志。

www.51jplw.com

17

www.51jplw.com

图5.2项目信息查询页面

实现代码:

public class itemsAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,

HttpServletResponse response) { itemsForm itemsForm = (itemsForm) form;

String projectid = itemsForm.getProjectid(); String stateid=itemsForm.getStateid();

String processid=itemsForm.getProcessid(); String pageid = itemsForm.getPageid(); String pageid1 = itemsForm.getPageid1(); String pageid2 = itemsForm.getPageid2(); String pageid3 = itemsForm.getPageid3(); String pageid4 = itemsForm.getPageid4(); String projectidsession=new String(projectid); String stateidsession=new String(stateid);

String processidsession=new String(processid); String pageidsession=new String(pageid);

www.51jplw.com

18

www.51jplw.com

String pageidsession1=new String(pageid1); String pageidsession2=new String(pageid2); String pageidsession3=new String(pageid3); String pageidsession4=new String(pageid4); HttpSession session = request.getSession();

session.setAttribute(\ session.setAttribute(\

session.setAttribute(\ session.setAttribute(\ session.setAttribute(\ session.setAttribute(\ session.setAttribute(\ session.setAttribute(\ return (mapping.findForward(\ } }

5.3数据维护模块设计

5.3.1 项目管理子模块

项目管理子模块只有用户权限为1的用户才有实现该功能。项目管理子模块又分为创建项目模块用维护项目模块

(1)、创建项目模块实现的是项目的新建功能。在项目刚创建的时候必须填写项目名、项目经理ID、CMM等级。

图5.3新建项目页面

(2)、维护模块实现的是项目的查询、修改、删除等功能。

图5.4维护项目页面

www.51jplw.com

19

www.51jplw.com

实现代码:

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) { cmmForm cmmForm = (cmmForm) form; StringBean tt= new StringBean();

int cmmidid=(int)(cmmForm.getCmmidid()) ; int cmmid=(int)(cmmForm.getCmmid()) ;

String cmmname =tt.getString(cmmForm.getCmmname()) ; String bewrite = tt.getString(cmmForm.getBewrite());

cmmBean link=new cmmBean();

boolean count=link.updatecmm(cmmidid,cmmid,cmmname,bewrite); cmmForm.setCmmidid(0); cmmForm.setCmmid(0); cmmForm.setCmmname(\ cmmForm.setBewrite(\ if (count==true ) {

return mapping.findForward(\

else {return mapping.findForward(\ }

5.3.2状态管理子模块

状态管理子模块用户权限为1、2、3的用户可以实现该功能。权限为1的用户为总工程师,权限为2的用户为项目经理,权限为3的用户为项目经理助理。可以设计用户的权限,例如设计某职务为分析师的用户权限为3使其可以参与项目计划的规划和修定。状态管理子模块又分为创建状态模块用维护状态模块。创建状态模块实现的是状态的新建功能。在状态刚创建的时候必须填写项目表中存在的项目ID、状态名称及CMM等级。维护状态模块中可实现状态的查询、修改、删除,实现项目状态内容的完善。

5.3.3进程管理子模块

进程管理子模块用户权限为1、2、3的用户可以实现该功能。进程管理子模块又分为创建进程模块用维护进程模块。创建进程模块实现的是进程的新建功能。在进程刚创建的时候必须填写项目表中存在的状态ID、负责人ID、进程名称及CMM等级。维

www.51jplw.com

20

www.51jplw.com

护状态模块中可实现进程的查询、修改、删除,实现项目进程内容的完善。 5.3.4日志管理子模块

日志管理子模块对所有的用户开放。日志管理子模块又分为创建日志模块用维护日志模块。创建日志模块实现的是日志的新建功能。在日志刚创建的时候必须填写项目表中存在的进程ID、日志名称及CMM等级。维护日志模块中可实现日志的查询、修改、删除,实现项目日志内容的完善。

在日志管理模块中,所以所有人只能创建负责人ID为自己的日志文件。功能实现时,日志表的负责人ID是通过获取session中的用户ID empid,来达到这一日的。 5.3.5用户管理子模块

用户管理子模块他为新建用户模块、维护用户模块、修改密码模块。权限为1、2、3的用户可以使用新建用户和维护用户模块。任意权限的用户都可以修改账号密码。

(1)

新建用户模块实现的是用户的新建功能。用户表的职位各权限分离开。职位为在公司中的职务如总工程师、项目经理、项目经理助理、商务专员、分析师、程序员等。而用户的权限则是规定对系统功能的使用权限。所以职位为分析师的用户,可以设置权限为经理肋理。

图5.5新建用户页面

实现代码:

public class adduserForm extends ActionForm { private String empname; private String password; private String position; private String username; private int userrole;

public String getEmpname() { return empname;

www.51jplw.com

21

www.51jplw.com

}

public void setEmpname(String empname) { this.empname = empname; }

public void setUserrole(int userrole) { this.userrole = userrole; }

public void setUsername(String username) { this.username = username; }

public void setPosition(String position) { this.position = position; }

public void setPassword(String password) { this.password = password; }

public String getPassword() { return password; }

public String getPosition() { return position; }

public String getUsername() { return username; }

public int getUserrole() { return userrole; }

public ActionErrors validate(ActionMapping actionMapping,

HttpServletRequest httpServletRequest) { return null; }

www.51jplw.com

22

www.51jplw.com

}

(2)维护用户模块实现的是用户的查询、修改、删除等功能。在该模块中也可以实现密码的修改。

图5.6维护用户页面

代码实现:

public boolean adduser(String empname,String username,String password,String position,int userrole)

{

Connection conn = null; Statement stmt = null; boolean count=false;

String s=\

userrole+\ String sql =\

try{ conn=DriverManager.getConnection(\sword=;DatabaseName=hro\

stmt = conn.createStatement(); stmt.executeUpdate(sql); count=true; stmt.close(); conn.close();

}catch(SQLException e){}

www.51jplw.com

23

www.51jplw.com

return count; }

(3)修改密码模块实现的是用户的密码修改功能。用户只能修改自己的账号的密码。用户的登陆账号是在登陆系统时就存在session中的。输入正确旧密码才能修改新密码。输入的新密码和重复输入的密码必须一致才能修改成功。否则提示输入有误。

图5.7修改密码页面

实现代码:

public boolean updatepassword(String username,String password,String password1) {

Connection conn = null; Statement stmt = null; boolean count=false; ResultSet rs = null;

//String s=\

String sql1=\ String

sql2

=\

emp

set

password=\

username=\

try{ conn=DriverManager.getConnection(\sword=;DatabaseName=hro\

stmt = conn.createStatement(); rs = stmt.executeQuery(sql1); while (rs.next())

{stmt.executeUpdate(sql2); count = true; } rs.close(); stmt.close(); conn.close();

www.51jplw.com

24

www.51jplw.com

}catch(SQLException e){} return count;}

5.3.6组员管理子模块

项目组管理子模块对用户权限为1、2、3的用户开放。项目管理子模块的功能包括查看项目组、项目组成员、新建项目组、修改项目组、删除项目组等。所查询的项目是有项目组存在的项目。创建项目组时,项目ID,成员ID必须在项目project表、用户emp表中存在。项目组成员的职责指的是该用户在项目进程中所要做的工作。举例如:编写可行性研究报告、参与需求分析,概要设计、详细设计、系统初验、编制测试报告、编制系统使用手册、编写帮肋文档等任务。项目组progroup表的主键是项目ID和成员ID。所以在一个项目组中一个用户只有一条记录。

图5.8项目组管理页面

实现代码:

import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import javax.servlet.http.HttpServletRequest;

public class progroupForm extends ActionForm { private String duty; private int empid; private int empidid; private int projectid; private int projectidid; private int project_id; private int emp_id;

www.51jplw.com

25

www.51jplw.com

public void setProject_id(int project_id) { this.project_id = project_id; }

public int getProject_id() { return project_id; }

public void setEmp_id(int emp_id) { this.emp_id = emp_id; }

public int getEmp_id() { return emp_id; }

public String getDuty() { return duty; }

public void setDuty(String duty) { this.duty = duty; }

public void setProjectidid(int projectidid) { this.projectidid = projectidid; }

public void setProjectid(int projectid) { this.projectid = projectid; }

public void setEmpidid(int empidid) { this.empidid = empidid; }

public void setEmpid(int empid) { this.empid = empid; }

public int getEmpid() { return empid; }

public int getEmpidid() {

www.51jplw.com

26

www.51jplw.com

return empidid; }

public int getProjectid() { return projectid; }

public int getProjectidid() { return projectidid; }

public ActionErrors validate(ActionMapping actionMapping,

HttpServletRequest httpServletRequest) { /** @todo: finish this method, this is just the skeleton.*/ return null; }

5.4 CMM信息模块

5.4.1CMM管理子模块

CMM管理子模块对用户权限为1、2、3的用户开放。CMM管理子模块的功能包括查看CMM信息、新建CMM信息、修改CMM信息、删除CMM等。CMM约束表的主键是CMM级别。CMM名称分为初始级、可重复级、已定义级、已管理级、优化级,在CMM描述中指出该CMM级别的关键过程域及其简单描述。

在项目表、状态表、进程表、日志表中都有CMM等级属性存在。这也就是CMM约束下软件项目管理系统中。CMM约束的体现。

图5.9 CMM管理页面

实现代码:

public void setBewrite(String bewrite) {

www.51jplw.com

27

www.51jplw.com

this.bewrite = bewrite; }

public void setCmmname(String cmmname) { this.cmmname = cmmname; }

public void setCmmid(int cmmid) { this.cmmid = cmmid; }

public int getCmmid() { return cmmid; }

public void setCmmidid(int cmmidid) { this.cmmidid = cmmidid; }

public int getCmmidid() { return cmmidid; }

public String getCmmname() { return cmmname; }

5.4.2 CMM信息查询模块

点击菜单档的CMM约束进入selcmm.jsp页面。在该页面中显示出CMM的五个软件能力成熟度。内容有软件能力成熟度的关键过程域及其描述。软件开发过程就是按照在对这些关键过程域的要求中实现能力的提高。CMM等级跟项目的项目表、状态表、进程表、日志表关联在一起。项目、状态、进程中描述的是项目计划内可以达到的CMM等级。日志中描述的是实际达到的CMM等级。

图5.10 CMM信息查询页面

实现代码:

www.51jplw.com

28

www.51jplw.com

public class selcmmForm extends ActionForm { private String cmmid;

public void setCmmid(String cmmid) { this.cmmid = cmmid; }

public String getCmmid() {

return cmmid; }

public ActionErrors validate(ActionMapping actionMapping,

HttpServletRequest httpServletRequest) { /** @todo: finish this method, this is just the skeleton.*/ return null; }

public void reset(ActionMapping actionMapping,

HttpServletRequest servletRequest) { } }

www.51jplw.com

29

www.51jplw.com

总 结

经过多月的设计实施和研究,和不懈的努力整个系统的功能基本实现,在整个开发的过程中我慢慢的认识到需求分析在整个软件开发过程中的重要性。在软件开发过程中,具体的设计编程只是其中的一小部分内容,而更重要的、花费更多时间的则应在需求分析上。在设计的过程中,不仅使以前学习的专业知识得到了巩固和加强。更重要的是在态度和观念上的收获。

此次系统中完成的查询数据模块和系统维护模块,都达到了任务书的具体要求。能正常运行,并通过测试。还可以在项目管理系统的基础上扩展数据共享的功能,这在我这次设计所没有去做。可以作为以后的扩展。

www.51jplw.com

30

www.51jplw.com

参考文献

[1] 陆惠恩,陆培恩. 软件工程简明教程[J] 电子工业出版社, 2005-11. [2] 曾翎,彭德中. 软件工程—理论与实践[M] 高等教育出版社,2004-08. [3] 萨师煊,王珊.数据库系统概论[M] 高等教育出版社,2005-02.

[4] 唐学忠,费贤举.SQL Server 2000 数据库教程[M] 电子工业出版社,2005-08. [5] 黄维通.SQL Server 2000简明教程[M]清华大学出版社,2003-11. [6] 耿祥义 ,张跃平 .JSP实用教程[J] 清华大学出版社 2003-05.

[7] 郝玉龙 ,姜韡 .J2EE编程技术[M] 清华大学出版社[M]北京交通大学出版社,2005-03. [8] 孙卫琴.精通Struts 基于MVC的Java Web 设计与开发[M] 电子工业出版社,2006-08. [9] Jayson Falkner Ben Galbraith Romin Irani Beginning JSP Web Development [M]电子工业出版社2004-04.

[10] 徐谡 Java应用与开发案例教程[J] 北京:清华大学出版社,2005-07. [11] Paul S.Wang Java面向对象程序设计[M] 清华大学出版社,2003-03.

[12] 周晓聪,李文军.面向对象程序设计与Java语言[M] 北京: 机械工业出版社,2004-03. [13] 朱少民.软件测试方法和技术[M] 清华大学出版社,2005-07 .

[14] Fundamentals of OOP and Data Structures in Java [M] 人民邮电出版社,2005-03. [15] ADOBE公司Photoshop CS2中文片经典教程[M] 人民邮电出版社,2006-02. [16] 周明涛. Dreamweaver MX 网页设计指南[M] 机械工业出版社,2002-07. [17] 成晓静,毕靖.Dreamweaver MX 2004 完全学习手册[M]中国电力出版社,2004-11.

www.51jplw.com

31

www.51jplw.com

致谢

此次毕业设计中,指导老师给了我很多的帮助。感谢她在设计过程中给我提供了建议和帮助。在遇到问题时都会给予我耐心地辅导、分析提示。使我能够顺利的完成这个课题。这种认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。而对于在设计中的缺陷不足,能给予了谅解和帮助,使我在设计方面的理论分析能力得到提高。能顺利的完成这个系统的设计真的非常高兴。在此,我向魏莉老师表示深深地感谢。

www.51jplw.com

32

本文来源:https://www.bwwdw.com/article/m2y3.html

Top