软件工程复习(共8页).doc

上传人:飞****2 文档编号:5329514 上传时间:2022-01-02 格式:DOC 页数:9 大小:397KB
返回 下载 相关 举报
软件工程复习(共8页).doc_第1页
第1页 / 共9页
软件工程复习(共8页).doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《软件工程复习(共8页).doc》由会员分享,可在线阅读,更多相关《软件工程复习(共8页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上第一章 软件工程学概述1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中的逻辑部件而不是

2、物理部件。管理和控制软件开发过程相当困难。软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。本质特性:(1) 软件工程关注于大型程

3、序的构造。(2) 软件工程的中心课题是控制复杂性。(3) 软件经常变化。(4) 开发软件的效率非常重要。(5) 和谐地合作是开发软件的关键。(6) 软件必须有效地支持它的用户。(7) 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。缓解软件危机:软件危机只有缓解,不可能解决,特别是在目前这种硬件结构体系下开发的软件,其危机永远存在,即使未来的新一代计算机系统问世后,那也会产生新形式的软件危机。要缓解软件危机,既要有先进的技术和方法,又需要高水平的组织管理措施。而软件工程正是综合了管理和技术两方面,研究如何更好地开发软件的一门新兴学科。所以,就目前而言,软件工程是缓解

4、软件危机的最好途径。6.什么是软件过程?它与软件工程方法学有何关系?答: 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学包含软件过程。数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典组成:数据流,数据元素,数据存储,处理。数据元素组成:顺序、选择、重复, 可选。数据字典最重要的用途是作为分析阶段的工具。7.什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。软件生命周期模型,是从一个特定角度提出的对软件过程的简化描述,是对软件开发实际过程的抽象,

5、它包括构成软件过程的各种活动、软件工件(artifact)以及参与角色等。瀑布模型的优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。瀑布模型的缺点:(1)开发过程一般不能逆转,否则代价太大;(2)实际的项目开发很难严格按该模型进行;(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。 瀑布模型的使用范围:(1)用户的需求非常清楚全面,且在开发过程中没有或很少变化;(2)开发人员对软件的应用领域很熟悉;(3)用户的使用环境非常稳定;(4)开

6、发工作对用户参与的要求很低。快速原型模型的优点:(1)可以得到比较良好的需求定义,容易适应需求的变化;(2)有利于开发与培训的同步;(3)开发费用低、开发周期短且对用户更友好。快速原型模型的缺点:(1)客户与开发者对原型理解不同;(2) 准确的原型设计比较困难;(3) 不利于开发人员的创新。快速原型模型的使用范围:(1)对所开发的领域比较熟悉而且有快速的原型开发工具;(2)项目招投标时,可以以原型模型作为软件的开发模型;(3)进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。增量模型的优点:(1)采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;(2)如

7、果核心产品很受欢迎,则可增加人力实现下一个增量;(3)可先发布部分功能给客户,对客户起到镇静剂的作用。增量模型的缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;(2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。增量模型的使用范围:(1)进行已有产品升级或新版本开发,增量模型是非常适合的;(2)对完成期限严格要求的产品,可以使用增量模型;(3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。螺旋模型的优点:(1)设计上的灵活性,可以在项目的各个阶段进行变更;

8、(2)以小的分段来构建大型系统,使成本计算变得简单容易;(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;(4) 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。 螺旋模型的缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;(2)过多的迭代次数会增加开发成本,延迟提交时间。螺旋模型的使用范围:螺旋模型只适合于大规模的软件项目。系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等

9、)。数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。需求分析过程应建立的3种模型:数据模型、功能模型和行为模型状态转换图(简称状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状态图还指明了作业特定事件的结果系统将做哪些动作。状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。IPO图是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一种

10、图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。3银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。 请用数据流图描绘本系统的功能5.办公室复印机的工作过程如下:未接收到复印命令时处于闲置状态,一旦接收到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如

11、果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待绝维修人员来排除故障,故障排除后回到闲置状态。(请用状态转换图描绘复印机的行为。)第五章 总体设计模块是由边界元素限定的相邻程序元素序列,而且有一个总体标识符代表它。过程、函数、子程序和宏等,都可以作为模块。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。信息隐藏:使一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化是

12、指把一些关系密切的软件元素物理地放得彼此靠近。有助于实现信息隐藏。模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。模块独立的重要性:1. 有效的模块化(即有独立的模块)的软件比较容易开发出来。2. 独立的模块比较容易测试和维护。 耦合衡量不同模块彼此间互相信赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。低耦合:数据耦合 高内聚:功能内聚、顺序内聚尽量做到作用数据耦合,少用控制耦合和特征耦合限制公共环境耦合的范围,完全不用内容耦合。面向数据流的设计方法把信息流映射成软件结构,信息流类型决定了映射的方法。变换流:信息沿输入通路进入系统,同时由外部形式变换成内部

13、形式,进入系统的信息通过变换中心,经加处理以后再沿输出通路变换成外部形式离开软件系统。事务流:以事务为中心,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。事务中心所要完成任务:1.接收输入数据(输入数据又称为事务)。2.分析每个事务以确定它的类型。3根据事务类型选取一条活动通路。3 画出下列伪码程序的程序流程图和盒图4 下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用fl

14、ag的程序(1) 通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。(2) 不使用flag把该程序改造为等价的结构化程序的方法如图所示。7.。P142 令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。(1)表示手续费计算方法的判定表如图所示。判定表的每一列是一条计算规则。例如,第1列(规则1)规定,当交易总金额P少于1000元,且每股售价Q低于14元,且交易的股数n是100的倍数时,给经纪人的手续费为(l+0.05)0.084P 第16列(规则16)表明,当交易总金额P超

15、过10000元,且每股售价Q在14元到25元之间,且交易的股数n不是100的倍数时,手续费为(1+0.06)(0.04P+134)(3) 表示手续费计算方法的判定树如图所示。软件测试步骤:模块测试 子系统测试 系统测试 验收测试 平行运行代码审查:由审查小组正式进行人工测试源程序。代码审查比计算机测试优越的是:一次审查会上可以发现许多错误;用计算机测试的方法发现错误之后,通常需要先改正这个错误才能继续测试,因此错误是一个个地发现并改正的。也就是说,采用代码审查方法可以减少系统验证的总工作量。集成测试是测试和组装软件的系统化技术,有非渐增式测试和渐增式测试。渐增式测试有自顶向下集成和自底向上集成

16、回归测试是指重新执行已经做过的测试的某个子集,以保证集成测试中发生的变化没有带来非预期的副作用。回归测试集3类测试用例:1. 检测软件全部功能的代表性测试用例。2. 专门针对可能受修改影响的软件功能的附加测试。3. 针对被修改的软件成分测试。白盒测试:按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。专心-专注-专业黑盒测试:主要着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。1. 等价划分是一种墨盒测试技术,这种技术程序的输入域划分成若干个数据类,据此导出测试用例。2.边界值

17、分析 3.错误推测软件维护是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。l进行维护的原因:改正程序中的错误和缺陷;改进设计以适应新的软、硬件环境;增加新的应用范围;为了将来的维护工作。l维护分为以下几类:纠错性维护;适应性维护;完善性维护;预防性维护软件的可维护性:维护人员理解、改正、改动或改进这个软件的难易程度。决定软件可维护性的因素:1. 可理解性;2.可测试性;3.可修改性;4.可移植性;5.可重用性。文档是影响软件可维护性的决定因素。包括用户文档与系统文档。如何提高软件产品的可强维护性:1. 建立明确的软件质量目标。2. 使用先进的软件开发技术和工具。3. 建立

18、明确的质量保证。4. 选择可维护的语言。5. 改进程序的文档。 “面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。面向对象方法学的优点:1. 与人类习惯的思维方法一致。2.稳定性好 3.可重用性好 4.较易开发大型软件产品5.可维护性好具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。 类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。实例就是由某个特定的类所描述的一个具体的对象。消息就是要求某个对象执行

19、在定义它的那个类中所定义的某个操作的规格说明。消息的组成:接收消息的对象;消息选择符;零个或多个变元。2. 什么是“ 对象”?它与传统的数据有何异同?对象是用面向对象方法学开发软件时对客观世界实体的抽象,它是由描述实体属性的数据及可以对这些数据施加的所有操作封装在一起构成的统一体。传统的数据是用传统方法学开发软件时对客观世界实体的抽象,但是,这种抽象是不全面的:数据只能描述实体的静态属性,不能描述实体的动态行为。必须从外界对数据施加操作,才能改变数据实现实体应有的行为。对象与传统数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。必须发消息请求对象主动地执行它的某些操作

20、,处理它的私有数据,而不能直接从外界对它的私有数据进行操作。模型是什么?简单地说:模型是对现实的简化。 模型提供了系统的蓝图。模型既可以包括详细的计划,也可以包括从很高的层次考虑系统的总体计划。一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。每个系统都可以从不同的方面用不同的模型来描述,因而每个模型都是一个在语义上闭合的系统抽象。模型可以是结构性的,强调系统的组织。它也可以是行为性的,强调系统的动态方面。 建模是为了能够更好地理解正在开发的系统通过建模,要达到4个目的:(1)模型有助于按照实际情况或按照所需要的样式对系统进行可视化。 (2)模型能够规约系统

21、的结构或行为。 (3)模型给出了指导构造系统的模板。 (4)模型对做出的决策进行文档化。 建模并不只是针对大的系统。甚至像狗窝那样的软件也能从一些建模中受益。然而,可以明确地讲,系统越大、越复杂,建模的重要性就越大,一个很简单的原因是: 因为不能完整地理解一个复杂的系统,所以要对它建模。 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。对象模型5个层次:主题层、类与对象层、结构层、属性层和服务层。面向对象分析一般顺序:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,定义服务。1。面向对象设计应该遵循哪些准则?1)模块化 2)抽象 3)信息隐藏 4)弱耦合 5)强内聚

