软件技术基础软件工程自学引导_第1页
软件技术基础软件工程自学引导_第2页
软件技术基础软件工程自学引导_第3页
软件技术基础软件工程自学引导_第4页
软件技术基础软件工程自学引导_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、目录概述软件生存周期需求分析软件设计软件编程面向对象的分析和设计软件测试软件维护3.1 概述程序设计时期(程序设计时期(19461960年代中期)年代中期) 程序设计是个人行为,没有软件的概念软件时期(软件时期(60至至70年代中期)年代中期) 软件危机出现,结构化思想的提出u软件工程时期软件工程时期 如何适应大型软件的生产 1968年提出“软件工程”这一术语软件危机表现 软件开发代价高 难于控制开发进度 工作量估计困难 软件质量低 软件修改维护困难原因 规模大(大系统的定义:50万行1000万行) 复杂性高 软件灵活可变 影响因素多:个人能力、团队联系、产品复杂度、符号方式、时间、其它软件危

2、机的例子IBM 360系统开发时间:1963-1966年投入人力:5000人年代码量:100万行每个版本都是从上一个版本找出1000个错误而修订的结果正像一只逃亡的野兽落到泥潭中做垂死的挣扎,正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷的越深,最后无法逃脱灭顶的灾难。越是挣扎,陷的越深,最后无法逃脱灭顶的灾难。软件工程(Software Engineering)软件工程软件工程指导计算机软件开发和维护的工指导计算机软件开发和维护的工程学科。它应用计算机科学,数学以及管理科程学科。它应用计算机科学,数学以及管理科学等原理,借鉴传统工程的原则、方法,创建学等原理,借鉴传统工程的原则、方法

3、,创建软件以达到提高质量,降低成本的目的。其中软件以达到提高质量,降低成本的目的。其中计算机科学、数学用于构造模型与算法,工程计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本以及科学用于制定规范、设计范型、评估成本以及确定权衡,管理科学用于计划、资源、质量、确定权衡,管理科学用于计划、资源、质量、成本等管理。成本等管理。软件工程框架开发范型设计方法支持过程管理过程可用性正确性合算性需 求设 计实 现确 认维 护软件开发工具与环境计算机辅助软件工程计算机辅助软件工程CASE (Computer-Aided Software Engineering)CASE工具:狭义地

4、说,是一类特殊的软件工具,用于工具:狭义地说,是一类特殊的软件工具,用于辅助开发、分析、测试、维护计算机程序和辅助开发、分析、测试、维护计算机程序和/或文档。广或文档。广义地说,是除了义地说,是除了OS之外的所有软件工具的总称。之外的所有软件工具的总称。软件开发环境:支持软件产品开发的软件系统。它由软软件开发环境:支持软件产品开发的软件系统。它由软件工具和环境集成机制构成,前者用以软件开发的相关件工具和环境集成机制构成,前者用以软件开发的相关过程、活动和任务;后者为工具集成和软件开发、维护过程、活动和任务;后者为工具集成和软件开发、维护及管理提供统一的支持。及管理提供统一的支持。软件工程软件工

5、程自动化工具自动化工具CASE =+3.2 软件生存周期定义: 是指软件产品从用户提出要求开始,到该软件产品不再能够使用的全过程。包括三个阶段: 制定计划,包括问题定义和可行性研究; 开发,包括需求分析、设计、编程和测试; 维护,包括安装交付、维护和升级等。需求做什么?设计怎么做?编程实现完成系统测试质量保证维护安装后的进一步完善软件开发模型定义软件开发全部过程、活动和任务的结构框架。软件开发全部过程、活动和任务的结构框架。瀑布模型P.170 图3.1(见后)具有反馈的瀑布模型特点:适用于小型系统的开发,不够灵活演化模型多次分析和设计针对事先不能完成定义需求的软件开发原型系统的重要性螺旋模型考

6、虑风险因素,由Boehm提出喷泉模型多次重复,无间隙适用于面向对象技术增量模型完整的体系结构的实现确定多次迭代RUPROPES问题定义问题定义可行性研究可行性研究需求分析需求分析设设 计计编编 码码测测 试试运行与维护运行与维护其中:每一阶段具其中:每一阶段具有以下特征:有以下特征: 从上一阶段接受工从上一阶段接受工作对象,即输入;作对象,即输入; 对这一输入实施本对这一输入实施本阶段的工作阶段的工作 给出本阶段的结果给出本阶段的结果作为输出。作为输出。在分析员和用户的紧密配合下,快速确定软件系在分析员和用户的紧密配合下,快速确定软件系统的基本要求。根据原型所要体现的特征统的基本要求。根据原型

