版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程概述数据库与软件工程第二部分12软件工程程综述软件生存存周期软件质量量与质量量保证软件工程程管理软件开发发环境目录录3软件发展展的三个个阶段软件工程程相关概概念软件工程程目标软件工程程三要素素软件工程程综述什么是计计算机软软件?计算机软软件指计计算机系系统中的的程序及其其文档程序是计计算任务务的处理理对象和和处理规规则的描描述计算任务务:任何何以计算算机为处处理工具具的任务务处理对象象:数据据(如数数据、文文字、图图形、图图像、声声音等,它们只只是表示示,而无无含义)或信息息(数据据及有关关的含义义)处理规则则一般指指处理的的动作和和步骤。程序必必须装入入计算机机内才能能工作文档是为为
2、了便于于了解程程序所需需的阐明性资料,文文档一般般是给人人看的,不一定定装入计计算机45软件的特特点:抽象性不是实物物。严密性是逻辑产产品。智力性思维过程程。持久性无时间损损坏。一次性创造性的的产物。难以度量量难定量测测量。易出错信息转移移造成。必须维护护纠错和变变更。6软件发展展的三个个阶段程序设计计时代(50-60年代)软件指程程序,软软件开发发关注程程序编写写,用汇汇编及机机器语言言程序系统统时代(60-70年代)软件指程程序及说说明书,软件开开发包括括程序设设计和测测试,用用高级语语言软件工程程时代(70年代以后后)软件开发发包括软软件生命命期,用用软件语语言(包包括需求求定义语语言、
3、软软件功能能语言、软件设设计语言言、程序序设计语语言等)7软件工程程相关概概念软件危机机:在软件开开发过程程中遇到到的问题题找不到到解决的的办法,致使问问题积累累起来形形成了日日益尖锐锐的矛盾盾。危机实例例(1):1963年美国飞飞往火星星的火箭箭探测器器爆炸,造成1000万美元(数亿美元元)的损失。原因是是用于控控制火星星探测器器的计算算机软件件FORTRAN程序:DO5I=1,3误写为:DO5I=1.3危机实例例(2):1967年苏联“联盟一号号”载人宇宙宙飞船在在返航时时,由于于软件忽忽略一个个小数点点,在进进入大气气层时因因打不开开降落伞伞而烧毁毁。宇航员:弗拉迪迪米尔科马洛夫夫8软件
4、工程程相关概概念软件危机机:危机实例例(3):人员伤亡亡:由于于计算机机软件被被广泛应应用于包包括医院院等与生生命息息息相关的的行业。这也使使得软件件的错误误导致人人员伤亡亡成为了了可能。Therac-25的意外:(在软件工工程界被被大量引引用的案案例)在1985年六月到1987年一月之间间,六个已知知的医疗疗事故来来自于Therac-25错误地超超过剂量量,导致患者者死亡或或严重辐辐射灼伤伤9软件工程程相关概概念软件危机机:危机实例例(4):IBM公司1963-1966年开发IBM360操作系统统,项目目花了5000人-年的工作作量,最最多时有有1000人投入开开发工作作,写出出100万行源
5、程程序,但但发行的的每一新新版本都都是上一一版1000个错误的的修正。事后负责责人F.D.Brooks总结教训训时说:“正象一只只逃亡的的野兽落落到泥潭潭中做垂垂死的挣挣扎,越越是挣扎扎,陷的的越深。最后无无法逃脱脱灭顶的的灾难。程序设设计工作作正像这这样一个个泥潭,一批批批程序员员被迫在在泥潭中中拼命挣挣扎,谁也没料料到问题题竟会陷陷入这样样的困境境”10软件危机机的表现现对软件开开发成本本和进度度的估计计常常很很不正确确用户对“已完成成的”软软件系统统不满意意的现象象经常发发生软件产品品的质量量往往靠靠不住软件常常常是不可可维护的的软件通常常没有适适当的文文档资料料软件成本本在计算算机系统
6、统总成本本中所占占的比例例逐年上上升软件开发发生产率率提高的的速度远远远跟不不上计算算机应用用迅速普普及深入入的趋势势11软件危机机的原因因软件是逻逻辑产品品,开发发进度、成本难难以估计计缺乏或不不完整、不一致致的文档档给维护护带来困困难用户对软软件需求求的描述述往往不不够精确确,有遗遗漏,有有二义软件开发发人员对对需求的的理解与与用户的的本来愿愿望有差差异大型软件件项目需需多人协协同完成成,缺乏乏管理经经验开发人员员不能有有效地、独立自自主地处处理大型型软件的的全部关关系缺乏有力力的方法法学和工工具的支支持软件项目目的特殊殊性和人人类智力力的局限限性12克服软件件危机的的途径消除错误的概概念
7、和做做法推广使用成功功的开发发技术和和方法使用软件工具具和软件件工程支支持环境境加强软件件管理摆脱软件件危机的的出路:软件开发发的工程化和标准化13软件工程程相关概概念软件工程程:软件工程程是用科科学知识识和技术术原理来来定义、开发、维护软软件的一一门综合合性的交交叉学科科,软件件工程是是开发与与维护软软件的规规范化系系统方法法。它综合应应用计算算机科学学、数学学及管理理科学等等原理开开发软件件的工程程。计算机科科学、数数学用于于构造模模型与算算法;工程科学学用于制制定规范范、设计计范型、评估成成本及确确定权衡衡;管理科学学用于用用于计划划、资源源、质量量、成本本等管理理。14软件工程程的目标
8、能按时完完成开发发任务,及时交交付使用用;付出较低低的开发发成本,达到要要求的软软件功能能;取得较好好的软件件性能;开发的软软件易于于移植;需要较低低的维护护费用;开发的软软件可靠靠性高。15软件工程程三要素素软件工程程方法软件工具具软件工程程过程为软件开开发提供供“如何何做”的的技术。如怎样样定项目目计划、怎样实实施需求求分析、如何测测试等。为软件工工程方法法提供自自动或半半自动软软件支撑撑环境。如软件件开发工工具、测测试工具具等。软软件开发发的不同同阶段可可使用不不同的工工具。将软件工工程划分分为若干干阶段,分配方方法和工工具,定定义每个个阶段的的先后顺顺序和完完成标志志。16软件生存存周
9、期生存周期期概念生存周期期各阶段段生存周期期模型17软件生存存周期软件生存存周期(softwarelife cycle)又称为为软件生生命期。是指从形形成开发发软件概概念起,所开发发的软件件使用以以后,直直到失去去使用价价值消亡亡为止的的整个过过程。一般来说说,整个个生存周周期包括括计划、开开发、运运行三个时期期,每一个时时期又划划分为若若干阶段段。每个阶阶段有明明确的任任务,这这样使规规模大、结构复复杂和管管理复杂杂的软件件开发变变得容易易控制和和管理。软件生存存周期概概念18软件生命命周期软件生命命期各阶阶段软件计划划与可行行性研究究软件系统统需求分分析软件设计计软件编码码软件测试试与调试
10、试软件运行行与维护护软件生命命期一般般包括以以下各阶阶段:19软件-建筑计划与可可行性研研究系统需求求分析软件设计计软件编码码软件测试试与调试试软件运行行与维护护20一、软软件计划划与可行行性研究究目的确定软件件项目是是否能够够开发?是否值值得去开开发?输出:可可行性研研究报告告成本效益分析析项目开发发计划21一、软件件计划与与可行性性研究初步确定定项目的的规模和和目标,确定项项目的约约束和限限制。分析员进进行简要要的需求求分析,抽象出出逻辑结结构,建建立逻辑辑模型。从逻辑模模型出发发,经过过压缩的的设计,找出几几种可供供选择的的解决办办法。过程22一、软件件计划与与可行性性研究对每种解解决方
11、法法,可从从以下三三个方面面分析研研究每种种解决方方法的可可行性。1技术可可行性2经济可可行性3社会可可行性内容23软件可行行性研究究1技术可可行性对要开发发项目的的功能、性能、限制条条件进行行分析,确定在在现有的的资源条条件下,技术风风险有多多大,项项目是否否能实现现。资源:已已有的或或可以获获得的硬硬件、软软件资源源现有技术术人员的的技术水水平已有的工工作基础础。技术可行行性分析析通常包包括风险险分析、资源分分析和技技术分析析三个方面面的可行行性24风险分析析:分析在在给定的的约束条条件下设设计和实实现系统统的风险险。采用不成成熟的技技术可能能造成技技术风险险人员流动动可能给给项目带带来风
12、险险成本和人人员估算算不合理理造成的的预算风风险风险分析析的目的的是找出出风险,评价风风险的大大小,并并有效地地控制和和缓解风风险。25资源分析析:论证是是否具备备系统开开发所需需的各类类人员、软件、硬件等等资源和和相应的的工作环环境。例如,有有一支开开发过类类似项目目的开发发和管理理的团队队,或者者开发人人员比较较熟悉系系统所处处的领域域,并有有足够的的人员保保证,所所需的硬硬件和支支撑软件件能通过过合法的的手段获获取,那那么从技技术角度度看,可可以认为为具备设设计和实实现系统统的条件件。26技术分析析:分析当当前的科科学技术术是否支支持系统统开发的的各项活活动。在技术分分析过程程中,分分析
13、员收集系统统的性能能、可靠靠性、可可维护性性和生产产率方面面的信息息,分析实现现系统功功能、性性能所需需的技术术、方法法、算法法或过程程,从技术术角度分分析可能能存在的的风险,以及这这些技术术问题对对成本的的影响。技术可行行性分析析时通常常需进行行系统建建模,必必要时可可建造原原型和进进行系统统模拟27软件可行行性研究究2经济可可行性进行开发发成本的的估算以以及了解解取得效效益的评评估,确确定要开开发的项项目是否否值得投投资开发发?经济可行行性:成本效益分析析公司经营营长期策策略开发所需需的成本本和资源源潜在的市市场前景景三个方面面的可行行性28基于计算算机的系系统的成本主要包括括:购置硬件件
14、、软件件(如数数据库管管理系统统、第三三方开发发的构件件等)和和设备(如传感感器等)的费用用系统的开开发费用用系统安装装、运行行和维护护费用人员培训训费用29效益经济效益益使用基于于计算机机的系统统后可增增加的收收入和可可节省的的运行费费用(如如操作人人员数、工作时时间、消消耗的物物资等)。社会效益益使用基于于计算机机的系统统后对社社会产生生的影响响(如提提高了办办事效益益,使用用户满意意等),通常社社会效益益只能定定性地估估计。在进行成成本效益益分析时时通常只只统计五五年内的的经济效效益。经济效益益通常可可用货币币的时间间价值、投资回回收期和和纯收入入来度量量。30货币的时时间价值值(以利率
15、计计算的机机会成本本)设:当前前金额为为P,年利率率为i,n年后的金金额为F,则计算时,累计经经济效益益应折合合成当前前金额例如,一一个基于于计算机机的系统统使用后后,每年年产生的的经济效效益为10万,如果果年利率率为5%,那么,五年内内该系统统的累计计经济效效益是432948万,而不不是50万。31投资回收收期:累计的经经济效益益正好等等于投资资数(成成本)所所需的时时间纯收入:累计经经济效益益投资数当纯收入入大于零零时,该该工程值值得投资资开发当纯收入入小于零零时,该该工程不不值得投投资(除除非它有有明显的的社会效效益)当纯收入入等于零零时,通通常也不不值得投投资显然,纯纯收入越越大越好好
16、32软件可行行性研究究3社会可可行性要开发的的项目是是否存在在任何侵侵犯、妨妨碍等责责任问题题?要开发项项目的运运行方式式在用户户组织内内是否行行得通?现有管理理制度、人员素素质、操操作方式式是否可可行?三个方面面的可行行性33中华人民民共和国国著作权权法计算机软软件保护护条例保密法等34可行性分分析的结结论可以立即即开始进进行需要推迟迟到某些些条件(例如资资金、人人力、设设备等)落实之之后才能能开始进进行需要对开开发目标标进行某某些修改改之后才才能开始始进行因为某种种原因(如,技技术不成成熟、经经济上不不合算等等)不能能进行35软件可行行性研究究1复查项项目规模模和目标标2研究正正在使用用的
17、系统统3得到新新系统的的概括的的逻辑模模型4导出和和评价各各种方案案5推荐可可行的方方案6编写可可行性研研究报告告可行性研研究的具具体步骤骤36软件可行行性研究究可行性研研究报告告内容1引言。2可行性性研究前前提。3对现有有系统的的分析。4所建议议系统的的技术可可行性分分析。5所建议议系统的的经济可可行性分分析。6社会因因素的可可行性分分析。7其他可可供选择择方案。8结论意意见。37二、软软件系统统需求分分析需求分析析概念需求分析析的基本本任务结构化分分析方法法BDS38数据库建建设的基基本规律律三分技术,七分管理,十二分基础数据据管理 数据库建建设项目目管理企业(即即应用部部门)的的业务管管
18、理基础数据据收集、入入库更新新的的数据39二、软软件系统统需求分分析需求分析析概念需求分析析的基本本任务结构化分分析方法法40需求的定定义IEEE Standard Glossary of Software Engineering Terminology用户解决决一个问问题或达达到一个个目标所所需要的的一种状状况或能能力系统为了了满足一一种约定定、标准准、规格格说明或或其它正正式文件件而必须须满足或或拥有的的一种状状况或能能力以上两种种状态或或能力的的文档化化表示主观需求求客观需求求需求文档档41功能性需需求和非非功能性性需求功能性需需求系统需要要提供的的服务或或功能:如图书书检索系统对特特定
19、输入入的处理理方式:如对非非法输入入的提示示系统在特特定环境境下的行行为:如如长时间间无操作作时的屏屏保非功能性性需求对系统功功能或服服务附加加的质量量约束,例如响响应时间间、容错错性、安安全性等等客户所关关心的(外部质量量)从系统开开发和维维护角度度出发的的质量属属性,例例如可理理解性、可扩展展性、可可配置性性等软件开发发或维护护者所关关心的(内部质量量、软件件所特有有)42二、软软件系统统需求分分析是指开发发人员要要准确理理解用户户的要求求,进行行细致的的调查分分析,将将用户非非形式的的需求陈陈述转化化为完整整的需求求定义,再由需需求定义义转换到到相应的的形式功功能规约约(需求求规格说说明
20、)的的过程。结构化分分析方法法和面向对象象分析方方法1.需求分析析概念43是要准确确地定义义新系统统的目标标,满足足用户需需要。回回答系统统必须“做什么么”的问问题。本本阶段要要进行以以下几方方面的工工作:(1)分析人人员和用用户对问问题识别别,双方方商定对对问题的的综合需需求。包括:功功能需求求、性能能需求、环境需需求和用用户界面面需求。另外还有有可靠性性、安全全性、保保密性、可移植植性、可可维护性性等方面面的需求求.这些需求求一般通通过双方方交流、调查研研究来获获取,并并达到共共同的理理解。2.需求分析析的基本本任务44(2)分析与与综合,导出软软件的逻逻辑模型型。分析人员员对获取取的需求
21、求,进行行一致性性的分析析检查,在分析析、综合合中逐步步细化软软件功能能,划分分成各个个子功能能。包括:对对数据域域进行分分解,并并分配到到各个子子功能上上,以确确定系统统的构成成及主要要成分,并用图图文结合合的形式式,建立立起新系系统的逻逻辑模型型。(3)编写文文档。文档:需需求规格格说明书书初步用户户使用手手册确认测试试计划2.需求分析析的基本本任务453.结构化分分析方法法SA方法利用图形形等半形形式化的的描述方方式表达达需求,用它们们形成需需求说明明书中的的主要部部分。描述工具具是:(1)数据流流图(DFD)(2)描述加加工逻辑辑的工具具:结构化语语言、判判定表、判定树树(3)数据字字
22、典结构化分分析(Structured Analysis,简称SA),是面面向数据据流进行行需求分分析的方方法。SA是一种建建模活动动,该方方法使用用简单易易读符号号,根据据软件内部部数据传传递、变变换的关关系,自顶向向下逐层层分解,描绘出出满足功功能需求求的软件件模型。463.结构化分分析方法法(1)数据流流图(DFD)数据流图图(Data FlowDiam),是SA方法中用用于表示示系统逻逻辑模型型的一种种工具,它以图图形的方方式描绘绘数据在在系统中中流动和和处理的的过程,由于它它只反映映系统必必须完成成的逻辑辑功能,所以它它是一种种功能模模型。数据流图图的作用用:需求分析析时,作作为自顶顶
23、向下的的工具描述系统统组成部部分为技术员员、用户户间交流流提供有有力方法法473.结构化分分析方法法(1)数据流流图(DFD)数据流图图由数据据流、加加工(又又称为数数据处理理)、数数据存储储(又称称为文件件)、数数据源点点或终点点四种基基本成分分组成。数据流图图实例:银行取取款过程程数据流:加加工:数据存储储:数数据源点点、终点点:48描述银行行取款过过程的数数据流图图49基本加工工逻辑说说明 对数据流流图的每每一个基基本加工工,必须须有一个个基本加加工逻辑辑说明描述基本本加工如如何把输输入数据据流变换换为输出出数据流流的加工工规则描述实现现加工的的策略而而不是实实现加工工的细节节包含的信信
24、息应是是充足的的,完备备的,有有用的,无冗余余的50(2)用于写加加工逻辑辑说明的的工具结构化英英语判定表判定树3.结构化分分析方法法511)结构化化英语结构化英英语的词词汇表由由英语命令令动词数据词典典中定义义的名字字有限的自自定义词词逻辑关系系词IF_THEN_ELSE、CASE_OF、WHILE_DO、REPEAT_UNTIL等组成。52是一种介介于自然然语言和和形式化化语言之之间的语语言语言的正文用基基本控制制结构进进行分割割,加工中中的操作用自自然语言言短语来来表示其基本控控制结构构有三种种:简单陈述述句结构构:避免复合合语句;重复结构构:while_do或repeat_until结
25、构。判定结构构:if_then_else或case_of结构;53商店业务务处理系系统中“检查发发货单”if发货单金金额超过过$500thenif欠款超过过了60天then在偿还欠欠款前不不予批准准else(欠款未未超期)发批准书书,发货货单else(发货单单金额未未超过$500)if欠款超过过60天then发批准书书,发货货单及赊赊欠报告告else(欠款未未超期)发批准书书,发货货单542)判定表表如果数据据流图的的加工需需要依赖赖于多个逻辑辑条件的的取值,使用判判定表来来描述比比较合适适条件定义条件取值的组合动作定义在各种取值的组合下应执行的动作55以“检查查发货单单”为例例563)判定树
26、树判定树也也是用来来表达加加工逻辑辑的一种种工具。有时侯侯它比判判定表更更直观。检查发货单金额$500金额$500 欠款60天不发出批准书 欠款60天发货单发出批准书、 欠款60天发出批准书、发货单及赊欠报告 欠款60天发出批准书、发货单57(3)数据字典典数据词典典(Data Dictionary,简称DD)就是用用来定义义数据流流图中的的各个成成分的具具体含义义的。对数据流流图中出出现的每每一个数数据流、文件、加工给给出详细细定义。3.结构化分分析方法法数据字典典主要有有四类条条目:数据流、数据项项、数据据存储、基本加加工。数据项是是组成数数据流和和数据存存储的最最小元素素。58(3)数据
27、字典典数据字典典词条内内容表3.结构化分分析方法法数据项/数据流/数据文件件名称:别名:取消及定定义:组成:组织:备注:59实例:计计算机售售书系统统模型(3)数据字典典3.结构化分分析方法法60售书系统统数据流流词条实实例:发票数据流名名:发票别名:购书发票票组成:学号+姓名+书号+单价+数量+总价+书费合计计备注:(3)数据字典典3.结构化分分析方法法61数据文件件词条实实例:各班学生生用书表表文件名:各班学生生用书表表别名名:组成成:系编号+专业和班班级编号号+年级+书号组织织:按系、专专业和班班编号从从小到大大排列备注注:(3)数据字典典3.结构化分分析方法法62三、软件件设计软件概要
28、要设计2.软件详细细设计主要完成成软件系系统结构构设计和确定各各组成部部分之间间的相互互关系。主要确定定每个模模块的具具体执行行过程,也称为为过程设设计。631.软件概要要设计概要设计计基本任任务概要设计计基本原原理64(1)概要设设计基本本任务进行软件件系统总总体结构构设计进行软件件中所使使用的数数据结构构及数据据库的设设计编写概要要设计文文档进行概要要设计的的评审65(1)概要设设计基本本任务1)软件系统统总体结结构设计计采用某种种设计方方法,将将一个复复杂的系系统按功功能划分分成模块块。确定每个个模块的的功能。确定模块块之间的的调用关关系。确定模块块之间的的接口,即模块块之间传传递的信信
29、息。评价模块块结构的的质量。66(1)概要设设计基本本任务2)数据结构构及数据据库的设设计。对数据结结构的设设计,采采用逐步步细化的的方法,对需求求分析阶阶段获得得的数据据字典中中的数据据的结构构特性等等加以细细化。对数据库库的设计计是指数数据存储储文件的的设计,主要进进行概念念设计、逻辑设设计、物物理设计计三方面面设计。67(1)概要设设计基本本任务3)概要设计计文档主主要包括括:概要设计计说明书书。数据库设设计说明明书。进一步补补充需求求分析阶阶段编写写的用户户手册。修订测试试计划,对测试试策略、方法、步骤提提出明确确要求。68(1)概要设设计基本本任务4)进行概要要设计的的评审:对设计部
30、部分是否否完整地地实现了了需求中中规定的的功能、性能等等要求设计方案案的可行行性内外部接接口定义义的正确确性、有有效性各部分之之间的一一致性69(2)概要设计计的基本本原理l)模块化2)抽象3)信息隐藏藏4)模块独立立性70(2)概要设计计的基本本原理l)模块化在软件的的体系结结构中,模块是是可组合合、分解解和更换换的单元元。模块具有有以下几几种基本本属性:接口、功功能、状状态、逻逻辑。其中:功功能、状状态与接接口反映映模块的的外部特特性,逻逻辑反映映它的内内部特性性。模块化是指解决决一个复复杂问题题时自顶顶向下逐逐层把软软件系统统划分成成若干模模块的过过程。每每个模块块完成一一个特定定的子功
31、功能,所所有的模模块按某某种方法法组装起起来,成成为一个个整体,完成整整个系统统所要求求的功能能。71(2)概要设计计的基本本原理2)抽象抽象是指获取取事物本本质的共共同的特特性而暂暂不考虑虑它的细细节,不不考虑其其他因素素。抽象是认识复复杂现象象过程中中使用的的思维工工具软件工程程过程中中的每一一步部可可以看作作是对软软件解决决方法的的抽象层层次的一一次细化化。72(2)概要设计计的基本本原理3)抽象信息息隐藏信息隐藏藏指在设计计和确定定模块时时,使得得一个模模块内包包含的信信息(过过程或数数据),对于不不需要这这些信息息的其他他模块来来说,是是不能访访问的。“隐藏”:模块块化是通通过定义义
32、一组相相互独立立的模块块来实现现系统,这些独独立的模块彼此此之间仅仅仅交换换那些为为了完成成系统功功能所必必需的信信息,而将那些些自身的的实现细细节与数数据“隐隐藏”起起来。通过抽象象,可以以确定组组成软件件的过程程实体。通过信息息隐藏,可以定定义模块块的过程程细节和和局部数数据结构构的存取取限制。73(2)概要设计计的基本本原理4)模块独立立性模块独立立性是指指每个模模块只完完成系统统要求的的独立的的子功能能,并且且与其他他模块的的联系最最少且接接口简单单。如何衡量量软件的的独立性性呢?根据模块块的外部部特征和和内部特特征,提提出了两两个定性性的度量量标准耦合性和和内聚性性。将软件系系统划分
33、分模块时时,尽量量做到高内内聚低耦耦合,提提高模块块的独立立性,为设计计高质量量的软件件结构奠奠定基础础。74(2)概要设计计的基本本原理4)模块独立立性_耦合性耦合性也也称块间间联系。指软件件系统结结构中各各模块间间相互联联系紧密密程度的的一种度度量。模块之间间联系越越紧密,其耦合合性就越越强,模模块的独独立性则则越差。模块间间耦合高高低取决决于模块块间接口口的复杂杂性、调调用的方方式及传传递的信信息。模块的耦耦合性有有以下七七种类型型:非直接耦耦合、数数据耦合合、标记记耦合、控制耦耦合、外外部耦合合、公共共耦合、内容耦耦合,它们的耦耦合程度度由低到到高。75(2)概要设计计的基本本原理4)
34、模块独立立性_内聚性又称块内内联系。指模块块的功能能强度的的度量,即一个个模块内内部各个个元素彼彼此结合合的紧密密程度的的度量。若一个模模块内各各元素(语句之之间、程程序段之之间)联联系的越越紧密,则它的的内聚性性就很高高。内聚性有有以下七七类类型型:偶然内聚聚、逻辑辑内聚、时间内内聚、过过程内聚聚、通信信内聚、顺序内内聚、功功能内聚聚,它们的内内聚程度度由低到到高。762.概要设计计软件结构构:表示示程序的的总体结结构,指指程序的的控制层层次体系系(多少少模块,多少层层次,调调用关系系)77一个问题题可以有有多种结结构来表表示78软件结构构的术语语深度:控控制的层层次数宽度:控控制的总总跨度
35、,即最多多模块一一层的模模块数扇出:一一个模块块直接控控制的模模块数扇入:一一个模块块被几个个模块直直接控制制79软件结构构的术语语从属:A模块控制制B模块,则则B从属A统率:A模块控制制B模块,则则A统率B80C1和C2中,C1和C,C2和C,可能是是偶然性性块内联联系,把把它们从从各自的的模块分分离出来来,C1,C2和和C的块块内联系系增大,模块独独立性增增强,块块间联系系看起来来增大一一些,又又通过模模块的合合并,得得到图(c)(d)块块内联系系大,块块间联系系相应小小些(模模块个数数少)。81模块调用用个数最最好不要要超过五五个一个模块块具有过过多的调调用模块块或被调调用模块块,那么么
36、它往往往包含过过多的功功能,这这就是这这个模块块太复杂杂除特殊情情况外(case,开开关),应避免免这种结结构,用用增加层层次以减减少调用用个数。五个是经经验得来来的82结构化设设计技术术()是公公司提出出的,是是长期程程序设计计的经验验总结。下面将介介绍如何何建立系系统的模模块结构构。数据流图图的类型型是以以数据流流为基础础来设计计软件的的模块结结构,那那么我们们首先要要找出数数据流图图的一些些规律,从而导导出软件件的初始始结构。831、变换类类型数据据流图定义:具具体较明明显的输输入,变变换(或或称主加加工)和和输出界界面的数数据流图图。842、事务型数数据流图图定义:图图中某个个加工将将
37、它的输输入数据据流分离离成一串串发散的的数据流流,形成成许多活活动的路路径(分分支),并根据据输入的的值选择择其中的的一个路路径,具具有这样样特征的的数据流流图。事务中心心:把输输入数据据流分离离成一串串发散数数据流的的加工。853、设计步骤骤:总述述模模型实例第一步:复查基基本系统统模型这一步将将看到软软件的原型,传统方方法往往往是从这这一步开开始的。在做这一一步时,要对以前前建立的的基本数数据模型型,再作最最后的审审查,是是否有遗遗漏的输输入或输输出。第二步:复查并并精化数数据流图图对数据流流图的最最后复审审求精要要慎重,一定要要保证数数据流图图的正确确性。不同的的选择导出的软软件初始始模
38、块图图的合理理性有些些差异。863、设计步骤骤:总述述模模型实例第三步:确定数数据流图图的类型型:变换型与与事务型型。变换设计计:从变换型型数据流流图导出出软件模模块结构构的过程程。如何划分分输入、主加工工、输出出三个部部分?从两头头向中间间,先找找出逻辑辑输入和和逻辑输输出,找找到它们们即可划划分出三三个部分分。8788第四步:设计上上层模块块结构:自顶向向下的设设计方法法。顶层:主主模块,对应于于主加工工。一层:标标准的一一层,对对应于变变换数据据流图的的三个部部分,三三个模块块89第五步:设计软软件的中中下层模模块结构构(基于数数据流图图)。90第六步:对初始始模块求求精,得得到合理理的
39、软件件结构。912.软件详细细设计(1)详细设设计基本本任务(2)结构化化程序设设计方法法92(1)详细设设计基本本任务为每个模模块进行行详细的算算法设计。为模块内内的数据结构构进行设计计。对数据库库进行物物理设计计,即确确定数据库的的物理结结构。其他设计计。根据据软件系系统的类类型,还还可能要要进行以以下设计计:代码设计计、输入入输出格格式设计计、人机机对话设设计。编写详细设计计说明书书。为每一个个模块设设计一组组测试用例例。评审。对对处理过过程的算算法和数数据库的的物理结结构都要要评审。93(2)结构化化程序设设计方法法结构化程程序设计计是E.W.Dijikstra在1965年提出的的。它
40、的主要要观点是是采用自自顶向下下、逐步步求精的的程序设设计方法法;使用用三种基基本控制制结构构构造程序序,任何何程序都都可由顺顺序、选选择、重重复三种种基本控控制结构构构造。详细描述述处理过过程常用用三种工工具:图形、表表格和语语言。图形:程序流程程图、N-S图、PAD图表格:判定表语言:过程设计计语言(PDL)94四、软软件编码码软件编码码是将详详细设计计得到的的处理过过程的描描述转换换为基于于某种计计算机语语言的程程序,即即源程序序代码。需注意根根据项目目的应用用领域选选择适当当的编程程语言、编程的的软硬件件环境以以及编码码的程序序设计风风格等事事项95四、软软件编码码FourthGene
41、rationLanguages1stgenerationlanguagesmachine languages(binary)2ndgenerationlanguagesassemblers3rdgenerationlanguageshigh-level languagesFORTRAN,COBOL,C,C+each statementindendedtobe 5-10assembler stmts4thgeneration languages(4GLS)each statementindendedtobe30-50assembler stmtseasier/faster to programr
42、educes costsdeclarativesaywhatyouwant,not howtodoit(e.g.,SQLStructured Query Language)success hasbeen mixedpositivesfast response fromDPdept.work wellfor DB appsnegativesslow &inefficient96程序风格格程序实际际上也是是一种供供人阅读读的文章章,有一一个文章章的风格格问题。应该使使程序具具有良好好的风格格。源程序文文档化数据说明明语句结构构输入输输出方法法97源程序文文档化标识符的的命名安排注释释程序的视视觉组
43、织织98标识符的的命名符号名即即标识符符,包括括模块名名、变量量名、常常量名、标号名名、子程程序名、 数据据区名以以及缓冲冲区名等等。名字应能能反映它它所代表表的对象象,应有有一定实实际意义义。名字不是是越长越越好,应应当选择择精炼的的意义明明确的名名字。必必要时可可使用缩缩写名字字,但这这时要注注意缩写写规则要要一致,并且要要给每一一个名字字加注释释。在一个程程序中,一个变变量只应应用于一一种用途途。99程序的注注释夹在程序序中的注注释是程程序员与与日后的的程序读读者之间间通信的的重要手手段。注释决不不是可有有可无的的。一些正规规的程序序文本中中,注释释行的数数量占到到整个源源程序的的13到
44、12,甚至更更多。注释分为为序言性注注释和功能性注注释。100序言性注注释通常置于于每个程程序模块块的开头头部分,它应当当给出程程序的整整体说明明,对于于理解程程序本身身具有引引导作用用。有些些软件开开发部门门对序言言性注释释做了明明确而严严格的规规定,要要求程序序编制者者逐项列列出。有关项目目包括:程序标题题;有关本模模块功能能和目的的的说明明;主要算法法;接口说明明:包括括调用形形式,参参数描述述,子程程序清单单;101序言性注注释有关数据据描述:重要的的变量及及其用途途,约束束或限制制条件,以及其其它有关关信息;模块位置置:在哪哪一个源源文件中中,或隶隶属于哪哪一个软软件包;开发简历历:
45、模块块设计者者,复审审者,复复审日期期,修改改日期及及有关说说明等。102功能性注注释功能性注注释嵌在在源程序序体中,用以描描述其后后的语句句或程序序段是在在做什么么工作,或是执执行了下下面的语语句会怎怎么样。而不要要解释下下面怎么么做。要点:描述一段段程序,而不是是每一个个语句;用缩进和和空行,使程序序与注释释容易区区别;注释要正正确。103程序的视视觉组织织恰当地利利用空格,可以突突出运算算的优先先性,避避免发生生运算的的错误。自然的程程序段之之间可用用空行隔隔开;移行也叫叫做向右右缩格。它是指程程序中的的各行不不必都在在左端对对齐,都都从第一一格起排排列。这这样做使使程序完完全分不不清层
46、次次关系。对于选择择语句和和循环语语句,把把其中的的程序段段语句向向右做阶梯式移移行。使程序序的逻辑辑结构更更加清晰晰。104数据说明明在设计阶阶段已经经确定了了数据结结构的组组织及其其复杂性性。在编编写程序序时,则则需要注注意数据据说明的的风格。为了使程程序中数数据说明明更易于于理解和和维护,必须注注意以下下几点。1.数据说明明的次序序应当规规范化2.说明语句句中变量量安排有有序化3.使用注释释说明复复杂数据据结构105数据说明明1.数据说明明的次序序应当规规范化数据说明明次序规规范化,使数据据属性容容易查找找,也有有利于测测试,排排错和维维护。原则上,数据说说明的次次序与语语法无关关,其次
47、次序是任任意的。但出于于阅读、理解和和维护的的需要,最好使使其规范范化,使使说明的的先后次次序固定定。2.说明语句句中变量量安排有有序化当多个变变量名在在一个说说明语句句中说明明时,应应当对这这些变量量按字母母的顺序序排列。带标号号的全程程数据也也应当按按字母的的顺序排排列。106数据说明明3.使用注释释说明复复杂数据据结构如果设计计了一个个复杂的的数据结结构,应应当使用用注释来来说明在在程序实实现时这这个数据据结构的的固有特特点。107语句结构构在设计阶阶段确定定了软件件的逻辑辑流结构构,但构构造单个个语句则则是编码码阶段的的任务。语句构造造力求简简单,直直接,不能为了了片面追追求效率率而使
48、语语句复杂杂化。1、在一行行内只写写一条语语句2、程序编编写首先先应当考考虑清晰晰性程序编写写首先应应当考虑虑清晰性性,不要要刻意追追求技巧巧性,使使程序编编写得过过于紧凑凑。3、程序要要能直截截了当地地说明程程序员的的用意。108语句结构构4.除非对效效率有特特殊的要要求,程序编写写要做到到清晰第一一,效率率第二。不要为为了追求求效率而而丧失了了清晰性。事实上上,程序序效率的的提高主主要应通通过选择择高效的的算法来来实现。5.首先要保保证程序序正确,然后才要要求提高高速度。反过来来说,在在使程序序高速运运行时,首先要要保证它它是正确确的。6.避免使用用临时变变量而使使可读性性下降。7.让编译
49、程程序做简简单的优优化。8.尽可能使使用库函函数9.避免不必必要的转转移。109语句结构构10.尽量只采采用三种种基本的的控制结结构来编编写程序序。11.避免使用用空的ELSE语句和IFTHENIF的语句。12.避免采用用过于复复杂的条条件测试试。13.尽量减少少使用“否定”条件的的条件语语句14.尽可能用用通俗易易懂的伪伪码来描描述程序序的流程程,然后后再翻译译成必须须使用的的语言。15.数据结构构要有利利于程序序的简化化。16.要模块化化,使模模块功能能尽可能能单一化化,模块块间的耦耦合能够够清晰可可见。110语句结构构17.利用信息息隐蔽,确保每每一个模模块的独独立性。18.从数据出出发
50、去构构造程序序。19.不要修补补不好的的程序,要重新新编写。也不要要一味地地追求代代码的复复用,要要重新组组织。20.对太大的的程序,要分块块编写、测试,然后再再集成。21.对递归定定义的数数据结构构尽量使使用递归归过程。111输入/输出在设计和和编码时时都应考考虑下列列原则:1.对所有的的输入数数据都要要进行检检验,识识别错误误的输入入,以保保证每个个数据的的有效性性;2.检查输入入项的各各种重要要组合的的合理性性,必要要时报告告输入状状态信息息;3.使得输入入的步骤骤和操作作尽可能能简单,并保持持简单的的输入格格式;112输入/输出4.输入数据据时,应应允许使使用自由由格式输输入;5.应允
51、许缺缺省值;6.输入一批批数据时时,最好好使用输输入结束束标志,而不要要由用户户指定输输入数据据数目;7.在交互式式输入输输入时,要在屏屏幕上使使用提示示符明确确提示交交互输入入的请求求,指明明可使用用选择项项的种类类和取值值范围。同时,在数据据输入的的过程中中和输入入结束时时,也要要在屏幕幕上给出出状态信信息;8.当程序设设计语言言对输入入输出出格式有有严格要要求时,应保持持输入格格式与输输入语句句的要求求的一致致性;9.给所有的的输出加加注解,并设计计输出报报表格式式。113五、软件件测试与与调试一软件测试试软件测试试概念及及目的软件测试试的原则则软件测试试方法软件测试试对象测试与软软件开
52、发发各阶段段的关系系软件测试试过程测试用例例设计114软件测试试1.软件测试试概念及及目的测试阶段段的基本本任务:是根据软软件开发发各阶段段的文档档资料和和程序的的内部结结构,精精心设计计一组“高效”的测试用用例,利利用这些些实例执执行程序序,找出出软件中中潜在的的各种错错误和缺缺陷。软件测试试是为了了发现错错误而执执行程序序的过程程。在IEEE提出的软软件工程程标准术术语中,软件测测试是指指使用人人工或自自动手段段,运行行或测试试某个系系统的过过程,其其目的是检检验软件件是否满满足规定定的需求求,或是是清楚预预期结果果与实际际结果之之间的差差异。115软件测试试2.测试的原原则在软件测测试中
53、,应注意意以下指指导原则则:测试用例例应由输入数据据和预期的输输出数据据两部分组组成。测试用例例不仅选选用合理的输入数据据,还要要选择不合理的的输入数据据。除了检查查程序是是否做了了它应该做做的事,还应该该检查程程序是否否做了它不应该该做的事事。应制定测试计划划并严格执执行,排排除随意意性。长期保留留测试用用例。对发现错错误较多多的程序序段,应应进行更更深入的的测试。程序员避避免测试试自己的的程序。116软件测试试3.测试方法法一般分为为两大类类:动态态测试方方法与静静态测试试方法。(1)静态测试试静态测试试指被测测试程序序不在机机器上运运行,而而是采用用人工检检测和计计算机辅辅助静态态分析的
54、的手段对对程序进进行检测测。(2)动态测试试动态测试试指通过过运行程程序发现现错误。对软件产产品进行行动态测测试时,根据测试试用例的的设计方方法不同同一般有两两种方法法,分别别称为黑盒测试试法和白盒测试试法。1174.软件测试试的对象象软件测试试并不等等于程序序测试。软件测试试应贯穿穿于软件件定义与与开发的的整个期期间。需求分析析、概要设计计、详细设计计以及程程序编码码等各阶段段所得到到的文档,包括需需求规格格说明、概要设设计规格格说明、详细设设计规格格说明以以及源程程序,都应成为为软件测测试的对对象。118119测试信息息流120测试信息息流软件配置置:软件需需求规格格说明、软件设设计规格格
55、说明、源代码码等;测试配置置:测试计计划、测测试用例例、测试试程序等等;测试工具具:测试数数据自动动生成程程序、静静态分析析程序、动态分分析程序序、测试试结果分分析程序序、以及及驱动测测试的测测试数据据库等等等。121测试结果果分析:比较实实测结果果与预期期结果,评价错错误是否否发生。排错(调试):对已经经发现的的错误进进行错误误定位和和确定出出错性质质,并改改正这些些错误,同时修修改相关关的文档档。修正后的的文档再再测试:直到通通过测试试为止。122通过收集集和分析析测试结结果数据据,对软软件建立立可靠性性模型利用可靠靠性分析析,评价价软件质质量:软件的质质量和可可靠性达达到可以以接受的的程
56、度;所做的测测试不足足以发现现严重的的错误;如果测试试发现不不了错误误,可以以肯定,测试配配置考虑虑得不够够细致充充分,错错误仍然然潜伏在在软件中中。1235.测试与软软件开发发各阶段段的关系系软件开发发过程是是一个自顶向下下,逐步细化化的过程软件计划划阶段定定义软件件作用域域软件需求求分析建建立软件件信息域域、功能能和性能能需求、约束等等软件设计计编码是把把设计用用某种程程序设计计语言转转换成程程序代码码测试过程程是依相相反顺序序安排的的自底向上上,逐步集成成的过程。124测试过程程是依相相反顺序序安排的的自底向向上,逐逐步集成成的过程程。125软件测试试6.软件测试试过程软件测试试一般要要
57、经过以以下四步步测试:(1)单元测试试主要针对对模块的的五个基基本特征征进行测测试:模块接口口,局部部数据结结构,重重要的执执行路径径,错误误处理,边界条条件。(2)集成测试试也称组组装测试试,是在单单元测试试的基础础上将所所有模块块按照设设计要求求组装成一一个完整整的系统统进行的测测试。(3)确认测试试又称有有效性测测试,是检查查软件的的功能与与性能是是否与需求规规格说明明书中确确定的指指标相符符合。(4)系统测试试是将确认认通过的的软件作作为计算算机系统统的一个个元素,与计算算机硬件件、外设设、某些些支持软软件、数数据和人人员等其其他元素素结合在在一起,在实际的使使用环境境下,对计计算机系
58、系统进行行一系列列的组装装测试和和确认测测试。1261277.测试用例例设计两种常用用的测试试方法黑盒测试试白盒测试试128黑盒测试试把测试对象象看做一个黑盒盒子,测试人人员完全全不考虑程序内部的逻逻辑结构构和内部部特性,只依据程序的需求规格格说明书书,检查程程序的功功能是否否符合它它的功能能说明。黑盒测试试又叫做做功能测试试或数据驱动动测试。129黑盒测试试方法是是在程序序接口上上进行测测试,主主要是为为了发现现以下错错误:是否有不不正确或或遗漏了了的功能能?在接口上上,输入能否否正确地地接受?能否输出出正确的的结果?是否有数数据结构构错误或或外部信信息(例如数据据文件)访问错误误?性能上是
59、是否能够够满足要要求?是否有初初始化或或终止性性错误?130用黑盒测测试发现现程序中中的错误误,必须须在所有可能能的输入入条件和和输出条条件中确定测测试数据据,来检检查程序序是否都都能产生生正确的的输出。但这是不可能的。131假设一个个程序P有输入量X和Y及输出量Z。在字长长为32位的计算算机上运运行。若若X、Y取整数,按黑盒盒方法进进行穷举举测试:可能采用用的测试数据据组:232232264如果测试试一组数数据需要要1毫秒,一一年工作作36524小时,完完成所有有测试需需5亿年。132等价类划划分等价类划划分是一一种典型型的黑盒盒测试方方法,使使用这一一方法时时,完全不考考虑程序序的内部部结
60、构,只依据程程序的规规格说明明来设计计测试用用例。等价类划划分方法法把所有可能能的输入入数据,即程序序的输入入域划分成若干干部分,然后从从每一部部分中选取少数数有代表表性的数数据做为测试试用例。133等价类划划分使用这一一方法设设计测试试用例要要经历划分等价价类(列出等等价类表表)和选取测试试用例两步。划分等价价类等价类是是指某个个输入域域的子集集合。在在该子集集合中,各个输入入数据对对于揭露露程序中中的错误误都是等等效的。测试某某等价类类的代表表值就等等价于对对这一类类其它值值的测试试。134等价类划划分等价类的的划分有有两种不不同的情情况:有效等价价类:是指对对于程序序的规格格说明来来说,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度体育场馆运营代理授权合同
- 体育运动训练效果评价方法考核试卷
- 2025年度竞业禁止协议及市场信息保密合同
- 兽医血液学与细胞学考核试卷
- 塑料片材生产线的智能监控与数据分析系统开发考核试卷
- 2025年度鱼塘承包及渔业休闲垂钓服务合同
- 啤酒原料品质控制与处理考核试卷
- 土壤修复成本效益分析考核试卷
- 再生橡胶在绿色交通领域的应用考核试卷
- 餐饮销售技巧课程设计
- 高考诗歌鉴赏专题复习:题画抒怀诗、干谒言志诗
- 2023年辽宁省交通高等专科学校高职单招(英语)试题库含答案解析
- GB/T 33688-2017选煤磁选设备工艺效果评定方法
- GB/T 304.3-2002关节轴承配合
- 漆画漆艺 第三章
- CB/T 615-1995船底吸入格栅
- 光伏逆变器一课件
- 货物供应、运输、包装说明方案
- (完整版)英语高频词汇800词
- 《基础马来语》课程标准(高职)
- IEC61850研讨交流之四-服务影射
评论
0/150
提交评论