版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
“软件工程是一种描述规范。” MichaelJackson软件工程?“软件工程是一种描述规范。”软件工程?了解并掌握软件的开发步骤、方法、准则。为什么学习软件工程?了解并掌握软件的开发步骤、方法、准则。为什么学习软件工程?教学目标了解软件工程的基本概念掌握软件工程的基本理论、技术和方法,运用于软件的开发和生产教学目标了解软件工程的基本概念教学内容本讲介绍四个问题:一、软件工程的基本概念二、软件生存周期三、软件工程管理四、知识产权保护教学内容本讲介绍四个问题:本单元涉及内容第9章软件工程9.1软件工程9.2软件生存周期9.3软件工程管理本单元涉及内容第9章软件工程一、软件工程的基本概念
介绍以下几个问题:1.什么是软件工程2.软件工程的目标3.软件工程的指导思想4.软件工程基本原理5.软件工程应用范围6.传统软件工程模式7.现代软件工程模式一、软件工程的基本概念介绍以下几个问题:1.问题的由来软件内在规律。任何事物有它自己的客观规律和发展轨迹。只有认识了它,才能驾驭它。软件地位。软件是计算机系统中重要的组成部分。但在早期它并没有引起业界的重视。随着计算机技术的发展,随着“软件危机”的出现,以及软件危机对社会危害的增大,软件的地位也越来越重要。软件的作用软件是今后信息产业发展的推动力。美国最近在24项高科技领域中调查结果表明,其中18项与软件有关。软件工程学。业界人士不得不设置专门的学科——软件工程学来研究软件开发、生产的内在规律,用于指导现代工程化的软件生产。1.问题的由来软件内在规律。任何事物有它自己的客观规律和发展2.软件工程“软件工程”一词是1968年北大西洋公约组织的计算机科学家在当时联邦德国召开的专门讨论解决“软件危机”的国际会议上正式提出并使用的,并由此诞生了一门新兴学科——软件工程学。“软件工程学”是一门交叉学科,它涉及计算机科学、管理科学、工程学和数学。计算机科学培养的是计算机科学家,而软件工程则是培养软件工程师。2.软件工程“软件工程”一词是1968年北大西洋公约组织的计什么是软件工程1968年在第一届NATO会议上定义:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工作原理。
软件工程IEEE定义:软件工程是以系统的、规范的、定量的方法应用于软件的开发、运营和维护,以及这些方法的研究。什么是软件工程1968年在第一届NATO会议上定义:软件工程软件工程的本质特征软件工程关注于大型程序的构造软件工程的中心课题是控制复杂度软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品软件工程的本质特征软件工程关注于大型程序的构造软件工程学的体系结构
软件工程学软件开发技术软件开发方法学软件工具软件工程环境软件工程管理软件管理学软件经济学软件工程学的体系结构软件工程学软件开发技术软件开发方法学软3.软件工程的目标软件工程的基本目标是:开发尽可能多的软件产品;提高软件的生产效率;满足应用的功能需要;降低软件开发成本。3.软件工程的目标软件工程的基本目标是:4.软件工程的指导思想为解决软件危机,把“软件”这种特殊商品的生产、管理过程纳入传统工程管理的轨道;用计算机科学中的最新成果应用于软件工程中用管理学的原理和方法进行软件生产管理用工程学的观点进行核算,制定工程进度和实施方案用数学方法建立软件的可靠模型和各种有效算法4.软件工程的指导思想为解决软件危机,把“软件”这种特殊商品5.软件工程基本原理自1968年提出“软件工程”的概念以来,专家学者又陆续提出了100多条关于软件工程的准则。著名软件工程专家B.W.Boehm于1983年发表的一篇论文中提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品质量和开发效率的最小准则集合。5.软件工程基本原理自1968年提出“软件工程”的概念以来,软件工程七条基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组人员少而精承认不断改进软件工程实践的必要性软件工程七条基本原理用分阶段的生命周期计划严格管理⑴用分阶段生命周期计划严格管理在软件的整个生命周期中应该制定并严格执行六类计划:项目概要、项目进度表、项目控制、产品控制、验证及运行维护计划。不同层次的管理人员必须严格按照计划各尽其职地去管理软件开发与维护工作,绝不能受客户或上级的影响而擅自背离预定计划。⑴用分阶段生命周期计划严格管理在软件的整个生命周期中应该制定⑵坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后再进行。这是因为:大部分错误是在编码之前造成的(根据Boehm统计,设计错误占软件错误的63%,编码错误占37%)。错误发现与改正得越晚,所付出的代价也越高。因此,在每个阶段进行严格的评审,尽早发现并修正各个阶段中所犯的错误是一条必须遵循的重要原则。⑵坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后示意图关于阶段评审作用
示意图关于阶段评审作用⑶实行严格的产品控制在软件开发过程中不应随意改变需求,但不能禁止更改需求。当必须修改时,为了保持软件各配置成分的一致性,必须实行严格的产品控制。一切有关修改软件的建议都必须按照严格的规程进行评审,获准后才能实施修改。绝对不能谁想修改就随意进行修改的行为。⑶实行严格的产品控制在软件开发过程中不应随意改变需求,但不能⑷采用现代程序设计技术以前的结构化程序设计技术,如今的面向对象程序设计技术都被实践证明是各个不同历史阶段的优秀程序设计技术和方法。采用先进的技术既可以提高软件开发的效率,又可以提高软件维护的效率。⑷采用现代程序设计技术以前的结构化程序设计技术,如今的面向对⑸结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品,软件开发人员的工作进展情况可见性差。为了提高开发过程的可见性,应根据软件开发项目中的目标完成期限,规定开发组织的责任和产品标准,使得到的结果能够清楚的审查。⑸结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品,软件⑹开发小组人员少而精开发小组成员的素质应该高,人员不宜过多。人员素质和数量是影响产品质量和开发效率的重要因素。素质高的人开发效率比低的人高几倍甚至几十倍,而错误则明显得少;人数增加,管理难度也增加。⑹开发小组人员少而精开发小组成员的素质应该高,人员不宜过多。⑺承认不断改进软件工程实践的必要性要积极主动地采纳新的软件技术,要不断总结经验;不能自以为是,固步自封,唯我独好。大千世界,错综复杂,只有不断学习,才能不断进取,不断进步。⑺承认不断改进软件工程实践的必要性要积极主动地采纳新的软件技6.软件工程应用范围个人程序、中小型或一般程序同开发人员之间的关联较小,应用SE方法收效甚微。大型程序要由若干个程序员小组承担开发,相互关系极其复杂,因此,必须自始至终坚持SE方法。6.软件工程应用范围个人程序、中小型或一般程序同开发人员之间7.软件工程方法学软件工程方法学包含3个要素:方法是完成软件开发的各项任务的技术方法,回答“怎么做”的问题?工具是为运用方法而提供的软件工程支撑环境。过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。7.软件工程方法学软件工程方法学包含3个要素:传统方法学把软件生存周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低整个软件开发工程的困难程度。在实现每个阶段任务时,采用系统化的技术方法——结构化分析和结构化设计技术。传统软件工程模式的缺点:强调了分阶段实施模块化、结构化程序设计技术和方法,而忽视了人在软件开发过程中的地位和作用。传统方法学把软件生存周期划分成若干个阶段,每个阶段的任务相对面向对象方法学当软件规模庞大,或对软件的需求是模糊的、或随时间而变化时,使用传统方法学往往不成功。因为结构化方法要么面向行为,要么面向数据,而不能兼有。计算机就是为了处理数据而诞生的,数据和对数据的处理本是紧密联系在一起的,而传统方法人为地把数据和数据处理分开,导致了问题的复杂性。而面向对象处理方法把数据和数据处理紧密结合在一起,产生了一种新的方法学。面向对象方法学当软件规模庞大,或对软件的需求是模糊的、或随时现代方法学现代软件方法学是在传统方法学的基础上,为了强调人在系统开发中的作用,同时为了适应软件新技术的发展趋势而提出的。由于在软件开发过程中最大限度地采用软件组件,使得软件开发过程变为系统分析、系统构造、系统测试的集成过程。现代方法学现代软件方法学是在传统方法学的基础上,为了强调人在现代方法学基本要点开发人员的组织管理对软件开发成功与否至关重要;以人为主,充分利用软件开发方法及软件开发工具;基于软件组件的软件开发技术。各种功能的可重用软件组件不断问世。这使得在软件开发过程中编程工作量日趋减少,取而代之的是在设计好系统体系结构后,利用软件组件构造或重构软件系统。由于软件组件是标准化设计、成品化生产的,极易构造使用,从而大大简化了设计、编程、测试各个环节的工作量,提高了工作效率和生产效率。现代方法学基本要点开发人员的组织管理对软件开发成功与否至关重现代软件工程模式阶段
划分及主要任务系统分析系统设计系统测试软件组件系统开发人员的组织管理现代软件工程模式阶段
划分及主要任务系统分析⑴系统分析首先根据用户需求建立系统用户模型,。它从概念上全方位表达系统需求及系统与用户的相互关系。在用户模型的基础上,通过系统分析建立适应性强的独立于系统实现环境的逻辑结构。分析阶段独立于系统实现环境,可以保证建立起来的系统结构具有相对的稳定性,便于系统维护、移植或扩充。⑴系统分析首先根据用户需求建立系统用户模型,。它从概念上全方系统逻辑结构三要素系统的逻辑结构应从以下三方面全面反映系统的功能与性能:信息完整描述系统中所处理的全部信息;行为完全描述系统状态变化所需处理或功能;表示详细描述系统的对外接口与界面。系统逻辑结构三要素系统的逻辑结构应从以下三方面全面反映系统的⑵系统设计系统实现环境为了保持系统结构的稳定性,在系统设计阶段要充分考虑:应尽可能避免由于实现环境的特定要求而改变系统结构。设计构造系统的软件组件主要内容包括:定义组件结构、功能和外部接口、组件之间的相互关系和通信方式。对于复杂的大系统,还可以根据组件之间关联的紧密程度,将关联密切的多个组件形成一个子系统。编程实现系统对于需要开发的软件系统,选择某种合适的程序设计语言编写相应的源代码程序,完成系统实现工作。⑵系统设计系统实现环境为了保持系统结构的稳定性,在系统设⑶系统测试系统测试包括单元测试、集成测试和系统测试。就功能而言与传统软件工程模式中系统测试的功能相同。⑶系统测试系统测试包括单元测试、集成测试和系统测试。⑷软件组件在现代软件工程的开发过程中,软件组件只是一个辅助或支撑系统构造的一个过程。软件组件开发主要是开发与维护系统构造过程中用到的组件。将软件组件作为一个单独的过程,目的是将组件作为构造软件的“零部件”。随着软件技术的不断发展及软件工程的不断完善,软件组件将会作为一种独立的软件产品出现在市场上,供应用开发人员在构造应用系统时选用。⑷软件组件在现代软件工程的开发过程中,软件组件只是一个辅助或⑸系统开发人员的组织管理现代软件工程不仅包括软件开发方法、工具和过程,更强调人在开发过程中的作用。一个复杂的系统开发过程,涉及到众多的以人为主的各种开发活动,通过这些活动的有机配合与协调才能保证系统开发的成功。系统开发人员的组织管理是现代软件工程中的重要方面。组织管理方法有以下几个要点:①明确系统开发人员与用户之间的责任与义务;②明确各类开发人员的主要工作及责任;③制定或选择工程开发规范。⑸系统开发人员的组织管理现代软件工程不仅包括软件开发方法、工二、软件生命周期
软件生存周期指从软件的需求分析、设计、编程、测试、交付用户使用到版本升级、自然淘汰的过程。二、软件生命周期软件生命周期各个阶段任务需求分析系统设计系统编程系统测试系统维护软件生命周期各个阶段任务需求分析⑴需求分析任务是:收集、分析、理解、确定用户的要求;然后把用户的要求精确、完整地描述表达出来。目的:要回答“要解决什么问题?”,既系统”做什么?“。分两步骤:可行性研究:制定软件开发计划进行需求分析阶段结果,产生出:可行性报告、软件计划、需求说明书⑴需求分析任务是:收集、分析、理解、确定用户的要求;然后把用⑵系统设计任务是:设计软件系统的模块层次结构模块间逻辑关系、参数每个模块的功能目的:要回答“如何解决该问题?”,既系统“怎样做?”。分两步骤:概要设计:解决系统的模块划分、模块的层次结构及数据库设计。详细设计:解决每个摸块内部算法和数据结构。阶段结果:系统设计说明书和模块功能说明书
⑵系统设计任务是:⑶系统编程任务是:根据设计说明书中每个模块的控制流程编写出相应的源程序。阶段结果:
软件系统的源程序⑶系统编程任务是:⑷系统测试任务是:检查、发现程序中的错误,提高系统可靠性。回答:“该系统是否能实现规定的操作?”。分三个阶段:模块测试测试每个模块是否有错;组装测试测试模块之间的接口是否正确;确认测试测试整个软件系统是否满足用户功能、性能要求。阶段结果:测试报告;说明测试数据的选择,测试对象、测试结果是否符合预期结果等。⑷系统测试任务是:检查、发现程序中的错误,提高系统可靠性。⑸系统维护任务是:改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中新的功能要求;目的:维护软件系统的正常运行;阶段结果:软件系统的问题报告和软件修改报告。⑸系统维护任务是:改正软件系统在使用过程中发现的隐含错误,扩三、软件过程软件过程是“为了获得软件所需要完成的一系列任务的工作步骤”。软件过程定义了运用方法的顺序、各阶段应交付的文档资料、为保证软件质量所要采取的管理措施,以及标志软件开发各个阶段任务完成的结果形式。通常用使用生命周期模型来简洁地描述软件过程,也称为过程模型。主要过程模型:……三、软件过程软件过程是“为了获得软件所需要完成的一系列任务的1.瀑布模型瀑布模型是上个世纪80年代广泛应用的一种模型,至今仍然被最广泛使用的过程模型之一(B.W.Boehm提出的)。瀑布模型的特点:具有顺序性和依赖性,即后一阶段工作必须在前一阶段工作完成后才能开始。瀑布模型强调优质,即每一步都循序渐进,及早消除隐患,从而保证软件质量。致命缺点是只有做出精确的需求分析,才能取得预期的结果。由于各种客观、主观的原因,需求分析往往不很精确,常常给日后的开发带来隐患。1.瀑布模型瀑布模型是上个世纪80年代广泛应用的一种模型,至瀑布模型示意图
需求分析7%系统设计6%软件编程7%软件测试13%软件维护67%用户要求分析报告系统设计报告源程序测试报告更改要求UAMATMMPUTPUAMPA系统分析员M项目管理员P程序员T高级程序员U
用户瀑布模型示意图需求分析7%系统设计6%软件编程7%软件测试⒉原型模型——样品模型原型模型的主要思想:先借用已有系统作为原型模型,通过“样品”不断改进,使得最后的产品就是用户所需要的。原形模型的特点:(1)开发人员和用户在“原型”上达成一致。可减少设计错误、开发风险、对用户培训时间,而提高了系统的实用、正确性以及用户的满意程度。(2)缩短开发周期,加快工程进度。(3)降低成本。原型模型的缺点:当告诉用户,还必须重新生产该产品时,用户是很难接受的。这往往给工程继续开展带来不利因素。⒉原型模型——样品模型原型模型的主要思想:⒊螺旋模型将工程划分为4个主要活动:制定计划、风险分析、实现工程和用户评价。4个活动螺旋式地重复执行,直到最终得到用户认可的产品。制定计划:确定软件目标,选定实施方案,弄清项目开发限制条件。风险分析:分析可选方案,分析识别风险,研究解决化解风险的办法。实现工程:实施软件产品的开发。用户评价:对当前工作结果进行评价,提出改进产品的建议。螺旋模型的缺点:很难让用户确信这种演化方法的结果是可以控制的。⒊螺旋模型将工程划分为4个主要活动:制定计划、风险分析、实现⒋面向对象的开发模型主导思想是:在整个软件开发过程中将面向对象技术贯穿于整个生存周期,并结合传统开发模式中好的、已被大量成功开发活动证明是可行的经验和技术。分为3个主要阶段:分析:模拟
“关键系统”来表示用户要求,并设计独立实现的“关键类”设计:限制并优化关键类,在特定的环境中实现,得到另外的类实现:定义类的接口和实现方法,然后编写并统一测试所有的类⒋面向对象的开发模型主导思想是:在整个软件开发过程中将面向对面向对象开发的缺陷还不成熟在大的项目上经验不多,在小的项目上尚可在开发过程中对细节的描述较少,新手难于理解测试滞后开发过程没有中间版本,几乎所有的测试都留在最后的实现阶段结构死板系统结构的设计主要取决于需求分析阶段,而在设计和实现阶段基本上没有结构上变化的余地。
面向对象开发的缺陷还不成熟⒌增量模型也称渐增模型。它把软件产品作为一系列的增量构件来设计、编码、集成和测试。增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的,开发出一部分,向用户展示一部分,让用户及早看到部分软件,及早发现问题。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。缺点是:要求软件具有开放的结构是这种模型固有的困难。⒌增量模型也称渐增模型。它把软件产品作为一系列的增量构件来设
四、软件工程管理软件工程项目管理的任务软件人员组织与管理软件配置管理四、软件工程管理⒈软件工程项目管理的任务软件工程项目管理所涉及的范围覆盖了整个软件工程过程。管理任务是:根据项目合同书要求,制定项目计划和工程进度安排、监督和检查项目实施过程、保证工程满足要求的质量标准、分析确定并排除风险、在规定的期限和预算成本内完成项目。任务包括:
……⒈软件工程项目管理的任务软件工程项目管理所涉及的范围覆盖了整①项目计划和进度安排项目计划要列出软件开发要做的主要工作和任务清单,要回答“软件工程项目做什么?”。在工作和任务清单中要清楚地描述出:项目划分的各个实施阶段每个阶段的工作重点和任务是什么完成本阶段工作和任务的人力、资源需求,时间期限阶段工作和任务的成果形式项目实施过程中对风险、疑难、其他不可预见因素等的处理机制各任务组及开发人员之间的组织、协调关系等。①项目计划和进度安排项目计划要列出软件开发要做的主要工作和任进度安排把复杂的整体项目分解成许多可以准确描述、度量、可独立操作的相对简单的任务,然后安排这些任务的执行顺序,确定每个任务的开始、结束时间和完成期限。需要考虑的主要问题是:项目可以支配的人力及资源项目的关键路径生存周期各个阶段工作量的划分工程进展如何度量各个阶段任务完成标志如何自然过渡到下一阶段的任务等进度安排把复杂的整体项目分解成许多可以准确描述、度量、可独立②项目追踪和质量保证项目追踪实施由项目管理人员负责。他们要按进度表追踪检查每一个任务。如果任务实际完成日期滞后,管理人员可以行使职权范围内的权力采取各种补救措施以减少进度误期所造成的影响。包括:重新调整分配资源、重新安排任务,甚至可以修改交付日期以解决已经暴露出来的问题。质量保证在软件生存周期中是至关重要的。人们在管理项目时往往只强调:按期完成任务、遵循进度计划、控制成本等问题,却忽视了各阶段工作和任务应满足规定的质量标准。如何保证质量……②项目追踪和质量保证项目追踪实施由项目管理人员负责。他们要保证软件质量的措施为了保证软件质量,在软件开发过程中应采取下列措施:⑴审查⑵复查和管理复查⑶测试保证软件质量的措施为了保证软件质量,在软件开发过程中应采取下审查在各阶段工作结束之前,要对该阶段产生的结果和软件配置文档进行严格技术审查。审查过程包括:①计划:组织审查组、分发材料等;②概况介绍:让主程序员介绍项目概况;③准备:阅读材料,取得项目有关知识;④评审会:发现和记录错误;⑤返工:开发者修改已经发现的问题;⑥复查:检查返工是否真正解决了问题。审查在各阶段工作结束之前,要对该阶段产生的结果和软件配置文档复查和管理复查复查检查已有材料,以断定本阶段的工作是否能够开始或继续。管理复查向开发组织或使用部门的管理人员提供有关项目的总体状况以及进度等方面的情况,以便他们从管理的角度对开发工作进行审查。复查和管理复查复查测试测试是用测试用例执行系统,以检查测试结果是否和预期结果一致。在测试过程中将产生以下文档:①测试计划:确定测试范围、方法、测试用例和所需资源等;②测试过程:详细描述与每个测试方案有关的测试步骤和数据;③测试结果:把每次测试结果归入文档;如果运行出错,应填写问题报告,并且要通过调试解决所发现的问题。测试测试是用测试用例执行系统,以检查测试结果是否和预期结果一③成本估算成本估算和成本管理是软件项目管理的核心任务。在制定项目计划时,就要对项目需要资源、项目持续时间和项目成本做出估算。成本估算方法大致分为两种:⑴自顶向下法是对整个工程项目的总开发时间和总工作量做出估算,然后将它们按阶段、步骤和任务进行分配。⑵自底向上法则正好相反,先分别估算各个任务所需要的工作量和开发时间,再相加,从而得到总的工作量和总的开发时间。③成本估算成本估算和成本管理是软件项目管理的核心任务。在制定成本估算方法简介专家估算法依靠一个或多个专家对项目做出估算,其精度主要取决于专家对估算项目的定性参数的了解和他们的经验。类推估算法在自顶向下法中,类推估算法将估算项目的总体参数与类似项目进行直接比较得到结果;在自底向上法中,类推是在两个具有相似条件的工作单元之间进行。算式估算法前两种估算法的缺点在于:它们依靠的是带有主观猜测和盲目性的估算方法。算式估算法则是企图避免主观因素影响的一种方法。算式估算法有两种基本类型:由理论导出的算法和由经验得出的算法。成本估算方法简介专家估算法依靠一个或多个专家对项目做出估④风险分析在开发新的软件系统过程中,由于存在许多不确定因素,软件开发失败的风险是客观存在的。风险分析实际上就是贯穿在软件工程过程中的一系列风险管理步骤,其中包括:风险识别、风险估计、风险管理策略、风险解决和风险监督等。④风险分析在开发新的软件系统过程中,由于存在许多不确定因素,主要风险因素①产品大小。实践经验表明项目风险和产品的大小成正比(度量单位是代码行或功能点)。②技术相关。使用新技术或已过时的技术都存在风险。包括未使用过的新型硬件、支持软件,缺乏标准与规范的非传统的开发方法等。技术风险一般难于改正。③开发环境。适用的开发工具不足、不可靠、使用不方便等因素,都会降低开发效率。④组织规模和人员经验。⑤客户因素。表现在客户需求经常矛盾,不了解客户的特殊需要,客户不了解项目中采用的新技术,且双方又难于沟通等。主要风险因素①产品大小。实践经验表明项目风险和产品的大小成⒉软件人员组织与管理人员是软件工程项目最重要、也是最为活跃的资源因素。如何组织得更加合理,如何管理得更加有效,从而最大限度地发挥这一重要的资源潜力,对于成功地完成软件工程项目至关重要。⒉软件人员组织与管理人员是软件工程项目最重要、也是最为活跃的⑴项目组的组织结构开发组织采用什么形式,要针对软件项目的特点来决定,同时也与参加人员的素质有关。建立项目组织时要考虑这样一些原则:①项目责任制度。项目必须实行项目负责人责任制。项目责任人对项目的完成负全部责任。②人员少而精。项目组成员之间的交流和协作是项目成败的关键。人员少,具有便于组织管理、合理分工、减少通信等优点;人员精,有利于互相激励、发挥各自的特长优势,提高工作效率。⑴项目组的组织结构开发组织采用什么形式,要针对软件项目的特点⑵程序设计小组的组织形式实践证明开发组织的组织形式、人员之间联系得多少和联系方式与生产效率直接相关。开发小组人数少(2~3人),则人员之间的联系比较简单。但随着人数的增加,相互之间的联系的复杂程度是呈非线性增加的。⑵程序设计小组的组织形式实践证明开发组织的组织形式、人员之间①主程序员组组由主程序员、程序员和后援工程师为核心组成。主程序员是经验丰富能力强的高级程序员,负责小组全部技术活动的计划、协调与审查工作,还负责设计和实现项目中的关键部分。后援工程师协助和支持主程序员的工作,为主程序员提供咨询,也做部分分析、设计和实现的工作,并在必要时代替主程序员工作。程序员负责项目的具体分析与开发,以及文档资料的编写工作。主程序员组这种集中领导的组织形式突出了主程序员的领导作用,简化了人际通信。这种组织形式能否取得好的效果,很大程度上取决于主程序员的技术水平和管理才能。美国的软件产业中大多采用主程序员组的组织形式。①主程序员组组由主程序员、程序员和后援工程师为核心组成。②民主小组小组由经验丰富的技术人员组成。项目所有重大决策都由全体成员集体讨论、解决。这种组织形式强调发挥每个成员的积极性,要求每个成员充分发挥主动精神和协作精神。通过充分讨论,也是在互相学习,因而在组内形成一个良好合作的工作气氛。但有时也会因此削弱个人的责任心和必要的权威作用。这种组织形式适合于研制时间长、开发难度大的项目。日本软件产业中大多采用这种组织形式;它在强调发挥每个成员积极性的同时,也创造尊重每个成员的良好工作环境。由于小组成员在工作上能够很好地配合,而形成长时间稳定的人员合作关系,从而避免了美国因软件人员频繁流动对工作造成的严重干扰。②民主小组小组由经验丰富的技术人员组成。项目所有重大决策都由③层次小组小组内人员分为3级:组长、高级程序员和程序员。组长负责全组工作,包括任务分配、技术评审和复查、掌握工作量和参加技术活动。组长直接领导2至3名高级程序员。高级程序员通过基层小组,管理若干个程序员。这种组织结构只允许必要的人际通信。它比较适合项目本身就是层次结构状的课题以及大型软件项目的开发。③层次小组小组内人员分为3级:组长、高级程序员和程序员。⑶软件项目的管理
软件项目管理包括项目指导和项目检验。指导的目的是在软件项目的实施过程中,动员和促进工作人员积极完成所分配的任务。检验是软件管理的最后一个方面。它是对照计划和对照软件工程标准检查执行情况的过程。在发现项目的实施与计划或标准有较大的偏离时,应采取措施加以解决。管理内容包括:
……⑶软件项目的管理软件项目管理包括项目指导和项目检验。指导工作要点①鼓励。恰当而且及时地鼓励是非常重要的。要建立健全竞争和激励机制,它可使人们充满信心,勇于继续克服困难,愿意努力进一步提高工作效率,迎接新任务的挑战。②引导。通常,人们愿意追随那些能够体谅个人要求或实际困难的领导。高明的领导人应能体察民情,并能巧妙地把个人的要求和目标与项目工作的整体目标结合起来,至少应能做到在一定程度上的协调。要制定相对优惠的“留人”政策,稳定骨干队伍。从风险分析中可知,大幅度的人员调整是非常有害的,即使是人员的临时观念也会使项目付出无形的代价,因而蒙受无谓的损失。指导工作要点①鼓励。恰当而且及时地鼓励是非常重要的。要建立检验管理要点①重大偏离。在软件项目实施过程中,必须注意:工作与计划之间、任务与标准之间的重大偏离。遇到有这种情况时应及时向管理部门报告并采取相应的措施给予适当的处置。②选定标准。检验管理需要事先确定应当遵循的标准,使得软件项目的工作进展可以用客观、精确且有实际意义的标准加以衡量。③特殊情况。管理人员必须注意软件项目实施的一些特殊情况,认真分析其中的一些特殊问题,加以解决。检验管理要点①重大偏离。在软件项目实施过程中,必须注意:工作检验管理的工作范围检验管理可能涉及到以下几个方面:①质量管理包括明确度量软件质量的因素和准则,决定质量管理的方法和工具,以及实施质量管理的组织形式。②进度管理检验进度计划执行的情况。③成本管理度量并控制软件项目的开销。④文档管理检验文档编写是否符合要求。⑤配置管理检验、控制软件配置项的变更。检验管理的工作范围检验管理可能涉及到以下几个方面:⒊软件配置管理
软件配置管理是人们在软件工程实践过程中总结出的一套管理办法和原则。软件配置管理将伴随整个软件生存周期。什么是软件配置?如何进行管理?⒊软件配置管理软件配置管理是人们在软件工程实践过程中总结出⑴软件配置管理和基线一般认为:软件生存周期各个阶段活动的产物经审批后即可称之为软件配置项。软件配置项包括:①与合同、过程、计划和产品有关的文档和资料;②源代码、目标代码和可执行代码;③相关产品,包括软件工具、库内的可重用软件、外购软件及顾客提供的软件等。⑴软件配置管理和基线一般认为:软件生存周期各个阶段活动的产物基线第一次提出的软件配置项就构成基线配置项。包括:系统功能说明。系统模型,项目计划,进度安排;
软件需求规格说明。图形分析模型、过程、原型、数学规格说明;设计规格说明。数据设计、体系结构设计、界面设计、对象的描述等;验收规格说明;测试规格说明。测试计划、测试用例、测试预期结果、测试记录等;数据库描述。数据模式、记录结构、数据项描述;模块规格说明。模块功能、模块算法、模块接口等描述;运行系统。模块代码、链接模块、数据库、支持及工具程序等;用户文档。安装说明、操作说明、用户手册等;培训计划;维护文档。故障报告、维护要求、更改记录等;项目采用的有关标准和规程。基线第一次提出的软件配置项就构成基线配置项。包括:⑵配置管理的任务①标识软件配置项②版本控制③变更管理④审计⑵配置管理的任务①标识软件配置项大型软件工程项目开发过程中可能会产生许多技术文档。随着软件系统的变更,有关文档也将发生变化。因此,对软件配置项的管理是一个动态管理的过程。为了便于管理(例如检索)就必须对所有的配置项进行标识、命名。标识软件配置项是配置项管理的重要基础工作。所有的软件配置项均可以当作对象来标识。例如,基本对象可以是一段需求规格说明、一个模块的源代码清单、一组测试用例等。①标识软件配置项大型软件工程项目开发过程中可能会产生许多技②版本控制版本更新是软件生存期中的自然现象。软件系统每做一次修改,就应该变更一次版本。为了保持该软件系统一脉相承的完整性,每一个软件配置项修改后的以前版本都要保留。版本更新就好像一棵生长的树。所有版本均按版本模型(树形结构)存放于仓储库中。为节省仓储库的存储空间,版本存放采用增量法,即只存放新版本与旧版本不同部分的内容。②版本控制版本更新是软件生存期中的自然现象。软件系统每做一次③变更管理
有变更的需求就要有变更的控制和管理。它的主要任务包括:分析变更的必要性和合理性,确定是否实施变更;记录变更信息,填写变更控制单;做出更改,并交上级审批;修改相应的软件配置项(基线),确立新的版本;评审后发布新版本。③变更管理有变更的需求就要有变更的控制和管理。它的主要任④审计变更是必然的。问题是:“如何保证变更需求和变更实施结果的一致性?”为保证软件配置项变更的合理性和严肃性,必须实行严格的审计控制。一般采用两种方法进行审计:正式技术评审着重检查对软件配置项的变更的技术正确性。综合考虑此软件配置项的变更对其它配置项乃至整个软件系统的潜在影响和作用。软件配置审核是审核变更的落实情况;变更修改是否完成?变更手续是否完备?变更修改有无违反标准?④审计变更是必然的。五、软件知识产权保护计算机软件是人类知识、智慧和创造性劳动的结晶,软件产业是知识和资金密集型的新兴产业。由于它具有开发工作量大、周期长,而生产(复制)容易、费用低等特点,因此,长期以来,软件的知识产权得不到尊重,软件的真正价值得不到承认,靠非法窃取他人软件而牟取商业利益成了信息产业中投机者的一条捷径。因此,软件产权保护已成为急待解决的一个社会问题,是我国软件产业健康发展的前提。1967年在瑞典斯得哥而摩成立了世界知识产权组织。1980年我国正式加入该组织。1990年9月我国颁布了《著作权法》,确定计算机软件为保护的对象。1991年6月由国务院正式颁布了我国《计算机软件保护条例》。五、软件知识产权保护计算机软件是人类知识、智慧和创造性劳动的学习法律的目的信息时代的人,应知法、守法,掌握必要的软件保护法律知识。一方面要尊重别人的智力劳动成果,不应任意侵犯他人的软件版权;另一方面要采取切实的保护措施保护自己以及本单位开发的软件成果。学习法律的目的信息时代的人,应知法、守法,掌握必要的软件保护⑴软件知识产权的法律保护
知识产权又称为智力成果产权和智慧财产权,是指对智力活动所创造的精神财富所享有的权利。知识产权分为:工业产权和版权;前者主要包括专利权、商标专有权和制止不正当竞争权;后者专指计算机软件。⑴软件知识产权的法律保护知识产权又称为智力成果产权和知识产权的主要特点
无形性是指其保护对象是无形的。
专有性指未经知识产权人的同意,除法律有规定的情况外,他人不得占有或使用该项智力成果。
地域性指法律保护知识产权的有效地区范围。任何国家法律所确认的知识产权,只在其本国领域内有效,除非该国与他国签订有双边协定或该国参加了有关知识产权保护的国际公约。
时间性指法律保护知识产权的有效期限,期限届满即丧失效力。这是为限制权利人不致因自己对其智力成果的垄断期过长而阻碍社会经济、文化和科学事业的发展。知识产权的主要特点无形性是指其保护对象是无形的。⑵计算机软件是著作权保护的客体①软件著作权保护的基本条件对计算机软件来说,著作权法并不要求软件达到某个较高的技术水平,只要是开发者独立地自行开发的软件,即可享有著作权。一个软件必须在其创作出来,并固定在某种有形物体(如纸、磁带、磁盘)上面,能为他人感知、传播、复制的情况下,才能享有著作权保护。②软件著作权的特征计算机软件的体现形式是程序和文件。文件是受著作权法保护的(包括:人无法识别的目标代码程序、固化在只读存储器中的程序等)。③软件著作权的保护范围著作权法的基本原则是:只保护作品的表现,而不保护作品中所体现的思想、概念。一般认为:软件的功能应属于思想、概念,不受著作权法的保护;而软件的程序代码则是表现,是受著作权保护的对象。⑵计算机软件是著作权保护的客体①软件著作权保护的基本条件⑶软件著作权人享有的专有权力根据我国著作权法的规定,作品著作人(或称版权人)享有5项专有权力:①发表权。决定作品是否公布于众的权力。②署名权。表明作者身份,在作品上有署名权。③修改权。修改或授权他人修改作品的权力。④保护作品完整权。保护作品不受篡改的权力。⑤使用权和获得报酬权。以复制、表演、播放、展览、发行、摄制电影、电视、录像或改编、翻译、注释、编辑等方式使用作品的权力,以及许可他人以上述方式作为作品,并由此获得报酬的权力。⑶软件著作权人享有的专有权力根据我国著作权法的规定,作品著作思考题、答疑第9章习题:
1~24答疑时间:星期四:下午4:00~6:00点答疑地点:计教中心102房间(1300大教室对面)思考题、答疑第9章习题:结束语欢迎参加到中心网站《软件基础》课程的学习讨论中来。中心网址:
http://课件下载地址:ftp://我的E-mail地址:
LZQ@谢谢!结束语欢迎参加到中心网站《软件基础》课程的学习讨论中来。“软件工程是一种描述规范。” MichaelJackson软件工程?“软件工程是一种描述规范。”软件工程?了解并掌握软件的开发步骤、方法、准则。为什么学习软件工程?了解并掌握软件的开发步骤、方法、准则。为什么学习软件工程?教学目标了解软件工程的基本概念掌握软件工程的基本理论、技术和方法,运用于软件的开发和生产教学目标了解软件工程的基本概念教学内容本讲介绍四个问题:一、软件工程的基本概念二、软件生存周期三、软件工程管理四、知识产权保护教学内容本讲介绍四个问题:本单元涉及内容第9章软件工程9.1软件工程9.2软件生存周期9.3软件工程管理本单元涉及内容第9章软件工程一、软件工程的基本概念
介绍以下几个问题:1.什么是软件工程2.软件工程的目标3.软件工程的指导思想4.软件工程基本原理5.软件工程应用范围6.传统软件工程模式7.现代软件工程模式一、软件工程的基本概念介绍以下几个问题:1.问题的由来软件内在规律。任何事物有它自己的客观规律和发展轨迹。只有认识了它,才能驾驭它。软件地位。软件是计算机系统中重要的组成部分。但在早期它并没有引起业界的重视。随着计算机技术的发展,随着“软件危机”的出现,以及软件危机对社会危害的增大,软件的地位也越来越重要。软件的作用软件是今后信息产业发展的推动力。美国最近在24项高科技领域中调查结果表明,其中18项与软件有关。软件工程学。业界人士不得不设置专门的学科——软件工程学来研究软件开发、生产的内在规律,用于指导现代工程化的软件生产。1.问题的由来软件内在规律。任何事物有它自己的客观规律和发展2.软件工程“软件工程”一词是1968年北大西洋公约组织的计算机科学家在当时联邦德国召开的专门讨论解决“软件危机”的国际会议上正式提出并使用的,并由此诞生了一门新兴学科——软件工程学。“软件工程学”是一门交叉学科,它涉及计算机科学、管理科学、工程学和数学。计算机科学培养的是计算机科学家,而软件工程则是培养软件工程师。2.软件工程“软件工程”一词是1968年北大西洋公约组织的计什么是软件工程1968年在第一届NATO会议上定义:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工作原理。
软件工程IEEE定义:软件工程是以系统的、规范的、定量的方法应用于软件的开发、运营和维护,以及这些方法的研究。什么是软件工程1968年在第一届NATO会议上定义:软件工程软件工程的本质特征软件工程关注于大型程序的构造软件工程的中心课题是控制复杂度软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品软件工程的本质特征软件工程关注于大型程序的构造软件工程学的体系结构
软件工程学软件开发技术软件开发方法学软件工具软件工程环境软件工程管理软件管理学软件经济学软件工程学的体系结构软件工程学软件开发技术软件开发方法学软3.软件工程的目标软件工程的基本目标是:开发尽可能多的软件产品;提高软件的生产效率;满足应用的功能需要;降低软件开发成本。3.软件工程的目标软件工程的基本目标是:4.软件工程的指导思想为解决软件危机,把“软件”这种特殊商品的生产、管理过程纳入传统工程管理的轨道;用计算机科学中的最新成果应用于软件工程中用管理学的原理和方法进行软件生产管理用工程学的观点进行核算,制定工程进度和实施方案用数学方法建立软件的可靠模型和各种有效算法4.软件工程的指导思想为解决软件危机,把“软件”这种特殊商品5.软件工程基本原理自1968年提出“软件工程”的概念以来,专家学者又陆续提出了100多条关于软件工程的准则。著名软件工程专家B.W.Boehm于1983年发表的一篇论文中提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品质量和开发效率的最小准则集合。5.软件工程基本原理自1968年提出“软件工程”的概念以来,软件工程七条基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组人员少而精承认不断改进软件工程实践的必要性软件工程七条基本原理用分阶段的生命周期计划严格管理⑴用分阶段生命周期计划严格管理在软件的整个生命周期中应该制定并严格执行六类计划:项目概要、项目进度表、项目控制、产品控制、验证及运行维护计划。不同层次的管理人员必须严格按照计划各尽其职地去管理软件开发与维护工作,绝不能受客户或上级的影响而擅自背离预定计划。⑴用分阶段生命周期计划严格管理在软件的整个生命周期中应该制定⑵坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后再进行。这是因为:大部分错误是在编码之前造成的(根据Boehm统计,设计错误占软件错误的63%,编码错误占37%)。错误发现与改正得越晚,所付出的代价也越高。因此,在每个阶段进行严格的评审,尽早发现并修正各个阶段中所犯的错误是一条必须遵循的重要原则。⑵坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后示意图关于阶段评审作用
示意图关于阶段评审作用⑶实行严格的产品控制在软件开发过程中不应随意改变需求,但不能禁止更改需求。当必须修改时,为了保持软件各配置成分的一致性,必须实行严格的产品控制。一切有关修改软件的建议都必须按照严格的规程进行评审,获准后才能实施修改。绝对不能谁想修改就随意进行修改的行为。⑶实行严格的产品控制在软件开发过程中不应随意改变需求,但不能⑷采用现代程序设计技术以前的结构化程序设计技术,如今的面向对象程序设计技术都被实践证明是各个不同历史阶段的优秀程序设计技术和方法。采用先进的技术既可以提高软件开发的效率,又可以提高软件维护的效率。⑷采用现代程序设计技术以前的结构化程序设计技术,如今的面向对⑸结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品,软件开发人员的工作进展情况可见性差。为了提高开发过程的可见性,应根据软件开发项目中的目标完成期限,规定开发组织的责任和产品标准,使得到的结果能够清楚的审查。⑸结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品,软件⑹开发小组人员少而精开发小组成员的素质应该高,人员不宜过多。人员素质和数量是影响产品质量和开发效率的重要因素。素质高的人开发效率比低的人高几倍甚至几十倍,而错误则明显得少;人数增加,管理难度也增加。⑹开发小组人员少而精开发小组成员的素质应该高,人员不宜过多。⑺承认不断改进软件工程实践的必要性要积极主动地采纳新的软件技术,要不断总结经验;不能自以为是,固步自封,唯我独好。大千世界,错综复杂,只有不断学习,才能不断进取,不断进步。⑺承认不断改进软件工程实践的必要性要积极主动地采纳新的软件技6.软件工程应用范围个人程序、中小型或一般程序同开发人员之间的关联较小,应用SE方法收效甚微。大型程序要由若干个程序员小组承担开发,相互关系极其复杂,因此,必须自始至终坚持SE方法。6.软件工程应用范围个人程序、中小型或一般程序同开发人员之间7.软件工程方法学软件工程方法学包含3个要素:方法是完成软件开发的各项任务的技术方法,回答“怎么做”的问题?工具是为运用方法而提供的软件工程支撑环境。过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。7.软件工程方法学软件工程方法学包含3个要素:传统方法学把软件生存周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低整个软件开发工程的困难程度。在实现每个阶段任务时,采用系统化的技术方法——结构化分析和结构化设计技术。传统软件工程模式的缺点:强调了分阶段实施模块化、结构化程序设计技术和方法,而忽视了人在软件开发过程中的地位和作用。传统方法学把软件生存周期划分成若干个阶段,每个阶段的任务相对面向对象方法学当软件规模庞大,或对软件的需求是模糊的、或随时间而变化时,使用传统方法学往往不成功。因为结构化方法要么面向行为,要么面向数据,而不能兼有。计算机就是为了处理数据而诞生的,数据和对数据的处理本是紧密联系在一起的,而传统方法人为地把数据和数据处理分开,导致了问题的复杂性。而面向对象处理方法把数据和数据处理紧密结合在一起,产生了一种新的方法学。面向对象方法学当软件规模庞大,或对软件的需求是模糊的、或随时现代方法学现代软件方法学是在传统方法学的基础上,为了强调人在系统开发中的作用,同时为了适应软件新技术的发展趋势而提出的。由于在软件开发过程中最大限度地采用软件组件,使得软件开发过程变为系统分析、系统构造、系统测试的集成过程。现代方法学现代软件方法学是在传统方法学的基础上,为了强调人在现代方法学基本要点开发人员的组织管理对软件开发成功与否至关重要;以人为主,充分利用软件开发方法及软件开发工具;基于软件组件的软件开发技术。各种功能的可重用软件组件不断问世。这使得在软件开发过程中编程工作量日趋减少,取而代之的是在设计好系统体系结构后,利用软件组件构造或重构软件系统。由于软件组件是标准化设计、成品化生产的,极易构造使用,从而大大简化了设计、编程、测试各个环节的工作量,提高了工作效率和生产效率。现代方法学基本要点开发人员的组织管理对软件开发成功与否至关重现代软件工程模式阶段
划分及主要任务系统分析系统设计系统测试软件组件系统开发人员的组织管理现代软件工程模式阶段
划分及主要任务系统分析⑴系统分析首先根据用户需求建立系统用户模型,。它从概念上全方位表达系统需求及系统与用户的相互关系。在用户模型的基础上,通过系统分析建立适应性强的独立于系统实现环境的逻辑结构。分析阶段独立于系统实现环境,可以保证建立起来的系统结构具有相对的稳定性,便于系统维护、移植或扩充。⑴系统分析首先根据用户需求建立系统用户模型,。它从概念上全方系统逻辑结构三要素系统的逻辑结构应从以下三方面全面反映系统的功能与性能:信息完整描述系统中所处理的全部信息;行为完全描述系统状态变化所需处理或功能;表示详细描述系统的对外接口与界面。系统逻辑结构三要素系统的逻辑结构应从以下三方面全面反映系统的⑵系统设计系统实现环境为了保持系统结构的稳定性,在系统设计阶段要充分考虑:应尽可能避免由于实现环境的特定要求而改变系统结构。设计构造系统的软件组件主要内容包括:定义组件结构、功能和外部接口、组件之间的相互关系和通信方式。对于复杂的大系统,还可以根据组件之间关联的紧密程度,将关联密切的多个组件形成一个子系统。编程实现系统对于需要开发的软件系统,选择某种合适的程序设计语言编写相应的源代码程序,完成系统实现工作。⑵系统设计系统实现环境为了保持系统结构的稳定性,在系统设⑶系统测试系统测试包括单元测试、集成测试和系统测试。就功能而言与传统软件工程模式中系统测试的功能相同。⑶系统测试系统测试包括单元测试、集成测试和系统测试。⑷软件组件在现代软件工程的开发过程中,软件组件只是一个辅助或支撑系统构造的一个过程。软件组件开发主要是开发与维护系统构造过程中用到的组件。将软件组件作为一个单独的过程,目的是将组件作为构造软件的“零部件”。随着软件技术的不断发展及软件工程的不断完善,软件组件将会作为一种独立的软件产品出现在市场上,供应用开发人员在构造应用系统时选用。⑷软件组件在现代软件工程的开发过程中,软件组件只是一个辅助或⑸系统开发人员的组织管理现代软件工程不仅包括软件开发方法、工具和过程,更强调人在开发过程中的作用。一个复杂的系统开发过程,涉及到众多的以人为主的各种开发活动,通过这些活动的有机配合与协调才能保证系统开发的成功。系统开发人员的组织管理是现代软件工程中的重要方面。组织管理方法有以下几个要点:①明确系统开发人员与用户之间的责任与义务;②明确各类开发人员的主要工作及责任;③制定或选择工程开发规范。⑸系统开发人员的组织管理现代软件工程不仅包括软件开发方法、工二、软件生命周期
软件生存周期指从软件的需求分析、设计、编程、测试、交付用户使用到版本升级、自然淘汰的过程。二、软件生命周期软件生命周期各个阶段任务需求分析系统设计系统编程系统测试系统维护软件生命周期各个阶段任务需求分析⑴需求分析任务是:收集、分析、理解、确定用户的要求;然后把用户的要求精确、完整地描述表达出来。目的:要回答“要解决什么问题?”,既系统”做什么?“。分两步骤:可行性研究:制定软件开发计划进行需求分析阶段结果,产生出:可行性报告、软件计划、需求说明书⑴需求分析任务是:收集、分析、理解、确定用户的要求;然后把用⑵系统设计任务是:设计软件系统的模块层次结构模块间逻辑关系、参数每个模块的功能目的:要回答“如何解决该问题?”,既系统“怎样做?”。分两步骤:概要设计:解决系统的模块划分、模块的层次结构及数据库设计。详细设计:解决每个摸块内部算法和数据结构。阶段结果:系统设计说明书和模块功能说明书
⑵系统设计任务是:⑶系统编程任务是:根据设计说明书中每个模块的控制流程编写出相应的源程序。阶段结果:
软件系统的源程序⑶系统编程任务是:⑷系统测试任务是:检查、发现程序中的错误,提高系统可靠性。回答:“该系统是否能实现规定的操作?”。分三个阶段:模块测试测试每个模块是否有错;组装测试测试模块之间的接口是否正确;确认测试测试整个软件系统是否满足用户功能、性能要求。阶段结果:测试报告;说明测试数据的选择,测试对象、测试结果是否符合预期结果等。⑷系统测试任务是:检查、发现程序中的错误,提高系统可靠性。⑸系统维护任务是:改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中新的功能要求;目的:维护软件系统的正常运行;阶段结果:软件系统的问题报告和软件修改报告。⑸系统维护任务是:改正软件系统在使用过程中发现的隐含错误,扩三、软件过程软件过程是“为了获得软件所需要完成的一系列任务的工作步骤”。软件过程定义了运用方法的顺序、各阶段应交付的文档资料、为保证软件质量所要采取的管理措施,以及标志软件开发各个阶段任务完成的结果形式。通常用使用生命周期模型来简洁地描述软件过程,也称为过程模型。主要过程模型:……三、软件过程软件过程是“为了获得软件所需要完成的一系列任务的1.瀑布模型瀑布模型是上个世纪80年代广泛应用的一种模型,至今仍然被最广泛使用的过程模型之一(B.W.Boehm提出的)。瀑布模型的特点:具有顺序性和依赖性,即后一阶段工作必须在前一阶段工作完成后才能开始。瀑布模型强调优质,即每一步都循序渐进,及早消除隐患,从而保证软件质量。致命缺点是只有做出精确的需求分析,才能取得预期的结果。由于各种客观、主观的原因,需求分析往往不很精确,常常给日后的开发带来隐患。1.瀑布模型瀑布模型是上个世纪80年代广泛应用的一种模型,至瀑布模型示意图
需求分析7%系统设计6%软件编程7%软件测试13%软件维护67%用户要求分析报告系统设计报告源程序测试报告更改要求UAMATMMPUTPUAMPA系统分析员M项目管理员P程序员T高级程序员U
用户瀑布模型示意图需求分析7%系统设计6%软件编程7%软件测试⒉原型模型——样品模型原型模型的主要思想:先借用已有系统作为原型模型,通过“样品”不断改进,使得最后的产品就是用户所需要的。原形模型的特点:(1)开发人员和用户在“原型”上达成一致。可减少设计错误、开发风险、对用户培训时间,而提高了系统的实用、正确性以及用户的满意程度。(2)缩短开发周期,加快工程进度。(3)降低成本。原型模型的缺点:当告诉用户,还必须重新生产该产品时,用户是很难接受的。这往往给工程继续开展带来不利因素。⒉原型模型——样品模型原型模型的主要思想:⒊螺旋模型将工程划分为4个主要活动:制定计划、风险分析、实现工程和用户评价。4个活动螺旋式地重复执行,直到最终得到用户认可的产品。制定计划:确定软件目标,选定实施方案,弄清项目开发限制条件。风险分析:分析可选方案,分析识别风险,研究解决化解风险的办法。实现工程:实施软件产品的开发。用户评价:对当前工作结果进行评价,提出改进产品的建议。螺旋模型的缺点:很难让用户确信这种演化方法的结果是可以控制的。⒊螺旋模型将工程划分为4个主要活动:制定计划、风险分析、实现⒋面向对象的开发模型主导思想是:在整个软件开发过程中将面向对象技术贯穿于整个生存周期,并结合传统开发模式中好的、已被大量成功开发活动证明是可行的经验和技术。分为3个主要阶段:分析:模拟
“关键系统”来表示用户要求,并设计独立实现的“关键类”设计:限制并优化关键类,在特定的环境中实现,得到另外的类实现:定义类的接口和实现方法,然后编写并统一测试所有的类⒋面向对象的开发模型主导思想是:在整个软件开发过程中将面向对面向对象开发的缺陷还不成熟在大的项目上经验不多,在小的项目上尚可在开发过程中对细节的描述较少,新手难于理解测试滞后开发过程没有中间版本,几乎所有的测试都留在最后的实现阶段结构死板系统结构的设计主要取决于需求分析阶段,而在设计和实现阶段基本上没有结构上变化的余地。
面向对象开发的缺陷还不成熟⒌增量模型也称渐增模型。它把软件产品作为一系列的增量构件来设计、编码、集成和测试。增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的,开发出一部分,向用户展示一部分,让用户及早看到部分软件,及早发现问题。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。缺点是:要求软件具有开放的结构是这种模型固有的困难。⒌增量模型也称渐增模型。它把软件产品作为一系列的增量构件来设
四、软件工程管理软件工程项目管理的任务软件人员组织与管理软件配置管理四、软件工程管理⒈软件工程项目管理的任务软件工程项目管理所涉及的范围覆盖了整个软件工程过程。管理任务是:根据项目合同书要求,制定项目计划和工程进度安排、监督和检查项目实施过程、保证工程满足要求的质量标准、分析确定并排除风险、在规定的期限和预算成本内完成项目。任务包括:
……⒈软件工程项目管理的任务软件工程项目管理所涉及的范围覆盖了整①项目计划和进度安排项目计划要列出软件开发要做的主要工作和任务清单,要回答“软件工程项目做什么?”。在工作和任务清单中要清楚地描述出:项目划分的各个实施阶段每个阶段的工作重点和任务是什么完成本阶段工作和任务的人力、资源需求,时间期限阶段工作和任务的成果形式项目实施过程中对风险、疑难、其他不可预见因素等的处理机制各任务组及开发人员之间的组织、协调关系等。①项目计划和进度安排项目计划要列出软件开发要做的主要工作和任进度安排把复杂的整体项目分解成许多可以准确描述、度量、可独立操作的相对简单的任务,然后安排这些任务的执行顺序,确定每个任务的开始、结束时间和完成期限。需要考虑的主要问题是:项目可以支配的人力及资源项目的关键路径生存周期各个阶段工作量的划分工程进展如何度量各个阶段任务完成标志如何自然过渡到下一阶段的任务等进度安排把复杂的整体项目分解成许多可以准确描述、度量、可独立②项目追踪和质量保证项目追踪实施由项目管理人员负责。他们要按进度表追踪检查每一个任务。如果任务实际完成日期滞后,管理人员可以行使职权范围内的权力采取各种补救措施以减少进度误期所造成的影响。包括:重新调整分配资源、重新安排任务,甚至可以修改交付日期以解决已经暴露出来的问题。质量保证在软件生存周期中是至关重要的。人们在管理项目时往往只强调:按期完成任务、遵循进度计划、控制成本等问题,却忽视了各阶段工作和任务应满足规定的质量标准。如何保证质量……②项目追踪和质量保证项目追踪实施由项目管理人员负责。他们要保证软件质量的措施为了保证软件质量,在软件开发过程中应采取下列措施:⑴审查⑵复查和管理复查⑶测试保证软件质量的措施为了保证软件质量,在软件开发过程中应采取下审查在各阶段工作结束之前,要对该阶段产生的结果和软件配置文档进行严格技术审查。审查过程包括:①计划:组织审查组、分发材料等;②概况介绍:让主程序员介绍项目概况;③准备:阅读材料,取得项目有关知识;④评审会:发现和记录错误;⑤返工:开发者修改已经发现的问题;⑥复查:检查返工是否真正解决了问题。审查在各阶段工作结束之前,要对该阶段产生的结果和软件配置文档复查和管理复查复查检查已有材料,以断定本阶段的工作是否能够开始或继续。管理复查向开发组织或使用部门的管理人员提供有关项目的总体状况以及进度等方面的情况,以便他们从管理的角度对开发工作进行审查。复查和管理复查复查测试测试是用测试用例执行系统,以检查测试结果是否和预期结果一致。在测试过程中将产生以下文档:①测试计划:确定测试范围、方法、测试用例和所需资源等;②测试过程:详细描述与每个测试方案有关的测试步骤和数据;③测试结果:把每次测试结果归入文档;如果运行出错,应填写问题报告,并且要通过调试解决所发现的问题。测试测试是用测试用例执行系统,以检查测试结果是否和预期结果一③成本估算成本估算和成本管理是软件项目管理的核心任务。在制定项目计划时,就要对项目需要资源、项目持续时间和项目成本做出估算。成本估算方法大致分为两种:⑴自顶向下法是对整个工程项目的总开发时间和总工作量做出估算,然后将它们按阶段、步骤和任务进行分配。⑵自底向上法则正好相反,先分别估算各个任务所需要的工作量和开发时间,再相加,从而得到总的工作量和总的开发时间。③成本估算成本估算和成本管理是软件项目管理的核心任务。在制定成本估算方法简介专家估算法依靠一个或多个专家对项目做出估算,其精度主要取决于专家对估算项目的定性参数的了解和他们的经验。类推估算法在自顶向下法中,类推估算法将估算项目的总体参数与类似项目进行直接比较得到结果;在自底向上法中,类推是在两个具有相似条件的工作单元之间进行。算式估算法前两种估算法的缺点在于:它们依靠的是带有主观猜测和盲目性的估算方法。算式估算法则是企图避免主观因素影响的一种方法。算式估算法有两种基本类型:由理论导出的算法和由经验得出的算法。成本估算方法简介专家估算法依靠一个或多个专家对项目做出估④风险分析在开发新的软件系统过程中,由于存在许多不确定因素,软件开发失败的风险是客观存在的。风险分析实际上就是贯穿在软件工程过程中的一系列风险管理步骤,其中包括:风险识别、风险估计、风险管理策略、风险解决和风险监督等。④风险分析在开发新的软件系统过程中,由于存在许多不确定因素,主要风险因素①产品大小。实践经验表明项目风险和产品的大小成正比(度量单位是代码行或功能点)。②技术相关。使用新技术或已过时的技术都存在风险。包括未使用过的新型硬件、支持软件,缺乏标准与规范的非传统的开发方法等。技术风险一般难于改正。③开发环境。适用的开发工具不足、不可靠、使用不方便等因素,都会降低开发效率。④组织规模和人员经验。⑤客户因素。表现在客户需求经常矛盾,不了解客户的特殊需要,客户不了解项目中采用的新技术,且双方又难于沟通等。主要风险因素①产品大小。实践经验表明项目风险和产品的大小成⒉软件人员组织与管理人员是软件工程项目最重要、也是最为活跃的资源因素。如何组织得更加合理,如何管理得更加有效,从而最大限度地发挥这一重要的资源潜力,对于成功地完成软件工程项目至关重要。⒉软件人员组织与管理人员是软件工程项目最重要、也是最为活跃的⑴项目组的组织结构开发组织采用什么形式,要针对软件项目的特点来决定,同时也与参加人员的素质有关。建立项目组织时要考虑这样一些原则:①项目责任制度。项目必须实行项目负责人责任制。项目责任人对项目的完成负全部责任。②人员少而精。项目组成员之间的交流和协作是项目成败的关键。人员少,具有便于组织管理、合理分工、减少通信等优点;人员精,有利于互相激励、发挥各自的特长优势,提高工作效率。⑴项目组的组织结构开发组织采用什么形式,要针对软件项目的特点⑵程序设计小组的组织形式实践证明开发组织的组织形式、人员之间联系得多少和联系方式与生产效率直接相关。开发小组人数少(2~3人),则人员之间的联系比较简单。但随着人数的增加,相互之间的联系的复杂程度是呈非线性增加的。⑵程序设计小组的组织形式实践证明开发组织的组织形式、人员之间①主程序员组组由主程序员、程序员和后援工程师为核心组成。主程序员是经验丰富能力强的高级程序员,负责小组全部技术活动的计划、协调与审查工作,还负责设计和实现项目中的关键部分。后援工程师协助和支持主程序员的工作,为主程序员提供咨询,也做部分分析、设计和实现的工作,并在必要时代替主程序员工作。程序员负责项目的具体分析与开发,以及文档资料的编写工作。主程序员组这种集中领导的组织形式突出了主程序员的领导作用,简化了人际通信。这种组织形式能否取得好的效果,很大程度上取决于主程序员的技术水平和管理才能。美国的软件产业中大多采用主程序员组的组织形式。①主程序员组组由主程序员、程序员和后援
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论