项目背景 1)项目组成 开发软件名称: 图书管理系统 项目任务提出者: 项目开发者: 用户:系统管理员、操作员、读者 实现软件单位: 2)待开发系统定义 传统的图书馆管理系统模式有多种缺陷,比如操作繁琐、工作量大难以上手,效率低、容错率差等。给大量的资料查询、更新及维护带来了大量的困难。图书管理系统对于现代图书馆而言,是能否发挥其教学科研的作用的至关重要技术平台。对于读者和图书管理员来说,是能否方便快速获取信息的关键。所以我们接受这个项目,首先考虑的便是功能的实现,给用户带来充足的信息和快捷方便的操作。 3)图书管理系统模型 2本系统主要实现书籍管理、读者管理和借阅管理等主要的图书管理功能。 .1图书管理 图书类别管理:增、删除、改等管理。 图书信息管理:新书入库,图书购入后由图书管理人员将书籍编码并将其具体信息录入书籍信息表。书籍信息修改,书籍信息由于工作人员的疏忽而出现错误时,可修改其信息。管理员按不同方式查询、统计,读者按不同方式查询。 图书注销:某一部分图书会随着时间的增长及知识的更新而变得不再有使用的价值,或者图书被损坏,这些图书就要在图书籍信息表中的除去。即从书籍信息表中删去此书籍记录。 .2读者管理 读者类别信息管理:增、删除、改等管理。 读者信息管理:办理、挂失、暂停借、注销阅卡,录入、修改、删除读者信息。 .3借阅管理 续借管理:提供读者在符合规定的情况下网上续借。 还书管理:根据借阅卡编号、图书ID等,在借阅信息表中找到相应的记录,将借书记录删除,更新该记录的相应数据(图书信息表)。根据违反规定情况计算和登记罚款记录。 借书管理:根据借阅卡编号和图书编号,进行借书登记。在借阅信息表中插入一条借书记录,该记录包括读者ID、图书ID、借出日期、借阅编号、操作员等信息,更新该记录的相应数据(图书信息表)。把超期图书以列表的形式显示出来,并以电子邮件或打印成书面通知读者。提供读者网上查询自己的借阅情况(包括超期提示) 开发进度与成本估算 图书馆图书管理系统,此项目的成本是项目进行全过程所消耗的各种费用总和。根据工作分解结构制定出项目分摊估计表来有效的进行项目的成本计划。合同规定项目的总成本(包括软件开发成本、硬件成本和开发中的其他成本)是10万元人民币。 根据项目团队制定的工作分解结构,按照系统的生命期将本项目划分为六个活动,分别是项目规划、需求分析、软件设计、编程实现、系统测试、验收总结。对这六个活动进一步分解得到21个小活动。小活动的成本主要由劳动力成本(工资)和硬件成本构成。其中工资根据工期、人数和日工资来确定,硬件成本根据该项小活动的需求数量来确定。成本估算采用的方法为:先估算出每项小活动的预算,然后在算出大活动的预算,进而预算出整个项目的成本。 、撰写需求分 770 析说明书 7、系统分析 2310 8、模块设计 软件设 9、数据库设计 计 10、美工设计 5390 3850 2310 、撰写详细设 770 计说明书 12、硬件安装 10000 软件开 13、环境配置 发 14、代码实现 15、集成测试 软件测 16、系统测试 试 17、撰写系统测 试报告 验收总 18、撰写用户手 结 册 19、人员培训 20、产品转移 21、经验总结 原计划此图书管理经费占整个图书管理系统的百分之一十,即是10万,时间为3个月,整个项目由一名项目经理,两名开发成员,同时完成开发后要兼顾测试比较辛苦,所以时间也比较充足,要求图书管理的开发的时间最长不能超过原定计划的3天。比原计划提前了20天。这样就节省了不少成本。 系统开发项目风险分析报告 .1软件开发项目的风险背景 信息产业的发展是目前发展最快的行业之一,也是对社会影响最大的一个行业,它不但为我们创造了巨大的财富,而且从各个方面改变着我们的生活,达到一个行业,小到一项服务。我们不得不承认软件是二十一世纪最不可思议的产品。 伴随着软件开发技术的不断更新、软件数量的增多、软件复杂程度不断加大、客户对产品的要求也在不断的提高,随之而来的是软件开发项目给软件开发企业和需求企业带来的巨大风险。软件开发项目的成功与否会直接影响到公司的生存。这对软件开发企业来讲应该是更大的难题。一方面是业务需求更加复杂。人们对软件质量和用途的期望大幅度提高,对业务系统的要求也越来越挑剔。另一方面是开发成本不断缩减。在此形势下,风险管理与控制已成为软件开发项目成败的关键。 软件开发项目由于其具有连续性、复杂性、少参照性,无标准规范等特点,其风险程度较高。目前国内的大多数软件开发企业还缺乏对软件开发项目的风险认识,缺少进行系统、有效的度量和评价的手段。据有调查数据显示,有15—35%的软件项目中途被取消,剩下的项目不是超期就是超出预算或是无法达到预期目标。另外,软件项目因风险控制和管理原因失败的约占90%,可见,软件风险控制与管理在目前的软件开发项目中的重要性。 .2风险管理与风险控制介绍 )风险管理 风险管理应是贯穿软件项目开发始末的一项重要任务,其中包括风险识别、风险评估、风险计划、风险解决和风险监控。它能让风险管理者主动“规避”风险,进行有效的风险管理。风险管理模型有:SEI风险管理模型、Riskit风险管理模型、SoftRisk风险管理模型、IEEE风险管理过程模型、CMMI风险管理模型、MSF风险管理模型等。在项目管理中,建立风险管理策略,在项目的生命周期中不断控制风险是非常重要的,风险管理主要包括五个阶段: (1)风险识别:识别风险的方法常用的有现场观察法、座谈法、流程图法、财务报表法、相关部门配合法和环境分析法等。 (2) 风险评估:对已识别的风险要进行估计和评价,风险估计的主要任务是确定风险发生的概率与后果,风险评价则是确定该风险的经济意义及处理的费/效分析,常用的方法有:概率分布、外推法、多目标分析法等。 (3) 计划进度:按照评估后的风险结果,制定相应的风险管理进度表,为后续的风险管理提供参考。 (4) 风险处理:一般而言,风险处理有三种方法,① 风险控制法,即主动采取措施避免风险,消灭风险,中和风险或采用紧急方案降低风险。② 风险自留,当风险量不大时可以余留风险。③ 风险转移。 (5) 风险监控:包括对风险发生的监督和对风险管理的监督,前者是对已识别的风险源进行监视和控制,后者是在项目实施过程中监督人们认真执行风险管理的组织和技术措施。 )风险控制 (1)建立有效的风险控制的组织机构 ①设置风险管理岗位:在软件开发项目管理过程中设置风险管理岗位,该岗位的主要职责是在制订与评估规划时,从风险管理的角度对项目规划或计划进行审核并发表意见,不断寻找可能出现的任何意外情况,试着指出各个风险的管理策略及常用的管理方法,以随时处理出现的风险,风险管理者最好是由项目主管以外的人担任。风险管理岗位的人数依据项目大小来决定,一般2—3人较为适合。 ②双项目经理:为项目开发项目设定两个项目经理岗位,一个负责技术岗位,另一个负责管理岗位。目前,国内的软件开发企业的项目经理一般都是一名,而且是技术出生的占绝对多数,他们主要擅长的是技术研发,在管理方面先天不足,这不利于项目风险管理和控制。通过增加专门的管理经理岗位,可以弥补技术出生的项目经理的不足,提升软件开发项目的管理水平。而且这样的经验也已得到了国外业界大多企业的认可。 (2) 建立有效的风险控制管理过程 风险管理过程包括培训,风险识别、风险分析、风险计划、执行计划、跟踪计划等活动,有效的风险管理过程应是学习型的、持续的和不断改进的。软件企业应建立自己的风险管理数据库作为风险管理的基础,并在实施中不断地更新和完善。 根据企业和项目的实际情况,进行科学的项目风险和控制,对项目的成功研发有着举足轻重的意义。在项目开发的过程中,进行必要的项目风险分析,制定符合项目特点的风险评估和监督机制,特别是要定期对项目的风险状况进行评估和监管,发现意外风险或者是风险超出预期的一定要重点关照。发现问题要立即上报,尽快解决。并建立风险监管日志,实行“岗位负责制”,将软件开发项目的风险降到最低。 .3软件开发项目的风险来源及对项目成败的影响 软件开发项目风险是指在软件生命周期中所遇到的所有的预算、进度和控制等各方面的问题,以及由这些问题而产生的对软件项目的影响。软件项目风险经常会涉及许多方面,如:缺乏用户的参与,缺少高级管理层的支持,含糊的要求,没有计划和管理等,总体概括下来应该由楼六大方面。 ) 需求风险 很多项目在确定需求时都面临着一些不确定性。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造预期的产品。每一种情况对产品来讲都可能致命的。 ) 相关性风险 许多风险都是因为项目的外部环境或因素的相关性产生的。经常我们在控制外部的相关性上做的不够,因此缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并且觉察潜在的问题。 ) 技术风险 软件技术的飞速发展和经验丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键。 ) 管理风险 尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,他们有先天性的不足——自己检查自己的错误,这是最难的。然而,像这些问题可能会使项目的成功变得更加困难。如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目本身。 )自然风险 软件产品本身也属于一种应用型产品,同样会受到自然灾害的的影响。(自然风险主要有火灾、洪涝、恶劣天气等对图书馆的馆藏、服务系统、信息系统和人员可能造成的损害。) .4图书馆管理系统风险应对表 项目人力资源计划就是决定在项目中的每一项工作中用什么样的人力资源,确定人力资源的数量、质量和结构。 组织结构 图书管理系统的项目管理是采用项目型组织,各成员按照从事的项目组成不同的团队,并由指定的项目经理来协调和管理项目的运作。 、职能型组织 b、项目型组织 c、矩阵型组织 d、 复合型组织 人员要求 、项目经理 、有5年以上软件研发经验 、能分析和判断大部分软件问题。对项目软件开发过程负责。有丰富的项目经验和很强的责任心。 、 有熟练的英文阅读能力和交流能力。 b、调研分析员 计算机、软件工程等专业本科以上学历; 2熟悉需求调研方法,具备较强的业务流程及业务模型分析设计能力; 3熟悉软件工程理论,掌握软件需求获取与分析方法;具备财务软件、物流系统软件、ERPSAP等系统软件的需求分析经验优先考虑; 4有较强的文档编写能力,有较强的团队协作精神 c、系统分析员 1精通Java语言,WEB编程,熟悉J2EE应用系统开发,熟悉Tomcat等应用服务器; 熟悉Mysql等数据库的设计与开发; 熟悉软件开发流程,具有需求分析和架构设计的实际经验; 能够控制客户需求,并能够处理好与客户之间的关系,有较强的文档撰写能力; 能够高效的管理与激发团队,使团队更具有凝聚力。 d、模块设计员 精通java及数据库相关知识(至少3年以上开发经验,1年以上架构设计经验); 熟悉面向对象的分析设计方法; 熟练使用UML工具进行建模设计,并能充分理解客户的需求并根据需求进行模块化和面向对象分析设计; 能够独立完成系统需求分析与概要设计设计工作; 5有较强的系统需求分析、设计文档编写能力; 具有良好的团队协作精神,有较强的业务模型分析能力,思维清晰敏捷,逻辑分析能力强,善于与人沟通,能够承担一定的工作压力 e、测试工程师 计算机、软件工程等相关专业; 对人员管理、资源调配、测试方法改进等经验; 分析能力强,思维周密、积极主动,关注细节,勇于创新,良好的 沟通技巧以及优秀的言语表达能力,具备良好的团队合作精神; 4熟悉一些主流的软件工程方法论和思想,了解软件工程,软件生命周期模型基础; f、 实施人员 1积极上进 有项目管理经验优先 3肯吃苦,能出差 g、 客户联络员 较强的沟通、理解和应变能力 有刚正不阿的性格,吃苦耐劳的精神 3服从公司工作安排,能长期出差。 2角色职能表 系统成品评价 6.1对生产效率的评价 给出实际生产效率,包括: ⑴.系统开发已历时快2个月的时间了 ⑵开发的反复性比较多。 ⑶对客户的需求理解不是很透彻。 综合以上,虽然以上问题是项目开发经常面对的问题,开发工程 中存在着一些问题,造成这些问题的原因是多方面的。如:前期系统数据库的设计缺陷和部分代码的构建缺陷、客户需求的理解上也存在一定问题,这就需要我们用一定的时间来维护客户使用过程中提出的新问题和存在的bug,这些都造成了一定时间的消耗,但同时也使得我们的产品日趋完善。但是总的来说此项目的开发效率不是很高,相反有相当一定时间的浪费。 经过我们各位成员的共同努力,图书管理系统已经很好的完成了客户的业务流需求。经过对客户使用过程的观察,此项目开发的还是比较成功,但是还是存在着一些问题,造成这些问题的原因是多方面的。如:前期系统数据库的设计缺陷和部分代码的构建缺陷、客户需求的理解上也存在一定问题,这就需要我们用一定的时间来维护客户使用过程中提出的新问题和存在的bug。总的来说,此系统的功能开发还是一个比较成功的案例。 .2对技术方法的评价 ⑴系统开发框架:此系统的框架使用的是简单三层结构,此框架在开发一些中小软件是比较实用的。但是我们要是可以开发出自己的框架,把一些通用的功能开发到框架中。这样以来,在以后的系统开发中,针对系统中一些通用的功能就不需要再开发,从而也可以很好的提高我们的开发效率;减少很多维护费用。使我们的技术不断的更加成熟。 ⑵系统安全加密:此系统中针对客户提出的系统安全问题,我们采用了Ikey加密硬件钥匙来验证客户端登陆客户的合法性,此Ikey钥匙可以绑定到一个系统使用用户,也可以让多个用户来使用一个加密钥匙来验证登陆系统的合法性。这样以来,即使用户的密码不慎丢失,或者被不法人员取得(不法人员他也是无法登陆到我们的系统中来),这样就最大的提高了我们系统的安全性。Ikey加密钥匙是很好的加密B/S架构软件的硬件工具,在以后的软件安全方面可以借鉴。 ⑶我们在项目开发中,使用了一些测试工具,包括JUnit,JCheck。 测试工具的应用可以提高测试的质量、测试的效率。但是在选择和使用测试工具的时候,我们也应该看到,在测试过程中,并不是所有的测试工具都适合我们使用,同时,有了测试工具、会使用测试工具并不等于测试工具真正能在测试中发挥作用。 经验与教训 .1签定合同 一个项目的开发成败或者说项目开发带来效益的大小,在很大程度上是受项目合同签定的影响的。往往,很多一部分公司与客户签定的项目合同都是很模糊的,也很难签定的比较清楚,这样以来就会导致在项目的开发后期,工作两会越来越大,影响项目的竣工周期;而且,项目的开发费用一般是不会变的。这样以来,我们就大大的降低了我们的开发效益。虽然需求范围很难签定的明确,但是我们在签定合同时,需要研究求实,要尽量的去把合同功能边界和添加新功能的条件签定。 .2需求的调研 在项目确立后,就到了需求调研分析阶段。 1.项目组对客户的整体组织结构、公司有关人员的关系、职责等如果没有一个很好、足够的了解掌握,这样项目组就无法很好的完整的整理到客户的需求、或者说客户真实的功能需求,如此以来我们就为自己埋下了地雷,影响项目的开发周期,这就要求我们要与客户搞好无论是工作上的还是生活上的朋友关系,要深入的去了解客户需求。 2.我们要尽量的让客户也参与到项目的开发团队中来,也就是说我们要使客户把自己也纳入到项目的开发团队中来,如此一来,我们掌握客户需求的真实性、可靠性就会大大的提高,也就不会为项目的后期功能开发埋下陷阱 3.在需求调研过程中,如果缺乏足够用户参与,这样的需求调研也是失败的。很多程序员不愿参与到客户的需求调研中去,为什么呢?很简单,与客户沟通不如与代码沟通容易有意思。尽管这样,我们还是必须用足够多的时间去和客户进行沟通,了解他们真实的需求。很多用户也是如此,他们自己也不愿意参与到项目的需求调研中来,为什么呢?需求调研是一件枯燥的事对吗?虽然现状如此,我们还是要努力的使客户参与到需求的调研中来。 7.3做好开发计划在项目确立后,我们就需要做好项目开发计划,需求调研用时,开发用时,测试用时,实施用时,维护用时。在我们做好了计划后,我们要随时的跟踪计划任务的完成进度,从而使我们的项目进度掌控在我们的开发周期范围之内,今日计划、行动,明日成功。 7.4做好人际沟通、培训准备和动员工作 )项目组成员的任务分配不是十分均衡,小组成员的职能划分不清,未能按要求实现计划书中的职能分配,造成了效率低下。 2)由于实现开发成员对此次项目开发的环境并不太熟悉,项目组也没有组织培训,造成了摸石过河的现象,降低了开发速度和后期的赶工。 )项目组成员在各个模块的开发时后沟通不够,一度各自为政,造成了二次开发,浪费了资源。 )项目组缺乏一种有效的激励机制,出现了一些怠工现象。 在其他行业中,人与人的之间的沟通只很重要的。项目开发也不例外,很好的沟通能够加快项目的进度,这就要求我们每一个开发人员要学会和善于沟通于客户和同事之间。利于下次项目开发可以让项目组成员成员之间以及与本公司其他其他项目组保持沟通,实现技术共享提高开发效率。同时对外上,在一个项目的开发过程中,我们与客户的沟通是一个不断交流和沟通的过程。在开发到一定的阶段,我们就需要和客户沟通已有功能,尽量的去避免一些隐藏的问题,及时的发现问题,解决问题,从而按时或者提前完成项目的开发。
信息发布:广州名易软件有限公司 http://www.myidp.net
|