4软件工程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程基础本章提要软件工程的基本概念–软件、软件的特点、软件危机、软件工程、软件周期、软件工程的目标原则、软件开发工具与开发环境结构化分析方法–需求分析、数据流图、数据字典、软件规格说明书结构化设计方法–概要设计、详细设计软件测试–目的、原则、方法、措施程序调试的概念与方法4.1软件工程的基本概念计算机软件(Software):包括3个部分–程序:软件开发人员根据用户需求、使用程序设计语言编写的、计算机能够执行的指令的集合–数据:程序能够正常操作的数据结构–文档:与程序开发、维护和使用有关的图文资料4.1软件工程的基本概念计算机软件的特点–软件是一种逻辑产品,具有抽象性,没有物理实体–软件的复制十分快捷,质量完全由设计和开发决定–软件在使用期间不存在磨损和老化的问题–软件的开发和运行要考虑移植性的问题–软件复杂性高,开发成本昂贵–软件开发涉及除技术之外的众多因素4.1软件工程的基本概念软件危机(SoftwareCrisis)–1968年NATO的计算机科学家在联邦德国召开国际会议,第一次提出“软件危机”问题。–泛指在计算机软件的开发与维护过程中所遇到的一系列严重问题。归纳为进度、经费和质量三个方面的问题–软件危机主要表现为:•软件需求的增长得不到满足•软件开发成本和进度无法控制•软件质量难以保证•软件不可维护或维护程度很低•软件成本不断提高•软件开发生产率的提高速度赶不上应用需求的增长4.1软件工程的基本概念软件工程(SoftwareEngineering)–将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化的思想应用于软件中。核心思想是把软件产品当作一个工程产品来处理。将可行性研究、需求计划、工程审核、质量监督、经费管理等工程化概念引入软件生产当中。–软件工程包含3个要素:•方法:完成软件工程项目的技术手段•工具:支持软件的开发、管理、文档生成等工作•过程:支持软件开发的各个环节的控制和管理4.1软件工程的基本概念软件生命周期(SoftwareLifeCycle)–指软件产品从提出、实现、使用维护到停止使用退役的过程可行性研究及项目计划需求分析概要设计详细设计编码实现测试使用维护软件退役定义阶段开发阶段维护阶段4.1软件工程的基本概念软件工程的目标和研究内容–运用工程化的开发技术和管理手段,在保证进度和成本的前提下,开发出具有可用性、可理解性、可维护性、可适应性、可移植性、可重用的软件产品–软件工程理论与实践研究内容主要包括:•软件开发技术:软件开发方法学、开发过程、开发工具、开发环境等•软件工程管理4.2需求分析的概念与方法软件需求:是指用户对目标系统在功能、性能、设计约束等方面的期望(要求)需求分析:就是发现需求并精确定义和描述需求的过程,其结果为软件需求规格说明书需求模型:用户和开发人员都能理解的、能够达成一致的软件需求描述,包括数据模型、功能模型和控制模型常见的需求分析方法有SA和OOA4.2需求分析的概念与方法需求分析阶段的四项主要工作:–需求获取:通过与用户进行交流,获得软件的功能及非功能需求–需求分析:对获取的需求进行分析和综合,获得用户和开发人员一致认同的需求模型–编写需求规格说明书:作为交流、确认、进度安排、软件设计的依据。–需求评审:验证需求的一致性、可行性、完整性和有效性。4.3结构化分析方法结构化分析方法概要(StructuredAnalysis,SA)–着眼于系统的数据流、将功能自顶向下、逐层分解,建立系统的需求模型(使用数据流图、数据字典等工具)–SA成熟于20世纪70年代,主要配合结构化程序设计使用,现在主要用来配合OOA使用4.3结构化分析方法数据流图(DataFlowDiagram,DFD)–数据流图主要用于描述外部实体与系统之间、系统模块之家的数据流–数据流图中只有4种元素–数据流图只能只有数据流,没有控制流数据流外部实体加工存储文件4.3结构化分析方法数据流图–绘制数据流图的一般步骤:•先找到与系统有关的所有外部实体,画出整个系统的数据流程图(顶层数据流图)•将系统分解为若干后模块,重新平衡数据流•将加工分解为最小加工单位为止4.3结构化分析方法数据流图(顶层数据流图,描述整个系统的功能)4.3结构化分析方法数据流图4.3结构化分析方法绘制数据流图的注意事项–对每一个加工应建立唯一、层次性的编号–每个加工应既有输入又有输出–数据存储之间不应该有数据流–保持数据平衡4.3结构化分析方法数据字典(DataDictionary,DD)–对数据流图中出现的元素进行精确的描述(特别是数据流)–数据字典中常用的定义符号:•=表示等于、定义为•[…..|……]表示或•+表示与•n{…}m表示重复多少次•(…..)表示可选•..连接符4.3结构化分析方法数据字典(DataDictionary,DD)存折=户名+所号+账户+开户日+性质+1{存取行}50户名=2{字母}24所号=“001”…“999”性质=“1”…“6”4.3结构化分析方法软件需求规格说明书–SoftwareRequirementSpecification,SRS–是需求分析阶段的最后成果,是软件开发中最重要的文档之一。主要作用为:•用于用户、开发人员之间的交流•作为软件设计的依据•作为确认测试和验收的依据–内容格式参见课本P71;示例4.4软件设计概述软件设计的基本目标是用比较抽象的方式确定目标系统如何完成预定的任务,即确定系统的物理模型软件设计的重要性体现如下:–软件设计是将需求准确转化为软件产品的途径,是开发阶段最重要的任务–软件设计对于软件质量有着决定性的影响–良好的软件设计是工程化开发软件和软件维护的基础4.4软件设计概述从内容来看,软件设计主要包括:–软件结构设计:定义软件系统的组成及其关系–数据设计:将数据概念模型转换为数据模型–接口设计:描述系统内部、系统与外部实体之间如何通信和交互–过程设计:软件开发的过程性描述4.4软件设计概述从过程来看,软件设计包括两个阶段:–概要设计(结构设计):定义软件体系结构风格、定义模块及模块之间的通信接口、定义全局数据结构–详细设计:确定每一个模块的实现算法和局部数据结构这两个过程一般都是迭代进行的,最终软件设计的结果是软件设计说明书4.4软件设计概述软件设计的基本原则–抽象:提取多个事物的共同特征–模块化:将一个抽象任务分解为几个具体的模块–信息隐蔽:一个模块内部的信息对其他模块不可见–模块独立性:低耦合、高内聚(详见P74)软件设计的主要方法有:–结构化软件设计SD–面向对象软件设计OOD4.5结构化概要设计概要设计的基本任务:–设计软件系统结构:将系统划分为若干模块、确定每个模块的功能、模块之间的接口和调用关系,评价模块的质量–数据结构设计、数据库设计(第5章数据库设计)–编写概要设计文档:概要设计说明书、数据库设计说明书、集成测试计划–概要设计文档评审4.5结构化概要设计程序结构图(StructureChart,SC)–描述软件系统的层次和分块结构关系,他反映整个系统的功能实现以及模块之间的联系与通讯,是未来程序中的控制层次体系4.5结构化概要设计程序结构图(StructureChart,SC)–常用的四类模块4.5结构化概要设计软件结构图哦常用术语4.5结构化概要设计典型的软件概要设计–数据变换型软件4.5结构化概要设计典型的软件概要设计–事务处理型软件4.5结构化概要设计面向数据流的软件设计的一般方法–分析、确定数据流图的类型,区分是事务型还是变换型软件系统–说明数据流的边界–将数据流图映射为程序结构–根据设计准则对所产生的结构进行细化和求精4.5结构化概要设计概要设计的基本准则–提高模块的独立性(高内聚、低耦合)–模块规模适中–深度、宽度、扇出或扇入适中:经验表明,深度为4~5层,扇出不超过7个为宜;顶层高扇出、中间扇出少、底层高扇入–模块的作用域控制在模块内部(隐蔽性)–精心设计模块的接口–设计为单入口、单出口的模块–设计功能可预测的模块4.6结构化详细设计详细设计的任务–为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种表达工具表示算法和数据结构的细节。–表达算法的工具主要有:•程序流程图•N-S图•PAD图(ProblemAnalysisDiagram)•PDL(伪码)4.6结构化详细设计程序流程图N-S图4.6结构化详细设计PAD图PDL/*计算运费*/count();{输入x;输出y;if(ox=15)条件1{公式1计算;callsub;}elseif(x15){公式2计算;callsub;}}sub();{for(i=1,3,i++)do{记账;输出;}}4.7软件测试软件测试的目的–发现了软件中尚未发现的各类错误(以发现错误为中心,而非以验证正确为中心)–软件测试的人员、资金和时间投入是巨大的,成本占总成本的40%以上,有着很高的组织管理和技术难度–测试主要依赖用例来执行。一个好的、成功的用例是发现了至今尚没有发现的错误4.7软件测试软件测试的准则–所有测试都应追溯到需求–制定测试计划并严格执行,排除随意性–充分注意测试中的群集现象–程序员应避免检查自己编写的程序–穷举测试不可能–要妥善保存测试计划、用例和错误报告4.7软件测试软件测试的方法–静态测试•不实际运行软件,主要通过人工进行,也可以通过软件工具自动运行•通过小组集体阅读、讨论检查,发现程序代码中不安全、不明确的部分,如变量名与类型审查、程序逻辑审查、程序语法检查等•大约可以发现30%—70%的逻辑设计与编码错误•一般自己编写的代码交给其他人来阅读、检查4.7软件测试软件测试的方法–动态测试•通过执行程序,并输入精心准备的用例来发现错误•测试用例(TestCase):根据软件规格和内部结构精心设计的输入数据及其预期的输出结果•高效、合理的测试用例是动态测试的关键•根据是否检查软件内部工作过程,动态测试可以分为白盒测试和黑盒测试两种4.7软件测试软件测试的方法–白盒测试•利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。•基本原则为:保证所测试模块中每一独立路径至少执行一次。保证所测试模块中的所有分支至少执行一次。保证测试模块中每一个循环都在边界条件和一般条件下各至少执行一次。验证所有内部数据结构的有效性•实际上就是“穷举路径”测试4.7软件测试4.7软件测试软件测试的方法–黑盒测试•也称为功能测试或数据驱动测试•黑盒测试对软件已实现的功能是否满足需求进行测试•黑盒测试完全不考虑程序内部的逻辑结构和内部特性,值依据模块规格设计说明检查模块是否实现了所设计的功能•主要方法有:等价划分法、边界值分析法、错误推测法4.7软件测试软件测试的步骤–单元测试:对每一个程序模块进行测试,采用静态测试与动态测试相结合,以白盒测试为主–集成测试:将模块按照设计组装起来后进行测试–确认测试:验证系统是否满足了系统规格要求–系统测试:将系统部署到目标环境中,验证硬件、软件、人员等其他系统元素的工作情况4.8程序调试程序调试(Debug)的基本概念–程序调试的任务是诊断和改正测试中发现的错误。–程序调试的基本活动是根据错误迹象确定程序中错误的确切性质、原因和位置,对程序进行修改排除这个错误。–调试的基本步骤:错误定位、修改设计和代码排除错误、进行回归测试–程序调试的原则和方法(P97):经验性的工作

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功