《[其它]第3讲软件开发简介.ppt》由会员分享,可在线阅读,更多相关《[其它]第3讲软件开发简介.ppt(52页珍藏版)》请在三一办公上搜索。
1、1,教学视频:团队赛车,这个团队中有哪些人?这些人的特长是什么?如何挑选的?团队第1名与第5名之间的时间差距是多少?团队每天都在干什么?团队的动力是什么?,2,第3讲 软件开发过程简介,3,目的:,理解软件开发流程;了解软件开发项目的团队模型;了解软件团队的主要角色与责任;了解软件开发团队应具有的能力;理解软件开发过程中沟通问题;了解软件职业的发展。,4,一、软件开发流程,项目和产品软件开发流程开发流程的作用,5,1.项目与产品,6,2.项目开发工作流程,个性化开发阶段,合同阶段,软件维护阶段,标书分析,方案书写,合同签订,用户个性化需求规格书,概要/详细设计,编码及文档,单元测试,集成测试,
2、用户测试,产品化,软件安装,用户培训,项目结项、验收,7,3.产品开发流程,产品开发阶段,产品立项阶段,产品维护阶段,产品市场调研,产品立项申请,产品需求分析,产品总体设计,概要/详细设计,编码及文档,单元测试,集成测试,系统测试,产品化,产品维护,产品个性化修改,产品发行,产品结项,8,4.软件生命周期,软件生存周期是指软件从构思开始至软件退役为止的软件发生、发展直至软件退役(死亡)的整个生存周期。为开发高水平、高质量的软件(特别是大型软件),软件的开发和维护,需要有过程来控制和管理。,9,各种典型开发过程,最传统:瀑布模型演化模型螺旋形喷泉模型增量迭代模型RUPTSP、PSP、CMM,10
3、,可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义阶段,开发阶段,维护阶段,瀑布模型(Waterfall Model),11,5.流程的作用,把构造产品的工程活动按一定有序的方式组织排列起来。流程不是技术或工具,而是一种文化。例:ISO 9001:2000认证、CMM 认证,12,二、软件开发团队中的角色,软件企业的人才软件团队的角色软件开发团队示例,13,(1)人才在软件企业价值链中的地位,客户的业务问题或机遇。,帮助客户 实现业务价值的软件工具。,软件过程,软件企业,人才培养基地,帮助软件企业实施软件工程的人才。,1.软件企业的人才,14,(2)软件企业人才/知识结构,需求开发
4、人员,产品服务人员,软件客户,软件研发人员,企业管理人员,软件企业,业务领域知识,解决方案知识,企业运营知识,软件工程知识,15,(3)企业管理人员举例,人资管理人员,企业管理人员,行政管理人员,投资管理人员,运营监管人员,财务管理人员,16,(4)软件产品服务人员举例,产品服务人员,17,(5)需求开发人员举例,需求开发人员,18,(6)软件研发人员举例,软件研发人员,19,2.参与软件开发的主要角色,20,3.游戏软件开发团队的主要角色,1.开发团队开发主管开发工程师构造工程师2.测试团队测试主管测试工程师Beta测试员,3.美工团队艺术总监艺术家动画家游戏关卡设计师4.音频设计团队音频工
5、程师音乐总监、制片人5.其他技术人员项目经理游戏设计师,21,4.案例:大四的软件项目实践课中的角色,管理组 项目经理 开发组 设计师 系统分析师 程序员技术文档写作质保组 测试工程师配置组 用户组 用户代表,22,三、软件团队的组建,1.软件团队的首席程序员制(又名外科医生制),IT业广泛采用的。,23,外科医生副手队伍架构,外科医生。称之为首席程序员。他亲自定义功能和性能技术说明书,设计程序,编制源代码,测试以及书写技术文档。副手。他是外科医生的后备,能完成任何一部分工作,但是相对具有较少的经验。管理员。外科医生是老板,他必须在人员、加薪等方面具有决定权,但他决不能在这些事务上浪费任何时间
6、。编辑。外科医生负责产生文档出于最大清晰度的考虑,他必须书写文档。两个秘书。管理员和编辑每个人需要一个秘书。程序职员。工具维护人员。测试人员。外科医生需要大量合适的测试用例,用来对他所编写的工作片段,以及对整个工作进行测试。语言专家。随着新的开发语言的出现,人们开始认识到大多数计算机项目中,总有一两个乐于掌握复杂编程语言的人。,24,2.组建团队的方式,(1)从头开始组建团队好处:自己挑选成员缺点:在某种程度上倾向于选择与自己软件开发观点一致、价值观念相同的人。结果就容易产生这样一种危险,整个团队都有和项目经理一样的盲点。例如,如果项目经理不重视代码的文档编制问题,那么成员的代码就可能不会有文
7、档。,25,(2)项目经理被分配到一个已经存在的团队中,没有补充新人。原因:前一任经理可能离职,或是因为不服从管理、不作为或因为其他原因不胜任职位而被解雇了。团队现状:可能团队在几个星期都没有经理,一个团队成员可能变成事实上的经理。不利之处:团队中存在各种各样的意见和方法。,26,四、软件开发团队的工作方式,团队成员以流程为中心形成协作协作的方式有形产品的传递:文档,代码,可运行的子系统无形产品的传递:设计思想,文化,27,软件工程模型用一定的流程将各个环节连接起来,并可用规范的方式操作全过程,如同工厂的生产线。如采用常见的开发模型:线形模型(见下图)。,28,例:国家标准列出的文档,6给出的
8、种文档:)可行性分析(研究)报告)软件开发计划)软件测试计划)软件安装计划)软件移交计划)运行概念说明)系统子系统需求规格说明)接口需求规格说明)系统子系统设计(结构设计)说明)接口设计说明)软件需求规格说明)数据需求说明)软件(结构)设计说明,29,)数据库(顶层)设计说明)软件测试说明)软件测试报告)软件配置管理计划)软件质量保证计划)开发进度月报)项目开发总结报告)软件产品规格说明)软件版本说明)软件用户手册)计算机操作手册)计算机编程手册,30,团队开发所需要的各种开发规范,包括:项目组工作守则编码规范源代码控制规范界面设计规范数据库使用规范安装盘制作规范等。,31,案例:,印度的软件
9、业发展独树一帜,并形成了自己的软件开发技术与管理方法。我国一个知名度很高的IT企业在印度成立了一个研究所,在当地招聘工程师时进行笔试,让前来应聘的程序员用C 语言实现同一个功能。结果发现,众位应聘者写出来的代码如出一辙,连空行、缩进都惊人的一致。如果换了我们国家的程序员,则可能十个人十种写法,甚至还有人故意用高难语句实现,以显示他的水平。,32,五、IT项目的现状,1.一些数据有多达60%的项目成本是由于人员流动造成的;人们离开项目或离开公司的首要原因是管理;管理是项目成功最重要的因素。在软件项目中,成本平均超出预算189%;进度平均延期222%;平均有61%的系统与预期不符。,33,34,2
10、.主要原因,据Standish Group公司调查统计(见表1),在软件项目开发不成功的主要原因中,团队组织问题、缺乏协调、沟通不良、信息不畅通等涉及软件项目研发的软性问题占到了60%以上。也就是说,软件项目研究不成功更多的是由于软件公司团队组织建设出现问题造成的。因此,在软件项目研发过程中,软件公司在重视项目进度、费用、质量等硬指标时,更应关注公司项目团队的建设。,35,36,六、IT行业的沟通之道,案例:参见阅读资料2,37,在软件开发中,沟通不仅包括常规意义的信息交流,它还被引入项目,从项目开初的调研、需求分析、程序架构、成员分工、接口定义到具体代码设计、测试、运行、维护,整个过程都会将
11、沟通的结果直接以文档或代码的形式记录下来,成为项目的一部分。因此,软件开发项目中的沟通对项目的成败有这至关重要的作用。,38,沟通形式和频度在不同软件工程阶段有不同要求。在需求分析阶段,团队与客户等沟通为主。软件团队采用访谈、问卷、会议等方式,外部沟通为主。系统设计、编码阶段,内部沟通为主。为降低沟通过程中的信息的失真(将需求信息完整、不失真地传递到下个阶段),沟通频度较需求阶段频繁多。这个阶段以项目例会为主。,39,案例:不分享信息的“牛仔”,一个美国国防部项目的一个合同工,在组织中只有他一个人理解软件架构的某些关键方面。该人把这个特殊情况看做是保障工作安全的一种方式,所以拒绝与任何人分享他
12、的信息。他多次利用他特殊的角色来得到过早的晋升和慷慨的加薪。某咨询专家分析了该公司的风险,并指出:该人可能辞职,或者无法继续工作。这个人有一辆高性能的摩托车,但是不带头盔就上路。不论是哪种情况,项目都会遭受挫折,阻止项目及时完成,最终会浪费掉国防部在这个项目上的数百万美元的投资。那个公司没有采纳专家的建议,任由这种情况继续下去。几个月后,这个人再次提出涨很多工资,在遭到公司拒绝后,他辞职走了。此后该公司常常不知所错,还因为错过了里程碑而面临罚款。公司在三个月后重新聘用了那个人,给他涨了很多工资。这种情况引起了团队的思考,有几个无耻的人采用同样的方式。而另外一些人看到这种情况,辞职去了其他公司。
13、结果,这个项目遭到了严重挫折,公司不得不与国防部重新磋商合同,最后这个项目取消了。,40,四、软件职业的基本素养和职业发展,软件工程师的能力要求软件工程师与普通开发人员的区别软件工程师的职业发展,41,1.一个合格的软件工程师应在以下六个方面体现,软件编程能力:这是一个软件工程师的基础,主要衡量他的代码质量,有没有好的编程习惯,代码是否易懂、易维护、简洁有效。我们要求所有工程必须达到这个基本要求。体系结构设计能力:一方面衡量是否有能力完成系统结构设计,另一方面要求做实现的工程师能否领会系统结构的设计意图,有系统意识,并时刻贯穿于具体实现当中。领域知识:软件开发都是为解决某一领域的问题,而具有相
14、关领域的知识将会有利于产生高质量且贴近用户的产品。管理和协调能力:软件开发是一个团队的活动,如何组织好一个团队并使其产生效率将直接影响资源的有效利用率。沟通和展示能力:团队的有效活动需要交流和沟通的支持,便我们又必须到内部交流所产生的代价,应设法提高交流的效率,使其在最小的代价下运转正常。创新和创造能力:软件行业是一个高度密集的脑力劳动,创新能力将是一个软件开发团队富有活力的体现。要注意发掘和培养富有创造力的软件人才,使他们有施展才能的空间。,42,案例:合作能力,在美国某软件外包项目中,团队成员不到10人。大多数人都没有什么经验,只有两个是资深人士,具备将项目组织在一起所需要的经验。在制定计
15、划、收集需求和定义阶段时,一切进展都很顺利。在设计开始后,任务是分配或自愿认领的。作为开发设计过程的一部分,每个软件工程师都需要走查他自己的那部分设计。走查原则是在项目计划阶段就制定的,其中包含一条:在走查时,一个人作为走查负责人,另外一个人作为记录员。记录员的工作是记录行动事项。行动事项指的是交付物(通常都有更正)和交付日期。走查负责人的工作是确保大家都不会超出规定的1小时会议时间,并且防止人们在讨论时跑题等诸如此类的工作。,43,这两个骨干开发人员中的一个人完全不能容忍别人对他的工作提出批评。即使是明显的错误,他也总是为自己辩护。更糟糕的是,当他担任走查负责人的时候,总是过于吹毛求疵,评论
16、生硬而粗暴,偶尔还很粗鲁。即使项目经理向他说明这些行为会影响项目的进展,他仍然坚持不改。当初调他到这个项目组的原因是他是组织内具有经验、又能够调动的为数不多的几个人之一。现在知道原来的项目组为什么肯放他走了,后来项目组达成一致意见,那个人又调到其他组。摘自软件开发团队成功秘笈,44,2.普通开发员和软件工程师的区别,普通开发员掌握了计算机基础知识;熟悉计算机资源,学会了编程语言,喜欢卖弄技巧,喜欢比较编程语言的优劣;以能编出某种特殊功能的程序为荣,不懂原理,不求甚解;喜欢个人开发,不重视文档编写;,软件工程师计算机基础知识扎实;掌握两门以上编程语言,很少停留在表面比较编程语言的优劣;以编写出用
17、户满意的高质量软件为荣。懂得个人开发和团队开发的利弊,文档规范,齐全。,区别之一:,45,区别之二:,普通开发员只重视功能的实现,不重进度和质量的把握。怕被“管”得太死,动不动就说限制了思路,没有发挥空间。不喜欢做测试工作,认为测试低人一等,从来没有做过测试工作。只根据自己的爱好学习技术;,软件工程师 懂得在进度、质量(功能)和成本之间平衡。懂得规范的目的在于重用,重用有利于提高效率和集中精力创新。认为测试工作比编码更具挑战性,自己经常为同伴的代码做白盒测试。根据企业项目的需求和自己发展目标的共同点选择学习内容和方向;,46,区别之三:,普通程序员认为别人程序很差,不喜欢看别人的代码;总认为自
18、己比业务专家还更理解需求。项目开始喜欢说:“没问题,SO EASY”。项目大大延期时喜欢说:“设计太烂,没法编程”。,软件工程师喜欢为同事走查代码,并以此获得学习他人有点的机会;懂得自己只是可能比业务专家更懂编程。项目开始喜欢问:“那是什么?这是为什么?”。项目大大延期时喜欢说:“我为什么就没想到”。,47,3.软件工程师的职业发展企业的人才类型和素质结构关系,技术素质,管理素质,时间管理,缺陷管理,计划管理,成本管理,风险管理,知识管理,分析技术,架构技术,编程技术,测试技术,设计技术,初级工作者,高级综合人才,高级管理人才,高级技术人才,48,高级技术人才理想成长路径,时间管理,缺陷管理,
19、计划管理,成本管理,风险管理,知识管理,分析技术,架构技术,编程技术,测试技术,设计技术,初级工作者,高级综合人才,高级管理人才,高级技术人才,1,6,4,5,2,3,预备程序员,中级程序员,高级程序员,设计员,分析员,架构师,管理素质,技术素质,49,高级管理人才理想成长路径,时间管理,缺陷管理,计划管理,成本管理,风险管理,知识管理,分析技术,架构技术,编程技术,测试技术,设计技术,初级工作者,高级综合人才,高级管理人才,高级技术人才,1,A,7,9,8,配置经理,SQA经理,产品经理,研发部经理,6,4,5,2,3,预备程序员,技术素质,管理素质,50,高级综合人才实际想成长路径,时间管
20、理,缺陷管理,计划管理,成本管理,风险管理,知识管理,分析技术,架构技术,编程技术,测试技术,设计技术,初级工作者,高级综合人才,高级管理人才,高级技术人才,1,A,7,9,8,6,4,5,2,3,预备程序员,B,项目组长,C,项目负责人,D,项目经理,E,项目总监,F,技术总监,管理素质,技术素质,51,软件企业人才成长实际路径,时间管理,缺陷管理,计划管理,成本管理,风险管理,知识管理,分析技术,架构技术,编程技术,测试技术,设计技术,初级工作者,高级综合人才,高级管理人才,高级技术人才,1,A,7,9,8,6,4,5,2,3,B,C,D,E,F,技术素质,管理素质,52,作业2:,阅读理解第5章,并结合我校的学生手册,总结我校对在校学生的奖励措施。要求以表格形式列出(包括奖惩名称、奖惩条件,实施时间),在第5次上课之前发邮件至作业邮箱或提交纸质作业。每人独立完成作业后,以团队形式讨论我校的奖励措施并形成一致意见,第5次课(2012年10月29日)派代表上台演讲(需准备ppt),演讲时间35分钟。该次演讲作为平时成绩的重要因素。每个团队也可派代表上台讲激励故事、表演激励的歌曲。,