新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法

上传人:E**** 文档编号:89422739 上传时间:2019-05-25 格式:PPT 页数:62 大小:3.07MB
返回 下载 相关 举报
新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法_第1页
第1页 / 共62页
新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法_第2页
第2页 / 共62页
新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法_第3页
第3页 / 共62页
新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法_第4页
第4页 / 共62页
新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法》由会员分享,可在线阅读,更多相关《新编计算机导论 教学课件 ppt 作者 张丽娜 周苏 王文 金海溶 第13章 软件工程与开发方法(62页珍藏版)》请在金锄头文库上搜索。

1、,新编计算机导论,周苏 教授, QQ: 81505050 手机:13805784515 / 694515 博客: http:/ 软件工程与开发方法,第13章,第13章 软件工程与开发方法,第13章,第13章 软件工程与开发方法,第13章,第13章 软件工程与开发方法,软件工程和硬件工程都可以看成是计算机系统工程的一部分。用于计算机硬件的工程技术是由电子设计技术发展起来的,而且在几十年的时间里已经达到了比较成熟的水平,虽然制造方法仍在不断地改进,但硬件的可靠性已经是一种可以期待的现实而不再是一种愿望了。,第13章 软件工程与开发方法,但是,计算机软件工程还处于某种困境之中。在以计算机为基础的系统

2、中,软件已经取代硬件成为系统中设计起来最困难、最不容易成功 (按时完成和不超过预计的成本) ,而且是最不易管理的部分。另一方面,随着以计算机为基础的系统在数量、复杂程度和应用范围上的不断增长,对软件的需求却有增无减。软件工程就是建立在这样的基础之上。,13.1 软件生存周期及其模型,软件生存周期是软件工程中的一个基础概念。国家标准软件工程术语(GB/T11457-1995) 定义了软件生存周期,即:从设计软件产品开始到产品不能再使用时为止的时间周期。亦即:一个计算机软件,从出现一个构思之日起,经过开发成功投入使用,在使用中不断增补修订,直到最后决定停止使用,并被另一项软件代替之时止,被认为是该

3、软件的一个生存周期 (或称生命周期、生存期,life cycle) 。,13.1.1 软件生存周期,一个软件产品的生存周期可以划分成若干个互相区别而又有联系的阶段,每个阶段中的工作均以上一阶段工作的结果为依据,并为下一阶段的工作提供了前提。经验表明,失误造成的差错越是发生在生存周期的前期,在系统交付使用时造成的影响和损失就越大,要纠正它所花费的代价也越高。因而在前一阶段工作没有做好之前,决不要草率地进入下一阶段。,13.1.1 软件生存周期,国家标准计算机软件开发规范(GB/T8566-1988) 将软件生存周期划分为以下八个阶段,即:可行性研究与计划、需求分析、概要设计 (即结构设计)、详细

4、设计、实现 (包括单元测试) 、组装测试 (即集成测试) 、确认测试、使用和维护。软件生存周期是对软件的一种长远发展的看法,这种看法把软件开发之前和软件交付使用之后的一些活动都包括在软件生存周期之内。应当注意的是,软件系统的实际开发工作不可能直线地通过分析、设计、编程和测试等阶段,出现各阶段间的回复是不可避免的。,13.1.1 软件生存周期,软件生存周期的每个阶段都要产生一定规格的软件文件 (文档) 移交给下一阶段,使下一阶段在此基础上继续开展工作。,13.1.2 软件生存周期过程,软件生存周期过程(GB/T8566-2001) 根据软件工程的实践和软件工程学科的发展,进一步完善了软件生存周期

5、的定义,即:从概念形成直到退役,并且由获取和供应软件产品及服务的各个过程组成。该标准把软件生存周期中开展的活动分为五个基本过程 (获取过程、供应过程、开发过程、运作过程、维护过程) 、八个支持过程 (文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审核过程、问题解决过程) 和4个组织过程 (管理过程、基础设施过程、改进过程、培训过程) 。,13.1.2 软件生存周期过程,软件生存周期过程中阶段的划分,有助于软件研制管理人员借用传统工程的管理方法 (重视工程性文件的编制,采用专业化分工方法,在不同阶段使用不同的人员等) ,从而有利于明显提高软件质量、降低成本、合理使用

