{推荐}第一讲软件工程概述

上传人:野原 文档编号:142709845 上传时间:2020-08-22 格式:DOC 页数:37 大小:1.88MB
返回 下载 相关 举报
{推荐}第一讲软件工程概述_第1页
第1页 / 共37页
{推荐}第一讲软件工程概述_第2页
第2页 / 共37页
{推荐}第一讲软件工程概述_第3页
第3页 / 共37页
{推荐}第一讲软件工程概述_第4页
第4页 / 共37页
{推荐}第一讲软件工程概述_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《{推荐}第一讲软件工程概述》由会员分享,可在线阅读,更多相关《{推荐}第一讲软件工程概述(37页珍藏版)》请在金锄头文库上搜索。

1、第一讲软件工程概述第一讲:软件工程概述软件的定义软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料软件危机软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题。概括的说即为:能否满足对软件日益增长的需求?能否维护数量日益增长的现有软件?软件工程的定义Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料IEEE:软件工程是开发、运行、维护和修复软件的系统方法FritzBauer:建

2、立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法软件工程要素三要素:方法、工具和过程(缺乏一个过程,洗厕所的都有方法和工具,但没有一个好的过程)软件工程方法为软件开发提供了“如何做”的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件生命周期(LifeCycle)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生命周期软件生存期的六个步骤,即制定计划、需求分析、设计、实现、测试及运行维护软件生命周期:制订计划确定要开发软件系统的总目标给出功能、性能、可靠性以及接口等方面的要求完成该软件任务的可行性研究估计可利用的资

3、源(硬件,软件,人力等)、成本、效益、开发进度制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查软件生命周期:需求分析对用户提出的要求进行分析并给出详细的定义,得到系统逻辑模型,可用数据流程图、数据字典和简要算法加以表示。编写软件需求说明书或系统功能说明书及初步的系统用户手册提交管理机构评审软件生命周期:软件设计概要设计把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应。详细设计对每个模块要完成的工作进行具体的描述,为源程序编写打下基础。通常用的HIPO(层次图加输入/处理/输出图)或PDL(过程设计语言)描述。编写设计说明书,提交

4、评审。软件生命周期:实现编码把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”写出的程序应当是结构良好、清晰易读的,且与设计相一致的软件生命周期:测试单元测试,查找各模块在功能和结构上存在的问题并加以纠正组装测试,将已测试过的模块按一定顺序组装起来按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,亦可称为验收测试软件生命周期:运行与维护改正性维护:运行中发现了软件中的错误需要修正适应性维护:为了适应变化了的软件工作环境,需做适当变更完善性维护:为了增强软件的功能需做变更预防性维护:修改软件为将来的维护做准备软件生存期模型

5、软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架瀑布模型演化模型螺旋模型喷泉模型智能模型瀑布模型的特点演化模型由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次:第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求第二次则在此基础上获得较为满意的软件产品螺旋模型螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:制定计划确定软件目标,选定实施方案,弄清项目开发的限制风险分析分析所选方案,考虑如何识别和消除风险实施工程实施软件开发客户评估评价开发工作,提出修正建议

6、螺旋模型的特点把软件开发过程组成为一个逐步细化的可定义周期(螺旋周期)序列,每经历一个周期,系统就得到进一步的细化和完善;本质上,具有上述特征的螺旋是一直运转的直到软件退役。有时这个过程处于睡眠状态,但任何时候出现了改变,过程都会从合适的入口点开始;紧密围绕开发中的风险问题,用风险分析推动软件设计向深一层扩展、求精;强调持续地判断、确定和修改用户任务目标,并按成本、效益来分析候选的软件产品性质对任务目标的贡献;可结合采用多种软件开发方法,但究竟结合哪一种方法仍由风险分析来决定。喷泉模型迭代重复演进无间隙各阶段间无明显界限,支持分析和设计结果的自然复用。适用面向对象的软件开发过程。Rationa

7、lUnifiedModel软件工程的基本原则1、抽象。采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。2、信息隐蔽。将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者直接访问。这就是信息封装,使用与实现分离的原则。3、模块化模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。4、局部化要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性。5、确定性软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。6、一致性整个软件系统的各个模块应使用一致的概念、符号和术语。程序内部接口应保持一致。

8、软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。7、完备性软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。8、可验证性开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。第二讲:软件分析需求分析的任务 需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。需求分析的任务 深入描述软件的功能和性能 确定软件设计的约束和软件同其它系统元素的接口细节 定义

