2020-11-17演讲人软件工程01第一章软件工程概述第一章软件工程概述1.4知识体系1.3软件工程D1.2软件的发展和软件危机 C1.1计算机软件BA020301第一章软件工程概述1.1计算机软件2.软件的特点3.软件的分类1.软件的定义1.1 计算机软件软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行 的指令序列1.软件的定义数据是使程序能正常操作信息的数据结构文档是与程序开发,维护和使用相关的图文材料1.1计算机软件231软 件的开发是一种逻辑思维成熟的过程,无明显制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,但却存在退化问题逻辑实体 2.软件的特点564软件是高度复杂的逻辑体软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性开发依然很原 始,无法完全使软件开发过程自动化成本相当昂贵相当多的软件工作涉及到社会因素1.1计算机软件2.软件的特点3.软件的分类按功能 层次按服务对象按软件使用方式按软件功能划分按规模划分按工作方式划分3.软件的分类按功能层次系统软件中间件软件应用软件3.软件的 分类按服务对象通用软件定制软件可配置软件3.软件的分类按软件使用方式单机软件服务器软件客户端软件3.软件的分类按工作方式划分实 时处理软件分时软件交互式软件批处理软件第一章软件工程概述1.2软件的发展和软件危机软件危机软件危机由于落后的软件生产方式无法满 足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象表现解决途径软件危机表现软件开发计划难以制定费用和 进度失控无法让用户满意质量难以保证没有适当的文档资料通常是不可维护的成本在计算机系统总成本中所占比例逐年增加软件危机解决途径软件工 程P6P5一般原理P4基本原则P3研究内容P2目标P1三要素主要思想第一章软件工程概述1.3软件工程第一章软件工程概述1.3 软件工程基本原理1.3软件工程主要思想按照工程化的原理、原则和方法开发、运行、维护软件三要素201520162017方法工具过 程为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过 程的设计、编码、测试以及维护等为软件工程方法提供了自动的或半自动的软件支撑环境将软件工程的方法和工具综合起来以达到合理、及时地进行 计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需一的管理、及软件开发各个阶段完成的里程 碑1.3软件工程目标在给定成本、进度的前提下,开发出满足用户需求且具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可 适应性、可移植性、可追踪性和可互操作性的软件产品1.3软件工程软件开发技术软件工程管理研究内容12重视开发过程的管理提供高质量的 工程支持D采用合适的设计方法C选取适宜的开发模型BA1.3软件工程基本原则P6P5一致性P4确定性P3局部化P2模块化P1信息隐 藏抽象1.3软件工程一般原理P2P1可验证性1.3软件工程完备性一般原理030402060501用分阶段的生命周期计算严格管理 坚持进行阶段评审,尽早发现并排除错误实行严格的产品控制:控制需求变动的影响1.3软件工程基本原理采用现代程序设计技术,提高开发和 维护效率结果应能清楚地审查开发小组的人员少而精1.3软件工程基本原理承认不断改进软件工程实践的必要性02第二章软件生命周期模型 第二章软件生命周期模型2.5新型软件生命周期模型2.4传统软件生命周期模型E2.3软件过程模型D2.2软生命周期2.1 软件工程过程CBA第二章软件生命周期模型2.1软件工程过程软件规格说明软件开发软件确认软件演进0102第二章软件生命周期模型 指软件产品从考虑其概念开始,到该软件产品不再使用为止的整个时期,一般包括概念阶段、分析与设计阶段、构造阶段、移交阶段等不同时期六个 基本活动2.2软生命周期六个基本活动制定计划需求分析和定义软件设计ABC程序编写软件测试运行/维护DEFLOGO第二章软件生命 周期模型工作流模型数据流模型2.3软件过程模型角色/动作模型https://www.wps.cn3511.瀑布模型3.原型方 法5.增量模型第二章软件生命周期模型2.4传统软件生命周期模型2.V模型和W模型4.演化模型6.螺旋模型426LOGO 第二章软件生命周期模型7.喷泉模型8.构件组装模型9.快速应用开发模型2.4传统软件生命周期模型https://www. wps.cn1.瀑布模型特征缺点优点0102本活动的工作对象来自于上一项活动的输出根据本阶段的活动规程执行相应的任务1.瀑布模 型特征0304产生本阶段活动相关产出——软件工件,作为下一活动的输入对本阶段活动执行情况进行评审01阶段划分不仅降低了软件开发的复 杂程度,还提高了开发过程的透明性,便于将软件工程过程和软件管理过程有机地融合在一起,从而提高软件开发过程的可管理性1.瀑布模型0 2推迟了软件实现,强调在软件实现前必须进行分析和设计工作优点03一项目的阶段评审和文档控制为手段有效的对整个开发过程进行指导,保证 阶段之间的额正确衔接,能够及时发现并纠正开发过程中的缺陷,从而是产品达到预期的质量要求缺乏灵活性,特别是无法解决软件需求不明确或不 准确的问题,这是最突出的缺点。因此,瀑布模型只适合于需求明确的软件项目。011.瀑布模型风险控制能力较弱。成品时间长;体系结构的 风险和错误只有在测试阶段才能发现,返工导致项目延期02缺点软件活动是文档驱动的,文档过多会增加工作量,文档完成情况会舞蹈管理人员0 32.V模型和W模型V模型——瀑布模型变种瀑布模型将测试作为软件实现只有的一个独立阶段,没有强调测试的重要性其价值在于纠正人们 不重视测试阶段重要性的错误认识,将测试分等级,并和前面的开发阶段对应起来W模型——瀑布模型变种V模型仍然将测试作为一个独立的阶段 ,所以并没有提高模型的抗风险能力将测试广义化,增加了确认和验证内容,并贯穿整个软件生命周期由两个V模型组成,分别代表测试与开发过程 ,同步进行3.原型方法瀑布模型无法适应需求的变化概述种类策略优点缺点3.原型方法过程3.原型方法概述原型:指模拟某种产品的原 始模型。软件原型是一个早起可以运行的版本,它反映最终系统的部分重要特性0102033.原型方法种类探索型:弄清对目标系统的要求实 验型:系统实现前考察系统的可行性进化型:将原型扩展到开发过程,通过原型开发逐步是吸纳所有系统功能01023.原型方法废弃策略追加 策略策略0102有助于增进软件人员对系统服务需求的理解提供了有力的学习手段3.原型方法优点0403原型的最终版本可作为最终产品或 最终系统的一部分容易确定系统的性能、服务的可应用性、设计的可行性和产品的结果3.原型方法项目难以规划和管理建立原型的许多工作会被 浪费C文档容易被忽略B缺点A快速分析快速构造3.原型方法01修改,迭代02过程05用户使用0304评价反馈4.演化模型第一次试 验开发,目的是探索可行性,弄清楚项目的需求。第一次得到的试验性产品称为原型第二次在第一次的原型基础上进行开发,从而获得较为满意的 软件产品缺点可能会抛弃瀑布模型的文档控制优点,开发过程不透明探索式演化模型可能会导致最后的软件系统的系统结构较差可能会用到一些不 符合主流、不符合要求或者不成熟的工具和技术可能会抛弃瀑布模型的文档控制优点,开发过程不透明5.增量模型结合了瀑布模型和演化模型的 优点允许用户的需求可以逐步提出来,每一次“增量”需求的划分与“增量”实现的集成是以不影响系统体系结构为前提的优点缺点增强了用户 使用系统的信心,逐步提出对后续增量的需求项目总体失败的风险较低增量从高到低的优先级确定保障了系统重要功能部分的可靠性同一个体系结构 提高了系统的稳定性和可维护性增量的粒度选择问题确定所有的基本业务服务比较困难6.螺旋模型针对大型软件项目事先不能完整清晰地定义 需求是常事,而且设计方案、技术事先方案不允许出现问题,也需要经过多次试验才能明确下来,开发一个只明确需求的原型是远远不能解决问题的 ,需要开发内容逐步丰富的多个原型综合瀑布模型和演化模型,并加入了风险分析四个活动指定计划风险分析实施工程客户评估固有的本质特征迭 代多次重复、演进无间隙各阶段无明显的界限。支持分析和设计结果的自然复用7.喷泉模型适用面向对象的软件开发过程。8.构件组装 模型本质上是演化的,开发过程是迭代的五个阶段需求定义和分析软件体系结构设计构件开发应用软件构造测试和发布9.快速应用开发模型一 种增量型的软件开发过程模型,采用构件组装方法进行快速开发阶段业务建模数据建模过程建模应用生成测试及迭代1统一软件开发过程RUP 2敏捷模型AM第二章软件生命周期模型2.5新型软件生命周期模型3敏捷开发2敏捷模型AMAM只是一种态度,不是一种说明 性过程,它描述了一种建模风格核心原则价值观P5P4谦逊P3勇气P2反馈P1简单沟通2敏捷模型AM价值观2敏捷模型AM核心原 则010203主张简单拥抱变化....3敏捷开发一种以人为核心、迭代、循序渐进的开发方法敏捷宣言个体和交互胜过过程和工具可 以工作的软件胜过面面俱到的文档客户合作胜过合同谈判相应变化胜过遵循计划03第三章系统需求分析及可行性分析第三章系统 需求分析及可行性分析基于计算机系统的系统分析可行性分析系统分析的总结第三章系统需求分析及可行性分析计算机系统计算机系统工程基于计 算机系统的系统分析系统分析计算机系统P6P5过程P4数据库P3文档P2人员P1硬件软件计算机系统工程是一个问题求解的过程,目的是揭 示、分析所期望的功能、性能、接口、设计限制和信息结构的表示,并把他们分配到各个系统元素中去01包括硬件工程、软件工程、人类工程和数 据库工程02系统分析一组统称为计算机系统工程的活动,着眼于所有的系统元素,而不仅仅是软件目标识别用户要求系统的可行性分析吧功能分 配给系统元素建立成本和进度限制生产系统规格说明,形成后续工程的基础可行性分析的任务和步骤第三章系统需求分析及可行性分析可行性分析 目的不是解决问题,而是确定问题是否值得去解决可行性分析的任务和步骤针对项目确定问题域并对问题域进行概要的分析和研究,初步确定项目的 规模、约束和限制条件可行性分析的任务和步骤针对问题域中的关键和核心问题进行简要的需求分析,抽象出问题域的逻辑结构,并构建逻辑模型可 行性分析的任务和步骤从逻辑模型出发,通过小规模的设计和技术实现论证,探索出若干种可供选择的解决方案,并对每种方案进行可行性方面的论 证四个步骤04020301技术可行性法律可行性经济可行性方案的选择四个步骤经济可行性成本/效益估计,是否超了成本估算技术效益度量方 法长期-短期利益分析四个步骤技术可行性开发风险资源可用性技术条件0102第三章系统需求分析及可行性分析系统分析的总结系统规则说明 书可行性分析说明书04第四章软件需求分析第四章软件需求分析0201软件需求分析的目标及任务需求定义050403软件需求工程软件 需求分析过程软件需求分析建模原则和方法第四章软件需求分析需求定义针对待开发的软件产品,软件开发人员通过对软件产品的有拥有者和使用 者的交流和调研,获取相关的业务职能、业务知识和业务流程等信息,并对这些信息进行分析和整理后形成的有关该软件产品必须提供的功能和性能 等指标的规格描述需求定义针对待开发的软件产品,软件开发人员通过对软件产品的有拥有者和使用者的交流和调研,获取相关的业务职能、业务知 识和业务流程等信息,并对这些信息进行分析和整理后形成的有关该软件产品必须提供的功能和性能等指标的规格描述第四章软件需求分析01. 目的:研究一种无二义性的表达工具,它能为用户和软件人员双方都接受,并能够把“需求”严格地、形式地表达出来。软件需求分析的目标及任务 02.任务:借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题软件需求分析的目标及任务目的:研究一种无 二义性的表达工具,它能为用户和软件人员双方都接受,并能够把“需求”严格地、形式地表达出来。01任务:借助于当前系统的逻辑模型导出目 标系统的逻辑模型,解决目标系统的“做什么”的问题02LOGO分析建模的操作性原则第四章软件需求分析0102数据模型软件需求分析建 模原则和方法03功能模型04行为模型https://www.wps.cn软件需求分析建模原则和方法问题的信息域必须被表示和理解软件 将完成的功能必须被定义分析建模的操作性原则分析过程应该遵从自顶向下,逐层细化的原则软件的行为(作为外部事件的结果)必须被表示描述信 息、功能和行为的模型必须被划分,使得可以用层次的方法揭示细节数据模型信息内容和关系信息结构信息内容表示个体数据和控制对象,它们可和 其他的数据和控制对象关联信息结构表示了各种数据和控制项的内部组织312信息流信息流表示了数据和控制在系统中流动时变化的方式功能模型对进入软件的信息和数据进行编号和处理的模块,至少完成三个常见功能输入处理输出基于功能模型的结果,进一步解释这些功能在系统中如何运行01软件需求分析建模原则和方法行为模型计算机的一个功能总是处于某个状态:一种外部可观测的行为模式,它仅当某事件发生时才被改变02第四章软件需求分析需求开发需求管理软件需求工程软件需求工程需求开发需求管理05第六章面向对象分析第六章面向对象分析06第七章结构化需求分析第七章结构化需求分析07第八章软件设计第八章软件设计08第九章面向对象设计第九章面向对象设计09第十章结构化设计方法第十章结构化设计方法10第十一章软件实现、测试和维护第十一章软件实现、测试和维护感谢聆听 |
|