22、6)可重用2。简述每条准则的内容,并说明遵循这条准则的必要性1.模块化:对象就是模块,它把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。 2.抽象:面向对象 方法不仅支持过程抽象,而且支持数据抽象。使用者无须知道这些操作符的实现算法和类中数据元素的具体表示方法,就可以通过这些操作符使用类中定义的数据。此外,某些面向对象的程序设计语言还支持参数抽象。例如,C+语言提供的“某板”机制就是一种参数化抽象机制。 3.信息隐藏:在面向对象方法汇总信息隐藏通过对象的封装性实现:类结合分离了接口与实现,从而支持了信息隐藏。对于类的用户来说,属性的表示方法和操作的实现算法都应该是隐藏的。 4.弱耦

23、合:耦合指一个软件结合内不同模块之间互连的紧密程度。在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互的紧密程度。弱偶合是优秀设计的一个重要标准,一般来说,对想之间的耦合可分为两大类,(1)交互耦合如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合。(2)继承耦合,与交互耦合相反,应该提高继承耦合程度。 5.强内聚:内聚衡量一个模块内各个元素彼此结合的紧密程度。也可以把内聚定义为:设计中使用的一个构件内的各个元素,对完成一个定义明确的目的所做出的贡献程度。在设计时应该力求做到高内聚。在面向对象设计中存在下述三种内聚:(1)服务内聚(2)类内聚(3)泛化内聚。一般来

