软件工程精要

上传人:第*** 文档编号:60553297 上传时间:2018-11-17 格式:PPT 页数:116 大小:468KB
返回 下载 相关 举报
软件工程精要_第1页
第1页 / 共116页
软件工程精要_第2页
第2页 / 共116页
软件工程精要_第3页
第3页 / 共116页
软件工程精要_第4页
第4页 / 共116页
软件工程精要_第5页
第5页 / 共116页
点击查看更多>>
资源描述

《软件工程精要》由会员分享,可在线阅读,更多相关《软件工程精要(116页珍藏版)》请在金锄头文库上搜索。

1、软件工程,4.1 软件工程概述 4.2 问题定义与可行性研究 4.3 软件的需求分析 4.3.1 需求分析概述 4.3.2 结构化分析方法 4.3.3 数据流图 4.3.4 数据字典 4.4 软件的设计 4.4.1 软件设计概述 4.4.2 软件设计准则 4.4.3 结构化设计方法,4.4.4 详细设计方法 4.4.5 面向对象的程序设计方法 4.5 软件的编程 4.6 软件的测试 4.6.1 软件测试概述 4.6.2 测试用例的设计 4.6.3 测试实例的设计 4.6.4 软件的调试 4.7 软件的维护 习 题 4,第四部分 软件工程,4.1 软件工程概述,1软件与软件危机 软件是由计算机程

2、序演变而形成的一种概念。程序是按既定算法,用某种计算机语言规定的指令或语句编写的指令或语句的集合。软件是程序再加上程序实现和维护程序时所必需的文档的总称。软件是程序和程序设计发展到规模化和商品化后所逐渐形成的概念。,随着计算机技术的迅速发展,计算机软件在计算机系统中占有越来越重要的地位。在软件需求量迅速增加,规模日益增长的情况下,计算机软件的开发和维护过程中遇到了一系列严重问题。如软件开发的复杂度大大上升,导致大型软件的开发费用经常超出预算,完成时间也常常超期,同时,软件可靠性随规模的增长而下降,质量保证也越来越困难,即产生了软件危机。软件危机主要有以下几种表现:,(1) 不能准确估计软件开发

3、的成本与进度; (2) 用户对“已完成的”软件系统经常不满意; (3) 软件产品质量往往靠不住; (4) 软件难以维护; (5) 软件无完整的文档,无法用以管理和控制软件的开发和维护; (6) 软件费用急剧上升; (7) 软件生产效率低,供不应求。,2软件工程 “软件工程”一词是1968年北大西洋公约组织(NATO)在联邦德国召开的一次会议上首次提出的。它的中心思想是把软件当作一种工业产品,而不是某种个体或小作坊的神秘技巧,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。这样做的目的,不仅是为了实现按预期的速度和经费完成软件生产计划,也是为了提高软件的生产率与可靠性。软件工程是从技术

4、(方法和工具)和管理两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,软件工程是一门交叉学科,涉及到计算机科学、管理科学、工程学和数学。凡是计算机科学中的成果均可用于软件工程,但计算机科学着重于理论研究,如自动机理论、形式语言理论、编译原理、数据库原理、操作系统原理、人工智能原理等,而软件工程着重于具体软件系统的研制和建立。软件工程的理论、方法、技术都是建立在计算机科学的基础上,它是用管理学的原理、方法来进行软件生产管理;用工程学的观点来进行费用估算,制定进度和方案;用数学的方法来建立软件可靠性模型以及分析各种算法和性质。,软件工程研究的对象是大型软件系统的开发过程,它研究的内容是生产

5、流程、各生产步骤的目的、任务、方法、技术、工具、文档和产品规格。 软件是一种逻辑产品,与物质产品有很大差别,它看不见,摸不着,具有无形性,是脑力劳动的结晶。它以程序和文档形式存在,通过计算机来体现它的作用,在研制过程中,能见度差,这给开发过程的管理带来极大的困难,进度难以控制,质量难以保证。,因此,软件生产的管理也是软件工程的一个重要研究领域,大型软件开发过程的管理是一件非常复杂的事情,因此,管理不当也会导致软件开发的失败。软件生产的管理包括开发人员的层次结构和组织方式、开发进度的控制、软件质量的保证、开发费用的估算和管理、软件开发文档的管理等。,3软件生存周期 软件生存周期的概念是从工业中产