7、所要体现的特征( (或界面形或界面形式、或处理功能、或总体结构、或模拟性能等式、或处理功能、或总体结构、或模拟性能等) ),描,描述基本规格说明,以满足开发原型的需要。述基本规格说明,以满足开发原型的需要。主要有三种不同的类型:主要有三种不同的类型: (1)(1)探索型:目的是要弄清对目标系统的要求,确探索型:目的是要弄清对目标系统的要求,确定所希望的特征,并探讨多种方案的可行性。定所希望的特征,并探讨多种方案的可行性。(2)(2)实验型:用于大规模开发和实现之前,考核方实验型:用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。案是否合适,规格说明是否可靠。(3)(3)进化型:进化

8、型原型的目的不在于改进规格说进化型:进化型原型的目的不在于改进规格说明,而是将系统建造成容易变化,在改进原型的过程明,而是将系统建造成容易变化,在改进原型的过程中,逐步将原型进化成最终系统。中,逐步将原型进化成最终系统。 原型原型快速分析或修快速分析或修改改构构造造运运行行评评价价(a)(a)原型开发模型原型开发模型N N快速分析,确定初步规格说明快速分析,确定初步规格说明构造原型构造原型运行运行/ /评价原型评价原型严格说明细部严格说明细部整理原型提供文档整理原型提供文档(b)(b)模型的细化过程模型的细化过程原型完成否原型完成否细部说明否细部说明否效果满意否效果满意否修改与改进原型修改与改

9、进原型N NN NY YY YY Y3.3 需求分析需求分析有关软件错误的一些事实在软件生命周期中,一个错误发现得越晚,修复的费用也越高许多错误是潜伏的,并且在错误产生后很长一段时间才被检查出来在需求过程中会产生很多错误在需求阶段,代表性的错误为疏忽,不一致和二义行需求错误是可以被检查出来的需求涉及人员需求者:客户和使用者系统分析员:分析阶段活动的主体开发者:包括设计,编程和项目管理者组成分析员的素质:能力(总体,抽象,本质)过程(保证整个过程的善始善终)交流技术(了解问题域)需求获取目的:了解用户的对软件的要求途径: 了解系统的需求 市场调查 访问用户和领域专家 考察现场内容: 物理环境、界

10、面、用户或人的因素、功能、文档、数据、资源、安全性、质量需求分析目的: 解决需求获取阶段得到的需求的不一致性和二义性方法: 结构化 面向对象 实体关系软件需求说明书(SRS)需求分析的结果文档SRS要求正确性正确性无二义性无二义性完整性完整性一致性一致性可验证性可验证性可理解性可理解性可修改性可修改性可跟踪性可跟踪性与设计无关与设计无关结构化分析方法(SA)结构化分析(Structured Analysis)提出人:Yourdon提出的概念有:提出的概念有: 数据流 数据源 数据潭 加工 存储建模过程 (1 1)建立系统的功能模型)建立系统的功能模型 使用的工具为数据流图使用的工具为数据流图D

11、FDDFD 首先:建立系统环境图,确定系统边界首先:建立系统环境图,确定系统边界 继之:自顶向下,逐层分解继之:自顶向下,逐层分解 (2)建立数据字典建立数据字典 定义数据流定义数据流 定义数据存储定义数据存储 定义数据项定义数据项 (3 3)给出加工小说明)给出加工小说明(描述数据的加工) 使用的工具为结构化语言、判定表、判定树使用的工具为结构化语言、判定表、判定树3.4 软件设计软件设计设计阶段的任务: 解决怎么做的问题,即将SRS转换为计算机中可实现的系统,得到软件设计说明书。软件设计可分为:总体设计、详细设计设计复审:每个设计完成后,都应进行复审,以尽早发现软件设计的缺陷。表示形式有:

12、层次图、 HIPO图、结构图等好的设计准则模块化(Modularity)抽象(Abstraction)独立性耦合不同模块之间相互依赖程度的度量不同模块之间相互依赖程度的度量 内容耦合(直接操作另一个模块的数据) 公共耦合(全局数据结构) 外部耦合(全局数据项) 控制耦合 标记耦合 数据耦合(参数传递)内聚模块之内各成分之间相互依赖程度的度量模块之内各成分之间相互依赖程度的度量 偶然内聚(模块内各部分关系松散) 逻辑内聚(模块将几种相关功能组合) 时间内聚(模块将同一时刻要执行的任务组合) 过程内聚(模块的几个任务按特定次序执行) 通讯内聚(模块所有功能通过数据关联) 顺序内聚(一个成分的输出作

13、为另一成分的输入) 功能内聚(模块只包含单一功能任务)启发性规则(1 1)改进软件结构,提高模块独立性;)改进软件结构,提高模块独立性;(2 2)模块规模适中)模块规模适中- -每函数每函数5050行语句;行语句;(3 3)深度、宽度、扇入和扇出适中;)深度、宽度、扇入和扇出适中;(4 4)模块的作用域力争在控制域之内;)模块的作用域力争在控制域之内;(5 5)降低模块接口的复杂性;)降低模块接口的复杂性;(6 6)模块功能应该可以预测。)模块功能应该可以预测。结构化设计方法(SD)基本思想:模块化、自顶向下逐步求精总体设计从数据流图导出软件结构图数据流图分为两大类:变换型数据流图变换型数据流

