您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 相州教育-软件工程基础
第1页第3章软件工程基础选择相州——你没有错第2页3.1基本概念软件程序数据相关文档机器可执行的程序和数据机器不能执行的,与软件开发、运行、维护、使用等有关的文档选择相州——你没有错第3页软件的特点包括:(1)软件是一种逻辑实体;(2)软件的生产与硬件不同,它没有明显的制作过程;(3)软件在运行、使用期间不存在磨损、老化问题;(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;(5)软件复杂性高,成本昂贵;(6)软件开发涉及诸多的社会因素。软件按功能分为:应用软件、系统软件、支撑软件(或工具软件)。选择相州——你没有错第4页1.软件危机软件危机:泛指在计算机软件的开发和维护中所遇到的一系列严重问题。软件危机主要表现在成本、质量、生产率等问题。软件危机主要表现在:1、软件需求增长得不到满足2、软件开发成本和进度无法控制3、软件不可维护和维护程度非常低4、软件质量难以保证5、软件的成本不断提高6、软件开发生主率的提高跟不上硬件的发展和应用需求的增长。选择相州——你没有错2.软件工程软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。其目的是提高软件生产率、提高软件质量、降低软件成本。它所包含的内容有以下两方面:软件开发技术主要有软件开发方法学、软件工具、软件工程环境。软件工程管理主要有软件管理、软件工程经济学。第5页选择相州——你没有错软件工程三要素方法:完成软件工程项目的技术手段工具:支持软件的开发、管理、文档生成过程:支持软件开发的各个环节的控制、管理;将方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。过程是把输入转化为输出的一组彼此相关的资源的活动。第6页选择相州——你没有错第7页3.软件生命周期将软件产品从提出、实现、使用、维护到停止使用退役的过程称为软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。维护是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护代价。选择相州——你没有错6个活动阶段制定计划:确定系统的总体目标。参加人员有用户、项目负责人和系统分析员,产生文档有可行性分析报告、项目计划书等需求分析:对开发软件提出的需求进行分并给出详细定义。确定系统的逻辑模型。参加人员有用户、项目负责人和系统分析员。产生文档为需求规格说明书,其作用:(1)便于用户、开发人员进行理解交流;(2)反映用户问题的结构,可以作为软件开发工作的基础和依据;(3)作为确认测试和验收的依据第8页选择相州——你没有错第9页软件设计:分为概要设计和详细设计。包括软件结构设计、数据设计、接口设计和过程设计。结构设计是定义软件系统各部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计是把系统结构部件转换成软件的过程性描述。软件设计分概要设计和详细设计。参加人员有系统分析员和高级程序员。产生的文档有设计规格说明书。软件实现:编程。高级程序员和程序员产生源程序清单软件测试:在设计测试用例的基础上,检验软件的各个组成部分。产生软件测试计划和软件测试报告运行与维护选择相州——你没有错第10页制定计划需求分析软件设计实现测试运行和维护确定系统的总体目标需求规格说明书概要设计说明书详细设计说明书测试计划初稿完成程序代码用户手册单元测试计划检验软件测试分析报告制定计划需求分析概要设计实现测试退役详细设计使用维护定义阶段开发阶段维护阶段第11页3.2需求分析与结构化分析方法需求分析的方法结构化分析方法面向对象的分析方法面向数据流的结构化方法(SA)面向数据结构Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD)选择相州——你没有错需求分析的任务:导出目标系统的逻辑模型,解决“做什么”的问题。需求分析一般分为:四个步骤进行需求获取需求分析编写需求规格说明书需求评审第12页选择相州——你没有错第13页结构化分析常用工具:(1)数据流图(2)数据字典(3)判定树(4)判定表结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。选择相州——你没有错第14页数据流图(DFD):描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模。选择相州——你没有错第15页建立数据流图的步骤:(1)由外向里;(2)自顶向下:顶层、中间层、低层数据流图;(3)逐层分解;选择相州——你没有错第16页选择相州——你没有错第17页数据字典(DD):对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。数据字典是各类数据描述的集合,它通常包括5个部分:即数据项、数据结构、数据流、数据存储、和处理过程。数据字典是结构化分析的核心。数据字典的作用是对数据流图中出现的被命名的图形元素的确切解释。选择相州——你没有错第18页存储文件”存折”的DD定义:选择相州——你没有错第19页判定树:当数据流图中的加工依赖于多个逻辑时,可以使用判定树来描述。从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。选择相州——你没有错第20页判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。选择相州——你没有错第21页软件需求规格说明书,其作用:(1)便于用户、开发人员进行理解交流;(2)反映用户问题的结构,可以作为软件开发工作的基础和依据;(3)作为确认测试和验收的依据。需求分析结束时产生:(1)DFD、DD、判定树、判定表(2)软件需求规格说明书选择相州——你没有错第22页软件需求规格说明书的特点:(1)正确性;(2)无岐义性;(3)完整性;(4)可验证性;(5)一致性;(6)可理解性;(7)可追踪性。选择相州——你没有错第23页3.3结构化设计方法、概要设计和详细设计软件设计○软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。○软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。需求分析解决做什么的问题,软件设计主要解决怎么做的问题。从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。结构设计:定义软件系统各主要部件之间的关系。数据设计:将分析时创建的模型转化为数据结构的定义。接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信。过程设计:把系统结构部件转换成软件的过程描述。从工程管理角度来看:概要设计和详细设计。选择相州——你没有错第24页软件设计的基本原理:(1)抽象(2)模块化(3)信息隐蔽(4)模块独立化内聚性:耦合性:在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内聚,低耦合。选择相州——你没有错第25页内聚性:是一个模块内部各元素间彼此结合的紧密程度的度量。内聚由弱到强排列:偶然内聚—逻辑内聚—时间内聚—过程内聚—通信内聚—顺序内聚—功能内聚耦合性:模块间互相连接的紧密程度的度量。耦合性从高到低排列:内容耦合—公共耦合—外部耦合—控制耦合—标记耦合—数据耦合—非直接耦合选择相州——你没有错第26页3.3.2概要设计设计的基本任务软件的系统结构数据结构和数据库设计编写概要设计文档概要设计文档评审选择相州——你没有错第27页结构图(SC):概要设计(软件结构设计)的工具:模块用一个矩形表示,箭头表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据。选择相州——你没有错第28页结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。选择相州——你没有错第29页需求分析逻辑模型数据流图概要设计系统结构图物理模型概要设计的方法:典型的数据流类型有两种:变换型和事务型。变换型数据流系统结构图事务型数据流系统结构图选择相州——你没有错第30页3.3.3详细设计根本目标确定应用怎样具体的实现所要求的系统,不是具体的编写程序,而是要设计程序的“蓝图”是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。此阶段的结果基本上决定了最终的程序代码的质量包括内容:代码设计输入设计输出设计处理过程设计用户界面设计安全控制设计选择相州——你没有错第31页过程设计工具:图形工具:程序流程图、N-S图、PAD、HIPO表格工具:判定表语言工具:PDL(伪码)程序流程图:选择相州——你没有错第32页程序流程图N-S图PAD图选择相州——你没有错第33页选择相州——你没有错第34页N-S图:选择相州——你没有错第35页PAD图:PDL(伪码):选择相州——你没有错第36页6.软件工程的目标在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境软件工程需要达到的基本目标应是:付出较低的成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发,及时交付使用。选择相州——你没有错8.软件工程的基本原则:抽象、信息隐蔽、模块化、局部化(模块间松散,模块内内聚性强)、确定性、一致性、完备性和可验证性。9.软件工具和软件开发环境软件工具(CASE):用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件软件开发工具从单项集成发展软件开发环境:支持软件产品开发全过程的软件工具的集合。第37页选择相州——你没有错第38页3.4软件测试软件测试定义:使用人工或自动手段来运行或测定某个系统的过程。意义目的:尽可能多的发现错误希望能以最少的人力和时间发现潜在的各种错误和缺陷保证系统质量和可靠性的关键步骤4.4.2测试方法静态测试:包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。动态测试:是基于计算机的测试。主要包括白盒测试方法和黑盒测试方法。测试用例:[(输入值集),(输出值集)]选择相州——你没有错第39页3.4.3白盒测试结构测试将软件看成透明的白盒,根据程序的内部结构和逻辑结构来设计测试例子,对程序的路径和过程进行测试,检查是否满足设计的要求主要方法:逻辑覆盖、基本路径测试3.4.4黑盒测试功能测试将软件看成黑盒子,在完全不考虑软件内部结构和特性的情况下,测试软件的外部特性主要方法:等价类划分法、边界值分析法、错误推测法3.4.5软件测试的实施单元测试(模块测试)集成测试确认测试系统测试选择相州——你没有错第40页单元测试:是对模块进行正确性检验的测试。是软件测试的最小单位,主要采用静态和动态测试法,动态测试以白盒测试法为主,辅助于黑盒测试集成测试是测试和组装软件的过程,主要目的是发现与接口有关的错误。确认测试验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种要求。系统测试将通过确认测试的软件,与计算机硬件、外设等其他元素组合在一起,在实际环境下对计算机系统进行一系列的集成测试和确认测试。选择相州——你没有错第41页3.5程序调试1.任务根据测试时发现的错误,(1)找出原因和具体的位置.(2)进行改正,排除错误由程序开发人员来进行,谁开发的程序就由谁来进行调试2.程序调试的基本步骤:(1)错误定位;(2)修改
本文标题:相州教育-软件工程基础
链接地址:https://www.777doc.com/doc-2172058 .html