第16章 软件工程基本知识(简)_第1页
第16章 软件工程基本知识(简)_第2页
第16章 软件工程基本知识(简)_第3页
第16章 软件工程基本知识(简)_第4页
第16章 软件工程基本知识(简)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第16章软件工程基本知识16.1软件工程概述16.2结构化分析方法16.3结构化设计方法16.4软件测试16.5程序调试16.1软件工程概述16.1.1软件定义与软件的特点16.1.2软件危机与软件工程16.1.3软件工程过程与软件生命周期16.1.4软件工程的目标与原则16.1.5软件开发工具与软件开发环境16.1.1软件定义与软件的特点计算机软件包括程序、数据及相关文档的完整集合。软件的特点:①是一种逻辑实体,具有抽象性;②一旦研制成功,可以多次拷贝;③在运行、使用期间不存在磨损、老化问题④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制;⑤软件复杂性高,成本昂贵;⑥软件开发涉及许多的社会因素。软件按功能分为:应用软件、系统软件、支撑软件(工具软件)。

16.1.2软件危机与软件工程软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机产生的原因:(1)用户需求不明确(2)缺乏正确的理论指导(3)软件规模越来越大(4)软件复杂度越来越高为了消除软件危机,开辟了工程学的新兴领域---软件工程学。软件工程就是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。16.1.2软件危机与软件工程软件工程的定义,国标(GB)中指出,软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。软件工程的核心思想是把软件产品(就像其他工业产品一样)看作是一个工程产品来处理。把需求计划、可行性研究、工程审核、质量监督等工程化的概念引入到软件生产当中,以期达到工程项目的三个基本要素:进度、经费和质量的目标。16.1.3软件工程过程与软件生命周期1.软件工程过程

软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。基于这个方面,软件工程过程通常包括:软件规格说明、软件开发、软件确认、软件演进4种基本活动。图16-1软件生命周期16.1.3软件工程过程与软件生命周期2.软件生命周期软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。如图16-1所示,从该图中,还可以看到软件生命周期,也可以分为软件定义、软件开发及软件运行维护三个阶段。通常,软件生命周期的主要六个活动阶段是:可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。

1.软件开发工具

软件开发工具的发展是从单项工具的开发逐步向集成工具发展的,软件开发工具为软件工程方法提供了自动的或半自动的软件支撑环境。同时,软件开发的有效应用也必须得到相应工具的支持,否则方法将难以有效的实施。

2.软件开发环境

该环境是全面支持软件开发全过程的软件工具集合。这些软件工具按照一定的方法或模式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。计算机辅助软件工程(CASE)是当前软件开发环境的发展方向。

16.1.5软件开发工具与软件开发环境16.2结构化分析方法结构化方法包括已经形成了配套的结构化分析方法、结构化设计方法和结构化编程方法。结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。

1.需求分析软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析将创建所需的数据模型、功能模型和控制模型。

16.2.1需求分析与需求分析方法需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书、需求评审。

2.需求分析方法常见的需求分析方法有结构化分析方法和面向对象的分析方法两种。

16.2.1需求分析与需求分析方法

1)结构化分析方法该方法主要包括的内容如下:面向数据流的结构化分析方法;面向数据结构的Jackson方法;面向数据结构的结构化数据系统开发方法。

2)面向对象的分析方法

该方法正处于发展之中,目前尚不大成熟与完善。1.结构化分析方法综述

结构化分析方法是20世纪70年代中期倡导的基于功能分解的分析方法,其目的是帮助弄清用户对软件的需求。结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。结构化分析的步骤见P234。16.2.2结构化分析方法

2.结构化分析的常用工具

1)数据流图

数据流图是描述数据处理过程的工具,是需求的逻辑模型的图形表示,它从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。直接支持系统的功能建模。数据流图中的主要图形元素如图16-2所示。16.2.2结构化分析方法图16-2数据流图中的主要元素目标

建立数据流图的步骤如下:

1)

由外向里:先画系统的输入输出,然后画系统的内部。

2)

自顶向下:顺序完成顶层、中间层、底层数据流图。

3)逐层分解。16.2.2结构化分析方法图16-3银行取款业务的数据流图2)数据字典数据字典是对所有与系统相关的数据元素的一个有组织的列表,并包含对数据元素精确的、严格的定义,使用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。数据字典能清楚地表达数据处理的要求。

例如,银行取款业务的数据流图中,存储文件“存折”的数据字典定义如下:存折=户名+所号+账户+开户日+性质+(印密)+1{存取行}50’存折由六数据项组成,密印可选,存取1至50处户名=2{字母}24’户名由2至24个字母组成所号=“001”..“999”’所号可为“001”、“002”、…、“999”16.2.2结构化分析方法账号=“00000001”..“99999999”开户日=年+月+日’开户日由年月日构成性质=“1”..“6”’有六类储户,如1示普通户、5示工资户印密=“0”’印密在存折上不显示存取行=日期+(摘要)+支出+存入+余额+操作+复核日期=年+月+日年=“00”..“99”月=“01”..“12”日=“01”..“31”

摘要=1{字母}4支出=金额金额=“0000000.01”..“9999999.99”操作=“00001”..“99999”16.2.2结构化分析方法

3)判定树

使用判定树进行描述时,应先从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。

16.2.2结构化分析方法图16-4“检查发货单”判定树

4)判定表判定表与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,使用判定表描述比较适宜。判定表由四部分组成,如图16-5所示。

16.2.2结构化分析方法图16-5判定表组成基本条件项,列出了各种可能的条件;条件项,列出了各种可能的条件组合;基本动作项,它列出了所有的操作;动作项,它列出在对应的条件组合下所选的操作。1234条件

发货单金额

>$500>$500≤$500≤$500赊欠情况

>60天≤60天>60天≤60天