14、图事务型数据流图事务型数据流图详细设计是为软件结构图中的每个模块确定算法和数据结构,可用表示工具有: 流程图、流程图、N-S图、图、PAD图、伪码图、伪码结构化设计方法的基本要求是:在详细设计阶段为了确保模块逻辑清晰,就应该使所有的模块只有单入口、单出口和顺序、选择及循环三种基本控制结构。结构化方法小结结构化方法是一种比较系统的软件开发方法,包括:结构化方法是一种比较系统的软件开发方法,包括:结构化分析和结构化设计结构化分析和结构化设计紧紧围绕紧紧围绕“过程抽象过程抽象”和和“数据抽象数据抽象”, 给出了:给出了: 完备的符号体系完备的符号体系概念与表示概念与表示 可操作的过程可操作的过程步骤

15、与准则步骤与准则 易理解的表示工具易理解的表示工具 提供了:提供了: 控制信息组织复杂性的机制,例如控制信息组织复杂性的机制,例如 逐层分解、数据打包等逐层分解、数据打包等问题:问题:捕获的捕获的“过程过程”和和“数据数据” ,恰恰是客观事物恰恰是客观事物的易变性质,从而造成维护和验证上的困难;分析与的易变性质,从而造成维护和验证上的困难;分析与设计概念和表示法不一致,存在鸿沟。设计概念和表示法不一致,存在鸿沟。3.5 软件编程软件编程程序的质量主要取决于软件设计的质量。但是,程序设计语言的特性和编程风格也对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。程序设计语言编程风格高质量程序

16、设计指南c/c+语言 程序设计实践3.6 面向对象的分析和设计面向对象的分析和设计人们认识世界的三个构造法则:区分对象及其属性,如一棵树和树的大小。区分整体对象及其组成部分,如区分一棵树和树枝。不同对象类的形成及其区分,如所有树的类和所有石头的类的形成和区分。面向对象技术基于上述的认识法则,更好的刻画问题域;认为世界由各种对象组成,对象具有其属性和行为,对象之间存在着各种联系。一些概念: 对象、类、聚合、消息、方法、继承、封装、多态面向对象方法的主要特点:从问题域中客观存在的事物出发来构造软件系统,用对象从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并作为系统的基

