系统架构设计之三:系统开发基础知识
一、本章要点1)开发管理。2)需要管理。3)软件开发方法。4)软件开发环境与工具。5)设计方法。6)基于构件的开发。7)应用系统构建。8)测试与评审。二、软件开发生命周期三、软件开发方法学1)从开发风范上看,可分为自顶向下开发方法和自底向上开发方法。2)从性质上看,可分为形式化方法和非形式化方法。3)从适用范围上看,可分为整体
一、本章要点
1)开发管理。
2)需要管理。
3)软件开发方法。
4)软件开发环境与工具。
5)设计方法。
6)基于构件的开发。
7)应用系统构建。
8)测试与评审。
二、软件开发生命周期
三、软件开发方法学
1)从开发风范上看,可分为自顶向下开发方法和自底向上开发方法。
2)从性质上看,可分为形式化方法和非形式化方法。
3)从适用范围上看,可分为整体性方法和局部性方法。
4)软件自动化方法是从形式的软件功能约束到可执行的程序代码这一过程的自动化,其实现途径主要有过程途径、演绎途径、转换途径和归纳途径。
1、净室方法
1)净室软件工程师软件开发的一种形式化方法。
2)使用盒结构规约进行分析和设计建模,并且强调正确性验证(而不是测试)作为发现和消除错误的主要机制。
3)使用统计的测试来获取认证被交付的软件的可靠性所必需的出错率消息。
4)净室方法主要使用三种盒:
(1)黑盒。这种盒刻画系统或系统的某部分行为。
(2)状态盒。这种盒以类似于对象的方式封装状态数据和服务(操作)。
(3)清晰盒。在清晰盒中定义状态盒所蕴含的变迁功能,简单地说,清晰盒包含了对状态盒的过程设计。
5)一旦完成了盒结构设计,则运用正确性验证;一旦完成了正确性验证,则开始统计的使用测试。
2、结构化方法
1)结构化方法属于自顶向下的开发方法,基本思想是“自顶向下,逐步求精”。
2)结构是指系统内各个组成要素之间相互联系、相互作用的框架。
3)提高软件结构合理性的准则:分解与抽象、模块独立性、信息隐蔽。
4)软件生存周期的不同阶段包括了:结构化分析(Structured Analysis,SA)、结构化设计(Structured Design,SD)和结构化程序设计(Structured Programing,SP)。
5)结构化方法基本原则:
(1)面向用户的观点。
(2)严格区分工作阶段,每个阶段有明确的任务和应得的成果。
(3)按照系统的观点,自顶向下地完成系统的开发工作。
(4)充分考虑变化的情况。在系统设计中,把系统的可变更性放在首位。
(5)工作成果文献化、文档化。
6)结构化分析的手段:数据流图、数据字典、结构化语言、判定表及判定树。
7)SA方法步骤如下:
(1)分析当前的情况,作出反映当前物理模型的数据流图(Data Flow Diagram,DFD)。
(2)推导出等价的逻辑模型的DFD。
(3)设计新的逻辑系统,生成数据字典和基元描述。
(4)建立人机接口,提出可供选择的目标系统物理模型的DFD。
(5)确定各种方案的成本和风险等级,据此对各种方案进行分析。
(6)选择一种方案。
(7)建立完整的需求规约。
8)结构化设计尤其适用于变换型结构和事务型结构的目标系统。
9)SD方法步骤如下:
(1)评审和细化数据流图。
(2)确定数据流图的类型。
(3)把数据流图映射到软件模块结构,设计出模块结构的上层。
(4)基于数据流图逐步分解高层模块,设计中下层模块。
(5)对模块结构进行优化,得到更为合理的软件结构。
(6)描述模块接口。
10)SD方法设计原则如下:
(1)是每个模块执行一个功能(坚持功能性内聚)。
(2)每个模块使用过程语句(或函数方法等)调用其他模块。
(3)模块间传送的参数作为数据使用。
(4)模块间公用的消息(如参数等)尽量少。
11)结构化方法的缺点
(1)开发周期长。
(2)早期的结构化方法注重系统功能,兼顾数据结构方面不多。
(3)结构化程度较低的系统,在开发初期难于锁定功能要求。
3、面向对象方法
1)主要包括OMT(Object Model Technology,对象建模技术)方法、Coad/Yourdon方法、OOSE(Object-Oriented Software Engineering,面向对象的软件工程)及Booch方法。
2)OMT、OOSE及Booch最后统一为UML(United Model Language,统一建模语言)。
3)Coad/Yourdon方法主要由面向对象的分析(Object-Oriented Analysis,OOA)和面向对象的设计(Object-Oriented Design,OOD)构成。
4)OOA和OOD使用完全一致的概念和表示法。
5)OOA任务主要是建立问题域的分析模型。5各层次:类与对象层、属性层、服务层、结构层和主题层。5个步骤:标识对象类、标识结构与关联(包括继承、聚合、组合及实例化)、划分主题、定义属性和定义服务。
6)Booch认为软件开发是一个螺旋上升的过程,每个周期包括4个步骤:标识类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现。
7)Booch方法的开发模型包括静态模型:逻辑模型(类图、对象图)和物理模型(模块图、进程图);动态模型:状态图和时序图。
8)OMT方法作为一种软件工程方法学,支持整个软件生存周期,覆盖了问题构成分析、设计和实现等阶段。
9)OMT方法使用了建模的思想:对象模型、动态模型和功能模型。
10)OOSE在OMT基础上,对功能模型进行了补充,提出了用例(use case)的概念,取代了数据流图来进行需求分析和建立功能模型。
11)OOSE方法采用5类模型来建立目标系统:
(1)需求模型(2)分析模型(3)设计模型(4)实现模型(5)测试模型
12)用例是贯穿OOSE活动的核心,用例实际上是描述系统用户(使用者、执行者)对于系统的使用情况,是从使用者角度来确定系统的功能。
4、原型法
1)结构化方法和面向对象方法有一个共同点:在系统开发初期必须明确系统的功能要求,确定系统边界。
2)原型是指软件的一个早期可运行的版本。
3)在需求分析阶段要使用原型化方法,必须从系统结构、逻辑结构、用户特征、应用约束、项目管理和项目环境来考虑,以决定是否采用原型化方法。
4)联机事务处理系统,互相关联的应用系统适合于用原型化方法,而批处理、批修改等结构不适宜用原型化方法。
5)有结构的系统,如操作支持系统、管理信息系统和记录管理系统适于用原型化方法,而基于大量算法的系统不适宜用原型化方法。
6)原型生存期
7)原型开发技术
(1)可执行规格说明,用于需求规格说明的一种自动化技术。描述系统要“做什么”,但不描述系统要“怎样做”。包括形式化规格说明、有限状态模型和可执行的数据流图。
(2)基于场景的设计。一个场景可模拟在系统运行期间用户经历的事件。
(3)自动程序设计。可执行规格说明的替身,主要是指在程序自动生成环境的支持下,利用计算机实现软件的开发。
(4)专用语言。应用领域的模型化语言。
(5)软件复用技术。合成技术:用构件来构造软件系统。用构件合成较大的构件有三种方式:连接;消息传递和继承;管道机制。生成技术:利用可复用的模式,通过生成程序产生一个新的程序或程序段,产生的程序可看做是模式的示例。可复用的模式有两种不同的形式:代码模式和规则模式。前者的例子是应用生成器,后者的例子是变换系统。
(6)简化假设。
(7)面向对象技术。
8)原型法适合于用户需求不明确的场合。
5、逆向工程
1)再工程是对现有软件系统的重新开发过程,包括逆向工程(Reverse Engineering,反向工程)、新需求的考虑(软件重构)和正向工程三个步骤。
2)软件重构是对源代码、数据进行修改,使其易于修改和维护,以适应将来的变更。通常并不修改软件体系结构,而是关注模块的细节。
3)逆向工程是分析程序,力图在比源代码更高的抽象层次上建立程序表示的过程。
四、软件开发模型
1、瀑布模型
1)也成为生命周期法,是结构化方法。
2)把软件开发过程分为:软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6各阶段。
2、其他经典模型
1)演化模型。也称为变换模型,是在快速开发一个原型的基础上,根据用户提出的意见,对原型进行改进,重复这一过程,直到演化成最终的产品。
2)螺旋模型。将瀑布模型和变换模型相结合。以原型为基础,沿着螺线自内向外旋转,每旋转一圈都要经过制定计划、风险分析、实施工程及客户评价,并开发原型的一个新版本。经过若干次螺旋上升过程,得到最终的系统。
3)喷泉模型。主要支持面向对象的开发方法,分析、设计和编码之间不存在明显的边界。
4)智能模型。与专家系统结合在一起,应用基于规则的系统,采用规约和推理机制。
5)增量模型。融合了瀑布模型的基本成分(重复的应用)和原型实现的迭代特征。与原型不同在于,每一个增量均发布一个可操作产品。
6)迭代模型。迭代包括产生产品发布的全部开发活动和要使用该发布必需的所有其他外围元素。适用于视线不能完整定义产品所有需求、计划多期开发的软件开发中。
7)构件组装模型。基于构件的软件开发(Component Based Software Development,CBSD)模型是利用模块化方法,将整个系统模块化,并在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。融合了螺旋模型的许多特征,本质上是演化型的,开发过程是迭代的。
8)V模型。以测试为中心的开发模型。
3、快速应用开发
快速应用开发(Rapid Application Development,RAD)模型是一个增量型的软件开发过程模型,强调极短的开发周期。是瀑布模型的一个高速变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。
1)业务建模。辅之以数据流图。
2)数据建模。辅之以E-R图。
3)过程建模。使数据对象在信息流中完成各业务功能。
4)应用程序生成。利用第四代语言(4GL)写出处理程序,重用已有构件或创建新的可用构件,自动生成并构造出整个应用系统。
5)测试与交付。
4、敏捷方法
1)流派:极限编程(Extreme Programming,XP)、自适应软件开发、水晶方法和特性驱动开发。
2)开发者的角度,基本原则有:
(1)短平快会议(Stand Up)
(2)小版本发布(Frequent Release)
(3)较少的文档(Minimal Documentation)
(4)合作为重(Collaborative Focus)
(5)客户直接参与(Customer Engagement)
(6)自动化测试(Automated Testing)
(7)适应性计划调整(Adaptive Planning)
(8)结对编程(Pair Programming)
3)管理者角度,基本原则有:
(1)测试驱动开发(Test-Driven Development)
(2)持续集成(Continuous Integration)
(3)重构(Refactoring)
4)与其他方法最大不同如下:
(1)在更短的周期内,更早地提供具体、持续的反馈信息。
(2)迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程总不断地发展它。
(3)依赖于自动测试程序来监控开发进度,并及早捕获缺陷。
(4)依赖于口头交流、测试和源程序进行沟通。
(5)倡导持续的演化式的设计。
(6)依赖于开发团队内部的紧密协作。
(7)尽可能达到程序员短期利益和项目长期利益的平衡。
5)主要适用于小规模软件的开发和小型团队的开发。
5、统一过程
1)统一过程(Unified Process,UP)是一个通用过程框架,可用于种类广泛的软件系统、不同应用领域、不同的组织类型、不同的性能水平和不同的项目规模。
2)基于构件,使用UML进行系统建模。用例驱动、以基本架构为中心、迭代和增量。
3)时间上分解为4个顺序的阶段,初始阶段、细化阶段、构件阶段和交付阶段。
4)初始阶段的任务是为系统建立业务模型并确定项目的边界。
5)细化阶段的任务是分析问题领域,建立健全的架构基础,淘汰项目中最高风险的元素。
6)在构件阶段,要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。
7)交付阶段的重点是确保软件对最终用户是可用的。
8)UP的工作流程分为两部分,即核心工作流程与核心支持工作流程。核心工作流程(在项目中的流程)包括业务需求建模、分析设计、实施、测试和部署;核心支持工作流程(在组织中的流程)包括环境、项目管理、配置与变更管理。
9)Rational公司提出此方法,一般称为RUP(Rational Unified Process),IBM收购Rational,于是又称IBM RUP。
五、系统规划与问题定义
总体规划阶段主要目标是制定软件的长期发展方案,决定软件在整个生命周期的发展方向、规模和发展进程。
总体规划阶段主要任务如下:
(1)制定软件的发展战略。
(2)确定组织的主要信息需求,形成总体结构方案,安排项目开发计划。
(3)制定系统建设的资源分配计划。
进行软件系统的总体规划一般包括如下几个阶段:
(1)对当前系统进行初步的调查。
(2)分析和确定系统目标。
(3)分析子系统的组成以及基本功能。
(4)拟定系统的实施方案。
(5)进行系统的可行性分析。
(6)编写可行性报告。
主要方法有:关键成功因素法(Critical Success Factors,CSF)、战略目标集转化法(Strategy Set Transformation,SST)和企业系统规划方法。
1、可行性分析
可行性分析研究的任务就是研究系统开发的必要性和可能性。
1)可行性分析的内容:技术可行性、经济可行性和操作可行性。
2)可行性分析工作的步骤:
(1)核实问题定义与目标。
(2)研究分析现有系统。
(3)为新系统建模。有几种技术:系统上下文关系范围图(数据流图的0层图);实体关系图;用例模型;域模型;IPO(Input/Process/Output)表。
(4)用户复核。
(5)提出并评价解决方案。
(6)确定最终推荐的解决方案。
(7)草拟开发计划。
(8)提交可行性分析报告。
2、成本效益分析
成本效益分析首先是估算新系统的开发成本,然后与可能取得的效益(有形的和无形的)进行比较权衡。
1)货币的时间价值。
(1)单利计算公式:
(2)复利计算公式:
(3)P为本金,n为年期,i为利率,F为P元钱在n年后的价值
2)折现率与折现系数
折现又称贴现,就是把将来某一时点的资金额换算成现在时点的等值金额。折现时所使用的利率称为折现率(贴现率)。
为折现系数。
3)净现值分析法(Net Present Value,NPV)
是指项目在生命周期内各年的净现金流量按照一定的、相同的贴现率贴现到初时的现值之和,即
4)净现值率(Net Present Value Ratio,NPVR)
是项目净现值与项目投资总额现值P之比,反映了资金的利用效率。
5)现值指数(Net Present Value Index, NPVI)
是投资方案经营期各年末净现金流入量的总现值与建设期各年初投资额总现值之比,即
6)内含报酬率(Internal Rate of Return,IRR)
随着实际折现率的升高,方案的可行性在下降,这就存在一个临界点,当实际折现率高于此值时,方案就不可行。这个临界点通常称为内含报酬率(内部收益率),即一种能够是投资方案的净现值为0的折现率。
7)投资回收期
投资回收期是指用投资方案所产生的净现金收入回收初始全部投资所需的时间。
(1)静态投资回收期,不考虑资金时间价值因素。
(2)动态投资回收期,考虑资金时间价值因素。
8)投资回收率
投资回收率反映企业投资的获利能力:
3、新旧系统分析与比较
1)比较的主要目的如下:
(1)评估旧系统存在的问题,评估升级旧系统的价值和升级的代价。
(2)在项目可行性分析和方案设计阶段,通过分析旧的系统,寻找旧系统中存在的主要问题,为新系统的设计目标提供参考。
(3)在新系统方案确定后,进行新旧系统比较以便验证系统的设计是否完备。
(4)理解新旧系统之间的差异、确定新旧系统转换的技术路线。
2)分析原则
(1)比较新旧系统(2)复查问题(3)控制规模
3)转换策略
(1)直接转换(2)逐步转换(3)并行转换
4、结构化系统建模
1)软件开发项目是要实现目标系统的物理模型,即确定待开发软件的系统元素,并将功能和数据结构分配到这些系统元素中,它是软件实现的基础。
2)逻辑模型与物理模型不同,忽视实现机制与细节,只描述系统要完成的功能和要处理的数据。
3)系统分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题。
4)设计步骤:
(1)获得当前系统的物理模型
(2)抽象出当前系统的逻辑模型
(3)建立目标系统的逻辑模型
(4)建立目标系统的物理模型
5、问题定义
问题分析的目标就是在开始开发之前对要解决的问题有一个更透彻的理解。
经过的步骤有:
(1)在问题定义上达成共识
(2)理解问题的本质,因果鱼骨图和帕雷托图
(3)确定项目干系人
(4)定义系统的界限
(5)确定系统实现的约束
对一个问题的完成定义,通常应包括目标、功能需求和非功能需求三个方面。
六、需求工程
需求工程是包括创建和维护系统需求文档所必需的一切活动的过程,可分为需求开发和需求管理。1)需求开发。包括需求获取、需求分析、编写规格说明书(需求定义)和需求验证4个阶段。
2)需求管理。通常包括定义需求基线、处理需求变更及需求跟踪。
3)需求开发是主线,是目标;需求管理是支持,是保障。
1、需求开发概述
需求开发主要确定开发软件的功能、性能、数据和界面等要求。
1)需求开发工作
(1)问题识别(2)分析与综合(3)编制需求分析的文档(4)需求分析与评审
2)需求开发的原则
(1)必须能够表达和理解问题的信息域和功能域
(2)必须表示软件的行为
(3)必须划分描述信息、功能和行为的模型,从而可以以层次的方式揭示细节
(4)分析过程应该从要素信息移向细节实现
(5)必须按自顶向下、逐层分解的方式对问题进行分解和不断细化
(6)要给出系统的逻辑视图和物理视图
3)需求的分类
(1)功能需求(2)非功能需求(3)设计约束(4)业务需求(5)用户需求(6)系统需求
2、需求获取
1)要捕获的信息
(1)与问题域相关的信息(如业务资料、组织结构图和业务处理流程)
(2)与要求解决的问题相关的信息
(3)用户对系统的特别期望与施加的任何约束信息
2)信息的来源,从项目干系人入手
3)需求捕获技术
(1)用户访谈(2)用户调查(3)现场观摩(4)阅读历史文档(5)联合讨论会
4)需求捕获的策略
在整个需求过程中,需求捕获、需求分析、需求定义和需求验证4个阶段不是瀑布式的发展,而是应该采用迭代式的演化过程。
3、需求分析
需求分析的方法:(1)结构化分析方法(2)面向对象分析方法(3)面向问题域的分析(Problem Domain Oriented Analysis,PDOA)1)业务流程分析
2)数据流图分析DFD,是结构化分析,表达系统内数据的流动并通过数据流描述系统功能的一种方法
DFD主要作用如下:
(1)DFD是理解和表达用户需求的工具,是系统分析的手段。
(2)DFD概括地描述了系统的内部逻辑过程,是系统分析结果的表达工具,是系统设计的重要参考资料,是系统设计的起点。
(3)DFD作为一个存档的文字材料,是进一步修改和充实开发计划的依据。
3)DFD中的4中基本符号:数据流、加工、数据存储和外部实体(数据源及数据终点)
4)数据字典是关于数据的信息的集合,也就是对DFD中包含的所有元素的定义的集合。DFD和数据字典共同构成系统的逻辑模型。
5)数据字典设计包括数据流设计、数据元素字典设计、数据处理字典设计、数据结构字典设计和数据存储设计。
6)对加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树及判定表。
4、需求定义
需求定义的过程也就是形成需求规格说明书的过程,通常有两种需求定义的方法,分别是严格定义方法和原型方法。软件需求说明书(Software Requirements Specification,SRS)是需求开发阶段的成果,代表用户和开发人员对软件系统的共同理解,是软件项目后期开发和维护的基础。
5、需求管理
需求管理通常包括定义需求基线、处理需求变更及需求跟踪等方面的工作。对于需求变更的管理,则主要使用需求变更流程和需求跟踪矩阵的管理方式。
需求跟踪包括编制每个需求与系统元素之间的联系文档。
七、软件设计
从工程管理角度来看,软件设计可分为概要设计和详细设计。
1)概要设计也称为高层设计或总体设计,即将软件需求转化为数据结构和软件的系统结构。
2)概要设计主要包括设计软件的结构、确定系统由哪些模块组成,以及每个模块之间的关系。它采用的是结构图(包括模块、调用和数据)来描述程序的结构,还可以使用层次图和HIPO(层次图加输入/处理/输出图)。
3)详细设计也称为低层设计,即对结构图进行细化,得到详细的数据结构与算法。
4)经常使用的工具包括程序流程图,盒图,PAD图(Problem Analysis Diagram,问题分析图)及PDL(Program Design Language,伪代码)
1、软件设计活动
1)软件设计包括4个既独立又互相联系的活动,即数据设计、软件结构设计、人机界面设计和过程设计。
2)软件结构设计的主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系。
2、结构化设计
1)结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。
2)面向数据流的设计方法,自顶向下、逐步求精和模块化。
3)模块是指执行某一特定任务的数据结构和程序代码。
4)抽象化:(1)过程的抽象(2)数据抽象(3)控制抽象
5)信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,并且尽可能少地暴露其内部的处理过程。
6)模块独立的两个标准是“高内聚,低耦合”。
3、工作流设计
1)工作流(Work Flow)就是自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。
2)工作流就是一系列相互衔接、自动进行的业务活动或任务。
3)工作流管理(Workflow Management,WFM)是人与计算机共同工作的自动化协调、控制和通信,在计算机化的业务过程上,通过在网络上运行软件,使所有命令的执行都处于受控状态。
4)工作流管理系统(Workflow Management System,WFMS)通过软件定义、创建工作流并管理其执行。
5)企业流程自动化的应用平台工作流管理系统最直接的用途就是和企业业务流程重组(Business Process Reengineering,BPR)技术相结合管理企业的各种流程,实现企业流程的自动化。
6)工作流机是一个为工作流实例的执行提供运行环境的软件服务或“引擎”,其一个重要功能就是控制实例和活动实例的状态转换。
7)以工作流实现ERP和OA集成
七、软件测试
Bill Hetzel指出:“测试是以评价一个程序或系统属性为目标的任何一种活动。测试是对软件质量的度量”Grenford J.Myers指出:
(1)软件测试是为了发现错误而执行程序的过程
(2)测试是为了证明程序有错,而不是证明程序无错误
(3)一个好的测试用例在于它能发现至今未发现的错误
(4)一个成功的测试是发现了至今未发现的错误的测试
1、测试的类型
1)动态测试
(1)黑盒法:等价类划分;边界值划分;错误推测;因果图。
(2)白盒法:逻辑覆盖;循环覆盖;基本路径法。
(3)灰盒法:介于白盒测试与黑盒测试之间。
2)静态测试
采用人工检测和计算机辅助静态分析的手段对程序进行检测。
(1)桌前检查(2)代码审查(3)代码走查
2、测试的阶段
1)单元测试:针对软件设计的最小单元(程序模块)进行正确性检验的测试工作。通常在软件详细设计阶段完成计划,一般使用白盒测试方法。2)集成测试:将已通过单元测试的模块集成在一起,主要测试模块之间的协作性。通常在软件概要设计阶段完成计划,一般使用黑盒测试方法。
3)确认测试:主要包括验证软件的功能、性能及其他特性是否与用户要求(需求)一致。通常在需求分析阶段完成计划,包括以下4种类型:
(1)内部确认测试(2)Alpha测试(3)Beta测试(4)验收测试
4)系统测试:在实际运行环境下,对计算机系统进行一系列集成与确认测试。通常在系统分析阶段(需求分析阶段)完成计划。
3、性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值及异常负载条件对系统的各项性能指标进行测试。1)性能测试的目的
(1)评估系统的能力(2)识别系统中的弱点(3)系统调优(4)检测软件中的问题(5)验证稳定性和可靠性
2)性能测试的类型
(1)负载测试(2)强度测试(3)容量测试
3)负载压力测试
系统在应用环境下主要承受并发访问用户数、无故障稳定运行时间和大数据量操作等负载压力。并发用户数是负载压力的重要体现。
4、测试自动化
为提高软件测试效率,运用既有的测试工具或开发相应的测试程序进行测试,此过程称为自动化测试。1)好处:
(1)提高测试执行速度(2)提高运行效率(3)保证测试结果正确性(4)连续运行测试脚本(5)模拟现实环境下受约束的情况
2)无法做到:
(1)所有测试活动都可以自动完成(2)减少人力成本(3)可以免费获取(4)降低测试工作量
3)三个类别:分析自动化(静态分析、动态分析)、功能测试类和系统测试类
5、软件调试
三种方法:蛮力法、回溯法和原因排除法6、测试设计
几个层次:用户层、应用层、功能层、子系统层和协议层
7、测试管理
1)测试管理组包括评审小组、测试小组和支持小组2)软件测试管理分为测试团队管理、测试计划管理、错误(缺陷)跟踪管理和测试件管理
八、软件维护
1)软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充和压缩的容易程度2)衡量因素:可理解性、可测试性和可修改性
3)维护类型:改正性维护、适应性维护和改善性维护。还有预防性维护。
4)影响维护工作量的因素主要有系统大小、程序设计语言、系统年龄、数据库技术的应用及先进的软件开发技术。
九、软件开发环境与工具
软件支持环境可分为:软件开发支持环境和软件生存期支持环境。ICASE(Intergrated Computer-Aided Software Engineering,集成化计算机辅助软件工程)
更多推荐
所有评论(0)