9、软件的其它有效性需求 准确地表达被接受的用户要求 确定被开发软件系统的系统元素 将功能和信息结构分配到这些系统元素中弄清需求的分析技巧需求分析的过程 问题识别 分析与综合 编制需求分析阶段的文档资料 需求分析评审需求分析的过程问题识别n 从系统的角度来理解软件并评审软件范围是否恰当n 确定对目标系统的综合要求,即软件的需求n 提出这些需求实现条件,以及需求应达到的标准需求分析的过程分析与综合n 从信息流和信息结构出发,逐步细化所有的软件功能,找出系统各元素之间的关联、接口特性和设计上的约束,分析它们是否满足功能要求,是否合理。剔除其不合理的部分,增加其需要部分。最终综合成系统的解决方案,给出目

10、标系统的详细逻辑模型。需求分析的过程编制需求分析文档l 软件需求说明书l 数据要求说明书l 初步的用户手册l 修改、完善与确定软件开发实施计划需求分析的过程需求分析评审l 系统定义的目标是否与用户的要求一致;l 系统需求分析阶段提供的文档资料是否齐全;l 文档中的所有描述是否完整、清晰、准确反映用户要求;l 与所有其它系统成分的重要接口是否都已经描述;l 被开发项目的数据流与数据结构是否足够,确定;l 所有图表是否清楚,在不补充说明时能否理解;l 主要功能是否已包括在规定的软件范围之内,是否都已充分说明;需求规格说明原则需求分析的原则 需要能够表达和理解问题的信息域和功能域。信息域包括u 信息

11、流:数据和控制通过一个系统时的变化方式。两个功能之间的数据/控制传递就u 确定了功能间的接口。u 信息内容:单个数据或控制对象,它们构成了某个更大的由软件变换生成的信息的集合。u 信息结构:各种数据和控制项的内部组织。2、以层次化的方式对问题进行分解和不断细化软件的功能域和信息域都能做进一步的分解。这种分解可以是同一层次上的,称为横向分解;也可以是多层次的纵向分解。3、要给出系统的逻辑视图和物理视图u 软件需求的逻辑视图给出的是软件要达到的功能和要处理的数据之间的关系,而不是实现的细节。u 软件需求的逻辑描述是软件设计的基础。u 软件需求的物理视图给出的是处理功能和数据结构的实际表现形式,这往

12、往是由设备本身决定的。需求分析方法 需求分析方法由对软件问题的信息域和功能域的系统分析过程及其表示方法组成 大多数的需求分析方法是由信息驱动的 信息域具有三种属性:信息流、信息内容和信息结构。需求分析方法 结构化分析方法(SA) 软件原型化方法 面向数据结构的Jackson方法(JSD) 面向数据结构的结构化数据系统开发方法(DSSD) 面向对象的分析方法(OOA)等结构化分析方法(StructureAnalysis)n 结构化分析方法是一种建模技术n 在模型的核心是数据词典,它描述了所有的在目标系统中使用的和生成的数据对象。围绕着这个核心的有三种图:u 实体关系图(ERD)描述数据对象及数据

13、对象之间的关系;u 数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);u 状态迁移图(STD)描述系统对外部事件如何响应,如何动作。ERD用于数据建模,DFD用于功能建模,STD用于行为建模。原型化分析方法 在开发初期,要想得到一个完整准确的规格说明不是一件容易的事。特别是对一些大型的软件项目。 用户往往对系统只有一个模糊的想法,很难完全准确地表达对系统的全面要求。 软件开发者对于所要解决的应用问题认识更是模糊不清 随着开发工作向前推进,用户可能会产生新的要求,或因环境变化,要求系统也能随之变化;开发者又可能在设计与实现的过程中遇到些没有预料到的

14、实际困难,需要以改变需求来解脱困境。 因此规格说明难以完善、需求的变更、以及通信中的模糊和误解,都会成为软件开发顺利推进的障碍。 为解决这些问题,逐渐形成了软件系统的快速原型的概念。原型分类 在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。 探索型:目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。 实验型:这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。 进化型:这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。原型分析优点:l 增进软件者和用户对系统服务需求的理

15、解,使比较含糊的具有不确定性的软件需求(主要是功能)明确化。l 软件原型化方法提供了一种有力的学习手段。l 使用原型化方法,可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果。l 软件原型的最终版本,有的可以原封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,这样有利于建成最终系统。原型建立技术: 可执行规格说明 基于脚本(scenario)的设计 自动程序设计 专用语言 可复用(reusable)的软件 简化假设原型建立技术:可执行规格说明 可执行规格说明是用于需求规格说明的一种自动化技术。使用这种方法,人们可以直接观察他们用语言规定的任何系统性行为。包括 代数规格说明 有限状态模型 可执行的数据流图基于脚本(scenario)的设计 脚本是指用户界面的原型。一个脚

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板/表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号