17、本构成单位。作为对这些事物的抽象表示,并作为系统的基本构成单位。(对象对象) 用对象的属性表示事物的状态特征;用对象的服务(操作)用对象的属性表示事物的状态特征;用对象的服务(操作)表示事物的动态特征。(表示事物的动态特征。(属性与服务属性与服务)对象的属性与服务结合为一体,成为一个独立的、不可分对象的属性与服务结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。(的实体,对外屏蔽其内部细节。(封装封装)对事物进行分类。把具有相同属性和相同服务的对象归为对事物进行分类。把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一一类,类是这些对象的抽象描述,每

18、个对象是它的类的一个实例。(个实例。(分类分类)通过在不同程度上运用抽象的原则可以得到较一般的类和通过在不同程度上运用抽象的原则可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与服务,从而简化较特殊的类。特殊类继承一般类的属性与服务,从而简化系统的构造过程及其文档。(系统的构造过程及其文档。(继承继承)复杂的对象可以用简单的对象作为其构成部分。(复杂的对象可以用简单的对象作为其构成部分。(聚合聚合)对象之间通过消息进行通讯,以实现对象之间的动态联系。对象之间通过消息进行通讯,以实现对象之间的动态联系。(消息消息)通过关联表达对象之间的静态关系。(通过关联表达对象之间的静态关系。(关联关联

19、) 采用多态机制允许老代码调用新代码;把具有共同基类的采用多态机制允许老代码调用新代码;把具有共同基类的对象组成一组,并对它们进行一致的处理(对象组成一组,并对它们进行一致的处理(多态性多态性)面向对象建模建模使用工具为建模语言,建模语言是用以表述设计方法建模使用工具为建模语言,建模语言是用以表述设计方法的表示法的表示法( (主要是图形的主要是图形的) )UMLUML已成为一种绘制面向对象设计图的标准工具,是已成为一种绘制面向对象设计图的标准工具,是定义定义良好、易于表达、功能强大且普遍适用的建模语言。适用良好、易于表达、功能强大且普遍适用的建模语言。适用于系统开发的不同阶段于系统开发的不同阶

20、段, ,从需求规格描述直至系统完成后从需求规格描述直至系统完成后的测试和维护。的测试和维护。OO原则:原则:Abstraction(抽象)Encapsulation(封装)Modularity(模块化)Hierarchy(分层)标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义: - - 第一类是用例图第一类是用例图, ,从用户角度描述系统功能从用户角度描述系统功能, ,并指出并指出各功能的操作者。各功能的操作者。- - 第二类是静态图第二类是静态图(Static diagram),(Static diagram),包括类图、对象包括类图、对象图和包图。图和包图。- - 第三类是

21、行为图第三类是行为图(Behavior diagram),(Behavior diagram),描述系统的动描述系统的动态模型和组成对象间的交互关系,包括状态图和活动态模型和组成对象间的交互关系,包括状态图和活动图。图。- - 第四类是交互图第四类是交互图(Interactive diagram),(Interactive diagram),描述对象描述对象间的交互关系,包括顺序图和合作图。间的交互关系,包括顺序图和合作图。- - 第五类是实现图第五类是实现图( Implementation diagram )( Implementation diagram ),包,包括构件图和配置图。括构件

22、图和配置图。面向对象分析OOA用面向对象方法分析问题域,建立基于对象、消息的业务模型,形成对客观世界和业务本身的正确认识。生成业务对象的动、静态模型和抽象类。面向对象设计OOD针对OOA给出的问题域模型,用面向对象方法设计出软件基础架构(概要设计)和完整的类结构(详细设计),以实现业务功能。生成对象类的动、静态模型(解决域)。用例图用例图登录系统登记员完成课程登记计费系统学生登记课程教授选择教授课程课程目录系统类图类图顺序图顺序图 : 学生 : 选课表单 : 课程登记管理器 : 课程目录 : 课程打开取课程列表取课程列表显示课程列表选择4门主课和2门选修课把课程加入课程计划添加学生重复4门课协

23、作图:完成课程登记协作图:完成课程登记 : Registrar : CloseRegistrati. : MainForm : ICourseCatalogS. : CloseRegistrationContro. : CourseOffering : Schedule8: get number of students10: set status as closed1: select close registration4: close registration3: is registration open?5: close registration2: open7: close regist

24、ration6: get course offerings9: commit offering状态图状态图初始化entry/ 创建表单do/ 初始化表单保存do/ 保存表单提交do/ 提交表单用于处理课程选择选主修课entry/ 接受课程do/ 增加记数选辅修课entry/ 接受课程exit/ 增加记数H选主修课entry/ 接受课程do/ 增加记数选辅修课entry/ 接受课程exit/ 增加记数挂起do/ 等待30秒输入课程 count=2 count=4 / set count=0Quit输入课程输入课程挂起H恢复3.7 软件测试软件测试目标:发现错误,保证软件质量方式:人工测试、动态测

25、试、自动测试过程:单元测试、集成测试、确认测试、系统测试常用方法:白盒测试、黑盒测试、回归测试、强度测试软件测试并不等于程序测试。软件测试应贯软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。穿于软件定义与开发的整个期间。用户要求用户要求用户:用户:我要什么?我要什么?运行结果运行结果计算机:计算机:程序运行得到程序运行得到的结果的结果源程序源程序程序员:程序员:我要让计算机我要让计算机怎么做?怎么做?设计说明书设计说明书设计员:设计员:我要让软件我要让软件做什么?做什么?需求说明书需求说明书分析员:分析员:我可以提供什我可以提供什么?么?理解正确性理解正确性表达正确性表达正

26、确性理解正确性理解正确性设计正确性设计正确性表达正确性表达正确性理解正确性理解正确性编码正确性编码正确性运行正确性输运行正确性输入正确性入正确性相符吗?相符吗?软件测试策略软件测试过程是发现模块的子程序或过程的实际功能与该是发现模块的子程序或过程的实际功能与该模块的功能和接口的描述是否相符,以及是否有编码错模块的功能和接口的描述是否相符,以及是否有编码错误存在。误存在。 目的是为了发现程序结构的错误。目的是为了发现程序结构的错误。 :是验证软件的功能和性能及其它特征是否与:是验证软件的功能和性能及其它特征是否与用户的要求一致。用户的要求一致。 是由一个用户在开发者的陪同下,在开发环是由一个用户

27、在开发者的陪同下,在开发环境下进行的测试,也可以是开发机构内部的用户在模境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。拟实际操作环境下进行的测试。 是由软件的多个用户在一个或者多个用户的是由软件的多个用户在一个或者多个用户的实际使用环境下进行的测试。实际使用环境下进行的测试。 是将通过确认测试的软件,作为整个基于计是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素组合在一起,在实际软件、数据和人员等其它系统元素组合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。测试和确认测试。 白盒测试逻辑驱动测试语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖黑盒测试功能测试等价分类法边缘值分析法因果图法错误推测法3.8

温馨提示

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

评论

0/150

提交评论