6、品生存周期的概念借用过来的。一种产品从定货开始, 经过设计、制造、调试、使用维护,直到该产品淘汰为止,这就是所谓的产品生存周期。,图4-1 瀑布模型,软件生存周期是从用户提出开发要求开始,直到该软件报废为止的这段时间,可分为3个时期:计划期、开发期和运行期。计划期又分为问题定义和可行性研究两个阶段;开发期分为4个阶段:需求分析阶段、设计阶段(总体设计、详细设计)、编码阶段和测试阶段;运行期即维护阶段。各阶段的工作按顺序开展。图4-1是这种软件生存周期的模型示意图,由于其形状似多级瀑布,常称为“瀑布模型”。,4.2 问题定义与可行性研究,1问题定义 问题定义阶段的任务是要确定软件系统所要解决的任

7、务。分析人员在与用户和部门负责人交流之后,应提出关于问题性质、工程目标和规模的书面报告,即软件系统目标与范围的说明。 为了成功地完成问题定义阶段的任务,需要硬件人员和软件人员的共同参与,这一阶段是软件生存周期中较短的阶段。,2可行性研究 1) 可行性研究的任务 可行性研究的目的在于用最小的代价确定在问题定义阶段确定的系统目标和规模是否现实,所确定的问题是否可以解决,系统方案在经济上、技术上和操作上是否可以接受。 可行性研究着重考虑以下几个方面: 经济可行性。估计开发费用以及新系统可能带来的收益,将两者进行权衡,看结果是否可以接受。, 技术可行性。对要求的功能、性能以及限制条件进行分析,看是否能

8、够做成一个可接受的系统。所考虑的因素通常还应包括开发的风险,是否能够得到需要的软件和硬件资源,以及一个熟练的有能力的开发队伍,另外与系统开发有关的技术是否足以支持系统的研制。技术可行性的估计,需要有经验的人员去完成。 操作可行性。判断系统的操作方式在该用户组织内是否可行。,2) 推荐方案 根据可行性研究结果要做出的决定是:是否继续按预定目标进行开发。可行性分析人员必须清楚地表明他对这个关键性决定的建议。如果认为值得继续进行这项开发工程,则应提供一种最好的解决方案,并说明理由。,3) 软件开发计划 分析人员应该为推荐的系统草拟一份软件开发计划。软件开发计划是根据用户提出的功能性要求,开发时间和费

9、用的限制而制定的,它要说明该项目需要的硬件资源和软件资源,需要的开发人员的层次和数量,项目开发费用的估算,开发进度的安排等。 软件开发计划的阅读者可以包括软件主管部门、用户和技术人员。所确定的成本与进度可供主管部门复审。软件开发计划同时也给出了整个软件生存周期的基本预算和进度安排。,4.3 软件的需求分析,4.3.1 需求分析概述 软件的需求分析是开发期的第一个阶段。这个阶段的基本任务是:用户和分析人员双方共同来理解系统的需求,并将共同理解形成一份文件,即软件需求说明书。该阶段是面向用户问题的,它主要是对用户的业务活动进行分析,明确在用户的业务环境中软件系统应该“做什么”。,需求分析是一项重要

10、的工作,也是困难的工作。该阶段是用户与软件人员双方讨论协商的阶段,由用户提出问题,软件开发人员给出问题的解答。用户的业务活动和业务环境对软件开发人员来说是不熟悉的,要想在短期内搞清楚是不太可能的;用户只熟悉本身的业务活动和业务环境,不熟悉计算机技术。由于这两方面人员缺乏共同的语言,开发人员往往急于求成,于是在未明确软件系统应该“做什么”的情况下,就开始进行设计、编程,而用户则不清楚软件人员在设计怎样的一个系统,直至系统完成交付用户之后,才发现它不符合要求,但这为时已晚,这类教训国内外都不少见。用户与开发人员无共同语言,很难进行交流,这是需求分析阶段的特点之一。,对于一个大型而复杂的软件系统,用

11、户也很难精确完整地提出它的功能要求,只有经过多次长时间的讨论才逐步精确、完善。有时进入到设计、编码阶段才能明确,更有甚者,到开发后期还在提新的要求。这无疑给软件开发带来困难。这是需求分析阶段的特点之二。 需求分析对整个开发阶段都具有重大的影响,它是软件开发的基础,一旦需求分析出现错误,将导致整个软件开发的失败。如果在需求分析产生一个错误,这个错误发现越晚,则花的代价越高。这是需求分析的特点之三。,需求分析的任务是理解和表达用户的要求。用户的要求包括软件系统的范围、功能、性能、限制和约束。范围是指软件的规模有多大,处理的对象及性质是什么;功能是指能做什么样的加工和处理,如数据录入、查询、统计分析