操作不发出批准书

√发出批准书

√√√发出发货单

√√√发出赊欠报告

√图16-6

“检查发货单”判定表

判定表或判定树是以图形式形式清晰描述数据流图的加工逻辑。利用它们便于直接映射到程序代码。

16.2.2结构化分析方法软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。软件需求规格说明书的作用

软件需求规格说明书的作用是:①便于用户、开发人员进行理解和交流。②反映出用户问题的结构,可以作为软件开发工作的基础和依据。③作为确认测试和验收的依据。16.2.3软件需求规格说明书16.3结构化设计方法

1.软件设计的基础

软件设计是一个把软件需求转换为软件表示的过程。其基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务。从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。

16.3.1软件设计的基本概念

2.软件设计的基本原理软件设计遵循软件工程的基本目标和原则,在软件设计中应遵循以下原则:

1)抽象:把事物本质的共同特性提取出来而不考虑其他细节。

2)模块化:指把一个待开发的软件分解成若干小的简单的部分。如VBA中的子过程、函数过程等。

3)信息隐蔽:指在一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问的。

4)模块独立性:指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少、接口简单。16.3.1软件设计的基本概念模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。

①内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。一个模块的内聚性越强则该模块的独立性越强。

②耦合性:耦合性是模块间互相连接的紧密程度的度量。取决于各个模块之间接口的复杂度等。一个模块与其他模块的耦合性越强,则其模块独立性就越弱3.结构化设计方法结构化设计方法的基本思想是将软件设计成由相对独立、单一功能的模块组成的结构。16.3.1软件设计的基本概念1.概要设计的任务软件概要设计的基本任务是:设计软件系统结构、数据结构及数据设计、编写概要设计文档和概要设计文档评审。

1)设计软件系统结构在需求分析阶段,已经把系统分解成层次结构,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构。

2)数据结构及数据设计数据设计是实现需求定义和规格说明过程中提出的数据对象的逻辑表示。16.3.2概要设计

3)编写概要设计文档在概要设计阶段,需要编写的文档有:概要设计说明书、数据设计说明书、集成测试计划等。

4)概要设计文档评审在概要设计中,对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性、各部分之间的一致性等都要进行评审,以免在以后的设计中出现大的问题而返工。16.3.2概要设计

常用的软件结构设计工具是结构图,也称程序结构图。结构图的基本图符如图16-7所示。根据结构化设计思想,结构图构成的基本形式如图16-8所示。16.3.2概要设计一般模块数据信息控制信息图16-7结构图基本符号

基本形式顺序形式重复形式选择形式

图16-8结构图构成的基本形式AABBC

DABABC箭头表示模块间的调用关系

2.面向数据流的设计方法

面向数据流的设计方法定义了一些不同的映射方法,利用这些映射方法可以把数据流图变换成结构图表示的软件结构。下面先了解数据流图表示的数据处理的类型,然后针对不同类型分别进行分析处理。

16.3.2概要设计

典型的数据流类型有两种:变换型和事务型。

详细设计的任务,是为系统结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。图形工具:程序流程图、N-S、PAD、HIPO;表格工具:判定表;语言工具:PDL(伪码)。16.3.3详细设计常见工具有:下面讨论其中几种主要的工具:

1.程序流程图

程序流程图是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图。构成程序流程图的最基本图符及含义如图16-13所示;或控制流加工步骤逻辑条件图16-13程序流程图的基本图符通过把程序流程图的5种基本控制结构相互组合或嵌套,可以构成任何复杂的程序流图。16.3.3详细设计

F=1TFTT…=nF

顺序结构选择结构先判断重复后判断重复多分支选择16.3.3详细设计5种控制结构:顺序、选择、先判断循环、后判断循环、多分支选择结构

2.N-S图

N-S图的基本图符及表示的5种基本控制结构。

16.3.3详细设计

3.PAD图

PAD图是问题分析图的英文缩写。PAD图的基本图符及表示的5种基本控制结构,如图16-17所示。上述托运货物运费计算问题程序的PAD图如图16-18所示。

16.3.3详细设计

4.过程设计语言(PDL)

PDL

也称为结构化的英语和伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言。用PDL表示的基本控制结构中常用词汇如下:

顺序:

条件:IF/THEN/ELSE/ENDIF

循环:DOWHILE/ENDDO

循环:REPEATUNTIL/ENDREPEAT

分支:CASE_OF/WHEN/SELECT/WHEN/SELECT/ENDCASE

16.3.3详细设计16.4软件测试软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试,验证软件是否合格、能否交付用户使用等。

软件测试的目的如下:①软件测试是为了发现错误而执行程序的过程;②一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;③一个成功的测试是发现了至今尚未发现的错误的测试。显然,测试要以查找错误为中心,而不是为了演示软件的正确功能。16.4.1软件测试的目的软件测试的方法和技术是多种多样的。若从是否需要执行被测软件的角度,可以分为静态测试和动态测试方法。若按照功能划分可以分为白盒测试和黑盒测试方法。

1.静态测试

静态测试包括代码检查、静态结构分析、代码质量度量等。静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。经验表明,使用人工测试能够有效地发现30%到70%

的逻辑设计和编码错误。16.4.3软件测试技术与方法综述

2.动态测试

动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。或者说,是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些用例去运行程序,以发现程序错误的过程。

测试用例的格式为:[(输入值集),(输出值集)]16.4.3软件测试技术与方法综述

3.白盒测试方法与测试用例设计该方法是根据软件产品的内部工作过程检查内部成分,以确认每种内部操作符合设计规格要求。白盒测试把测试对象看作一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。

白盒测试的主要方法有逻辑覆盖、基本路径测试等。16.4.3软件测试技术与方法综述

3.黑盒测试方法与测试用例设计

黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论