您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第3章_公共基础软件工程基础
计算机基础中心全国计算机等级考试二级公共基础知识盐城工学院计算机基础中心软件工程基础计算机基础中心学习内容•软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。•结构化分析方法,数据流图,数据字典,软件需求规格说明书。•结构化设计方法,总体设计与详细设计。•软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。•程序的调试,静态调试与动态调试。计算机基础中心第3章软件工程基础3.1软件工程基本概念3.2结构化分析方法3.3结构化设计方法3.4软件测试3.5软件调试计算机基础中心3.1软件工程基本概念•1.软件工程–软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、降低软件成本。•2.软件危机–早期的软件主要指程序,采用个体工作方式,缺少相关文档,质量低,维护困难,这些问题称为“软件危机”,软件工程概念的出现源自于软件危机。例题计算机基础中心•3.软件生命周期–将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期–分为软件定义、软件开发及软件运行维护3个阶段。维护是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护代价–6个活动阶段•可行性研究与计划制定:确定系统的总体目标。参加人员有用户、项目负责人和系统分析员,产生文档有可行性分析报告、项目计划书等•需求分析:确定系统的逻辑模型。参加人员有用户、项目负责人和系统分析员。产生文档为需求规格说明书,其作用:(1)便于用户、开发人员进行理解交流;(2)反映用户问题的结构,可以作为软件开发工作的基础和依据;(3)作为确认测试和验收的依据。例题计算机基础中心•软件设计:包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。软件设计分概要设计和详细设计。参加人员有系统分析员和高级程序员。产生的文档有设计规格说明书。•编码:编程。高级程序员和程序员产生源程序清单•测试:由另一部门的高级程序员或系统分析员产生软件测试计划和软件测试报告•运行维护例题计算机基础中心•4.软件工程三要素–方法:完成软件工程项目的技术手段–工具:支持软件的开发、管理、文档生成–过程:支持软件开发的各个环节的控制、管理•5.软件工程的理论和技术研究的内容–软件开发技术和软件工程管理•6.软件工程的目标–在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品–软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境例题计算机基础中心•6软件工程的目标和与原则•(1)软件工程目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。•(2)软件工程需要达到的基本目标应是:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用。计算机基础中心•(3)软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。•1)抽象:抽象是事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程的复杂性。•2)信息隐蔽:采用封装技术,将程序模块的实现细节隐蔽起来,使模块接口尽量简单。•3)模块化:模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。模块的大小要适中,模块过大会使模块内部的复杂性增加,不利于模块的理解和修改,也不利于模块的调试和重用;模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。•4)局部化:保证模块间具有松散的耦合关系,模块内部有较强的内聚性。•5)确定性:软件开发过程中所有概念的表达应是确定、无歧义且规范的。•6)一致性:程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。•7)完备性:软件系统不丢失任何重要成分,完全实现系统所需的功能。•8)可验证性:应遵循容易检查、测评、评审的原则,以确保系统的正确性。计算机基础中心•7.软件工具和软件开发环境–软件工具(CASE):用来辅助软件开、运行、维护、管理、支持等过程中的活动的软件–软件开发环境:支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成计算机基础中心3.2结构化分析方法•基本思想–将系统分析看成工程项目,有计划、有步骤地进行工作。•开发策略–自顶向下,逐层分解•分析结果–一套分层的数据流图(DFD):用来描述数据流从输入到输出的变换流程–一个数据字典(DD):用来描述DFD中的每个数据流、文件以及组成数据流或文件的数据项–一组小说明(加工逻辑说明):用来描述每个基本加工的加工逻辑计算机基础中心•结构化分析方法是结构化程序设计理论在软件需求分析阶段的应用。•结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。•结构化分析的常用工具:1)数据流图(DFD);2)数据字典(DD);3)判定树;4)判定表。数据流图以图形的方式描绘数据在系统中流动和处理的过程,它反映了系统必须完成的逻辑功能,是结构化分析方法中用于表示系统逻辑模型的一种工具。加工数据流存储文件源、潭例题计算机基础中心•加工(转换):输入数据经加工变换产生输出。•数据流:沿箭头方向传送数据的通道,一般在旁边标注数据流名。•存储文件(数据源):表示处理过程中存放各种数据的文件。•源,潭:表示系统和环境的接口,属系统之外的实体。•画数据流图的基本步骤:自外向内,自顶向下,逐层细化,完善求精。例题计算机基础中心•数据字典:对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。•*:数据字典的作用是对数据流图中出现的被命名的图形元素的确切解释。*:数据字典是结构化分析方法的核心。•软件需求规格说明书(SRS)•软件需求规格说明书是需求分析阶段的最后成果,通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求。计算机基础中心3.3结构化设计方法•1、软件设计的基础•从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。•从工程角度来看,软件设计分两步完成,即概要设计和详细设计。例题计算机基础中心•软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立性。•模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。•一个设计良好的软件系统应具有高内聚、低耦合的特征。•在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。例题计算机基础中心•2总体设计(概要设计)–设计原则•分解—协调原则•自顶向下的原则•信息屏蔽、抽象的原则•一致性原则•明确性原则•模块间的耦合度尽可能小,模块内部组合尽可能紧凑(内聚性高)•模块的扇入和扇出系数合理•模块的规模适当例题计算机基础中心•软件概要设计的基本任务是:1)设计软件系统结构;2)数据结构及数据库设计;3)编写概要设计文档;4)概要设计文档评审。•常用的软件结构设计工具是结构图,也称程序结构图。程序结构图的基本图符:模块用一个矩形表示,箭头表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据信息。一般模块数据信息控制信息计算机基础中心•经常使用的结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。•传入模块:从下属模块取得数据,经处理再将其传送给上级模块。•传出模块:从上级模块取得数据,经处理再将其传送给下属模块。•变换模块:从上级模块取得数据,进行特定的处理,转换成其他形式,再传送给上级模块。•协调模块:对所有下属模块进行协调和管理的模块。计算机基础中心•深度:表示控制的层数。上级模块、从属模块:上、下两层模块a和b,且有a调用b,则a是上级模块,b是从属模块。•宽度:整体控制跨度(最大模块数的层)的表示。•扇入:调用一个给定模块的模块个数。•扇出:一个模块直接调用的其他模块数。•原子模块:树中位于叶子结点的模块。计算机基础中心•3详细设计–根本目标•确定应用怎样具体的实现所要求的系统,不是具体的编写程序,而是要设计程序的“蓝图”–此阶段的结果基本上决定了最终的程序代码的质量–包括内容:•代码设计•输入设计•输出设计•处理过程设计•用户界面设计•安全控制设计计算机基础中心•常用的过程设计(即详细设计)工具有以下几种:•图形工具:程序流程图、N-S(方盒图)、PAD(问题分析图)和HIPO(层次图+输入/处理/输出图)。•表格工具:判定表。•语言工具:PDL(伪码)•PDL(伪码):过程设计语言,它是用正文形式表示数据和处理过程的设计工具。计算机基础中心3.4软件测试•1意义目的–为了发现错误–希望能以最少的人力和时间发现潜在的各种错误和缺陷–保证系统质量和可靠性的关键步骤•2测试方法–人工测试–机器测试计算机基础中心•软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。•*:软件测试的目的:尽可能地多发现程序中的错误,不能也不可能证明程序没有错误。软件测试的关键是设计测试用例,一个好的测试用例能找到迄今为止尚未发现的错误。•测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。计算机基础中心•软件测试方法:静态测试和动态测试。•静态测试:包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。•动态测试:是基于计算机的测试,主要包括白盒测试方法和黑盒测试方法。计算机基础中心•3白盒测试–结构测试–将软件看成透明的白盒,根据程序的内部结构和逻辑结构来设计测试例子,对程序的路径和过程进行测试,检查是否满足设计的要求•4黑盒测试–功能测试–将软件看成黑盒子,在完全不考虑软件内部结构和特性的情况下,测试软件的外部特性•5软件测试的实施–单元测试(模块测试):白盒测试法–组装测试(集成测试)–确认测试–系统测试例题计算机基础中心•(1)单元测试•单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检测的测试,目的是发现各模块内部可能存在的各种错误。•单元测试根据程序的内部结构来设计测试用例,其依据是详细设计说明书和源程序。单元测试的技术可以采用静态分析和动态测试。对动态测试通常以白盒测试为主,辅之以黑盒测试。•单元测试的内容包括:模块接口测试、局部数据结构测试、错误处理测试和边界测试。•*:在进行单元测试时,要用一些辅助模块去模拟与被测模块相联系的其他模块,即为被测模块设计和搭建驱动模块和桩模块。其中,驱动模块相当于被测模块的主程序,它接收测试数据,并传给被测模块,输出实际测试结果;而桩模块是模拟其他被调用模块,不必将子模块的所有功能带入。计算机基础中心•(2)集成测试•集成测试是测试和组装软件的过程,它是把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。•集成测试的依据是概要设计说明书。•集成测试所涉及的内容包括:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。•集成测试通常采用两种方式:非增量方式组装与增量方式组装。•非增量方式组装:也称为一次性组装方式。首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。•增量方式组装:又称渐增式集成方式
本文标题:第3章_公共基础软件工程基础
链接地址:https://www.777doc.com/doc-203244 .html