八文_文档搜索
 
设为首页   |  加入收藏夹
 八文网 - 汇聚八方文档 - 做最优秀的免费文档下载网站
 

软件技术基础

文档类型: Microsoft PowerPoint PPT 演示文稿 文档大小:542.5KB
软件技术基础2001级本科计算机基础课程软件工程计算机软件基础之一
第三部分
第三部分软件工程目的与要求讲课内容与学时参考资料学习,掌握和了解软件工程的概念掌握软件工程的方法和软件开发的过程初步了解对软件开发质量的监控和管理软件工程的基本概念(2)软件开发方法与工作模型(2)结构化开发方法概述(2)小结与习题(2)教科书,参考书孙淑霞,肖阳春等编,2000 《软件技术基础》,成都理工大学黄迪明编,1998,《软件技术基础》,电子科技大学出版社郑人杰,软件工程与软件工程管理,讲座国际标准ISO 8631国家标准GB8566-88CMM软件成熟度模型软件工程的基本概念软件开发方法与工作模型结构化开发方法概述习题
1 软件工程的基本概念
1.1 软件工程学的形成和发展
1.2 软件工程学研究的内容
1.3 软件与软件生命周期
1.4 软件工程基本原则软件工程学是在克服60年代末所出现的软件危机(software crisis)的过程中逐渐形成与发展起来的而所谓软件危机是在软件的规模越来越大,复杂度不断增加,软件需求量不断增大的情况下出现的由于软件开发过程是一种高密度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要、所以软件危机便产生了软件工程的发展计算机软件发展至今经历了三个不同的发展时期:程序设计时期(20世纪50年代60年代)软件时期(20世纪60年代中期70年代)软件工程时期(20世纪70年代现在)发展程序设计语言(Programming)机器语言汇编语言软件(Software) 1960程序文档数据软件危机引出软件工程(Software Engineering)软件开发工程化1968 NATO软件开发阶段与瀑布模型软件工程标准焦点目标少资源,高效益在人力投入,开发期,成本,质量诸方面求得最佳风险
需求:不明与变更人员流动软件知识产权保护不存在绝对无缺陷的软件产品成功的标志如期完成预算内完成达到质量要求(需求和希望)软件业与制造业的差异| 设计| 生产| 运输|仓储| |功能度制造业大量| 设计(开发) | 生产| 运输|仓储|功能度软件业软件的特点软件是一种逻辑实体,具有抽象性这个特点使它与其他工程对象有着明显的差异人们可以把它记录在纸上,内存和磁盘,光盘上,但却无法看到软件本身的形态、必须通过观察,分析,思考、判断、才能了解它的功能,性能等特性软件没有明显的制造过程一旦研制开发成功,就可以大量拷贝同一内容的副本,所以对软件的质量控制,必须着重在软件开发方面下工夫软件在使用过程中、没有磨损,老化的问题软件在生存周期后期不会因为磨损而老化,但会为了适应硬件,环境以及需求的变化而进行修改、而这些修改又不可避免地引入错误,导致软件失效率升高,从而使得软件退化当修改的成本变得难以接受时,软件就被抛弃软件对硬件和环境有着不同程度的依赖性这导致了软件移植的问题软件的特点(cont.)软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低软件是复杂的,而且以后会更加复杂软件是人类有史以来生产的复杂度最高的工业产品软件涉及人类社会的各行各业,方方面面,软件开发常常涉及其他领域的专门知识,这对软件工程师提出了很高的要求软件的成本相当昂贵软件开发需要投入大量,高强度的脑力劳动,成本非常高,风险也大现在软件的开销已大大超过了硬件的开销软件工作牵涉到很多社会因素许多软件的开发和运行涉及机构,体制和管理方式等问题,还会涉及到人们的观念和心理这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败软件危机(software crisis)软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题软件的数量急剧膨胀、软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜
它主要包含两个方面的问题:如何开发软件,以满足不断增长,日趋复杂的需求软件产品质量低劣,甚至开发过程就夭折如何维护数量不断膨胀的软件产品软件生产率低,不能满足需要软件危机的表现对软件开发成本和进度的估计常常不准确,开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见用户对已完成系统不满意的现象经常发生软件产品的质量往往靠不住,Bug一大堆,Patch一个接一个软件的可维护程度非常之低软件通常没有适当的文档资料软件的成本不断提高软件开发生产率的提高赶不上硬件的发展和人们需求的增长产生软件危机的原因由于软件本身的特点、管理和控制软件开发过程相当困难,而且软件维护较难软件是一种高智力活动,由复杂的逻辑,复杂的运算和复杂的关联等构成由于对软件开发与软件维护的不正确方法,产生了软件危机软件规模越来越大,功能越来越强、导致软件结构非常复杂忽视软件开发前期的需求分析开发过程没有统一的,规范的方的指导,文档资料不齐全,忽视人与人的交流忽视测试阶段的工作,提交用户的软件质量差轻视软件的维护;等等对软件看法的转变早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂,容易使用,容易修改和扩充软件的定义软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括:程序(program)是按照事先设计的功能和性能要求执行的指令序列相关数据(data)是程序能正常操纵信息的数据结构说明文档(document)是与程序开发维护和使用有关的各种图文资料软件工程(software engineering)提出1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员,计算机科学家和工业界巨头,讨论和制定摆脱软件危机的对策.在那次会议上第一次提出了软件工程这个概念.
软件工程的定义软件工程是一门研究如何用系统化,规范化,数量化等工程原则和方法去进行软件的开发和维护的学科.
软件工程是软件工程人员寻求解决出现的软件危机而产生的它的核心思想是采用工程化的原理与方法对软件进行计划,开发和维护软件工程面对的挑战质量成本效率工具方法过程产品需求产品资源管理! !高效率,低成本地开发高质量的软件!软件工程两个方面的内容软件开发技术软件开发方法学软件工具软件工程环境软件项目管理软件度量项目估算进度控制人员组织配置管理项目计划等关于软件要纠正那种认为软件就是程序,开发软件就是编写程序的错误观念软件应是程序以及开发,使用和维护程序所需的所有文档.具体来说是由:
应用程序:面向用户,为解决各种特定问题编写的程序
系统程序:面向硬件,为应用程序服务的程序
面向用户的文档:如何使用和维护应用程序的资料
面向开发者的文档:记载了应用程序的设计和开发过程,以便进一步开发和修改软件生命周期(SLC)软件生命周期是指从软件开发到报废的全过程,也称软件生存期软件生命周期的描述模型瀑布模型(经典)快速原型模型软件生命周期的三个时期定义时期开发时期维护时期瀑布模型问题定义可行性研究需求分析设计编程测试运行与维护目标与范围说明书可行性论证报告需求说明书设计文档测试报告维护报告计划时期运行时期原型开发原型评定目标系统设计目标系统实现用户意见软件开发流程用户初始需求交付的软件运行维护分析定义需求规格说明实现源程序软件生命周期定义期定义期要为被开发的软件规定做什么开发人员要确定软件将处理什么信息软件的功能软件的性能建立什么样的接口要考虑什么设计限制软件开发成功的确认标准定义期包括三个阶段的工作系统分析把软件要完成的工作与整个计算机系统的其他部分,如硬件,操作人员及数据库等应完成的工作区分开来软件项目计划确定软件开发总目标,进行风险分析,资源分配、成本估计,规定工作任务和进度安排更明确地确定软件做什么给出所开发软件的功能,性能,用户接口对数据流进行分析给出功能说明写出用户手册初稿软件生命周期开发期开发期着重解决所开发软件怎么做的问题开发期要进行设计数据结构设计软件总体结构实现软件的过程细节将设计转换成程序语言进行测试开发期含有以下三个阶段软件设计把已经确定的软件需求转换成特定形式的设计表示、使其得以实现程序编制用某个编程语言表达软件设计时确定的处理过程算法软件测试对已编制的程序进行测试,以找出其中功能上,逻辑上和实现中的错误软件生命周期维护期运行维护期着重解决因多种原因软件要做的变更软件投入使用后,要对软件作变更的理由开发期中存在的问题,当时未能发现和及时解决适应变更了的软件运行环境软件需进一步完善用户需求较小的变化软件生存周期软件生存期的三个时期有时也笼统地称为软件开发为更清楚地表达生存期内各个阶段的工作和各阶段间的关系,可为生存期设计不同的范型,或称模型.如:螺旋模型喷泉模型软件生存周期方法学软件工程采用的生存周期方法学就是从时间角度对软件开发和维护的复杂问题进行分解将软件的生存周期分为若干阶段需求定义运行维护等每个阶段有相对独立的任务,便于分工协作使软件开发过程按有秩序能管理的方式组织起来,从而降低软件开发的难度软件生命周期的花费比例通用性和指导性软件工程实践总结出的基本现象稳定性不会时时改变,不依赖于采用的技术,方法和工具概括性针对软件工程和软件产品特性的抽象描述基础性理解和采用它需有具体的方法和技术做补充软件工程的原则原则方法与技术方法学 Technique 体现原则的途径和步骤Methodology 方法和技术的组合,支持整个软件工程过程Tools 支持方法,技术和方法学的软件一般性原则严格性与形式化复杂性和分解模块化抽象性和细化变更预见性通用性与复用性递增式软件质量管理原则产品质量以满足用户需求为最高准则质量第一以人为本质量与生产率质量成本密切与用户的联系尽早排除缺陷实施过程质量控制文档编制原则在文档标准基础上剪裁注意读者对象便于使用和查找使用术语、概念不应有矛盾描述的精确性,无多义性专职人员与开发人员结合独立性需求分析与定义原则编制需求规格说明以前、必须十分明确要解决的问题,即应先明确需求真正弄清需求,还应包括为什么这样定义需求不清必将导致预算不准
总结产生错误的原因:需求变更,遗漏重要需求,与用户交流不畅需求分析不充分,需求规格说明质量低劣发现需求规格说明中有问题,应立即着手解决,不可将其带入后续开发阶段需求规格说明中不应含有待确定的部分进行需求分析时不做设计,不应将需求分析做什么与如何做混淆设计原则重视需求向设计转化工作,必要时比较多个设计方案设计应能和需求对应、保证每项需求均在设计中得到体现设计文档是设计的成果,头脑中的设想不是设计尽可能复用一切可复用的部分设计应易于变更,易于维护,易于排错优秀的设计出自优秀人才之手编码原则简明清晰尽可能少用,甚至不用全局变量程序执行速度不应优先于正确性的考虑命名易记,充分注释,命名唯一、可追溯
注意常见的规律是:编码错误通常相对集中管理原则大型复杂项目管理重于技术人员不在多,而在精计划指标应切合实际、不作不切实际的计划注意收集,积累数据不求一次估算能十分精确,但求不断调整大型项目重视风险分析项目进展快需分析原因,不可盲目乐观项目完成以后,总结分析有益于积累经验软件过程改进质量依赖于过程过程需要管理软件过程包括哪些过程如何改进
能力成熟度水平:CMM五级软件过程改进(SPI)不成熟过程的特征随意的非强制性的主要依赖于实践者产品的功能,质量和进度常有冲突引入新技术时的风险质量难以预测成熟过程的特征工作按计划有序地进行过程,规程,文档规范有定义、文档化易理解,易使用,可裁减可持续改进管理的可见性产品和过程可度量,可预测新技术可以及时得到有效应用能力成熟度模型CMUSEI5级-优化层过程更改管理技术更改管理错误预防4级-管理层质量管理过程量化管理3级-定义层同级评审组间协作软件产品工程软件集成管理培训计划软件过程定义软件过程要点2级-可重复层软件配置管理软件质量保证软件子合同管理软件项目追踪与监控需求管理1级-初始层软件过程成熟度模型的关键子过程域
2 软件开发方法与工作模型
2.1 结构化开发方法
2.2 原型化方法
2.3 面向对象的开发方法结构化方法是现有软件开发方法中最成熟,应用最广泛的方法结构化开发方法的主要特点是快速,自然和方便结构化程序设计的概念首先是从编写程序中使用转向( GOTO )语句引起的GOTO语句的过多使用使得程序结构混乱,容易出错,且出错后不易发现和更正结构化开发方法结构化开发方法的出发点为了保证程序设计的质量使设计程序具有易读性,易理解性,通用性好,执行时具有较高的效率结构化开发方法的基本要求在详细设计阶段所有的模块只用三种基本控制结构单入口,单出口和顺序选择循环在设计过程中采用自顶向下逐步求精的设计方法结构化开发方法的组成70年代初结构化程序设计方法SP法70年代中结构化设计方法SD法70年代末结构化程序分析方法SA法SA,SD,SP法相互衔接,形成了一整套开发方法若将SA,SD法结合起来,又称为结构化分析与设计技术(SADT技术)结构化方法的工作模型瀑布模型(Waterfall Model)是结构化方法的工作模型
但从80年代开始,逐渐发现其不足:
软件开发过程是一个充满回朔过程,而瀑布模型将其分割为独立的几个阶段, 不能从本质上反映软件开发过程本身的规律过分强调复审,并不能完全避免较为频繁的变动尽管如此,瀑布模型仍然是开发软件产品的一个行之有效的工程模型原型是软件开发过程中软件的一个早期可运行的版本,它反映了最终系统的部分重要特征原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(Rapid Prototyping)强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求将维护和修改阶段的工作尽早进行、使用户验收提前、从而使软件产品更加适用原型化方法分类原型化方法按运用原型的目的和方式的不同分为:快速建立渐进原型(RSP法, Rapid Sequential Prototyping )
该法建立的原型反映了系统的某些特征、让用户学习,有利于获得更加精确的需求说明书,后阶段的工作仍按照瀑布模型开发快速建立需求规格原型(RCP法, Rapid Cyclic Prototyping )
该法采用循环渐进的开发方式,对系统模型作连续精化,将系统需要具备的性质逐步添加上去,直至所有性质全部满足,此时的原型模型也就是最终的产品速成原型适合于开发探索型,实验型与进化型一类的软件系统速成原型的工作模型是一个循环的模型循环的速成原型工作模型
速成原型循环方式步骤:快速分析快速确定软件系统的基本要求确定原型所要体现的特征(界面,总体结构,功能,性能)构造原型在快速分析的基础上根据基本规定说明,忽略细节,只考虑主要特征、快速构造一个可运行的系统
它有三类原型:用户界面原型,功能原型,性能原型运行和评价原型用户试用原型并与开发者之间频繁交流、发现问题,目的是验证原型的正确性修正与改进对原型进行修改、增删快速分析或修改构造评价原型细化的速成原型工作模型快速分析,确定初步规格说明运行评价原型原型完成否要细部说明否效果满意否严格说明细部整理原型提供文档修正改进原型NY面向过程的开发方法面向数据流设计面向数据结构设计面向对象的开发方法(OOSD)面向对象的分析(OOA)面向对象的设计(OOD)面向对象的程序设计(OOP)早期的高级语言都是面向过程的
程序设计者必然要专注于:程序对数据的处理过程面向数据流设计数据结构面向数据结构设计因此,由软件解决的问题通常用软件系统的数据流图或数据结构来表示数据流图描述软件系统的数据从输入到输出的流程,适用于几乎所有顺序处理的软件数据结构描述软件系统的输入输出数据结构,适用于数据处理,尤其输入与输出数据结构相似的软件系统面向对象的开发方法 Software Development)根据稳定的对象建立系统模型,可很好地适应需要的变化具有良好的可维护性,可扩充性和可重用性是软件工程领域的一个研究重点被誉为90年代软件的核心技术之一面向对象的开发方法基本思想对问题领域进行自然的分割,以便接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程以对象作为最基本的元素分析和解决问题的核心面向对象的开发方法组成面向对象的开发方法的组成面向对象的分析 Analysis)面向对象的设计(OOD, Design)面向对象的程序设计(OOP, 是OOSD的基础OOA和OOD是应用OOP的基础OOA分析阶段将系统水平划分为五个层次主体类和对象结构属性OOA的任务就是通过分析问题域,建立系统的概念模型
OOA提供了三种模型:信息模型定义构成系统的类和对象,它们的属性与操作状态模型描述系统的控制结构,即描述任何时刻对象的联系以及联系的变化,或称为时序,常用状态图和事件追踪图来描述处理模型描述系统内部数据的传送和处理方法面向对象的分析(OOA)和设计(OOD)就是把面向对象的方法应用到软件工程的分析和设计阶段,从而建立更加适应当今庞大,复杂且易变的系统的模型在OOA建立的五个水平层次(主体,类和对象,结构,属性,方法)基础上,将系统结构在纵向上划分为:问题部件人机交互部件任务管理部件数据管理部件OOD法分为概要设计细化对象行为添加新对象认定类组类库确定外部接口主要数据结构详细设计加细对象描述使用面向对象的程序设计语言进行程序设计

面向对象的定义:面向对象= 对象类继承消息如果一个软件系统是按照这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的
OOP具有三个重要特征:封装封装是将数据和对这些数据进行处理所需的各种操作连接在一个根下的技术继承继承是引用已经定义的各种类,并将它们扩充以满足新的功能的一种技术多态性多态性实质上就是同一个名字可以用于多种目的面向过程与面向对象传统的面向过程(函数)的编程方法代码和数据是分开的函数是最重要的,一个程序中的所有代码都应围绕这些函数来设计面向对象编程方法必须将代码与数据构造在一个程序块中、并且统一来管理对象是最重要的,程序是围绕这些对象来设计的,函数是第二位的用对象调用函数,而不是简单地将对象(数据)传递给函数面向对象的基本概念对象(Object)类(Class)继承(Inheritance)消息(Message)软件IC(Integrate Circuit)是对客观存在的事物的描述,可以是事,物,或概念对象是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体用户不必知道对象行为的实现细节,只需根据对象提供的外部特征接口访问对象对象的动作取决于发送给该对象的消息,消息通知对象要求完成某个功能.即,对象之间的通讯是以做什么的消息发送为契机的,并认为接受消息的对象知道如何去做,消息激活对象的相应功能面向对象的基本思想就是把要构造的系统表示为对象的集合是一组具有相同数据结构和相同操作的对象的集合在一个类中、每个对象都是类的实例,它们都可以使用类中提供的函数类相当于C语言中的结构,或者说它是一种行为抽象数据类型现实世界词汇中的每一个名词都表示一类对象,具有一组属性或行为特征例如,一个好吃的苹果是苹果类中的一部分,同样也是水果类中的一部分,它也存在于食品这一大类中若不使用类的概念,则每一个对象都需明确定义其所有的特征、若是使用类的概念,则每一对象就只需定义它在大类中的特殊部分,对于类中共有的特性它可以继承是使用现存的定义作为基础、建立新定义的技术
继承性分为:
单重继承:一个子类只有一个父类
多重继承:一个子类可有多个父类一个子类可以从它的基类那里继承所有的数据和操作,并扩充自己的数据和操作基类抽象出共同特性,子类表达其差别现存类定义父类(基类)新类定义子类(派生类)对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制当一个消息发送给某个对象时,包含要求接收信息的对象去执行某个功能的消息从程序设计的角度来说消息类似于函数调用消息是开发Windows应用程序用得最多的一个概念,我们程序所做的工作就是产生消息,传递消息,处理消息Windows正是通过消息来管理各种资源,并由此实现多任务功能
由来:
程序常常涉及到频繁使用功能相同的模块,尽管这些模块对具体应用的实现细节可能有些不同、如何使用和组合这些模块,是构建可重用模块需要解决的技术问题类和继承的概念有助于程序员开发这种共同性
软件IC又称软件集成,它的思想是:
用一种集成机制将已经成熟的软件单元制成一个相对独立的实体,使它们不加改动或做很少改动就可用于新的软件系统中、从而减少重复劳动,提高生产率软件IC是一种可重用模块
软件IC的特征:模块性好,可靠性好,连接简单,封装性好,内部功能高效实现,具有清晰,简明的说明类充当了面向对象系统的构造单元
3 结构化开发方法概述
3.1 结构化分析方法
3.2 结构化设计方法
3.3 软件编码
3.4 软件测试
3.5 软件维护
3.1 结构化分析方法(SA)结构化分析方法是需求分析中最常用的方法之一在进行需求分析(结构化分析)之前、需要先进行:实施计划报告系统分析是制定软件项目计划的第一步,它决定了所开发软件的总目标,其任务包括:确定所开发软件的总体要求和适用范围;描述所开发软件与外界接口关系;确定所需的硬,软件支持;对开发的进度和成本的估计;分析系统的可行性;确定所开发软件与原有软件的兼容性关系或其他关系;确定所开发软件的性能,预计内部复杂性之间的折衷关系.在确定以上各项时,常常要设想多种可能的方案,再根据需要从中进行比较选择系统分析中对系统的可行性分析是十分重要的,这是此项目能否进行的关键,它包括以下方面:技术可行性研究必须明确现有的条件是否能满足开发软件所需的技术设备,用户的技术要求,开发时间是否合理等经济可行性研究对开发所需的经费和软件所带来的经济效益进行估计社会可行性研究考虑所开发的软件项目是否涉及版权纠纷等法律问题,以及投入运行后对生产,管理或经营体制带来什么社会影响在认真做好上述系统分析工作的基础上,要制定一个大致的实施计划,也就是编写一个实施计划报告这个报告只是对实施方案进行粗略的描述,主要有四个方面的内容开发进度人员投入计划资源的利用
一个实施计划报告的提要实例:软件开发项目名称任务概述
负责单位(包括:管理机构和任务的分解)
开发人员组织(包括:组织结构和任务的分配)
人员投入计划(包括:总估计和各阶段投入计划)
其他资源利用(包括:设备和资料)
开发进度(包括:阶段的划分,各阶段的评审时间和提供开发进展报告时间)
项目完成检验(包括:检验机构,检验方式和交付产品的清单)编写的实施计划报告只是对开发项目的初步设想,但也要反映出实施方案的主要内容在软件开发项目实施计划得到批准以后,便可开始工作,这时不要急于进行软件设计,而是要弄清楚用户的需要需求分析做得不好,用户和软件开发人员未能全面地,精确地理解和表达这些需求,致使一些隐藏的问题随着开发工作的进行带给后面阶段,最终将给开发工作造成不良的影响计划编码需求分析中发生的问题对后期开发工作造成的影响示意图结构化分析方法需求分析最常用的方法是结构化分析方法(Structured Analysis),它适用于分析大型数据处理系统该方法简明,易于掌握,与设计阶段的结构化方法相衔接,将取得良好的设计效果结构化分析方法的基本思想和步骤结构化分析方法的基本思想是采用分解和抽象的基本手段,由顶向下逐层分解,具体步骤为:理解当前的现状环境、建立当前系统的具体模型从当前系统的具体模型抽象出当前系统的逻辑模型分析目标系统与当前系统在逻辑上的差别、建立目标系统的逻辑模型为了对目标系统做完整的描述,还需要考虑人机界面和其他一些问题结构化分析方法的描述方法数据流图(DFD)和分层的数据流图数据词典(DD, Data Dictionary)加工说明(1)数据流图(DFD, Data Flow Diagram)
数据流图以图形的方式表示系统中的信息变换和传递的过程,数据流图的基本符号只有下列四种:数据流加工数据存储数据源点及数据终点
画DFD图的方法:由外向里、自顶而下,逐层分解数据流图的基本符号数据流是具有名字且具有流向的数据,用标有名字的箭头表示.每条数据流表示在这条流水线上有一组由一定成分组成的数据流动.
表示对数据进行的加工或变换.数据流图中以标有名字的圆圈代表加工,名字表示加工的含义、指向加工的数据流是该加工的输入数据,离开加工数据流是该加工的输出数据.
文件是数据存储形式的统称,它表示了数据流在加工过程中需要存储或查找的信息.文件以标有名字的粗线表示.
标明数据处理过程的数据来源和数据去向,数据流图中已有名的方框表示、它只起到注释作用,补充说明系统与其他外界环境的联系.
银行取款过程的数据流图储户核查登录付款取款信息付款信息存折取款单无余拒付帐卡分层的数据流图DFD
画分层DFD图的基本原则(注:DFD图不是流程图)数据守恒与数据封闭原则加工的输入输出数据流是否匹配、应成对出现,即每一个加工既有输入数据流又有输出数据流加工分解的原则画分层DFD图时,各子系统的分解速度应大致均匀、保持同步扩展一般情况下,每次每一加工可以分解为2~4个加工,至多不超过7~8个,以免阅读时增加理解的困难在上层时分解的速度可略快、越到下层功能越具体,分解速度应放慢画分层DFD图的基本原则(cont.)子图与父图的平衡在分层图中、每一层都是它下层的父图,同时又是它上层的子图父子平衡是父图与子图在输入数据与输出数据上应保持信息的连续性合理使用文件为了优先考虑重要问题,允许将某些细节推迟到下层DFD图处理除出错处理外,对文件的处理也常常推迟具体地说,上层DFD图往往只画出少量文件,借以保持画面整洁、越往下层,画出的文件越多(2)数据词典(DD, Data Dictionary)数据词典是SA方法的主要工具之一它与数据流图共同构成系统的逻辑模型没有数据流图则数据词典难发挥作用没有数据词典则数据流图就不严格数据词典对数据流图中出现的所有数据元素给出逻辑定义有了数据词典、使数据流程图上的数据流加工和文件得到确切的解释数据词典的条目数据词典中有四种类型的条目数据流(由多少个数据项组成)文件数据项(单项数据)数据流条目数据流条目给出某个数据流的定义、它通常是列出该数据流的定义
在进行数据流定义时,可采用如下符号:=表示定义为表示与]表示或,即选择括号中的某一项表示重复、即括号中的项要重复若干次,重复次数的上下限也可以在括号中标出表示可选文件条目文件条目给出某个文件的定义同数据流一样,文件的定义通常是列出文件记录的组成数据项文件条目还可以指出文件的组织方式,如按单号递增次序排列等数据项条目数据项条目给出某个数据单项的定义通常是数据项的值类型,允许的取值范围等加工条目加工条目又称小说明对数据流图中的每一个不能再分解的基本加工都必须有一个小说明给出这个加工的精确描述(3)加工说明结构化语言(简单,易学,少二义性)判断树(描述一般组合条件,较清楚)判断表(用于较复杂的组合条件)结构化语言(结构化英语)
结构化语言介于自然语言和形式语言之间的一种半形式语言、是描述基本加工条目中的加工说明的常用工具,是自然语言的一个受某些限制的子集,没有形式语言那么精确,严格,具有自然语言的简单,易懂的特点结构化语言一般分为内、外两层外层语法比较具体外层语法描述操作的控制结构,如顺序,选择和循环等内层语法比较灵活内层语法根据系统的具体特点以及用户的接受能力来确定,通常采用有动词和宾语构成的祈使句结构化语言的例子顺序结构MOVE 单科成绩TO 学生单科成绩表选择结构IF 存货小于标准点DO 定货ELSE (不小于标准点)SET 标志重复结构FOR 每一个学员号码PUT 学员成绩REPEATFROM 消息线GET 下一个消息WRITE 消息正文WRITE 消息头和长度UNTIL 消息头和长度达到某种条件判断树(Decision Tree)判断树比判断表更直观用它来描述具有多个条件的数据加工更容易被用户接受树状的分支表示多种不同的条件,分支的端点表示该分支对应的条件要作的处理新生录取系统已达录取分数线未达录取分数线体检合格录取体检不合格转下一志愿学校体检不合格不录取体检合格转下一志愿学校
例:判断表(Decision Table)判断表由四部分组成左上部分是决定这组条件的对象右上部分列出各种可能的条件组合左下部分列出所有的操作右下部分说明在对应的条件组合下,某个操作是否要执行
√不录取转下一志愿学校录取操作否是体检结果合格成绩在录取分数线上条件软件设计的任务是将需求分析阶段获得的需求说明转换为计算机中可实现的系统完成系统的结构设计,包括数据结构和程序结构最后得到软件设计说明书有代表性的设计方法有结构设计方法其设计是以数据流图为基础构成模块结构数据结构(JACKSON)方法其设计是以数据结构为基础建立模块结构PARNAS方法以信息隐藏为原则建立模块结构结构化设计方法结构化设计就是采用最佳的可能方法设计系统的各个组成部分,以及各成分之间的相互联系的技术结构化设计是这样一个过程,它决定用哪些方法把哪些部分联系起来,才能解决好某个具有清楚定义的问题软件设计是软件开发的关键步骤,直接影响软件质量分为两个阶段总体设计解决系统的模块结构,分解模块,确定系统的模块层次关系对系统中的每个模块的内部过程进行设计和描述(1) 总体设计具体任务划分模块确定模块功能确定模块间的调用关系确定模块间的界面设计步骤(1)分析系统DFD图的类型,将其转换为初始的模块结构图(Structured Chart,简称SC图)
(2)按照降低块间联系,提高块内联系的设计总则修改、完善系统的模块图,写出模块的功能说明总体设计步骤1分析系统DFD图通常可把数据流图分为转换处理型采用转换分析事务处理型采用事务分析SD方法的任务是按照DFD图的不同结构类型,分别采用转换分析和事务分析,从DFD图导出目标系统的模块结构SC图数据流图转换处理型转换处理过程和所包含的数据流可分为输入数据输入流信息由外部数据转换为内部形式进入系统变换数据转化流在转换流中、对内部形式的信息进行一系列加工处理,得到内部形式的结果输出数据输出流在输出流中、信息由内部形式的结果转换为外部形式数据流出系统输入中心输出输入信息内部结果内部数据输出信息数据流图事务处理型在事务处理中输入数据流事务流加工事务中心若干平行数据流事务路径当事务流中的事务送到事务中心后,事务中心分析每一事务,根据事务处理的特点和性质选择一个事务路径继续进行处理接收事务分析动作1动作2动作n・・・・・・接收部分事务中心发送部分转换处理型转换分析转换分析是系统结构设计的一种策略使用转换分析技术可把转换型处理数据流图转换为初始的标准结构根据软件结构的度量准则,模块化准则,模块独立性准则,修改完善软件结构图,从而得到结构良好的最终结构图转换分析步骤为确定数据流图的类型确定输入流、转换流、输出流的流界(边界)进行一级分解,设计上层模块进行二级分解,设计中下层模块进一步细化转换处理与事务处理通常一个大型软件系统是转换处理型结构和事务型结构的混合结构所以,设计者常利用以转换分析为主,事务分析为辅的方式进行软件结构设计当数据流图明显呈现出事务型特征时,就要用事务型分析技术,从相应的数据流程图导出标准构图,其步骤与转换分析相同总体设计步骤2完善系统模块图
具体应从以下方面改进:尽可能建立功能模块消除重复功能模块的作用范围应是控制范围的子集作用范围包括模块本身及其所有下属模块控制范围是指判断所涉及到的模块模块的大小恰当,总行数在10~100,最好在30~60模块的扇入扇出数不宜太多(除服务性模块外)一个模块直接控制下属模块的个数称为该模块的扇出数一个模块的上级模块个数称为扇入数扇入高可增加模块的利用率,扇出低可减少模块调用和控制的复杂度(2) 详细设计
常用的描述方法有:流程图(程序框图)N-S图(方框图)PAD图PDL语言UML表达算法简明直观,易于学习掌握,是一种常用的详细设计工具表示调用子程序等特定处理符表示对数据的处理处理符表示数据的输入输出输入输出符表示流程图的开始或结束端点符意义使用图形符号名表示连接流程图中各符号流线符号表示流程图中的转移处连接符表示循环结束循环结束符表示循环开始循环开始符表示条件判断、有判断结果决定如何执行判断符号表示初始状态准备符号每个处理步骤都用方框表示、这些处理步骤可以是语句或语句序列,比传统的流程图具有明显的优点:
它强制设计人员按结构化程序设计方法进行思考并描述设计方案,因为除了表示几种标准控制结构的符号之外,它不再提供其他描述手段,这就保证了程序设计和质量方框图形象直观,易于表达嵌套结构,容易确定局部数据和全程数据的作用域,具有良好的可见度,容易理解设计意图,为编程,复审,选择测试用例,维护等都带来了方便任务3任务2任务1循环结构情况结构THEN部分ELSE 部分件TF条while型循环体循环条件until型处理任务N・・・值N值2值1case条件PAD图(问题分析图)PAD图(problem analysis diagram)使用五种基本控制结构分支结构由两部分组成,带锯齿的框为条件判断、每一个锯齿表示该判定中的一种条件,与该齿连接的处理框表示该分支要执行的处理循环结构也由两个部分组成,左边的一个框(右边多一条竖线)表示循环的类型和终止条件,右边的一个框表示要重复执行的循环体任何PAD图都是由下述的基本控制模块构成它是一种二维平面图形,从左向右扩展一条竖线PAD图中竖线的总条数就是程序的层次数while 型条件do-while 循环结构case 结构do-until 循环结构ELSE部分TFuntil 型条件任务n控制变量=值nPDL语言(伪程序设计语言)
伪码(PDL, Program Design Language)是一种非形式的比较灵活的语言、它用语言的方式描述模块内部的具体算法和内语法外语法应当符合一般程序设计语言常用的程序语句的语法规则内语法是没有定义的,它可以用自然语言的一些简洁的句子,短语和通用的数学符号,来描述程序应执行的功能UML标准建模语言UML是由Booch,Rumbaugh 和Jacobson 发起,在Booch方法,OMT方法和OOSE方法的基础上,集众家之长,几经修改而成Techniques to improve quality and reduce cost and techniques to manage the complexity of systems as they increase in scope and scale.
UML的九种模型
类图:展示对象类,接口,及其相互合作与关联
对象图:展示对象及其相互之间的关系
实现图:
构件图:描述部件的物理结构以及各部件之间的依赖关系;
配置图:定义系统中软硬件的物理构架.
用例图: 从用户角度描述系统的行为、并指出各功能的操作者
状态图:描述由事件驱动的系统对象的状态转移
活动图:描述活动之间的控制流
交互图:描述对象之间的交互情况
顺序图:重点描述消息发生的事件顺序
合作图:重点描述各个对象之间收发消息的情况UML的五类基本视图构件视图用例视图配置视图逻辑视图并发视图编码的目的,为了把详细设计产生的文档翻译成用选定语言编写的源程序根据软件系统的应用范围,语言内在特点等选择程序设计语言良好的程序设计风格(包括代码文件,数据说明方法,语言构成方法,输入输出技术)重视用户界面设计软件测试的目的和重要性因为开发工作的前期不可避免地会引入错误,测试的目的是为了检查发现和改正错误,这对于重要软件项目显得尤其必要软件测试方法静态分析方法动态分析方法软件测试和软件调试是两个不同的概念指不执行程序本身、分析程序正文可能导致错误的异常情况检查软件结构是否合理,功能是够达到设计说明中的要求各模块之间的接口是否正确各模块内部控制逻辑的正确性进行数据结构分析和语法分析
代码评审常用的方法有:桌前检查
代码会审:由软件开发者主持、聘请其他程序员或分析员参加的软件审查会,对源程序进行审查
步行检查:测试人员阅读程序,扮演计算机的角色,让测试用例沿程序的逻辑运行一遍、从中发现程序中的错误通过选择适当的测试用例,上机执行程序,发现软件中的错误
测试用例应由两部分组成:输入数据及预期的输出结果将运行结果与预期结果比较、查出错误
常用的方法有:白盒法黑盒法分析程序的内部逻辑结构,注意选择适当的覆盖标准,设计测试用例,对主要路径进行尽可能多的测试白盒测试又称结构测试或逻辑驱动测试白盒测试主要考虑的是测试用例对程序内部逻辑的覆盖程度,而不考虑程序的功能按照对被测程序所作测试的有效程度,逻辑覆盖测试可由弱到强区分为五种覆盖标准,如图所示求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次条件组合覆盖同时满足判定覆盖和条件覆盖的要求判定条件覆盖每一判定中的每个条件,分别按真,假至少执行一次条件覆盖每一次判定的每个分支至少执行一次判定覆盖每条语句至少执行一次语句覆盖弱强发现错误的能力不考虑程序的内部结构与特征、只根据程序功能设计测试用例,常用的方法有:等价分类法把输入数据的可能值划分为若干个等价类,使每类中的任何一个测试用例,都能代表同一等价类中的其他测试用例也就是说,如果从某一等价类中任意选出一个测试用例未能发现程序的错误,就可以合理地认为在该例中的其他测试用例也不会发现程序的错误选择具有代表性的测试用例关键是划分等价类,应按照输入条件选择测试用例(例如,输入值的范围,值的个数和无效等价类)一个测试用例覆盖多个有效等价类,但是一个测试用例只能覆盖一个无效等价类边缘值分析法选择等价类的边缘值作为测试用例.选择测试用例,使得被测程序能在边界值及其附近运行、从而更有效地暴露程序中潜藏的错误.
因果图法采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系.根据这种关系可选择高效的测试用例.
错误推测法凭经验或直觉推测可能的错误,选择测试.测试步骤
所有的测试过程都应综合测试策略:先做静态分析,再做动态测试事先制订测试计划按照软件工程的观点、多模块程序(实际的应用程序大都是多模块程序)的测试共包括四个层次模块测试组装测试系统测试验收测试多模块程序的测试分层测试的层次模块测试(单元测试)组装测试(综合测试)高级测试确认测试和系统测试模块测试目的是发现子程序或过程的实际功能与该模块的功能和接口的描述是否相符,以及是否有编码错误存在.模块测试应测试以下内容:重要执行路径,接口,界面,出错处理动态测试方法以白盒法为主,辅以黑盒法重要执行路径的测试使用白盒法白盒法必须先列出所有的判定,再选择覆盖标准,根据不同的覆盖标准所列出的情况,设计测试用例
模块测试是整个测试的基础、它可以:减少测试的复杂性易于确定错误的位置多个模块可以并行测试,缩短测试周期又称整体测试,它的测试目的是为了发现程序结构的错误重点测试模块的接口部分,须设计测试过程使用的驱动模块确定模块组装方案,采用逐增式组装测试,应给出具体的模块组装次序
通常模块组装次序有:自顶而下,自底而上,宽度优先,深度优先等测试方法以黑盒法为主设计驱动模块(模拟输入输出)或桩模块(模拟其下面的模块)对每一个新组装的子系统进行测试对发现问题较多的子系统或模块应用白盒法作回归测试确认测试与系统测试根据需求规格说明书所确定的系统功能和性能,用黑盒法设计测试用例由用户完成验收测试软件维护是生存周期的最后一个阶段,它的工作是保证软件在长时间内能够正常运行
软件维护可分为四类:纠错性维护适应性维护完善性维护预防性维护软件维护软件维护过程中应注意和预防产生软件维护的副作用,软件维护的副作用可以分为三类:修改程序的副作用修改数据的副作用文档的副作用
为了控制因修改而引起的副作用,应做到:按模块把修改分组自顶向下地安排所修改模块地顺序每次修改一个模块对每个以修改的模块,在安排修改下一个模块之前、要确定这个修改的副作用可以使用交叉引用表,存储映象表,执行流程跟踪等
4 习题选择题软件危机出现于.A. 50年代末B. 60年代初C. 60年代末D. 70年代初为了解决软件危机人们提出了用的原理来设计软件,这就是软件工程诞生的基础.
A. 运筹学B. 工程学C. 软件学D. 数学CB瀑布模型把软件生存周期划分为软件定义、软件开发与三个阶段,而每一阶段又可分为若干更小的阶段.
A. 详细设计B. 可行性分析C. 运行及维护D. 测试与排错软件测试中、白盒法是通过分析程序的来设计测试实例的方法,黑盒法是根据程序的来设计测试实例的方法.
A. 应用范围B. 内部逻辑C. 功能D. 输入数据软件维护大体上可分为三种类型,维护.A. 纠正性B. 可靠性C. 适应性D. 完善性结构化分析(SA)是软件开发需求分析阶段所使用的方法,不是SA所使用的工具.
A. DFD图B. PAD图C. 结构化英语D. 判定表AD结构化设计是以为基础、自顶向下,逐步求精和模块化的过程.A. 数据流B. 数据流图C. 数据库D. 数据结构软件危机是指在软件开发和过程中遇到的一系列严重问题.A. 开发B. 使用C. 维护D. 更新概要设计的结果是提供一份.A. 模块说明书B. 框图C. 程序D. 数据流图需求分析是由分析员经过了解用户的要求,认真细致地调研、分析,最终应建立目标系统的逻辑模型,并写出.
A. 模块说明书B. 软件规格说明书C. 项目开发计划D. 合同文档软件开发方法从1945年至今,经历了,三个阶段.瀑布模型将软件周期划分为、个周期.A. 程序设计时期B. 软件运行时期C. 软件时期D. 软件测试时期E. 软件开发时期F. 软件计划时期G. 软件维护时期H. 软件工程时期HESD主要用于软件设计的阶段,它主要采用来描述软件结构.A. 软件开发B. 详细设计C. 总体设计D. 程序运行E. 软件结构图F. 软件流程图G. 数据流图H. 数据词典软件测试的过程分为、确认测试和系统测试几个步骤.A. 单元测试B. 人工测试C. 组装测试D. 上机测试软件的维护指的是.A. 对软件的改进、适应和完善B. 配置新软件C.维护正常运行D. 软件开发期的一个阶段请按顺序写出软件生命期的以下阶段A. 维护B. 测试C. 详细设计D. 概要设计E. 编码F. 需求分析结构化分析方法SA,结构化设计方法SD和Jackson方法是软件开发过程中常用的方法.人们使用SA方法是可以得到;使用SD方法可以得到,并可以实现;而使用Jackson方法可以实现.
A. 程序流程图B. 具体的语言程序C. 模块结构图及模块的功能说明书D. 分层数据流图和数据词典E. 分解与抽象F. 分解与综合G. 归纳与推导H. 试探与回归I. 从数据结构导出程序结构J. 从数据流图导出初始结构图K. 从模块结构导出数据结构L. 从模块结构导出程序结构JI概要设计的任务是决定系统中各个模块的,即其.A. 外部特性B. 内部特性C. 算法和使用数据D. 功能和输入输出数据详细设计的任务是决定每个模块的,即模块的.
4 习题判断题瀑布模型是一种软件生命周期.软件设计分为系统设计和详细设计两个阶段.软件是程序以及开发,使用和维护程序所需的所有文档.常用的软件生存周期模型有瀑布模型和结构化模型.为了解决软件危机、人们提出了用工程化的原则和方法来组织软件的开发,这就是软件工程诞生的基础.
结构化程序设计中数据和过程分离为相互独立的两部分.在面向对象的系统中、数据和过程是封装在一起的.
软件测试是为了发现错误而执行程序的过程.测试过程按单元测试,组装测试,系统测试和全面测试四个步骤进行SA方法主要利用数据流图来表达系统的信息变化和传递过程,用数据词典来对其中的加工进行详细描述.
白盒法测试主要检测软件内部模块的功能是否达到要求,而黑盒法测试主要考虑测试用例对程序内部逻辑结构的覆盖程度.
数据流图可分为两种基本形式:事务型数据流图和变换型数据流图.面向对象软件开发中的对象,主要是数据和使用该数据的一组基本操作或过程的封装、可以把此封装体看成一个实体.
4 习题思考题什么是软件危机产生软件危机的原因是什么什么是软件工程什么是软件工程学什么是软件生存周期软件生存周期为什么要划分阶段常用的软件生存周期模型有哪两种它们的主要特点是什么需求分析阶段的主要任务是什么怎样作好需求分析什么是结构化分析方法(SA方法) 它使用的主要描述工具有哪些构成数据流图的基本成分有哪些怎样画数据流图数据字典有哪些条目每种条目的作用是什么软件设计的准则是什么结构化设计方法(SD方法)的基本思想是什么它与结构化分析方法(SA方法)衔接使用时,怎样把数据流图转换为软件结构软件设计分为哪两个步骤每个步骤的任务是什么模块基本控制结构有哪些有哪些表示方法选择高级程序设计语言的一般原则有哪些与编程风格有关的问题有哪些面向对象程序设计方法与结构程序设计方法的主要区别有哪些
ppt文档的标签: 基础 软件技术
更多推荐标签: 数学科研课题   周转房   青蛙思考   生物克隆   物流实习日记   钳工工艺教案   商品价值   电教通讯   光纤技术   生物固氮   广告价目   商务统计   物流概述   自然风光   调研报告形式   文件下载   传播学英文   电大如何交费   绿色实践报告   应用数学论文   照明设计程序   仓库笔试题   论清秋形象   包装学习心得   中药大词典   益康素购买   西部中小企业   王光荣   转厂合同   信息数据结构  
相关文档推荐
计算机应用技术(软件技术方向)专业教学计
软件设计基础
中科红旗软件技术有限公司
教育城域网软件技术方案
网络技术基础
教育部首批国家级示范性软件技术学院
软件技术专业教学计划
多媒体技术基础
办公软件基础
冲电气软件技术(江苏)有限公司
信息技术基础
软件工程基础
软件技术基础
中国软件技术大会演讲邀请函
软件技术讲座邀请函
软件技术(计算机软件编码与应用方向
2003年软件技术教研室工作总结
北京中科红旗软件技术有限公司
软件技术(软件开发)专业教学计划
软件工程基础
推荐文档下载
2006科特勒(中国)战略营销年会
北京大学
市场营销
美国多年来有一首流行歌曲
电器消费者购物中
古典短篇小说选读
房地产业务知识培训测试题
陕西省财政厅关于调整注册会计师
书苑通讯
百事可乐蓝色风暴
二00六年审计项目计划表
九十二年度补助双边合作协议研讨会初审核定
考试管理须知
程式设计
软件工具与环境
创建文明城
行政和行政管理学
关於TOM集团竞投上海新华发行集团权益
1996年至今
公司简介
 
文档下载提示:
·最新免费文档下载、毕业论文免费下载、Word文档下载、Excel表格下载、PDF电子书下载、PowerPoint提案下载
·所有文档均为网友上传,仅供学习参考,用作其它用途时请征得相关权益人许可.
·八文网只提供文档共享平台,不对文档内容的正确性及相关内容所引发的后果负责.
·如此文档"软件技术基础"涉及您的权益,请附上网址来信告知web_8wen(#)126.com,本站将认真配合并改正。
Copyright ©2005-2008 八文网-  8Wen.com . All rights reserved.