2023软件项目工作总结十篇
关键词:企业;信息系统;软件外包;关键因素
1 引言
随着现代信息技术的发展与应用,国内各行业的信息化建设全面展开。信息化建设离不开各种信息系统的支持,如办公自动化系统、管理信息系统、电子商务系统、决策支持系统等。企业在开发信息系统时,有些需要外包给软件开发商来完成,企业只有把握好外包中的几项关键因素,才能成功实施软件系统的外包。
2 企业信息系统软件外包成功实施的关键因素
烟草行业卷烟生产经营决策管理系统(即“一号工程”)是20xx年国家烟草专卖局根据行业宏观调控和科学决策信息化建设发展的需要建设的信息化系统。系统建立了行业数据交换体系,通过打扫码、数据库联机方式自动采集行业生产经营基础数据,构建行业业务指标体系和数据分析模型,建立国家局数据中心,实现国家局分析展现应用的界面集成和业务集成。“一号工程”是烟草行业软件外包的一个典型的成功案例[1]。
(1)选择技术实力强、口碑好的软件外包企业
企业在选择软件外包商时,可采取公开招投标方式,对投标单位从技术能力、人员能力及软件过程能力进行综合评估,选择员工作风好、保密观念强、政治觉悟高的企业作为接包方,确保系统数据安全,并与接包方签订《保密责任协议书》,建立安全保密分级管理制度。
如“一号工程”于20xx年通过公开招投标,确定由中国计算机软件与技术服务总公司(即中软总公司)作为项目总集成商,中软总公司委托其下属的中软国际承接项目建设工作。中软总公司是国家规划布局内重点软件企业,实力雄厚;中软国际是国内领先的应用软件和解决方案供应商,在国内IT行业享有较高的声誉。
(2)充分调研与沟通,作好项目需求分析工作
企业在软件外包时必须做好项目需求分析工作。业务部门提出用户需求后,通过与技术部门、软件开发人员多次交流沟通,提出系统的综合要求及标准。开发人员通过分析系统需求,了解用户工作流程并对其进行正确分类,确定系统的`可接受性、可实施性、可测试性;在形成需求报告之前,对后期发现的不明确、不一致的地方要进行修改或补充;最后项目经理应邀请客户代表共同评审需求文档的正确性、完整性和清晰性,使需求文档正确无误地反映用户需求。
(3)明确各部门职责,选派专人参与开发过程,保证项目进度及安全
企业应明确参与部门(如归口管理部门、牵头部门、协作部门等)的具体职责,避免在软件开发出现问题时由于没有建立合理的分工、反馈和跟踪制度出现多方推诿现象;企业还应选派技术人员全程参与开发过程并建立项目进展情况表。企业参与软件开发,不仅可以培养自己的技术力量,还可以及时协调、解决出现的问题,为项目进度提供保障,还能对项目涉及的保密数据进行脱密处理,进而保证项目安全。
例如,“一号工程”在建设过程中成立了项目领导小组,国家局局长姜成康亲自主抓,副局长李克明任组长,信息中心主任高锦任副组长,各单位负责人是领导小组成员。成立了项目实施办公室,做到了分工明确,各司其责。从公开招投标到各阶段的项目建设,每个方案都经过了专家会议的若干次讨论,每一阶段国家局都召开了专门的会议进行部署。李克明副局长亲自参与布置各个阶段的工作,协调各方关系,为项目建设提供了保障。
(4)做好软件测试工作,进一步提高软件产品质量
从技术角度看,各种信息系统开发的最终目的就是得到高质量的软件产品。企业为保证软件产品质量和可靠性,必须做好软件测试工作。通过制定软件测试计划,做好测试准备工作;组建测试团队,包括测试项目负责人、测试分析员、测试设计员、测试程序员、测试员、测试系统管理员、配置管理员;选择合适的测试方法,静态测试或者动态测试,白盒测试或者黑盒测试,重点要进行可靠性及安全性测试;选择测试工具,如Parasoft、Compuware、Xunit等白盒测试工具,LoadRunner、WinRunner、Astra Quicktest等黑盒测试工具;重点做好测试中Bug和需求变更的跟踪和管理,做好Bug分类、缺陷记录、版本控制等工作。
(5)严格做好软件验收工作
软件项目的验收非常重要。企业在接到验收申请后,要认真审查软件系统的运行、文档资料、培训工作等现状,对于符合验收条件的项目,要严格按照验收标准和流程来验收。验收的主要依据是软件需求规格说明书。验收程序分技术测试和文档检查。技术测试由专家组负责。文档检查主要检查招投标书、合同、用户使用报告、信息安全测评报告、系统使用手册等。验收测试范围包括功能项测试、业务流程测试、容错测试、安全性测试、性能测试、易用性测试、适应性测试、文档测试等。
如“一号工程”作为耗时两年半精心打造的信息化项目,验收时非常严格规范。验收委员会由中国工程院院士孙家广、沈昌祥等13名专家组成。中软国际的验收资料齐全完备,在《项目验收总结报告》中详细描述其建设过程,涵盖了从方案论证、软件开发到项目实施与服务、合同完成情况等方面的工作。中烟信息技术公司随即构建了运行维护体系,设立了客户服务、技术支持等部门,在完成日常维护的同时,以电话支持和现场服务等方式为行业基层提供服务或解决操作上出现的问题。
(6)做好商业秘密、核心技术等知识产权保护工作
企业在软件外包开发中,要做好知识产权保护工作。首先,要和接包方签订严格的保密协议,要求他们指定专人负责对核心技术的使用控制;其次,企业要通过技术分析及数据过滤提供尽可能少的核心机密;第三,尽量在发包方本地进行后期的数据装入,以减少商业秘密泄漏的可能。
对于产生的其他知识产权,根据我国《计算机软件保护条例》的规定:“接受他人委托开发的软件,其着作权的归属由委托人与受托人签订书面合同约定;无书面合同或者合同未作明确约定的,其着作权由受托人享有。”对此,企业要与接包方签订书面合同,明确以下3点归属问题:(1)软件作为一个整体的知识产权归属;(2)软件中的代码归属及重用性约束等具体规定;(3)因知识产权归属的法律适用及发生侵权纠纷的具体解决方式,包括责任的承担、损失的追偿等。
3 结语
软件外包对于企业来说,可以提高开发效率、降低成本。充分做好以上几项工作,才能减少外包风险,保证软件产品质量,为企业带来更好的经济和社会效益。同时,企业还要针对软件项目特点,运用适合自身的项目管理模式来加强软件外包项目管理,尤其要规范项目实施过程,才能迅速适应业务需求的变化,提高软件系统的运行效率,提升企业的核心竞争力。
一、个人工作详细说明
本次软件项目设计的题目是场地预约系统,它是基于B/S模式实现的用于体育城场地管理预约的Web应用软件。为用户提供并接受用户提出的需求信息,同时通过数据库管理系统存储数据,给场地的管理带来很大的方便。本项目的实现分为前台与后台。其中前台,用户可以浏览场地所提供的可预订场地的信息,同时可以对需要的场地进行预订;后台主要是针对管理员,管理员可以通过后台对场地的相应信息进行增添修改等操作。
我基本参与了本项目的全部实现过程,涉及项目的需求分析,概要设计,详细设计,代码编写,调试与运行。在需求分析阶段和小组其他成员认真分析讨论了本项目各方面的需求,主要是功能方面的需求,基本确定了本场地预约系统应该具有的基本功能。概要设计阶段通过讨论分析确定了所需表结构。详细设计阶段参与部分代码的编写,其中包括页面与数据库交互的实现,还有相应jsp页面代码的实现几布局的调整,修改。
在数据库设计实现阶段,通过和我们组其他成员的共同讨论,确定了场地信息、用户信息等表结构的详细信息,并实现了其数据库的建立和相应表的具体信息的设计实现。同时针对个别表结构完成了相应代码的编写与实现。
在后台,实现了用户的信息的浏览查看,修改及删除等功能,同时完成了足球场等场地信息的浏览、增添、修改、删除等功能。
前台参与了主界面的设计与实现,通过查询数据库得到主界面显示所需场地的相关信息,通过这样,用户可以很清楚的获知所有可预订场地的信息,其主界面上的所有关于场地的数据都是动态从数据库获取的,这样当场地增添或删除时通过修改数据库可以很方便的实现界面呈现给用户的场地信息,能够很好的使实际情况跟提供给用户的信息保持同布,非常利于场地信息的管理和发布。
二、个人工作体会西安石油大学
时间过得真快,不知不觉中近一个月的课程设计就要结束了。本次课程设计我们组做的题目是场地预约系统,先前选题的'时候以为它实现起来应该比较简单,在通过后边的具体分析之后才发现它并不是我所想象的那样简单,其中涉及许多问题我当时并没有想清楚。
经过我们小组的共同努力,最终基本上完成了场地预约系统的实现。虽然做的不是很完美,不是特别有创意,但这是我们共同努力的结果,当我们看着自己亲自完成的项目觉得很欣慰。
通过这次课程我对前边多学的知识有了进一步的认识与掌握,使我进一步认识到课本所学知识与实际应用是不一样的,在实际应用中需要你去针对具体的问题去灵活的变通处理,而并不总是和课本上的知识一样。同时,我深感只有通过具体项目的实践,才能更好的掌握所学知识,并进一步的融会贯通。
这次课程设计使我深刻认识到了一个项目的实现最重要的还是需求分析而不是代码的实现。在此次场地预约管理系统的实现过程中,我们就是因为期初对本系统的需求分析工作没有做到位致使表结构的建立存在不少问题,进而导致后边在代码的实现过程中又重新回来修改数据库的表结构。这样就不得不对已经实现的代码进行修改,这个过程将会是一个相当让人头疼的过程。一个系统的实现关键的不是代码的编写,而是设计,只有设计合理了,在后边代码实现的过程中才不会遇到问题,才不会像我们这次那样需要反复的修改。
本次课程设计使我再次认识到了团队协作的重要性,一个人的能力毕竟是有限的,而大家的力量无穷的,有时候一个很小的问题,自己怎么也看不出来,叫别人来帮着看一下可能马上就能得到解决。团队成员之间的互相合作可以使问题得到更好的解决,并且在其过程中能够进一步的相互学习到更多的知识。当然,通过本次我也深知道自己相关专业知识掌握的还很不够,在代码的实现过程也存在诸多问题,对很多的语句语法了解不是很到位,不能很好地运用,需要进一步的学习与掌握。
总的来说,本次课程设计使我对软件开发有了进一步的认识,学到了很多知识。这将对我以后的工作学习产生重要的意义!
20xx年7月23日,我有幸成为公司一员。我进入公司也快6个月,回首过去的几个月中我也感受到不少的喜悦,尤其在公司度过的时间让我难忘。因为在领导的指导下,同事大力的帮助下,客服了不少困难,因此我也成长了不少。可以说是虚心学习,努力工作,以团队的利益和进度为中心是我一直坚守的原则。虽然说在这短短的几个月中没有辉煌的成果,也算是经历了一段不平凡的考验。因为我在公司感受到了团队的力量,同时也让自己更适合团队工作,尤其是我在技术方面更是突破不少,从以前的认识与了解到今天的熟练,想到此内心无比高兴。尤其是刚进公司的两个月,想想当时的我是多么的笨拙和弱小,因为进入公司以后对于公司需求和业务流程不是很熟悉。在同事不断帮助和指导下让我迅速提升起来以适应公司需求,以至于后来的工作做得非常舒心愉快。
20xx年度个人主要工作内容和任务的完成情况
20xx年度,我的主要工作集中在产品研发及优化领域,现将参与的主要工作内容和任务的完成情况总结如下:
一、新人学习
对公司的整体状况和运营模式进行了解,重点针对合同管理系统的适用领域、场景以及客户群体、一般性需求进行学习。熟悉公司技术团的工作模式、编码规范和研发管理控制流程。通过对公司产品关注领域和业务流程的学习以及研发规范的了解,梳理了技术学习主线,制定了具体的'学习目标和时间计划为技术研发工作奠定了基础。
二、公司平台的研发
参与了平台的部分功能研发,主要参与以下功能模块的代码编制、优化和初步的功能验证测试:系统平台对接浪潮系统、系统对接审批事项清单模块,系统管理模块,筹备成立模块、成立登记模块、分支机构管理、组织管理、注销信息管理、变更信息管理等等。在研发中,按照团队规划完成了个人的任务并按照编码规范进行了源码优化。对于部分编码进行分析和重构,对于部分功能模块进行了效率优化和源码简化,提升代码的可读性、可复用性、可移植性。整个研发过程,积极融入团队,提升技术水平的同时进一步加深了对公司产品业务的理解。
三、公司产品平台的优化
参与产品平台的优化。使用技术方法通过重构改进了产品的运行效率。从构建模式、实现方法、代码风格上进行了多方面的知识整理、分析和优化。并以此为契机,强化了效率优化的意识,学习了效率优化的方法,同时,增强了研发中兼顾效率的意识。
20xx年度个人取得的成绩和经验
20xx年是我进入公司的第一年,无论是对于生活阅历还是工作经验以及技术知识都取得了很大的成效与进步。在公司的几个月里我着实成长了许多,尤其是对专业知识技能的提升、此外还增长了一些对行业的认识以及开发流程。
20xx年度个人工作中存在的问题和不足及改进方法
刚进公司的时候我面临很多问题,在工作中遇到非常多棘手的问题,不断请教前辈们.有了他们的帮助和自己坚持努力,我发现我所遇到棘手问题越来越少,就这样我从一个新人慢慢变成一个可以担当一面的团队成员,我再也不怕遇到问题。在未来的一年里我应该多锻炼自己表达能力和加强对普通话的学习,其次,对于技术方面了解不够全面,不够广泛,好多技术都还处于一个熟悉、认知阶段。在未来的日子里我会给自己拟定一些目标和学习、提升路线,让自己技术以及各方面不断的提高。不让自己只局限于技术方面的提升与提高在工作中我体会到了坚持就是胜利,程序员必须有较强的适应能力和承受能力,需要不断的进行学习补充新的知识,只有不断的扩充、更新自己的知识才能应变技术的更新与发展。
提出目前公司存在的各方面问题及合理化建议
公司领导比较给力、很会照顾下属,同事之间也比较容易相处,团队互助性也比较强。但是我们公司对于技术上是不是应该增加一点技术储备方面东西。我希望公司能够一个强大知识库,比如某一天某个人解决了一个极难解决或者比较罕见的问题。有必要保存到知识库里,以备后续之人有一个学习认知的空间。
对自己20xx年度整体表现的客观评价
20xx年度是我在学习中不断总结经验、吸取教训、获得成长的年度。
本年度的工作中,我认真制定工作计划,按时完成工作任务并适时进行总结和分析,关注功能实现、代码规范、效率优化和用户体验。努力开展对本职工作所需专业技术学习,优化知识结构,并不断深化对合同管理业务的理解。团队建设上,我积极融入团队,努力营造良好的团队氛围,和同事关系融洽。
综上所述,对于20xx年的工作整体表现,我对自己的评定是满意的。
20xx年度工作计划安排
1.在原有体系不变动情况下,配合团队完成社会组织信息系统后续的开发。
2.加强自己工作中阐述问题的能力和分析能力以及解决问题的能力。
3.不断学习新的技术与知识,让自己更能适应新的需求发展变化,给自己制定一个短期目标以计划。
4.努力更正自己开发习惯,提升自己开发技巧。
5.了解技术以外的知识,摆脱自己“机器人”的概念。
20xx年7月23日,我有幸成为公司一员。我进入公司也快6个月,回首过去的几个月中我也感受到不少的喜悦,尤其在公司度过的时间让我难忘。因为在领导的指导下,同事大力的帮助下,客服了不少困难,因此我也成长了不少。可以说是虚心学习,努力工作,以团队的利益和进度为中心是我一直坚守的原则。虽然说在这短短的几个月中没有辉煌的成果,也算是经历了一段不平凡的考验。因为我在公司感受到了团队的力量,同时也让自己更适合团队工作,尤其是我在技术方面更是突破不少,从以前的认识与了解到今天的熟练,想到此内心无比高兴。尤其是刚进公司的两个月,想想当时的我是多么的笨拙和弱小,因为进入公司以后对于公司需求和业务流程不是很熟悉。在同事不断帮助和指导下让我迅速提升起来以适应公司需求,以至于后来的工作做得非常舒心愉快。
20xx年度个人主要工作内容和任务的完成情况
20xx年度,我的主要工作集中在产品研发及优化领域,现将参与的主要工作内容和任务的完成情况总结如下:
一、新人学习
对公司的整体状况和运营模式进行了解,重点针对合同管理系统的适用领域、场景以及客户群体、一般性需求进行学习。熟悉公司技术团的工作模式、编码规范和研发管理控制流程。通过对公司产品关注领域和业务流程的学习以及研发规范的了解,梳理了技术学习主线,制定了具体的学习目标和时间计划为技术研发工作奠定了基础。
二、公司平台的研发
参与了平台的部分功能研发,主要参与以下功能模块的代码编制、优化和初步的功能验证测试:系统平台对接浪潮系统、系统对接审批事项清单模块,系统管理模块,筹备成立模块、成立登记模块、分支机构管理、组织管理、注销信息管理、变更信息管理等等。在研发中,按照团队规划完成了个人的任务并按照编码规范进行了源码优化。对于部分编码进行分析和重构,对于部分功能模块进行了效率优化和源码简化,提升代码的可读性、可复用性、可移植性。整个研发过程,积极融入团队,提升技术水平的同时进一步加深了对公司产品业务的理解。
三、公司产品平台的优化
参与产品平台的优化。使用技术方法通过重构改进了产品的运行效率。从构建模式、实现方法、代码风格上进行了多方面的知识整理、分析和优化。并以此为契机,强化了效率优化的意识,学习了效率优化的方法,同时,增强了研发中兼顾效率的意识。
1、估算前的规划
当我们的办公室内堆满了杂乱无章的文件时,恐怕无法知道对于我们真正有用的文件在哪里,当我们的软件相目中收集了各种需求、意见、问题时,我们也很难从中估算出整个项目的规模、工作量以及成本。因此,在估算之前我们首先要对众多信息进行整理、归类分析,从而得到一个条理清晰的项目计划,在这个计划提供的框架内,才可能开始正确的估算。精心的规划是任何一个软件开发项目成功与否的关键,有了规划就有如成竹在胸,之后无论风云变幻,都有应对入流的方法。当然只有正确的规划,才能给软件开发指引正确的方向。
软件项目规划的重点是对人员角色、任务进度、经费、设备资源、工作成果等等做出合适的安排,制定出一些计划(包括高层的和细节的),使大家按照计划行事,最终顺利地达到预定的目标。
1.1、规划的第一步:确定软件范围
确定软件范围,就是确定目标软件的数据和控制、功能、性能、约束、接口以及可靠性。这项工作和需求分析是很类似的,如果之前已经达成需求分析规约,那么可以直接从《需求分析说明书》中把有用的部分拿来使用。如果还没有开始需求分析,关于确定软件范围的方法方面,我们可以采用许多需求分析技术(如需求诱导),从客户那里得到一个具体的软件范围。当然如果是一次全新的软件边界探索,就应当考虑软件本身可行性问题,包括团队是否具备在技术、财务、时间、资源上游可靠的保障,软件本身在市场上是否有可靠的竞争优势,等等。
获得软件范围,最直接最可靠的来源就是用户对软件的需求描述。例如,在开发一个C/S架构的铁路供电段数据上报系统中,客户向我们提供了以下的目标软件需求描述:
在供电站总部每天结束前要审核下属节点操作员(30~40个)的供电安全数据报表,要求每个节点必须在下午5:30~6:00之间上传数据。总部系统通过自动分析,整理出整个区内的安全形势报表,并自动反馈到每个节点。各个节点之间通过调制解调器拨号(MODEM)用内部电话线相连,每个节点电脑主机配备一个MODEM。上传数据为制式报表出了制式信息外,系统自动附加操作员姓名、上报时间、上报节点名称。信息一旦上传,节点端就不可以对已提交信息进行修改、删除,只能阅读、查询。节点间数据互相隔离,只有总部才具备对各个节点数据的管理权限,但是对于归档数据(一旦审核完毕的数据,就进行归档)总部不具备删改的权限。系统设置数据库管理员,独立于审核权限,其职责是对历史数据的清理维护。
通过上面的描述,我们通过提炼和简化,得到软件的一下功能:
节点数据录入、查询、上传
总部数据汇总、查询、反馈
总部与节点的互联项目管理培训
总部数据库存储
节点数据的本地存储项目管理论坛
在本例中,软件的性能是潜在的。客户虽然没有明确提出,但是由于数据本身的重要性,要求系统在数据上传、反馈、存储过程中安全可靠。客户要求使用MODEM进行拨号连接,那么鉴于MODEM连接过程中可能会出现,由于拨号断开而道导致的数据丢失,在节点本地存放一份数据副本是有必要的。由于系统要求每天上传数据,总部数据库应当是7X24小时不间断服务的,再加上目前总部只有该系统运行接受数据任务,各节点数据量并不大,那么在建议用户选择服务器时,应当考虑性能稳定可靠,但并不一定要购买大容量磁盘阵列和高性能双CPU主机。由于每天上传数据接近下班时间,那么总部汇总数据应当是自动进行的,一旦分析发现重大问题,可以通过与外部网络的设置,向值班人员发送手机讯息、E-MAIL或其他警示。由于不同人员对于上报数据的权限不同,对于系统用户实行分级管理。不同级别的用户,具有对数据的不同管理权力,从而保证在软件使用过程中不发生混乱。
那么现在一个较为清晰的软件模型已经构造完毕,接下来我们需要进入计划的第二步:确定工作所需资源。
1.2、规划的第二步:确定工作所需资源
软件工作所需资源包括:工作环境(软硬件环境、办公室环境)、可复用软件资源(构件、中间件)、人力资源(包括不同各种角色的人员:分析师、设计师、测试师、程序员、项目经理……)。这三种资源的组成比例,可以看作一个金字塔的模式,最上面是人力资源、其次是可复用软件资源、最下面是工作环境。最上面的是组成比例最小的,最下面的是组成比例最大的部分。
■人力资源
一个项目到底需要多少种职务的人员构成、多少数量的人员总量,再能成为最有创造力的团队呢?这恐怕是最让项目经理头疼的事情了。任何一个软件工程,都必须在确定软件的工作量之后,才能清楚地知道究竟需要多少人力才能以最小成本和最高效率完成任务。在这之前,不能盲目地进行人力扩充,而且绝对不能为了给公司抬高门面,盲目招收高学历。
■可复用软件资源
这是一个容易在计划阶段被忽视的重要资源,很多人总是进入编码阶段才发现可复用资源的价值和存在。经过长期的项目积累或是购买,公司的软件资源库中或许已经积累了大量的可复用资源,但在当前任务中,只能选择有价值的资源。根据不同的应用、时间、来源,可复用软件资源被分为以下几种:
可直接使用的构件:已有的,能够从第三方厂商获得或已经在以前的项目中开发过的软件。这些构件已经经过验证及确认且可以直接用在当前的项目中。
具有完全经验的构件:已有的为以前类似于当前要开发的项目建立的规约、设计、代码、或测试数据。当前软件项目组的成员在这些构件所代表的应用领域中具有丰富的经验。因此,对于这类构件进行所需的修改其风险相对较小。
具有部分经验的构件:已有的为以前与当前要开发的项目相关的项目建立的规约、设计、代码、或测试数据,但需做实质上的修改。当前软件项目组的成员在这些构件所代表的应用领域中仅有有限的经验,因此,对于这类构件进行所需的修改会有相当程度的风险。
新构件:软件项目组为满足当前项目的特定需要而必须专门开发的软件构件。
在采用构件的时候,应当以低成本、低风险为使用前提。如果任何一个漂亮的构件的应用,可能会带来潜在出错的风险或者必须经过复杂修改或者效率低下时,我们都应当毫不犹豫地把它抛弃。我们只采用那些能够满足项目的需要且可直接使用的构件,或者具有完全经验的构件,或者经过稍微修改便可使用的构件。项目经理博客
■环境资源
“工欲善其事,必先利其器”,要得到高效的开发过程,就必须向工作人员提供良好的软硬件环境,包括开发工具、开发设备、工作环境、管理制度。一般管理人员都会购买可以满足需要的软件开发工具和硬件平台,但是工作环境和管理制度往往被忽视。项目管理者联盟
站在人件的角度看,向工作人员提供更轻松自在、安静舒适的办公环境的公司员工往往比整天在狭小隔间中工作的公司员工,产生更高的工作效率。而那些拥有灵活人性化的管理制度的公司,比整天加班的公司更能留住高技术的人才。所以如何在有限资金中,规划一个合理的环境是很重要的事情。转
到此为止,估算前的项目计划已经完成,我们已经形成一个工程开发框架。这是一个有界限的框架,虽然还不够精确,但足以进行估算的工作。
2、估算的对象
目前为止,一个较为准确的软件项目估算的定义是:在给定公差范围内,对于姚开发的软件规模的预测,以及对开发软件所需的工作量、成本和日历事件的预测。这个概念指出了一个事实,即估算是一种大约的估计,是将误差限定在一定范围内的估计。
估算主要包括以下几个重要内容:
规模估算
软件估算首先要将整个工程的规模估算出来,才能进行下面的其他估算。规模,就是一个工程可量化的结果,是用具体数字来体现项目的描述。规模估算的信息来源是清晰、有界限的用户需求。
工作量估算
这是对开发软件所需的工作时间的估算,它和进度估算一起决定了开发团队的规模和构建。通常以人时、人天、人月、人年的单位来衡量,这些不同单位之间可以进行合理的转换。
进度估算
进度时项目自始至终之间的一个时间段。进度以不同阶段的里程碑作为标志。进度估算是针对以阶段为单位的估算,而不是对每一个细小任务都加以估算,对任务的适当分解很重要,分解得越细反而会不准确。因为任何一个软件工程,在各个方面都有与生俱来的不确定性。
成本估算
包括人力、物质、有形的、无形的支出成本估算,其中以人力成本为主要部分。比较容易被忽视的使学习成本、软件培训成本、人员变动风险成本、开发延期成本等,一些潜在成本消耗。
3、估算的策略
在软件估算的众多方法中,存在着“自顶向下”和“自底向上”两种不同的策略,两种策略的出发点不同,适应于不同的场合使用。项目管理培训
3.1、自顶向下的策略
这是一种站在客户的角度来看问题的策略。它总是以客户的要求为最高目标,任何估算结果都必须符合这个目标。其工作方法是,由项目经理为主的一个核心小组根据客户的要求,确定一个时间期限,然后根据这个期限,将任务分解,将开发工作进行对号入座,以获得一个估算结果。项目管理者联盟文章
当然由于这完全是从客户要求出发的策略,而由于软件工程是一个综合项目,几乎没有哪个项目能完全保质保量按照预定工期完工,那么这样一个策略就缺少了许多客观性。但是由于这样完成的估算比较容易被客户、甚至被项目经理所接受,在许多公司我们看到这样一个并不科学的策略仍然被坚定地执行着。项目管理培训
3.2、自底向上的策略
与自顶向下的策略完全相反,自底向上的策略是一种从技术、人性的角度出发看问题的策略。在这样一个策略指引下,将项目充分讨论得到一个合理的任务分解。在将每个任务的难易程度,每个任务依照项目成员的特点、兴趣特长进行分配,并要求进行估算。最后将估算加起来就是项目的估算值。
显然自底向上的这种策略具有较为客观的特点,但是它的缺点就是这样一来项目工期就和客户的要求不一致了。而且由于其带来的不确定性,许多项目经理也不会采用这种方法。项目经理圈子
4、估算的方法项目管理者联盟
显然估算是建立在客观实际上,对未来尽可能合理的一种预测。那么估算本身的不确定性,决定了它不可能是百分之百准确无误的。在项目刚开始时,人们对产品需求、技术、市场预期、人员素质等因素的了解还远远不够,在这种情况下人们很难作出准确的估计。但是依据某种方法进行估计显然比瞎猜好得多。项目管理者联盟文章
估算方法有很多,大致分为基于分解的技术和基于经验模型两大类。基于分解的技术的方法包括功能点估算法、LOC估算法、MARKII等;基于经验模型的方法包括IBM模型、普特南模型、COCOMO模型等。
4.1、FP功能点估算法项目管理论坛
功能点估算法是一种在需求分析阶段基于系统功能的一种规模估计方法。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。这种方法的计算公式是:功能点=信息处理规模x技术复杂度。信息处理规模包括各种输入、输出、查询、内部逻辑文件数、外部接口文件数等等;技术复杂度包括性能复杂度、配置项目复杂度、数据通信复杂度、分布式处理复杂度、在线更新复杂度等等。项目管理论坛
4.2、LOC估算法
这是一种从技术的角度来估算的方法总称,其中又包含许多方法。这类方法以代码(LOC)作为软件工作量的估算单位,在早期的系统开发中较为广泛使用。基于LOC的估算,又有点也有缺点。优点在于方便计算、容易监控、能反映程序员的思维能力;缺点在于代码行数的含糊不清,不能正确反映一项工作的难易程度以及代码的效率。因此在传统的LOC方法进行了许多改进。其中不断被使用,且不断演化的方法包括以下:
PERT功能点估算法:PERT对各个项目活动的完成时间按三种不同情况估计:一个产品的期望规模,一个最低可能估计,一个最高可能估计。用这三个估计用来得到一个产品期望规模和标准偏差的Pert统计估计,Pert估计可得到代码行的期望值和标准偏差SD。项目管理论坛
类比估算法:类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目,通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。
Delphi估算法:Delphi法是一种专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来,新技术与特定程序之间的差别。对于需要预测和深度分析的领域,依赖于专家的技术指导,可以获得较为客观的估算。通过专家们的互相讨论,还可以博取众长
系统分解:将系统分成若干个易于用LOC估算的部分,将其各个估算结果累加就是LOC的总规模。其中关键是建立起SBS(系统分解结构),它描述了系统的不同组件。SBS还被使用在其他重要的地方,如系统设计、系统分析等。在进行分解的时候,可以采用自由讨论的形式,可以获得更合理的SBS构成。项目经理圈子
4.3、IBM模型估算法
该模型是Watson和Felix在1977年的,是基于IBM联合系统分布负责的60个项目的总结而得到的模型。该模型是一个静态模型,而参考数据只有60多个项目,因此有很大的局限性。
4.4、COCOMO估算法转自项目管理者联盟
Boehm在其经典著作“软件工程经济学”(softwareengineeringconomics)中,介绍了一种软件估算模型的层次体系,称为COCOMO(构造性成本模型,COnstructiveCOstMOdel),它代表了软件估算的一个综合经验模型。项目经理博客
COCOMO模型是适用于三种类型的软件项目:(1)组织模式——较小的、简单的软件项目,有良好应用经验的小型项目组,针对一组不是很严格的需求开展工作(如,为一个热传输系统开发的热分析程序);(2)半分离模式——一个中等的软件项目(在规模和复杂性上),具有不同经验水平的项目组必须满足严格的及不严格的'需求(如,一个事务处理系统,对于终端硬件和数据库软件有确定需求);(3)嵌入模式——必须在一组严格的硬件、软件及操作约束下开发的软件项目(如,飞机的航空控制系统)。
4.5、软件方程式估算法项目管理论坛
软件方程式是一个多变量模型,它假设在软件开发项目的整个生命周期中的一个特定的工作量分布。该模型是从4000多个当代的软件项目中收集的生产率数据中导出的公式。初期的方程式较为复杂,通过,Putnam和Myers的努力又提出一组简化的方程式。当然这种方法也是基于长期的参考数据的积累而得到的。
4.6、WBS估算法w
这是一种基于WBS(工作任务分解)的方法,即先把项目任务进行合理的细分,分到可以确认的程度,如某种材料,某种设备,某一活动单元等。然后估算每个WBS要素的费用。采用这一方法的前提条件或先决步骤是:项目管理者联盟
对项目需求作出一个完整的限定。
制定完成任务所必需的逻辑步骤。
编制WBS表。
项目需求的完整限定应包括工作报告书、规格书以及总进度表。工作报告书是指实施项目所需的各项工作的叙述性说明,它应确认必须达到的目标。如果有资金等限制,该信息也应包括在内。规格书是对工时、设备以及材料标价的根据。它应该能使项目人员和用户了解工时、设备以及材料估价的依据。总进度表应明确项目实施的主要阶段和分界点,其中应包括长期定货、原型试验、设计评审会议以及其他任何关键的决策点。如果可能,用来指导成本估算的总进度表应含有项目开始和结束的日历时间。
除了以上介绍的几种方法外,还有一些其他的方法:类比估算、推测估算、Standard-component估算法、普特南估算法等。当然不同的方法适用于不同的具体环境,有些方法虽然很好但并不一定适合当前的任务。只有量体裁衣,具体问题具体分析,才能得到尽量合理的估算。
5、估算的戒律项目管理者联盟
记住:应该满足于事物的本性所能容许的精确度,当只能近似于真理时,不要去寻求绝对的准确——亚里斯多德
对于任何一个项目经理,都知道要慎重估算,但是我们仍然会看到人力资源的浪费和财力资源的匮乏,在许多项目中存在。对于宝贵的资源,我们不是用得太多,就是根本不够用。因此,有以下前人总结出来的一些经验以供借鉴。
不要追求完美:就像没有人能预测出未来,如果还没有完成,就不要企图完美的结果。更何况估算的太精确,反而会失去灵活机动的空间。
不要为满足预算而估算:如果这个项目的预算根本不能完成100%的任务,那么就不要让你的团队委曲求全。正确地反映客观现状,不仅可以争取应得的权利,而且是完成任务的前提。
不要随意削减估算结果:有很多老板喜欢把项目经理递交的估算,不假思索地砍掉一部分。这是一种不负责任的做法,如果要削减一定要有理由。
客观地估算,不贪多不偷减:就像老板不能随便削减你的估算一样,你也同样不能在估算的时候,贪多或是偷减。贪多必然导致会浪费,偷减必然导致不足。这两个结果恐怕都不是一个合格的项目经理的作为。
客观利用过去的经验:对于以往估算的经验,当然是宝贵的财富,但是如果财富用错了地方就会变成垃圾。在使用经验时,要注意现在和参考经验之间的差异。不要忘记,随着时间的推移,计算机领域技术的更新,许多观念都在发生着改变。项目管理培训
对软件项目的管理者来说,他最应该关心的是能否按时优质地交付产品的问题。在计划软件开发的路线时,他必须首先考虑软件基本功能的实现和工程交付期,其次,才考虑产品的卖点,许多工程失败的原因就在于设计者没有时间概念,工程前松后紧或增加了许多次要的技术特征,这样反而对产品质量形成了威胁,总之,最重要的是懂得统筹安排各个环节。
面试程序员理想的方法是由开发小组的其他成员一起来面试,如果谁看不上眼,他都不能加入,否则以后会有很多麻烦。这样做的另一个好处是借此机会互相认识一下,经理一定要把新员工介绍给大家,并且小组每个员工都应该过来握手介绍自己,这是起码的招聘礼节。
程序员需要关心尊重
曾经有个例子,某公司开发人员王某由于刚开始学习编程,技术水平差一点,常常受到经理的“另眼相看”,每次软件出现了问题都怀疑是他的原因,老开他的低级玩笑,这位员工会有怎样的表现就可想而知了。经理通过这种手段能够迫使这一位自动辞职吗?非也,这位员工后来工作非常不负责任,把代码写得既长又重复,且在代码中留下大量的隐患,此时,经理却反而不敢过份得罪他了(否则,留下的巨量代码很难维护)。如果认为某人不适合目前工作,为何不另请高明?既然已经请他作了这件工作,就得尊重他。不能指望开发人员在非工作场合谈吐得体、办事周到、眼观六路、耳听八方,正所谓“尺有所短,寸有所长”,例如要求技术人员在酒席宴上象公关小姐或公关先生一样举止适度,从来不会有好的效果。软件人员普遍喜欢自由而宽松的工作环境,最好不要做过多的无谓的规定,例如不准迟到、上班必须换拖鞋,否则罚款等等。如果确实有人经常上班迟到,工作不认真等,首先应该了解原因,此时多作思想工作是必要的,许多公司的经理们认为“思想工作”是过时的东西了,其实不然,私企职工背负的心理压力其实很重。他们特别需要有人关心,特别需要心理上的“减负”。管理需要合理地使用资金,有的公司在不该花钱的时候花钱,在需要花钱的时候节支,结果却事倍功半。例如,员工向公司提出买台电视、热水器、电风扇等生活设施(甚至是厕所的纸巾)时,公司强调节支,而在组织大家集体乘飞机到外省旅游这种事情上却舍得花钱,这种现象比较普遍,效果却不一定好,因为员工会认为公司集中花一笔钱是在收买人心。所以,关心职工的事情需要过细地作。
心态调整问题
作坊式作业的时候,软件是由一两个程序员写的,软件写完了,虽然在产权上这个软件或许不是自己的,但程序员心里会觉得这个软件就是自己的,对这个软件的感情就象对自己的儿子一样,关于这个软件一切成败荣辱都被看成是自己的,在这种心态下,程序员会不分白天黑夜地超常投入。而现在的软件一般都是十几人、几十人甚至上百人协作完成,软件写成后究竟是谁的?有了荣誉是谁的?都不是太明确,同样,软件有点毛病也不专是哪个人的,而是大家的,既然是大家的事情,那就让大家来做,我为什么多操那个心?如何在大协作的背景下最大限度地提高个人的积极性很值得仔细研究。设计部分大家参与、多开会交流、让程序员直接倾听用户对自己工作的意见等方法不妨一试。
20xx年7月23日,我有幸成为公司一员。我进入公司也快6个月,回首过去的几个月中我也感受到不少的喜悦,尤其在公司度过的时间让我难忘。因为在领导的指导下,同事大力的帮助下,客服了不少困难,因此我也成长了不少。可以说是虚心学习,努力工作,以团队的利益和进度为中心是我一直坚守的原则。虽然说在这短短的几个月中没有辉煌的成果,也算是经历了一段不平凡的考验。因为我在公司感受到了团队的力量,同时也让自己更适合团队工作,尤其是我在技术方面更是突破不少,从以前的认识与了解到今天的熟练,想到此内心无比高兴。尤其是刚进公司的两个月,想想当时的我是多么的笨拙和弱小,因为进入公司以后对于公司需求和业务流程不是很熟悉。在同事不断帮助和指导下让我迅速提升起来以适应公司需求,以至于后来的工作做得非常舒心愉快。
20xx年度个人主要工作内容和任务的完成情况
20xx年度,我的主要工作集中在产品研发及优化领域,现将参与的主要工作内容和任务的完成情况总结如下:
一、新人学习
对公司的整体状况和运营模式进行了解,重点针对合同管理系统的适用领域、场景以及客户群体、一般性需求进行学习。熟悉公司技术团的工作模式、编码规范和研发管理控制流程。通过对公司产品关注领域和业务流程的学习以及研发规范的了解,梳理了技术学习主线,制定了具体的学习目标和时间计划为技术研发工作奠定了基础。
二、公司平台的研发
参与了平台的部分功能研发,主要参与以下功能模块的代码编制、优化和初步的功能验证测试:系统平台对接浪潮系统、系统对接审批事项清单模块,系统管理模块,筹备成立模块、成立登记模块、分支机构管理、组织管理、注销信息管理、变更信息管理等等。在研发中,按照团队规划完成了个人的任务并按照编码规范进行了源码优化。对于部分编码进行分析和重构,对于部分功能模块进行了效率优化和源码简化,提升代码的可读性、可复用性、可移植性。整个研发过程,积极融入团队,提升技术水平的同时进一步加深了对公司产品业务的理解。
三、公司产品平台的优化
参与产品平台的优化。使用技术方法通过重构改进了产品的运行效率。从构建模式、实现方法、代码风格上进行了多方面的知识整理、分析和优化。并以此为契机,强化了效率优化的意识,学习了效率优化的方法,同时,增强了研发中兼顾效率的意识。
20xx年度个人取得的成绩和经验
20xx年是我进入公司的第一年,无论是对于生活阅历还是工作经验以及技术知识都取得了很大的成效与进步。在公司的几个月里我着实成长了许多,尤其是对专业知识技能的提升、此外还增长了一些对行业的认识以及开发流程。
20xx年度个人工作中存在的问题和不足及改进方法
刚进公司的时候我面临很多问题,在工作中遇到非常多棘手的问题,不断请教前辈们.有了他们的帮助和自己坚持努力,我发现我所遇到棘手问题越来越少,就这样我从一个新人慢慢变成一个可以担当一面的团队成员,我再也不怕遇到问题。在未来的一年里我应该多锻炼自己表达能力和加强对普通话的学习,其次,对于技术方面了解不够全面,不够广泛,好多技术都还处于一个熟悉、认知阶段。在未来的日子里我会给自己拟定一些目标和学习、提升路线,让自己技术以及各方面不断的提高。不让自己只局限于技术方面的提升与提高在工作中我体会到了坚持就是胜利,程序员必须有较强的适应能力和承受能力,需要不断的进行学习补充新的知识,只有不断的扩充、更新自己的知识才能应变技术的更新与发展。
提出目前公司存在的各方面问题及合理化建议
公司领导比较给力、很会照顾下属,同事之间也比较容易相处,团队互助性也比较强。但是我们公司对于技术上是不是应该增加一点技术储备方面东西。我希望公司能够一个强大知识库,比如某一天某个人解决了一个极难解决或者比较罕见的问题。有必要保存到知识库里,以备后续之人有一个学习认知的空间。
对自己20xx年度整体表现的客观评价
20xx年度是我在学习中不断总结经验、吸取教训、获得成长的年度。
本年度的工作中,我认真制定工作计划,按时完成工作任务并适时进行总结和分析,关注功能实现、代码规范、效率优化和用户体验。努力开展对本职工作所需专业技术学习,优化知识结构,并不断深化对合同管理业务的理解。团队建设上,我积极融入团队,努力营造良好的团队氛围,和同事关系融洽。
综上所述,对于20xx年的工作整体表现,我对自己的评定是满意的。
2020xx年度工作计划安排
1.在原有体系不变动情况下,配合团队完成社会组织信息系统后续的开发。
2.加强自己工作中阐述问题的能力和分析能力以及解决问题的能力。
3.不断学习新的技术与知识,让自己更能适应新的需求发展变化,给自己制定一个短期目标以计划。
4.努力更正自己开发习惯,提升自己开发技巧。
5.了解技术以外的知识,摆脱自己“机器人”的概念。
个人职业生涯规划
一、短期目标(提升专业技术水平、掌握解决问题的方法)
合理规划自己时间,给自己制定一个工作之余的学习计划,学习目标,在工作不断吸取经验教训加以总结汇总,不断更正自己工作习惯。
二、长期目标(专注改进薄弱环节,掌握提升效率的技巧,深化业务理解)
在不断巩固自己专业知识前提下,加深对业务的理解能力、分析能力、主导能力、不断充实自己各方面知识技能,强化自己薄弱环节。做一个合格高级软件工程师。
开一次这样的会不容易,这应该是信息部两年来人员最全的一次会议。外地的同事很辛苦的千里迢迢赶过来,希望大家珍惜这个机会,好好的沟通和交流,使以后的工作进行的更顺利!
时间过的很快,很快又到了年底,一年的工作即将成为历史。在这里我将对我20xx年的工作进行一个简单的总结及对20xx年的工作进行一个简单的规划。
一:)美容院财务系统:
1)及时的修改在办公例会中提出的相关系统问题以适应公司业务的发展;
2)根据财务部的需求,在系统中增加各种相应的汇总及明细报表,减少了财务部相关的手工单据,更直接的从系统中取数、打印,更好的提高了财务部的工作效率;
3)从4月到5月中,经过一个半月的努力,最终完成了美容院财务系统的分布式操作,相比去年的分布系统更加稳定、准确;
4)在系统中增加了客户经理操作美容院财务系统的权限(点菜系统),相应的减轻了一线运营的工作以及让客户经理更好的管理好自己的客户;
5)在系统中增加了护理记录的自动输入功能(即在财务系统中的交款、开卡、消费等操作记录自动录入到美容院业务系统中),从而减轻了一线前台的工作;
6:)在OA系统中嵌入美容院财务系统中各店院业绩汇总报表,以方便相关领导及时的了解到公司的运行状况。
二:)美容院业务系统:
1)在系统中增加客户尺寸测量及相关提醒功能,以更好的了解到顾客护理后相应的效果对比;
2)在系统中增加投诉处理功能,更好的处理了法务部、财务部及一线运营相关部门的投诉处理的协调;
3)业务系统数据库电话号码加密(系统中对电话号码的操作进行加密及对电话号码解密的显示,实施时对电话号码的批处理加密);
4)修改系统中相关运营的操作(修改客户来源、咨询产品及客户资料的合并,相应的减轻本部门相关人员的工作)。
20xx工作规划及打算
继续维护及更新美容院财务管理系统、美容院前台业务管理系统,及时更新相关人员对系统提出的需求;财务系统各市场系统的合并操作及显示、财务系统与人事系统的相关对接、财务系统中集团报表的显示、用友系统中凭证与财务系统中数据的对接…
与自己工作相关的问题:
总结20xx年,对于自己感受更多的是忙、压力、成就。
忙:20xx年说起来应该算是很忙的一年,系统不停的修改,修改完一个功能后面还有很多的需求等着自己去做,想找到一点空闲的时间很难。
压力:看看未来的工作规划,有个时候听别人说修改完这个需求后可以减轻别人的工作,总让自己感觉到很大的压力。系统的稳定性、数据的准确性,对于公司两个重要的系统来说表现的尤为重要,虽说这两个系统还算稳定,但是还是避免不了一些问题,总给自己带来一些压力,这也是以后的重点改进,以确保更高的稳定性。
成就:当自己接到系统的一个需求后想到能够给别人的工作带来方便、简化,即使再累也要以自己最快的速度最完善的完成,当完成后自己感觉很有成就感。
关于我们软件组,我们每一位同事都是很优秀的,我们几个人一年内开发那么多的系统。对于网络组的同事,你们有个时候会存在一些抱怨,说软件不稳定、报错,也许是我们的开发时间太短,很多的细节问题没有考虑到!我知道我们的同事也很忙,但请我们的同事不要急躁,详细的记录好错误信息,看清楚错误提示,有时对于一线反馈过来的错误希望大家能够确认好(因为有时一个简单的错误提示会被她们描述成系统使用不了),希望网络组的同事确认是否存在该软件上的错误,以至于我们能够及时的处理好!而我们能做的也就是及时的处理问题,提高系统的稳定性、错误,减少网络组同事不必要的麻烦!对于我们软件组的同事(包括我),要及时的处理好错误,找到错误的原因,希望下次不要再出现同样的错误!站在我们软件开发的立场上,虽说软件的错误是不可避免的,但我们可以把它降低到最小!
当我们接到一个软件需求的时候,不要把它想的很简单,我们尽可能的可以把它考虑到很复杂,这样我们就可以考虑到更多的细节,比如限制一些相关错误的输入。有个时候软件是出现的不合理数据,我们不可以认为是是操作员的错误,相反我们要想到是自己的错误,站在软件思想上,是我们做的不够,没注意细节,给网络组人员带来了不必要的麻烦。所以包括我在内软件组人员要提高自身的软件技术,多创新,提高自身系统的稳定性,数据的准确性!
在20xx年前希望上完所有奈瑞儿店院的分布式财务系统,对各店内的所有服务器数据库设置密码,相关的系统中数据连接配置加密,以对20xx年的工作划一个圆满的句号。
20xx年我们继续努力。
论文关键词:软件过程;软件项目管理;流程管理
1引言
长期以来,软件项目高失败率的状况一直困扰着人们,研究表明,软件项目失败的原因主要有两个:一是应用项目的复杂性;二是缺乏合格的软件项目管理人才。实践证明缺乏有效的项目管理是导致软件项目失控的直接原因。软件开发的风险之所以大,是由于软件过程能力低,其中最关键的问题在于软件开发组织不能很好地管理其软件过程,从而使一些好的开发方法和技术不能起到预期的作用。
流程管理作为现代企业管理的先进思想和有效工具,随着市场环境与组织模式的变化,在以计算机网络为基础的现代社会信息化背景下越发显示出其威力和效用。流程管理不仅是一种管理技术,更体现了现代管理的思想。流程管理的重点是:理清和管理好所有主、支流程间的关系,使他们相互协调发挥应有的作用。流程管理增加了部门的透明度,管理的对象不是“部门”和“部门员工”的概念,而是以工序流程为管理对象,注重流程中每一个过程和效率以及和上下游工序的关系,管理重点在于整体流程的完整性和顺畅性。目前,流程管理技术的研究已越来越受到人重视。
运用流程管理方法和技术进行软件项日管理,可以有效地改变软件过程管理混乱的局面首先埘软件项目开发过程进行有效的、规范化的定义;其次,在软件项目开发过程中,所有的活动过程均按照流程所规定的活动的逻辑关系、活动的实现方式来执行,这样可以使得所有的`活动有序和可控;第三,通过明确运作流程,使项目组人员迅速融入项目和开发过程中;第四,关注每个过程的“结果”,使软件项目的所有工作产品均能得到有效的保存,保证了软件产品完整性。
2流程的概念及在软件项目管理中的作用
流程是由活动组成的。基本活动是由个人或团体来完成的,它不需要进行其他的基本活动的转化。流程的各个活动之间有着特定的流向,它包含着明确的起始活动与终止活动,因此是一个动态的概念。从结构上来看,流程有四个基本的构成因素:活动、活动的逻辑关系、活动的实现方式和活动的承担者。流程与“一系列的活动或事件”,“结果”等概念密切相关。流程管理不仅是一种管理技术,更体现了现代管理的思想,原有的以控制、塔式组织为基础的职能行政管理已经不能完全满足于现代企业发展和市场竞争的需要,管理的发展沿着分工理论运行了上百年后,现在又重新回归到整合与系统。
软件项目生命周期的一系列的开发过程是各种各样的流程活动:软件项目的计划编制、系统分析、慨要设计、详细设计、程序编码、测试与维护等活动过程都是一种流程活动:制定软件项目管理流程,重点考虑以下几点:
1)制定的流程能引导项目逐步走向成功;
2)制定的流程能适用软件开发过程;
3)制定的流程能指导项目开发活动.有利于对项日开发活动的管理;
4)制定的流程能以苴观的流程图表示.能使项目组成员清楚的知道软件开发与管理的过程和相互之间关系;
5)流程中的起始活动条件、终止活动条件明确、规范便于控制:
6)流程中的工作产品定义明确、可度趟,评价标准和方法具体、可操作
3软件项目管理总体流程设计
在软件项目开发管理过程中,不仪要努力实现项目的范围、时间、成本和质量等目际,还必须协调整个项目过程,以满足项目参与者及其他利益柑关者的需要和期望;随着软件规模和所涉及的领域不断地扩大,软件项目的管理越来越困难,纵观所有失败的软件项目.基本原因是不能管理其软件过程,在无纪律的、混乱的项目状态下,组织不可能从较好的方法和工具中获益。严谨的软件过程控制管理不仅可以在每个阶段回顾和纠正项目的偏差.别软件项目的风险甚至果断中止项目。且可以将人才流动所带来的不利影响减少到最小。要进行有效的过程控制,必须明确软件项目管理流程。
软件项目管理总体流程设计为项目搜寻、立项、售前合同生成和合同执行等5个主要阶段,分别以pl、p2、p3、p4、p5表示;同时设计了立项完成、合同签定、功能定义、软件开发、项目验收等5个里程碑,分别以tm1、tm2、tm3、tm4、tm5表示,如图l所示。在这些流程中,合同执行流程是软件项目管理的核心,其主要过程有:产品定义、软件开发、测试执行、内部验收、项目实施与验收、项目维护.
4软件项目管理总体流程分析
4.1项目搜寻
项目搜寻是项目立项的基础,项目搜寻阶段的主要任务包括市场信息收集,用户需求跟踪,对潜存的项目进行分析和筛选。
4.2项目立项
立项阶段的主要任务是确认立项的理由,提出立项建议,提供合适的资金和资源,使立项建议成为正式项目。
4.3项目售前
售前阶段从项目立项开始到项目合同的签定结束,主要工作有:制定与客户的交流计划,详细了解客户的背景资料,了解客户启动项目的缘由、目的和期望,编制项目方案建议书,准备合同蓝本。
4.4合同生成
合同生成阶段的主要工作有:项目方案的评估与确定技术合同、商务合同的商定、评估与签署。
4.5合同执行
合同执行是软件项目管理流程的重点,可分为软件开发、测试执行;内部验收、项目验收、系统维护等五个基本工作过程。
4.5.1软件开发
软件开发阶段分为:需求调研、系统分析、系统设计、编码、单元测试等过程。主要从三个方面进行管理:
1)制定项目计划。软件项目计划是一个用来协调所有其他计划,以指导项目执行和控制的可操作文件。它体现了对客户需求的理解,是开展项日活动的基础,也是软件项目跟踪与监控的依据。
2)确定开发过程。根据软件项目和项目组的实际情况,建立起一个稳定、可控的软件开发过程模型,并按照该过程来进行软件开发
3)加强过程控制一过程控制主要包括过程管理、变更控制和配置管理,、
4.5.2测试与执行
项目测试的目的是俭查系统是否符合项目合同与任务书规定的要求、项目测试分集成测试和系统测试,主要进行功能测试、健壮性测试、性能一效率测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等测试过程在模拟运行环境中进行。
4.5.3内部验收
项目完成集成测试和系统测试后进行项目内部验收.主要有三个步骤:①文档准备。项目经删提交内部验收计划、项目开发总结报告、产品清单:财务主管提交项目财务预算报告。②内部验收测试。内部验收测试的测试内容与方法虽然与系统测试基本相同.但应站在用户验收的角度进行,因为它是试运行的基础。通过这一步。为用户验收作充分的准备。③内部评审。对提交的所有文档及测试结果进行内部评审,完成项目开发总结报告:
4,5,4项目试运行与验收
试运行与用户验收阶段的主要任务是,使所有的工作产品得到用户的确认。主要工作有:①验收前的准备。项目经理负责检查产品的完整性。包括文卡当、介质和中间产品等,以确保现场实施的成功;负责应用软件的现场安装调试,完成安装调试总结报告;负责制定用户验收计划,并得到客户的确认。②用户进行验收测试和系统试运行,进行文档和系统的移交。③用户确认。项目经理负责与客户协测,协助用户进行项目验收,形成用户验收报告。
4 5.5项目维护
软件系统的维护分为两大类:一类是纠错性维护,由于前期的测试不可能暴露软件系统中所有潜在的和隐含的错误,诊断和改正这些错误的过程为纠错性维护。另一类是完善性维护,在软件正常使用过程中,用户还会不断地提出新的需求,为了满足用户新的需求而增加软件功能的活动称为完善性维护。如果需求变更很大,那完善性维护将转变为软件新版本的开发。系统维护的宗旨就是提高客户对软件产品的满意度。确保系统的正常运行是系统维护的根本目的。
4.6软件项目管理的里程碑
项目的考核与评审是软件项目管理流程控制的基础,我们在整个流程中设定五个基线,即确定五个里程碑,它们分别是tm1:立项完成;tm2:合同签订;tm3:产品功能定义完成;tm4:软件开发完成;tm5:验收通过。
如图1所示。各阶段的主要的进入条件和相应的工作结果是里程碑是否达到的重要标志。
5结束语
软件项目管理这门课程是我们软件工程专业学生的一门重要的课程,这门课程的开设必有其重要性。软件项目管理的提出是在20世纪70年代中期的美国。由于开发项目不能按时提交、超出预算、质量达不到用户的要求等原因,70%的项目出现问题。于是,软件开发者开始逐渐重视软件开发中的各项管理。软件项目管理和其他项目管理相比有相当的特殊性。首先,软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。其次,软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。因此,项目管理对软件生产具有决定性的意义。
只有相信团队合作才可能把项目做到最好,从整个项目的过程来看,团队合作中需要沟通、分工、协作和监督。只有做好这四项才算是一个好的合作团队。首先,团队合作最基本的技能就是沟通。沟通的目的就是让别人了解你的想法,因为每个人考虑问题的时候总会有各种各样的偏差,我们只有沟通很好的沟通来综合所有人的好的想法,以减少走弯路,而让事情进行的更顺利。因此我们也开了几次会议来互相了解沟通,当然最重要的是与项目经理的沟通。会议中他很认真负责地跟我沟通,我在沟通中用词不当或犯什么错误时,他都会指出来,并改正我的说法,因此单从与他的沟通中就学到了不少以后工作时将会用到的实在的知识。我们项目每人都是按照他给我们的计划提交相应的文件给他,但质量是参差不齐的,他都会进行审核,然后给出建议,让我们修改优化后,他才会通过。
我在此次课程中负责的部分是质量保证计划书,这是从未了解过的内容。从课程和书本上的知识不足以让我完成质量保证计划书,于是又从网上找了很多模板和每一小项是在说些什么内容来完成我们组的质量保证计划书。在这个过程中我学到了很多。我也感受到软件项目管理是一门非常需要学习的课程。它对软件工程项目的作用是至关重要的。现在,作为学生的我所做的项目虽然都是一些小的项目,但是在小组共同开发的时候还是需要用到项目的管理。如:人员的分配,时间、进度的计划,沟通计划,项目执行变更管理,以及质量管理控制等多种管理。我相信在今后的实习及工作当中,能更好的体验和感受到项目管理的精髓,对软件项目管理有更深入的了解。我也希望,学校的老师能够在今后的教学当中重视软件项目管理课程,多让学生了解实例,去感受、体会软件项目管理所遇到的问题和解决方案,理解软件项目管理的精髓。