6、人才、进而提高软件开发的劳动生产率。,13.1.3 软件生存周期模型,软件生存周期模型 (又称软件开发模型) 是软件工程的一个重要的概念,它可以定义为:一个框架,它含有遍历系统从确定需求到终止使用这一生存周期的软件产品的开发、运行和维护中需实施的过程、活动和任务。,13.1.3 软件生存周期模型,软件生存周期模型能清晰、直观地表达软件开发全过程,明确规定了开发工作各阶段所要完成的主要活动和任务,以作为软件项目开发工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境

7、。软件生存周期模型是稳定有效和普遍适用的。,13.1.3 软件生存周期模型,在软件生存周期过程中,软件生存周期模型仅对软件的开发、运作和维护过程有意义,在ISO12207和ISO9000-3中都提到软件生存周期模型,它包括:瀑布模型、渐增模型、演化模型、螺旋模型、喷泉模型和智能模型等。,13.1.3 软件生存周期模型,例如:瀑布模型 (waterfall model) 是1970年W. Royce提出的最早的软件开发模型,它将软件开发过程中的各项活动规定为依固定顺序连接的若干阶段工作,形如瀑布流水,如图13-1所示,最终得到软件系统或软件产品。换句话说,它将软件开发过程划分成若干个互相区别而又

8、彼此联系的阶段,每个阶段中的工作都以上一个阶段工作的结果为依据,同时为下一个阶段的工作提供了前提。,图13-1 软件生存周期的瀑布模型,13.2 软件工程定义,发展至今,软件工程已经是一门交叉性学科,它是解决软件问题的工程,对它的理解不应是静止的和孤立的。软件工程是应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法来创建软件,从而达到提高质量、降低成本的目的。其中,计算机科学和数学用于构造模型、分析算法,工程科学用于制定规范、明确风格、评估成本、确定权衡,管理科学用于进度、资源、质量、成本等的管理。,13.2 软件工程定义,软件工程的目标是明确的,就是研制开发与生产出具有良好质量和

9、费用合算的软件产品。费用合算是指软件开发运行的整个开销能满足用户的要求,软件质量是指该软件能满足明确的和隐含的需求能力的有关特征和特性的总和。,13.2 软件工程定义,软件工程的基础是一些指导性的原则,例如以下几点: 必须认识软件需求的变动性,并采取适当措施来保证结果产品能忠实地满足用户要求。软件设计中,通常要考虑模块化、抽象与信息隐蔽、局部化、一致性等原则。 稳妥的设计方法大大地方便软件开发,为达到软件工程的目标,软件工具与环境对软件设计的支持来说,颇为重要。 软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用。 有效的软件工程只有在对软件过程进行有效管理的情况下才能实现。,

10、13.3 软件开发过程,在软件生存周期中,开发阶段可以概括为四个阶段,即分析、设计、实现和测试。,13.3.1 分析阶段,整个开发过程始于分析阶段(包括可行性研究与计划、需求分析)。在这个阶段,系统分析员定义需求,指出系统所要实现的目标。这些需求通常用用户能理解的术语来表述。在分析阶段有四个步骤: 1) 定义用户。软件可以为一般用户或特殊用户而设计,必须很清楚地划分软件的使用者。 2) 定义要求。确定用户以后,系统分析员开始定义要求。在这个阶段,最好的答案来自于用户。用户或用户代表清楚地定义了他们对软件的期望。,13.3.1 分析阶段,3) 定义需求。在用户要求的基础上,系统分析员能够准确地定

11、义系统的需求。例如:假设一个软件在月底给每个雇员打印账单,则需要说明实现怎样的安全和精度的等级。 4) 定义方法。在清晰定义好需求之后,系统分析员应选择适当的方法来满足这些需求。,13.3.2 设计阶段,设计阶段定义系统怎样完成在分析阶段所定义的需求。在设计阶段,将确定系统,完成文件和 (或) 数据库的设计。 1) 模块化。设计阶段遵循模块化原则。整个程序包划分成许多小的模块。每个模块经过设计、测试并通过主程序与其他模块进行链接。 2) 工具。在设计阶段使用许多工具,其中最常用是模块结构图 (SC) 。模块结构图显示了如何将软件包分解成逻辑步骤,每个步骤就是一个独立的模块。模块结构图也显示了各