12、、打印报表等;性能是指处理数据量的多少、系统响应时间、查询速度、数据的精度、系统工作可靠性等;限制和约束是指开发费用、开发周期、可使用的资源等。其中功能要求是基本的,它又包括数据要求和处理要求两个方面。,需求分析是在系统分析员主持下,由用户和软件开发人员参加。参加需求分析的用户人员应有三个层次,即企业负责人,各部门负责人,具体工作人员。他们提供的情况在需求分析阶段都应认真收集和考虑。 需求分析的过程。首先召开调查会与上述三个层次的用户人员讨论,了解收集业务过程和业务环境,然后收集与各业务有关的资料、报表、记录等文字或图表材料,还应到现场去参观了解。这种调查研究应反复进行几次,直到把用户要求的功

13、能、性能都搞清楚为止。然后对用户的要求进行分析、理解,最后用文档形式把用户要求的功能、性能表达出来,也就是编写需求说明书。,需求说明书主要有三个作用:作为用户和软件开发人员之间的合同;作为开发人员进行设计和编程的根据;作为软件开发完成后验收的依据。 编写需求说明书时,应该完整、一致、精确、无二义性,同时又要简明、易懂、易修改。它越精确,以后出现错误、混淆、反复的可能性就越小。如“系统查询等待时间很短”等词语,是含糊不清的描述,验收时无法检查,而“查询等待时间不超过5秒”就是精确的描述,验收时就可检查是否达到这个要求。,需求说明书最终要得到用户的认可,所以用户要能看得懂,并且还能发现和指出其中的

14、错误。由于用户往往不是一个人,而是企业中各个部门的若干人,他们可能提出相互冲突的要求,这就需要协调和解决这些冲突,在需求说明书中用户要求的应该是一致的、无二义性的。 需求说明书包括的内容和书写参考格式如下:,一、概述 二、数据描述 数据流图 数据字典 系统接口说明 内部接口 三、功能描述 功能 处理说明 设计的限制,四、性能描述 性能参数 测试种类 预期的软件响应 应考虑的特殊问题 五、参考文献目录 六、附录,概述是从系统的角度描述软件的目的和任务。 数据描述是对软件系统所必须解决的问题做出的详细说明。 功能描述中描述了为解决用户问题所需要的每一项功能的过程细节。对每一项功能要给出处理说明和在

15、设计时需要考虑的限制条件。,在性能描述中说明系统应达到的性能和应该满足的条件,以及测试的方法和标准,预期的软件响应和可能需要考虑的特殊问题。 参考文献目录中应包括与该软件有关的全部参考文献,其中包括前期的其它文档、技术参考资料、产品目录手册以及标准等。 附录部分包括一些补充资料,如列表数据、算法的详细说明、框图、图表和其它材料。,4.3.2 结构化分析方法 结构化分析(SA,Structured Analysis)方法是一种简单实用、使用很广的方法。SA方法与设计阶段的SD方法联合使用,能够较好地实现一个软件系统的研制。,SA方法的基本思想和步骤是采用“分解”和“抽象”的基本手段,自顶向下逐层

16、分解,使分解工作有条不紊地进行,使复杂的问题有效地被控制。如图4-2所示,系统A很复杂,为了理解它,可以将它分解成1,2,3几个子系统;如果子系统1和2仍然很复杂,把它们再分解成1.1,1.2,等子系统,如此继续下去,直到子系统足够简单,能够清楚地被理解和表达为止。,图4-2 分解和抽象,逐层分解体现了抽象的原则,使人们不至于纠缠于具体细节而是有控制地逐步地了解更多的细节,直至最详细的内容。 SA方法在表达问题时尽可能用图形的方法,因为图形比较形象、直观,容易理解。用SA方法来描述软件将要处理的信息时,使用数据流图和数据字典等描述工具。数据流图表示了软件的信息流向和信息的加工,而数据字典是对这些信息和加工进行更详细的描述。还可以使用结构化语言、判定表、判定树对信息加工的加工逻辑进行描述。,使用SA方法进行软件需求分析时,可按如下步骤进行: (1) 建立当前系统的物理模型。即理解当前的现实环境,获得当前系统的物理模型。当前系统的物理

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

当前位置:首页 > 高等教育 > 其它相关文档

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