《VFP第9章软件技术基础-软件工程.ppt》由会员分享,可在线阅读,更多相关《VFP第9章软件技术基础-软件工程.ppt(27页珍藏版)》请在三一办公上搜索。
1、一.软件工程的基本概念1.软件工程定义:是开发、运行、维护和修复软件的系统方法;是采用工程化的原理与方法对软件进行计划、开发和维护的过程;是运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。,软件工程是为克服软件危机而提出的一种概念及相关方法和技术。软件工程研究的目标:以较少的投资获取较高质量的软件产品。软件工程化生产已经形成独立产业-软件产业。软件已成为产品,它有价值、有市场、有版权,受到法律保护。,2.软件危机(software crisis)随着计算机应用需求的扩大,系统软件和应用软件都有很大发展,软件开发规模越来越大,功能越来越强,生产过程越来
2、越复杂,市场对软件需求量不断增大。软件生产是一种资金密集、人力密集的智力劳动,过去的软件开发模式和开发技术,以及个体生产的管理经验已经远远不能适应软件生产的需要,致使大型软件的生产出现了很大困难,因而出现软件开发技术落后的软件危机。,“软件危机”主要表现:软件需求增长得不到满足;软件生产高成本,价格昂贵;软件生产进度无法控制;软件需求定义不准确,偏离用户需求;软件可维护性差,缺乏良好的软件文档等。归结起来,软件危机主要表现在两方面:一方面无法满足日益增长的对软件的需求;另一方面难以满足对已有的软件系统维护的需要。,3.软件工程学软件工程学是在克服60年代末出现的“软件危机”的过程中逐渐形成与发
3、展起来的一门交叉学科,它涉及到计算机科学、管理科学、工程学、数学等学科。软件工程的理论、方法、技术是建立在计算机科学基础上;运用数学方法建立软件的可靠性模型以及实现其数学模型的算法;运用管理学的原理与方法进行软件生产管理;采用工程学的观点进行费用估算,制定工程进度与实施方案。,二.软件生命周期1.软件的概念计算机软件指计算机程序以及开发、使用和维护程序所需的各种文档的总和。软件是一种逻辑产品,看不见,摸不着,以程序或文档的形式存在,通过计算机实现它的作用。那种认为“软件就是程序,开发软件就是编写程序”的观念是错误的。,一个完整的软件系统配置包括4个主要部分:应用程序:直接面向用户,为解决某个特
4、定问题而编制的应用程序。系统程序:面向计算机硬件,为实现应用程序服务而编制的程序总汇。面向用户的文档:包括如何使用和维护应用程序的各种文档资料。面向开发者的文档:记载了应用程序的设计与开发过程,以便进一步开发与修改。,2.软件生命周期(软件生存周期)软件生命周期的概念从工业产品生存周期的概念而来。产品生存周期指一种产品从定货开始,经过设计、制造、调试、使用维护,直到品淘汰不再生产为止。软件生命周期:指从软件开发、使用、维护到废弃不用的全过程。通常软件生命周期分为三个阶段:计划阶段、开发阶段和运行维护阶段。,对软件生存周期的不同划分,形成不同的软件生存周期模型。常用的有传统的瀑布模型和快速原型模
5、型。瀑布模型:将软件生存周期划分为计划、开发、运行三个时期,每个时期又区分为若干阶段,各阶段的工作顺序展开,如像自上而下的瀑布。,快速原型模型:首先建立一个能反映用户主要需求的原型,用户通过使用提出修改意见,然后根据户意见对原型进行改进,如此反复,最后建立起符合用户要求的新系统。快速原型模型的特点:用户与程序分析员之间的交互从抽象变为具体,避免由于理解上的不同而造成需求分析的错误。,三.软件开发方法1.软件需求分析 软件需求分析是软件生命周期的第一个阶段。需求分析指软件开发人员对用户的要求及现实环境进行调查、了解,从技术、经济和社会因素等方面进行研究,论证该软件项目的可行性以及探索出多种可供选
6、择的解决方案,并对每种解决方案进行可行性论证。软件需求分析是软件开发最重要的基础工作,也是最困难的工作,对整个开发阶段具有重大影响。,2.结构化分析(SA)方法 需求分析最常用的方法是结构化分析方法。结构化分析方法采用自顶向下、分支分层、逐步分解、逐步细化、逐步求精,最后落实到基本加工的方法。结构化分析方法逐步求解的方法控制了系统的复杂度,使得复杂系统简单化、抽象系统具体化。其基本思想是“分解”与“抽象”。,分解:为了便于理解和表达一个复杂系统X,采用自顶而下、逐层分解的方式,把系统X分割、细分为足够简单,容易理解的子系统1,子系统2,。抽象:用最本质的属性来描述一个子系统。把一个复杂的系统分
7、解为子系统后,先考虑该系统最本质的属性,略去细节问题,以后再逐层添加细节,直到最详细的内容。,结构化分析方法SA通常采用数据流图表达需求,以数据词典记录数据的逻辑定义。数据流图(DFD)指描述系统中数据流程的一种图形工具。数据词典(DD)记录数据流图中数据的逻辑定义。结构化语言。判定表。,数据流图(DFD),3.结构化设计(SD)方法 结构化设计方法是将软件需求转化为数据结构和软件系统结构的设计方法。软件设计方法分为总体设计(概要设计)和详细设计两个过程。结构化设计方法用于软件系统的总体设计。结构化分析方法(SA)与结构化设计方法(SD)联合使用,形成了一整套软件系统开发方法。,4.结构化程序
8、设计(SP)方法 结构化程序设计方法是一种面向数据和过程的设计方法,用于软件系统的详细设计。为了确保模块逻辑清晰,在设计过程中采用自顶向下、逐步求精的设计方法,所有模块只采用“顺序”、“分支”、“循环”三种基本控制结构。结构化程序设计常用的主要工具有:程序流程图N-S图问题分析图(PAD图)伪代码语言(PDL),5.面向对象的开发方法(00P)面向对象开发方法是80年代推出的一种全新的、可视化的、所见即所得的软件开发方法。基本思想:将要研究的事、物、概念等称为对象(Object),以对象作为最基本的元素,以对象作为分析问题、解决问题的核心。,对象:是客观世界事物的表示或描述要加以研究的事物概念
9、的统称。它是数据和使用该数据的一组基本操作或过程的封装。消息:是客观世界中对象之间的通信的能力。从程序设计的语言角度来看,消息类似于函数调用。方法:是实现对象所具有的功能操作的代码,它是实现消息具体功能的手段。,类:类是一组对象的抽象定义,包含的方法和数据描述了这组对象的共同行为和属性,对象是类的具体化,或是类的具体实例。继承:可以从已有类派生出子类,子类具有父类的所有数据和操作。继承表达了对象、类之间具有的共同性和差异性的关系。多态性:一个名字具有多种语义或相同层面,具有多种实现。,四.软件编程程序编码阶段的任务是将软件的详细设计转换成用程序设计语言实现的程序代码。因此,程序设计语言的性能和
10、设计风格对于程序设计的效能和质量有着直接的关系。程序的质量基本上由设计的质量决定,但编程使用的语言,编程风格和编程途径对程序质量有着很大的影响。,五.软件测试软件测试是软件开发过程的重要组成部分,是软件质量保证的关键步骤。软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,确认软件的品质或性能是否符合开发要求,是软件质量保证的关键步骤。,软件测试在软件生存期中横跨两个阶段:单元测试:通常在编写出每一个模块之后就对它做必要的测试。编码和单元测试同属于软件生存期中的同一个阶段。测试阶段:测试阶段这是软件生存期的另一个独立阶段,是在结束编码阶段后对软件系统进行的各种综合测试。,
11、1.软件测试的目的和重要性 软件开发涉及到一系列生产活动,不可避免地会引入错误,发生差错。软件测试是“为了发现程序中的错误而执行程序的过程”,通过执行程序,暴露出软件中的错误与缺陷,然后对其加以改正,这对于某些涉及人的生命安全的软件项目尤其重要。软件测试的目的:确认软件的质量;提供风险评估信息;保证整个软件开发过程是高质量的(测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。)。,2.软件测试方式从是否需要执行被测软件的角度,可分为静态测试和动态测试。人工测试:指由人工对软件进行阅读和检查。主要的方法有:走查和会审。动态测试:动态测试就是上机测试,用适当的测试用例作为输入,执行程序,以
12、发现错误。自动测试:自动测试是利用一些测试工具,代替人工进行静态分析和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。,黑盒测试黑盒测试也称功能测试或数据驱动测试。在已知产品所应具功能前提下,把程序看作一个不能打开的黑盒子,着眼于程序外部结构、完全不考虑内部逻辑结构、对软件接口进行测试,检查程序功能是否按照需求规格说明书的规定正常使用。“黑盒法”是穷举输入测试,只有把所有可能的输入都作为测试情况使用,查出程序中所有的错误。,白盒测试白盒测试也称结构测试或逻辑驱动测试。在已知产品内部工作过程的前提下,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按照规格说明书的规定正常进行,“白盒法”是穷举路径测试。测试者从检查程序的逻辑结构着手,全面了解程序内部逻辑结构、对所有逻辑路径进行测试,得出测试数据。,