12、部分 (模块) 之间的相互作用。,13.3.3 实现阶段,在实现阶段,完成实际程序代码的编写。 1) 工具。在这个阶段,在实际代码编写之前使用了许多工具来显示程序的逻辑流程。程序流程图 (框图) 是流行的主要工具之一。程序流程图使用标准的图形符号来表示贯穿模块的数据逻辑流程。 第二个被程序员使用的工具是伪代码。伪代码部分是英文,部分是用精确的算法细节来描述程序将完成什么的程序逻辑。而这需要用足够的细节定义步骤,以便能够容易地转换成计算机程序。 2) 编码。在完成程序流程图、伪代码、或两者都完成之后,程序员真正开始用指定的程序设计语言编写代码。,13.3.4 测试阶段,一旦程序设计完成,必须进行

13、测试。测试阶段是在程序开发中非常单调且很花费时间的部分。程序员负责测试他们编写的程序 (单元测试) 。在大型开发项目中,通常有专家担任测试工程师,负责测试整个系统 (组装测试) ,这种测试将确保所有的程序都能在一起工作。,13.3.4 测试阶段,测试的主要类型有两种:黑盒测试和白盒测试。 1) 黑盒测试。即在不知道程序内部构造也不知道程序是怎样工作的情况下测试程序。换言之,程序就像看不见内部的黑盒。 简单地说,黑盒测试计划是从需求说明发展起来的。这就是为什么有一组好的需求如此重要的原因之一。测试工程师通过利用这些需求和他的系统开发知识以及用户的工作环境来产生测试计划。这个计划主要用于系统的整体

14、测试。编写程序之前,应当查看和了解这些测试计划。,13.3.4 测试阶段,2) 白盒测试。与黑盒测试假设对程序代码的一无所知相反,白盒测试假定你知道有关程序的一切。在这种情况下,程序就像玻璃房子,其中的一切都是可见的。 白盒测试主要是程序员的责任,他们准确地知道程序内部发生了什么。必须确保每一条指令和每一种可能情况都已经被测试过。这不是一个简单的工作。 经验将帮助程序员设计好的测试数据,但是,程序员从一开始就能做的事是养成撰写测试计划的习惯,还在设计阶段时就应该开始编制测试计划。,13.4 模块化,模块化意味着将大项目分解成较小的部分,以便能够容易理解和处理。换言之,模块化意味着将大程序分解成

15、能互相通讯的小程序。 有两种工具可以用于在程序设计中实现模块化,即模块结构图 (SC) 或类图。模块结构图用于过程化编程以显示过程或函数之间的关系;类图用于面向对象编程以显示类之间的关系,统一建模语言 (UML) 作为一个标准,包括了有助于这方面的工具和图。,13.4.1 耦合,耦合是对两个模块互相绑定紧密程度的度量。越紧耦合的模块,它们的独立性越差。耦合的类型主要有如下几种。 1) 数据耦合。只从调用函数向被调用函数传递最少的需求数据。所有需求数据作为参数传递,没有额外的数据传递。这是耦合的最佳形式,应该尽可能地使用。,13.4.1 耦合,2) 控制耦合。传递的是标记,它可用于指示函数的逻辑

16、流程,它与数据耦合极为相似,不同之处仅在于前者传递的是标记,后者传递的是数据。 如果使用得当,控制耦合是两个函数之间通讯所必需的和有效的方法,它传递状态,如到达文件尾部、找到查询的值等。糟糕的标记使用通常是糟糕的程序设计的一种标志,比如一个处理过程在两个或更多的独立函数之间分开等。,13.4.1 耦合,3) 公共耦合。又称全局耦合,是用全局变量来进行两个或更多函数之间的通讯,这不是一个好的耦合技术。实际上,应该避免使用它。例如,全局耦合实际上不可能决定哪些模块正在互相通讯。当一个程序需要改动时,它无法评估和隔离这种变化造成的影响。这常常导致没改动的函数突然失效。其次,全局耦合紧密地把函数绑定在程序上,这意味着它很难移植到另一个程序中。 4) 内容耦合。是在一个函数直接引用另一个函数的数据或语句时产生的耦合。显然,这种观念打破了结构化编程的宗旨,引用另一个函数的数据要求该数据在函数的外部可见。,13.4.2 内聚,模块化的另一个问题是内聚,内聚是程序中处理过程相关紧密

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

当前位置:首页 > 高等教育 > 大学课件

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