Xxx系统的设计与实现毕业设计.doc
Xxx系统的设计与实现作 者 姓 名:指 导 教 师:学 院 名 称:专 业 名 称:计算机科学与技术东 北 大 学2013年12月摘 要软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。而研究软件项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则和方法,同时避免前人的失误。关键词:软件项目管理系统,进度跟踪,项目预算目 录软件项目管理系统的设计与实现I摘 要II目 录III第1章 绪论11.1设计背景11.2系统简要介绍21.2.1系统应用范围21.2.2xx介绍21.2.3系统主要功能介绍31.2.4研究目的与意义3第2章 需求分析42.1功能性需求42.1.6软件项目管理业务流程图52.2系统数据库逻辑模型图62.3非功能性需求72.3.1健壮性82.3.2有效性82.3.3稳定性82.3.4完整性82.3.5可扩展性92.4开发环境92.4.1数据库92.4.2开发平台102.5小结11第3章 系统设计123.1总体架构设计及描述123.1.1系统层次结构123.1.2123.1.3对象关系映射技术133.2功能模块设计143.3数据库设计183.3.19项目维护记录表273.4小结28第4章 系统实现294.1系统代码结构294.1.1应用程序入口294.1.2主窗体294.1.3项目窗体基类304.1.4工具类304.1.5系统配置文件304.2对象关系映射实现314.2.1数据模型314.2.2数据访问实现314.3系统功能实现324.3.1系统登录实现324.4小结35第5章 测试375.1系统测试目的及意义375.2软件测试步骤385.3本系统测试情况405.3.1系统登录测试405.3.5集成测试42第6章 结论446.1实现功能446.3系统优缺点456.4下一步工作计划46参考文献47结束语491 第1章 绪论1.1 设计背景提升软件项目的管理水平日益成为许多成长型软件企业共同的关心点,通过ISO或CMM认证无疑成为大多数企业的所选,但在认证过程或实施后期企业无疑会面临周期长、隐形成本高以及难以保持长效等诸多问题,因此许多企业开始考虑借助一套成熟的软件项目管理1.2 系统简要介绍1.2.1 系统应用范围1.2.2 Xx介绍1.2.3 系统主要功能介绍本系统将从项目的需求调研阶段、到开发阶段、再到实施阶段、维护阶段来管理项目的相关资源,对项目的相关单位、相关人员、相关资料进行详细的记录,方便日后查找和统计;从项目的付款方式和付款记录着手,对项目的付款进行计划和管理,尽量避免项目的资金风险,并可从整体了解项目部门的应收账款和欠款情况。1.2.4 研究目的与意义通过对中小企业软件项目生命周期及管理现状的研究,设计并建立一套软件项目管理系统。为中小型软件企业解决日常对软件项目管理中出现的混乱局面;帮助软件企业更好地组织软件项目从需求到售后的过程;更好地管理软件项目开发中产生的资源,如各类文档、客户资料等数据;有效地控制软件项目开发进度;规避软件项目开发过程中的资源、资金风险。2 第2章 需求分析需求分析是软件开发项目重要的一环,详细的需求分析和系统设计是软件开发的基础,只有良好的系统结构,才能开发出功能完善的、系统流程顺畅的软件系统1。根据前面的介绍和分析,系统的总体目标已经明确,总体结构大致确定。下面将对系统的功能性需求和非功能性需求进行详细的分析,并对系统的开发环境进行简单的介绍。2.1 功能性需求2.1.1 用户登录功能虽然目前系统只支持单用户使用,但出于安全性考虑,系统需要用户输入正确的用户名和密码,登录后才可以正常使用。2.1.2 修改密码功能用户登录系统后,需要能够修改登录密码。进行密码修改时应注意两点,一是必须提供正确的原密码才可以修改密码,二是输入的新密码需要让用户确认,避免造成输入失误而引起密码丢失的情况。2.1.3 组织结构管理组织结构管理模块应能够实现对公司内部的部门信息、每个部门的职员基本信息进行方便的管理。部门和职员数据作为日后组成项目信息的一部分数据基础。在实际的工作中,一些企业的部分职员可能会在多个部门任职。因此需要系统设计时考虑此种情况,允许一名职员同时属于多个部门。2.1.4 客户管理客户管理模块用来管理使用公司产品的客户、与公司有长期合作关系的合作伙伴、地区性的合作伙伴、某一项目中需要合作开发的相关单位、以及为某项目提供硬件设备的厂商等数据。同时提供对上述相关客户中联系人的管理,每个客户中可以有多个联系人。这里需要指出,客户的类型是与具体项目相关的。同一个客户,在这个项目中可能是产品的最终使用者,在另一个项目中又可能是产品供应商等。2.1.5 项目管理项目管理模块是系统中最为重要的一个模块,管理公司承接开发的各个项目。需要对项目的基本信息、相关文档资料、相关客户、客户联系人、相关内部职员、项目进度、实施情况、维护情况、回款计划、付款情况进行统一的管理。与项目相关的各项数据之间相互关联,通过项目基本信息很好的把各类信息串联起来。2.1.6 软件项目管理业务流程图软件项目管理的业务流程如图2.1所示。图2.1 软件项目管理业务流程2.2 系统数据库逻辑模型图本系统的数据库逻辑关系如图2.2所示。图2.2 系统数据库逻辑模型图2.3 非功能性需求结合本软件项目管理系统的使用环境和需求分析,整个系统应具备以下几个方面的非功能性需求。2.3.1 健壮性由于本系统需要使用数据库作为数据的存储机制,而数据库有可能与程序不同时运行在同一台计算机中,所以系统的安全性和有效性可能会受到网络的影响。如果在数据库访问过程中遇到网络问题等,系统应能够有效避免由此引发的数据混乱、程序异常等现象。使系统在连接数据库出现异常情况时,仍能正常处理程序界面中已经录入的信息。2.3.2 有效性在经过一段时间的使用后,系统必然会积累较大的数据量,系统不能因此而出现程序响应速度慢、数据出错等问题2,这严重违背了我们设计此系统的初衷。系统中的数据录入功能应提供基本的数据校验,避免因为用户输入失误而产生的异常等。此外,系统的功能响应时间要很快,并且响应时间不能随着业务量的增大而差异增大。2.3.3 稳定性系统要稳定提供业务服务,要求一直运行准确、无误,并且系统不能自己退出,有异常进行及时提示,但是不能出现异常后自行退出。系统应该能够适应长时间运行,不能因为运行时间过长产生垃圾内存的不可回收,或是数据库连接的不断占用等现象。2.3.4 完整性系统在完成要求的功能性需求以外,需要能够合理管理后台数据,当需要调用后台数据时,能够及时查询。当对一条数据进行操作时,应充分考虑是否有相关数据存在,如果存在相关数据,需要进行相应的同步处理。因为数据在企业中起着重要的作用,所以系统也要进行定期数据备份,保证数据安全、一致。最后,软件应该能够便于更新升级。2.3.5 可扩展性随着企业的信息化水平的增加,对软件项目管理系统的功能需求也很可能会随之增加,因此系统设计时应考虑日后的功能扩展。对系统进行功能升级时不影响现有功能的正常运行,不影响现有数据的正确性和有效性。尤其是组织结构、客户信息等通用数据部分的设计,要尽量做到通用、调用灵活,避免日后升级时需要重新设计。2.4 开发环境2.4.1 数据库2.4.2 开发平台2.5 小结本章节主要介绍了系统的功能性需求和非功能性需求,其中功能性需求有组织结构管理功能、客户信息管理功能、项目信息管理功能等,非功能性需求有完整性、有效性、稳定性、可扩展性等,尤其要考虑由于网络的不稳定性所带来的系统的健壮性方面的问题。本章还在最后简单介绍了系统开发所选择的数据库MS SQL Server 2005和开发平台Visual Studio 2008的情况。3 第3章 系统设计软件设计的最基本目标就是回答“概括地描述系统如何实现用户所提出来的功能和性能等方面的需求”这个问题。它的另一个任务就是设计软件的结构,确定系统是由哪些功能模块组成的,以及这些模块相互之间的关系4。本章将在上一章系统分析的基础上对系统设计进行描述。3.1 总体架构设计及描述3.1.1 系统层次结构3.1.2 用户界面控件Krypton Toolkit3.1.3 对象关系映射技术3.2 功能模块设计系统共包含5个大的功能模块,分别是系统登录、修改密码、组织结构管理、客户管理、项目管理。其中,组织结构管理包含组织结构列表、编辑职员2个子模块;客户管理包含客户信息列表、编辑联系人2个子模块;项目管理包含新建项目、项目查询、修改项目、进度报告、支出记录、相关文档、付款计划、付款记录、实施记录、维护记录等10个子模块。系统功能模块如图3.1所示图3.1 系统功能模块图3.2.1 系统登录登录功能用于对系统使用者的身份验证,每次进入系统时,必须使用本模块进行验证,否则不允许使用进入系统。登录界面需要输入用户名和登录密码,当输入的登录名和登录密码与数据库中相关记录相符时,才允许进入系统6。3.2.2 修改密码已登录的用户,允许修改自己的登录密码,修改登录密码时需要提供原密码和两次输入新密码。3.3 数据库设计数据库是指自描述的完整记录的集合。数据库结构特性的设计整个系统设计的基本任务,设计质量的好坏,直接影响到数据库应用系统的运行质量7。基于数据库的信息服务系统具有数据量大、保存周期长、对数据需求多样化等特点,为了使应用系统具有更优良的性能,应当首先设计出既能客观表现实体,又能表现实体间复杂联系的数据库。本系统采用关系型数据库。关系数据模型就是一个表格,所以从用户角度来看,一个关系型数据库包含若干个表。因此数据库设计的合理性关键在数据表设计的合理性。3.3.1 操作员表操作员表用于保存操作员的登录名和登录密码数据,如表3.1所示。表3.1 操作员表字段名描述类型是否可空是否主键Dlm登录名varchar(20)否是Dlmm登录密码varchar(20)否否3.4 小结4 第4章 系统实现4.1 系统代码结构系统使用VisualStudio2008开发,解决方案名为MeansProject。解决方案中包含两个项目,一个是系统主项目MeansProject项目,一个是数据库模型项目Model项目8。数据库模型项目中是依据对象关系映射技术,由数据库表映射而来的C#类文件和xml描述文件。系统主项目中包括Zzjg、Khgl、Xmgl三个子目录。Zzjg目录是组织结构管理模块相关代码目录;Khgl是客户管理模块相关代码目录;Xmgl目录是相关管理模块相关代码目录。各功能模块外的代码文件直接存放于主项目根目录中,包括应用程序入口、主窗体、登录窗体、工具类、系统配置文件等。系统主项目采用MDI多文档形式进行窗体的组织,由主窗体来调用打开各功能窗体。4.1.1 应用程序入口系统应用程序入口为Program类,主要负责应用程序的初始化工作,并加载系统主窗体9。同时,Program类中保存已登录的用户状态在currentUser属性中,供各个模块使用。4.1.2 主窗体系统主窗体为MeansProject类,是程序调用、组织各个功能模块的入口。主窗体中包含一个系统导航菜单,导航菜单中包括项目、客户管理、组织结构、窗口、系统五个菜单。项目菜单包含新建项目和项目管理两个菜单项,用于完成项目管理中各个功能的导航工作。客户管理菜单用于进入客户管理模块,管理系统中的客户信息。组织结构菜单用于进入组织结构管理模块,管理系统中的部门和职员信息。窗口菜单用于切换已经打开的各个功能窗体,也可关闭所有打开的窗体。系统菜单中包括修改密码和退出两个菜单项,分别用于修改登录用户的密码和退出系统。为避免系统中同一个窗体多次打开,主窗体打开MDI子窗体均通过统一的方法来进行,在此方法中判断是否已经有窗体打开,如果没有,创建新的MDI子窗体并打开;如果已经存在,激活已经打开的MDI子窗体10。(代码略)4.1.3 项目窗体基类项目窗体基类为BaseForm类,所有需要用到选择职员或是选择客户的窗体,均需要继承BaseForm类。此类继承自ComponentFactory.Krypton.Toolkit.KryptonForm类,本身也是一个窗体,但增加了职员信息zyxx和客户信息khxx两个公有属性,用于选择职员或客户后存储数据11。4.1.4 工具类系统中通用的一些方法存放于工具类(Utility)中,目前只包括弹出消息提示框和弹出询问对话框两个方法。(代码略)4.1.5 系统配置文件系统中可能会发生改变的,需要动态配置的数据,如数据库类型、数据库连接参数等,使用系统配置文件来存储12。配置文件命名为MeasnProject.exe.config,其中SORMDatabaseType用于配置数据库类型,SORMConnectionString用于配置数据库连接字符串。4.2 对象关系映射实现本系统的对象关系映射(ORM)技术,使用本人所在公司的ORM中间件MeansSoft.EAF.SORM来实现。4.2.1 数据模型对象关系映射技术的关键就在于把数据库表映射为程序的类文件和相应的xml描述文件,然后提供一些易于使用的方法来把数据库的增、删、改、查等操作来映射到对类对象的操作上来。因此,数据模型是对象关系映射技术中的很重要的一部分。从下面的由部门信息表映射而来的类文件和xml文件中可以看到数据模型的具体内容。4.2.2 数据访问实现SORM对象关系映射中进行数据库操作的类为Session类,类中包括查询、修改、删除、查询等基本数据操作方法,也包含开始事务、提交事务、回滚事务等方法。调用数据操作方法可以使用Session类提供的静态方法,也可以使用非静态方法。当一次数据库操作有多条语句需要在一个事务中完成时,必须使用非静态方法。无论是使用Session类的静态方法还是非静态方法,Session都会自动读取程序配置文件中的数据库连接配置,自动来决定连接参数。4.3 系统功能实现4.3.1 系统登录实现系统是否已经登录,是在主窗体的窗体加载事件中来判断的,如果还没有登录系统,便弹出登录窗体,要求用户登录13。系统登录流程如图4.1所示。图4.1 系统登录流程5 第5章 测试5.1 系统测试目的及意义软件测试是软件生存周期中的一个重要阶段,是软件质量保证的关键步骤。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测试某个软件系统的过程,其目的在于检验它是否满足规定的需求或差别”。这个定义明确指出,软件测试的目的是为了检验软件系统是否满足需求。从用户角度来看,普遍希望通过软件测试发现软件中隐藏的错误和缺陷,所以测试的目的就是在软件系统交付运行之前,尽可能多地发现软件中的错误和缺陷。为了发现系统中的错误,应竭力设计能暴露错误的测试用例。测试用例是由测试数据和预期结果构成的。一个好的测试用例是极有可能发现至今为止尚未发现的错误的测试用例。一次成功的测试是发现了至今为止尚未发现的错误的测试。高效测试是指用少量测试用例,发现被测试软件尽可能多的错误。根据测试概念和目的,在进行信息系统测试时应遵循以下原则。(1) 应尽早并不断地进行测试。(2) 测试工作应该避免由原开发软件的人员或小组承担。一方面,开发人员往往不愿否认自己的工作,总认为自己开发的软件没有错误;另一方面,开发人员的错误很难由本人测试出来,他们很容易根据自己编程的思路来指定测试思路,具有局限性。测试工作应由专门人员来进行,这样会更客观,更有效。(3) 设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果。将实际输出结果与预期结果相比较就能发现测试对象是否正确。(4) 在设计测试实例时,不仅要设计有效、合理的输入条件,也要包含不合理、失效的输入条件。(5) 在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。(6) 严格按照测试计划来进行,避免测试的随意性。测试计划应包括测试内容、进度安排、人员安排、测试环境、测试工具和测试资料等。(7) 妥善保存测试计划、测试例子,作为软件文档的组成部分,为维护提供方便。(8) 测试用例都是精心设计出来的,可以为重新测试或追加测试提供方便。5.2 软件测试步骤测试是开发过程中一个独立且非常重要的阶段,测试过程基本上与开发过程平行进行。测试步骤可按4个步骤进行,即单元测试、集成测试、确认测试和系统测试,如图5.1所示。图 5.1软件测试的流程单元测试集中对用源代码实现的每一个程序单元测试,检查各个程序模块是否正确的实现了规定的功能。单元测试一般由程序员自己完成。集成测试根据设计规定的软件体系结构,把已测试过的模块组装起来,在组装过程中,检查程序结构组装的正确性。集成测试一般由专门的测试人员或测试组织完成。确认测试则是要检查已经实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完整、正确。确认测试一般由用户协助完成。系统测试把已经经过确认的软件纳入实际运行环境中,与其他系统成分组合在一起进行测试。严格地说系统测试已经超出了软件工程范围。在软件测试生命周期内,错误在软件开发的每个阶段都可能被带入。在软件测试中,某些错误被发现、分类、隔离,最终被纠正。由于软件不断被修改,所以这个过程是一个反复进行的过程。5.3 本系统测试情况6 第6章 结论6.1 系统实现功能系统已经实现了对组织结构、客户信息等系统基础数据的管理功能。同时也实现了对项目基本信息的管理,和项目相关客户、参与职员等数据的管理,还是实现了对项目进行过程中的进度报告,相关文档资料管理。对于项目的付款计划和付款记录,系统同样实现了比较方便的管理,并能够在项目列表中根据付款计划和付款记录计算出项目的总金额、已付金额和待付金额。项目的实施记录和维护记录,也可以通过本系统有效的管理起来。此外系统实现了对使用人员的登录验证。6.2 系统优缺点本系统的优点在于能够全面的管理项目的文档资料、进度情况、实施情况、维护情况,可以对项目的支出情况、付款计划和付款记录进行记录,同时可以管理公司所有相关客户的资料。有效管理软件企业中的文档资源、客户资源和资金流。本系统的缺点在于查询和统计功能不够丰富,对于录入的数据的使用率不高。而且目前只支持单用户使用,所有数据必须都有一个人来录入,暂时还没有实现平台化的协同办公。6.3 下一步工作计划毕业后本人将对系统继续完善,首先从查询统计功能入手,计划使用一到两个月的时间来提高系统数据的利用率、丰富系统功能。然后使用一个月左右的时间,对系统的结构进行一次改造,使其支持多用户登录。完成如上改进后,需要将系统放在本人所在公司来进行实际应用,并根据实际应用中发现的问题和不足来继续完善系统。7 参考文献1. Roger S.Pressman. 软件工程实践者的研究方法M. 北京: 机械工业出版社, 2006, 92-98.2. B-power工作室. C#网络程序设计M. 北京: 中国铁道出版社, 2001, 39-51.3. 李兰友 杨晓光. Visual C#.NET程序设计M. 北京: 北方交通大学出版社, 2004, 203-224.4. 肖丁 吴建林 周春燕. 软件工程模型与方法M. 北京: 北京邮电大学出版社, 2008, 86-93.5. Grady Booch. 面向对象分析与设计M. 北京: 机械工业出版社, 2003, 63-71.6. 刘甫迎 刘光会 王蓉. C#程序设计教程(第2版)M. 北京: 电子工业出版社, 2008, 75-90.7. 萨师煊 王珊. 数据库系统概论M. 北京: 高等教育出版社, 2000, 174-192.8. 王昊亮 李刚等. Visual C#程序设计教程M. 北京: 清华大学出版社, 2003, 94-101.9. Mickey Williams著. 冉晓景等译. Visual C#技术内幕M. 北京: 清华大学出版社, 2003, 37-46.10. 施燕妹 陈培 陈发吉. C#语言程序设计教程M. 北京: 中国水利水电出版社, 2004, 66-70.11. Herbert Schildt著. 长春亿特译. C#编程序起步M. 北京: 人民邮电出版社, 2002, 253-277.12. 微软公司著. 熊盛新 许志庆 李钦译. Visual C#.NET语言参考手册M. 北京:清华大学出版社, 2002, 184-207.13. 孙永强等. Visual C#.NET入门与提高M. 北京: 清华大学出版社, 2002, 90-97.14. 郭胜等. C#.NET程序设计教程M. 北京: 清华大学出版社, 2002, 157-189.15. Anders Hejlsberg Scott Wiltamuth Peter Golde著. 张晓坤 谭立平 车树良译. C#编程语言详解M. 北京: 电子工业出版社, 2004, 78-82.16. Simon Robinson Christian Nagel著. 李敏波译. C#高级编程(第3版)M. 北京: 清华大学出版社, 2005, 209-224.17. John Sharp Jon Jagger. Microsoft Visual C#.NET程序设计M. 北京: 北京大学出版社, 2002, 132-140.