24、说,紧密的继承耦合与高度的泛化内聚是一致的。 6.可重用:软件重用是提供高软件开发生产率和目标系统质量的重要途径。重要基本上从设计阶段开始。重要有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类),二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。4 良好的面向对象程序设计风格主要有哪些准则? 答: 良好的面向对象程序设计风格,即包括传统的程序设计风格准则,也包括为适应面向对象方法所特有的概念(例如,继承性)而必须遵循的一些新准则。 提高可重用性:1、提高方法的内聚;2、减小方法的规模;3、保持方法的一致性;4、把策略与实现

25、分开;5、全面覆盖;6、尽量不使用全局信息;7、利用继承机制。 提高可扩充性:1、封装实现策略;2、不要用一个方法遍历多条关联链;3、避免使用多分支语句;4、精心确定公有方法。 提高健壮性:1、预防用户的操作错误;2、检查参数的合法性;3、不要预先确定限制条件;4、先测试后优化。5 测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点? 答: 面向对象的单元测试,最小的可测试单元是封装起来的类和对象。测试面向对象软件时,不能再孤立地测试单个操作,而应该把操作作为类的一部分来测试。 面向对象的集成测试,主要有下述两种不同的策略:1、基于线程的测试。这种策略把响应系统的一个输入或一个事件

26、所需要的那些类集成起来。2、基于使用的测试。 面向对象的确认测试,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出。软件配置管理是在软件整个生命期内管理变化的一组活动。具体地说,这组活动用来:1.标识变化,2.控制变化 3.确保适当实现了变化 4.向需要知道这信息的人报告变化。软件配置管理的目标:使变化更正确且更容易被适应,在必须变化时减少所需花费的工作量。软件配置项:计算机程序;描述计算机程序的文档;数据。基线:已经通过了正式复审的规格说明书或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。软件配置管理5任务:标识、版本控制、变化控制、配置审计和报告。状态报告:1.发生了什么事?2.谁做这件事?3.这件事什么时候发生?4.它将影响哪些事物?能力成熟度模型(capability maturity model ,CMM)是用于评价软件机构的软件过程能力成熟度的模型。能力成熟度5个等级:1级:初始级。2级:可重复级。3级:已定义级。4级:已管理级。5级:优化级。12 CMM 的基本思想是什么?为什么要把能力成熟度划分成5 个等级? 答:CMM的基本思想是,由于问题是由我们管理软件过程的方法不当引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量. 把能力成熟度划分成5 个等级的原因是:对软件的改进不可能一蹴而就

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