软件工程复习资料--张海藩_第1页
软件工程复习资料--张海藩_第2页
软件工程复习资料--张海藩_第3页
软件工程复习资料--张海藩_第4页
软件工程复习资料--张海藩_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程复习提纲第一章1.软件危机包含两方面的问题:1) 如何开发软件,以满足对软件日益增长的需求2) 如何维护数量不断膨胀的已有软件。2.软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶 段。软件定义划分为:问题定义、可行性研究、需求分析 软件开发划分为:总体设计、详细设计、编码和单元 测试、综合测试。这8个阶段每个阶段的基本任务是什么?3.软件过程的各种模型:瀑布模型(文档驱动模型),快速原型模型,增量模型,螺旋模型(风险驱动的模型),喷泉模型(适用于面向对象软件开发),Rational 统一过程,敏捷过程和极限编程,微软过程。各模型的基本特点(描述

2、出过程的特点能识别出是哪 种过程模型)4.软件工程的基本原理:1) 用分阶段的生命周期计划严格管理2) 坚持进行阶段评审3) 实行严格的产品控制4) 采用现代程序设计技术5) 结果应能清楚地审查6) 开发小组的人员应该少而精7) 承认不断改进软件工程实践的必要性。第二章5.可行性研究,应该至少从三个方面研究每种解法的可 行性:技术可行性、经济可行性、操作可行性。6.可行性研究的目的是用最小的代价在尽可能短的时 间内确定问题是否能够解决。7.可行性研究的过程包括哪些主要步骤?1) 复查系统规模和目标2) 研究目前正在使用的系统3) 导出新系统的高层逻辑模型4) 进一步定义问题5) 导出和评价供选

3、择的解法6) 推荐行动方针7) 草拟开发计划8.数据流图是描绘系统逻辑功能的图形表示,掌握数据 流图的基本符号和附加符号,会用数据流图描绘系统 逻辑功能。9.数据字典是关于数据的信息的集合,也就是对数据流 图中包含的所有元素的定义的集合。定义数据的方 法。10. 数据流图和数据字典共同构成了系统的逻辑模型。11. 货币时间价值的公式:F=P(1+i第三章12. 与用户沟通获取需求的方法有哪些?访谈,面向数据流自顶向下求精,简易的应用规格说 明技术,快速建立软件原型13. 软件需求规格说明书是需求分析阶段得出的最主要 文档。14. 会画实体-联系图(E-R图):实体、属性、联系15. 状态转换图

4、,会看,明白其含义16. 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。会画层次方框图。17. Warnier图也用树形结构描绘信息,但是比层次方框图提供更丰富的描绘手段,会看Warnier图,明白其含义。18. IPO图是输入、处理、输出图的简称,它能够方便的 描绘输入数据、对数据的处理和输出数据之间的关 系。改进的IPO图。第五章19. 软件设计过程中应该遵循的基本原理:模块化、抽象、逐步求精、信息隐藏与局部化、模块独立。1) 模块化:把程序划分成独立命名且可独立访问的 模块,每个模块完成一个子功能,由这些模块集 成起来构成一个整体,可完成指定的功能,满足 用户的需求。2)

5、 抽象:抽出事物的本质特征而暂时不考虑它们的 细节。3) 逐步求精:为了解决主要问题而推迟对问题细节 的考虑,是一种把一个时期内要解决的问题按优 先级排序的技术。4) 信息隐藏和局部化:信息隐藏指的是一个模块包 含的信息对不需要这些信息的模块来说是不能访 问的。局部化指把关系密切的软件元素物理地放 得彼此靠近。5) 模块独立:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,可做到模块独立。可用内聚和耦合来衡量模块的独立程度。20. 模块独立程度可以用内聚和耦合两个定性标准度量。耦合衡量不同模块彼此间互相依赖的紧密程度;内聚 _衡量一个模块内部各个元素彼此结合的紧密程度。21. 有哪

6、些种类的耦合?各有什么特点?耦合种类:数据耦合,控制耦合,特征耦合,公共环 境耦合,内容耦合。有关使用耦合的设计原则:尽量使用数据耦合,少用 控制耦合和特征耦合,限制公共环境耦合的范围,完 全不用内容耦合。22. 内聚分为高内聚、中内聚、低内聚。各有哪几种?各 有什么特点?偶然内聚、逻辑内聚、时间内聚是低内聚过程内聚、通信内聚是中内聚顺序内聚、功能内聚是高内聚23. 总体设计中用于改进软件设计提高软件质量的启发性规则:1) 改进软件结构提高模块独立性2) 模块规模应该适中3) 深度、宽度、扇出和扇入都应适当4) 模块的作用域应该在控制域之内5) 力争降低模块接口的复杂程度6) 设计单入口单出口

7、的模块7) 模块功能应该可以预测上题中深度、宽度、扇入、扇出的含义层次图用来描绘软件的层次结构,层次图中一个矩形 框代表一个模块,方框间的连线表示调用关系。会画 层次图。HIPO图是“层次图加输入/处理/输出图”的英文缩写, 会画HIPO图。结构图是描绘软件结构的图形工具,图中一个方框代 表一个模块,框内注明模块的名字或主要功能;方框 之间的箭头表示模块的调用关系。会画结构图。结构化程序设计三种基本控制结构是:顺序、选择、循环掌握过程设计的几种工具:程序流程图、盒图(N-S图)、PAD图、判定表、判定树、过程设计语言(伪码, 这个要能看懂)。会画流图,能够用三种方法计算程序环形复杂度。第七章选

8、择程序设计语言时应该尽量选用理想的高级语言, 但是实际选取语言时不能仅仅使用理论上的标准,还 必须同时考虑实用方面的各种限制。软件测试是为了发现程序中的错误而执行程序的过程。G.Myers给出了一些关于测试的规则,也可以看做是 测试的目标或定义:1) 测试是为了发现程序中的错误而执行程序的过程。2) 好的测试方案是极可能发现迄今为止尚未发现的 错误的测试方案。3) 成功的测试是发现了至今为止尚未发现的错误的 测试。大型软件系统的测试过程基本上由下述几个步骤组 成:模块测试(单元测试),子系统测试、系统测试(系统测试与子系统测试一起称为集成测试)、验收测试、平行运行。各步骤的含义。软件测试准则:

9、1) 所有测试都应该追溯到用户需求2) 应该远在测试开始之前就制定出测试计划3) 把Pareto原理应用到软件测试中(80%的错误出现在20%的模块中,因此应该重点测试它们)。4) 应该从小规模测试开始,并逐步进行大规模测试。5) 穷举测试是不可能的,因此必须精心设计测试方 案,才有可能充分覆盖程序逻辑并使程序达到所要求的可靠性。35. 测试方法分为黑盒测试(又称功能测试)和白盒测试(又称结构测试)两种。36. 集成测试可以有非渐增式测试方法和渐增式测试方 法,渐增式测试分为自顶向下和自底向上两种集成策 略。它们各表示什么含义。37. 逻辑覆盖是对一系列测试过程的总称,主要的覆盖标准有:语句覆

10、盖、判定覆盖、条件覆盖、判定/条件覆 盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。每 种覆盖是什么含义。会用前5种覆盖标准设计测试用例。38. 会用基本路径测试技术设计测试用例39. 会写条件测试中的条件约束集。40. 理解结构化程序中的简单循环、嵌套循环和串接循环 应该如何进行循环测试。41. 理解等价类划分和边界值分析两种黑盒测试技术。42. 理解调试的定义及过程。调试是在测试发现错误之后 排除错误的过程。43. 理解估算程序中错误总数的两种方法:植入错误法和 分别测试法。第八章44. 软件维护主要包括改正性维护、适应性维护、完善性 维护、预防性维护45. 软件维护过程包括哪些活动?1)

11、建立维护组织2) 确定报告和评价过程(维护报告)3) 明确维护的事件流(规定一个标准化的事件序列)4) 保存维护记录5) 评价维护活动46. 决定软件可维护性的因素:可理解性、可测试性、可 _ 修改性、可移植性、可重用性。47. 软件系统的文档分为用户文档和系统文档两类。用户 文档主要描述系统功能和使用方法,并不关心这些功 能是怎样实现的;系统文档描述系统设计、实现和测 试等各方面的内容。第九章48. 面向对象方法学的要点:对象、类、继承、通过传递 消息互相联系。具体解释如下:1) 认为客观世界是由各种对象组成的,软件中任何 元素都是对象,复杂对象由简单对象组合而成。2) 把所有对象都划分成对

12、象类(class ),每个对象 类都定义了一组数据和方法。3) 按照子类(或称为派生类)与父类(或称为基类) 的关系,把若干个对象类组成一个层次结构的系 统。下层可继承上层的特性。4) 对象彼此之间仅能通过传递消息互相联系。对象有封装性,私有信息不能被外界直接访问。49. 面向对象方法包括的基本概念:对象、类、实例、消 息、方法、属性、封装、继承、多态性、重载。以及24.25.26.27.28.29.30.31.32.33.34.各概念的含义。50. 用面向对象方法开发软件,通常需要建立三种形式的 模型:描述系统数据结构的对象模型;描述系统控制 结构的动态模型和描述系统功能的功能模型。51.

13、类图是建立对象模型的工具。类图的基本符号,尤其是定义类图的符号。类图中表示关系的符号:关联(包括限定关联)、聚集(包括共享聚集和组合聚集)、泛 化(包括普通泛化和受限泛化,受限泛化的约束有多重、不相交、完全、不完全)、依赖、细化。能够用 类图建立对象模型。52. 用例图的作用和包含的模型元素:用例图是进行需求分析和建立功能模型的强有力工具,用用例图建立起来的系统模型称为用例模型。使用用例模型代替传统的功能说明往往能够更好的获取用户需 求,它回答的问题是:“系统应该为每个(或每类)用户 做什么”。用例图包含的模型元素有:系统、行为者、用例、用例之间的关系。第十三章53. 估算软件规模的两种常用的

14、度量标准为:代码行、功 _ 能点。54. 制定进度计划的工具有:Gantt图、工程网络。理解这两种工具,能看懂,理解其中的一些关键概念,例 如最早时刻、最迟时刻。55. 关键路径:工程网络中最早时刻和最迟时刻相同的事 件定义了关键路径。关键路径上的事件(关键事件) 必须准时发生,组成关键路径的作业(关键作业)的 实际持续时间不能超过估计的持续时间,否则工程就 不能准时结束。56. 什么是机动时间?作业的机动时间=作业结束事件的最迟时间-作业开始事件的最早时间-作业持续时间。57. 民主制程序员组、主程序员组和现代程序员组的特 点。58. 能力成熟度模型的 5个等级为:初始级、可重复级、 已定义

15、级、已管理级、优化级。各级的特点是什么?注意考试要求:1.答应用题时,一定不能只写最后结果,要把产生这个结果的原因写清楚。 比如,如果回答一个要求你用逻辑覆 盖法中的分支覆盖写测试用例的题目,一定不能只把测试用例写出来,还要写出该测试用例是覆盖哪个分支的。因为这样的题目正确答案往往不止一个,如果不写清楚产生结果的原因的话,考试不给分,切记!2.题目都写在答题纸上,标清题号,填空题注意填空的 先后顺序。软件工程概论1、软件危机定义:软件危机是指在计算机软件的开发和 维护过程中所遇到的一系列严重问题。2、 软件危机的两个主要问题:如何开发软件,以满足对 软件日益增长的需求;如何维护数量不断膨胀的已

16、有软 件。3、 软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对已完成的软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上 升。(7) 软件开发生产率提高的速度,远远跟不上计算机应用 迅速普及深入的趋势。4、 根据软件危机的典型表现,分析软件危机案例:传统工业中知名的生产方式可算是芋工作坊式”生产方式。过去的一段时间里,甚至到现在,中国软件业中还 有一部分公司的开发方式与之类似。公正地说,以此方式还是成就了好多成功的应用开发项目,

17、甚至可以说此法支撑起了软件开发的初期事业。但是,在我们的作坊”里还有太多的项目失败, 例如开发周期的不可控制、项目结果为用户所不认可、项目最终的严重亏损, 这种失败的惨痛 出乎我们的意料,以至于我们无所适从。再加上技术人员、 资金严重匮乏的困扰,软件开发管理举步维艰。你认为 软件就是程序”这一个观点正确吗?如果不 正确,请批驳之。1.请从以下几个方面结合自己的经验实例加以论述。软件就是程序的观点是不正确的,因为软件=程序+文档+数据。(1 )文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用。(2) 在软件开发的每一个阶段都应有相应的文档。它是 开发人员与用户以及开发人员

18、与项目管理人员之间交流的媒介。(3)文档是软件在不同阶段的表现形式。(4)程序与文档必须一致,文档才有价值。(5)文档质量直接决定软件质量的高低。(6) 文档也是软件测试和维护的依据。在没有文档或文 档不全的情况下对大型软件进行测试与维护是不可思议的事情。(7)文档是软件可重用的依据。5、 软件工程定义:软件工程是指导计算机软件开发和维 护的一门工程学科。 采用工程的概念、 原理、技术和方法 来开发与维护软件,把经过时间考验而证明正确的管理技 术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。6、 软件工程的基本原理,案例分析(严格管理

19、,阶段评 审、审查和 brooks原则)某公司开发一个企业信息化项目,随着项目的进展,该项目经理发现项目进度没有按照计划在进展,于是开始计划招聘相关人员,但是由于特殊原因, 没有招到理想的人 员,没有办法只能降低要求招聘,新员工到来后,项目经理发现项目进展反而更慢, 该经理百思不得其解。 请用软 件工程基本原理分析问题。软件开发不同于传统的机械制造,人多不见得力量大。如果给落后于计划的项目增加新人,可能会更加延误项目。因为新人会产生很多新的错误,使项目混乱,并且原有的开发人员向新人解释工作和交流思想都要花费时 间,使实际的开发时间更少, 所以制定恰如其分的项目计 划是很重要的。7、 软件工程方

20、法学的三要素:方法、工具和过程。_8、 软件生命周期(概念、三时期,八阶段)软件生命周期由软件定义、软件开发和运行维护(也称 为软件维护)3个时期组成。软件定义时期通常进一步划分成 3个阶段,即问题定 义、可行性研究和需求分析。1问题定义2可行性研究3需求分析4总体设计5详细设 计6编码和单元测试 7综合测试8软件维护9、 有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。 对否?请解释你的回答。对,10、软件过程,案例分析:中华信息系统开发公司的软件产品以开发实验型的新软件为主。用瀑布模型进行软件开 发已经有近十年了,并取得了一些成功。若你作为一名管 理员刚加入该公司,你认

21、为快速原型法对公司的软件开发 更加优越,请向公司副总裁写一份报告阐明你的理由,切记:副总裁不喜欢报告长度超过300字。快速原型:所谓快速原型是快速建立起来的可以在计算机上运 行的程序,它所能完成的功能往往是最终产品能完成的功 能的一个子集。快速原型模型的第一步是快速建立一个能 反映用户主要需求的原型系统,让用户在计算机上试用 它,通过实践来了解目标系统的概貌 瀑布模型:特点:阶段的顺序性和依赖性(规范化)推迟实现的观点(系统化)质量保证(阶段评审)存在问题:不适合需求模糊的系统(需求的迷糊性和不确定性), 适用于操作系统、编译系统、数据库管理系统等系统软件 的开发11、试论软件工程化思想在软件

22、开发过程中的重要性。论述要点:在软件工程思想出现之前,人们通常把软 件等同于程序,认为软件开发就是程序设计。致使计算机 软件的开发和维护出现一系列的问题,软件开发常常失 败,从而导致软件危机的出现。例如:(1)对软件开发成本和进度的估计常常不准确;(2)用户对已完成”的软件常常不满意;(3)软件产品的质量往往靠不住;(4)软件的可维护性也很差;(5)软件通常没有文档资料;(6)软件成本在计算机系统的总成本中的比例逐年上升。 解决软件危机问题的过程中,便出现了软件工程化思想, 人们逐渐地把软件工程化思想应用于软件开发过程中,使得软件开发的成本相对下降,并能得到有效控制,软件的开发进度可以得到预测

23、,所开发的软件的质量稳步提高。 人们逐步认识到,软件不仅仅是程序, 而是程序、文档和 数据的一个集合体,文档在软件开发的过程中起着相当重 要的作用。人们按照软件工程化的思想把软件开发分为不同的阶 段,每一个阶段都完成确定的任务,对每个阶段所完成的 工作都可以进行评审,使得软件开发的可管理性可大大增 强,。对任何一个产品来说, 质量都是第一位的,软件工程 化思想的目的就是开发出高质量的软件系统。而事实证 明,只有在软件开发过程中运用软件工程化思想才能开发 出高质量的软件系统;否则只能导致软件开发的失败。可行性分析1、可行性研究的目的:在明确了所要研究问题定义之后, 分析员应该在明确目标系统所有限

24、制和约束的前提下,去确定该问题是否值得去解决。2、可行性研究实质:技术可行性、经济可行性、操作可行性4、如何做可行性研究(结合案例分析)5、系统流程图的定义和作用可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁。系统流程图是描绘物理系统的 传统工具,它的基本思想是用图形符号以黑盒子形式描绘 系统里面的每个部件(程序、文件、数据库、表格、人工 过程等)。系统流程图表达的是部件的信息流程,而不是 对信息进行加工处理的控制过程。在可行性研究过程中, 利用系统流程图来描述所建议系统的物理模型。6、数据流程图的定义和作用:数据流程图有两个特征: 抽象性和概括性。抽象性指的是数据流

25、程图把具体的组织机构、工作场 所、物质流都去掉,只剩下信息和数据存储、流动、使用 以及加工情况。概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体7、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件。它从信息 传递和加工的角度,以图形的方式刻画数据流从输入到输 出的移动变换过程,同时可以按自顶向下、 逐步分解的方 法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机 制,从而可以建立起系统或软件的功能模型。8、数据流程图的组成:外部实体(外部实体是指系统之 外的人或单位,它们和本系统有信息传递关系)数据流, 处理、数

26、据存储。如何绘制数据流程图(1) 识别系统的输入和输出,画出顶层图(2) 画系统内部的数据流、加工与文件,画出一级细化图(3) 加工的进一步分解,画出二级细化图(4) 其它注意事项8、数据流程图的注意点1、每个处理都必须有流入的数据流和流出的数据流, 如果没有,是错误的。(数据守恒)2、每个数据存储应该有流入的数据流和流出的数据 流,如果缺了一种,是 Warning的;缺两种就错了。3、 数据流只能在处理与处理、数据存储或者外部实体 之间流动。、数据存储到数据存储、外部实提到外部实体、 外部实提到数据存储之间的数据流都是错误的。4、 一个处理可以细分成多个子处理,分成若干个层 次(均匀分解)5

27、、良好命名9、数据字典1. 数据字典是在数据流程图的基础上, 对数据流程图 中的各个元素进行详细的定义与描述, 起到对数据流程图 进行补充说明的作用。2 .数据字典的内容包括: 数据项、数据结构、数据流、 数据存贮、处理逻辑和外部实体。10、可行性分析的结果需求分析1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求, 甚至还提出了一些可行的方案, 但是,许多细节被忽略了, 在最终目标系统中是不能忽略、遗漏任何一个微小细节 的,所以,可行性研究不能代替需求分析。2、需求分析的任务需求分析的主要任务不是确定系统如何完成它的具体 工作,而是确定系统必须完成哪些工作,在用户的参与下提出

28、目标系统的完整、准确、清晰、具体的实际要求,软 件应完成的具体功能和性能, 确定软件设计受到的限制及 软件同其它系统的接口细节,描述软件用到的数据形式, 逐步细化到详细定义,并为软件验收和质量评价提供依据3、如何做需求分析(1 )确定被开发系统的综合要求:系统分析员与用户共 同讨论,澄清模糊要求,删除做不到的要求, 改正错误的 要求,确定具体的功能要求和性能要求。女口:精确度要求,运行要求,软硬件限定条件要求,出错率限定要求,文件使用权限要求与读写保护要求,资源使用要求,运行维护成本消耗要求等;(2) 分析系统信息,抽象出系统的数据要求:通过系统 的调查分析,由系统的信息流归纳、 汇集,抽象出

29、系统的 数据模型(ER图),包括数据的组成元素、数据间的逻辑 关系、数据的输入、输出、存储的形式及数据结构关系等;(3 )由描述的系统问题结构导出系统的目标逻辑模型: 利用软件需求工具和数据流分析方法导出系统的目标逻 辑模型(数据流程图)。如:利用结构化分析工具、数据 流程图进行描述和表达;功能模型和行为模型(4) 根据系统实际需求审定和修正软件项目的开发计划:一般可由用户、开发方、专家组成的小组对项目预算、开发成本估计、计划安排、进度安排、人员和资源安排进行 审定和修正,看其是否一致,是否符合软件的实际认定范 围,确定出切实可行的开发计划;(5) 审定系统需求分析的正确性:利用原型、需求分析

30、 验证工具、或人工的方法进行审定;(6) 提交软件需求规格说明书,作为系统的开发和验收 的依据。4、需求分析的难点(1) 问题空间理解(2) 人与人之间的通信(3) 需求的不断变化5、 ER图:可以把实体-联系图简称为ER图,相应地可 把用ER图描绘的数据模型称为 ER模型。ER图中包含了实体(即数据对象卜关系和属性等3种 基本成分,通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。6、状态转换图:指明了作为外部事件结果的系统行为。为此,状态转换图描绘了系统的各种行为模式(称为 状态”)和在不同状态间转换

31、的方式。 状态转换图是行为建模的基 础。7、软件需求的验证:需求分析阶段的工作结果是开发软 件系统的重要基础,大量统计数字表明,软件系统中15% 的错误起源于错误的需求。为了提高软件质量,确保软件 开发成功,降低软件开发成本, 一旦对目标系统提出一组 要求之后,必须严格验证这些需求的正确性。一般说来,应该从下述4个方面进行验证:(1) 一致性所有需求必须是一致的,任何一条需求 不能和其他需求互相矛盾。(2) 完整性需求必须是完整的,规格说明书应该包 括用户需要的每一个功能或性能。(3) 现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。 对硬件技术的进步可以做些 预测,对软件技

32、术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。(4) 有效性必须证明需求是正确有效的,确实能解 决用户面对的问题。8、利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的 工具有(A )。供选择的答案:A.数据流图B.数据词典 C.结构化英语 D.判定表与判定树在结构化分析方法中用状态 一迁移图表达系统或对象的 行为。在状态一迁移图中,由一个状态和一个事件所决定 的下一状态可能会有(A )个。供选择的答案 A. 1 B. 2 C.多个 D.不确定 在结构化分析方法中用实体 一关系图表达系统中的对象 及其关系。在实体一关系图中,表达对象的实例之间的关 联

33、有三种类型:一对一联系、(B )联系、多对多联系。供选择的答案:A.多对一 B. 一对多分析:使用实体一关系图,可以建立系统中各个数据对象 及对象之间的关系。对象的实例间的关联称为基数”共有3种类型的基数:一对一,一对多,多对多。它反映了 现实世界中实体之间的联系,多对一的情况可以归入一对多的关联中去。在软件需求分析时,首先建立当前系统的物理模型,再根据物理模型建立当前系统的逻辑模型。试问:什么是当前系统?当前系统的物理模型与逻辑模型有什么差 别?所谓当前系统可能是需要改进的某个已在计算机上运行的数据处理系统,也可能是一个人工的数据处理过程。当前系统的物理模型客观地反映当前系统实际的工作情况。

34、 但在物理模型中有许多物理的因素,随着分析工作的深 入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的因素, 去掉那些非本质的因素即可获得反映系统本质的逻辑模 型。所以当前系统的逻辑模型是从当前系统的物理模型抽 象出来的。需求分析的结果总体设计1、 总体设计的目的: 总体设计的基本目的就是回答概括地说,系统应该如何实现 ? ”这个问题,因此,总体设计又 称为概要设计或初步设计。1、面向结构设计(SD)2、面向对象设计(OOD)2、总体设计的阶段组成: 两个主要阶段(1)系统设计阶段, 确定系统的具体实现方案;(2)结构设计阶段,确定软件结构3、设计原

35、理分析(模块化,在模块化程序设计中,按功 能划分模块的原则是,模块化和软件成本关系)模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成 一个整体,可以完成指定的功能满足用户的需求模块化的根据:把复杂的问题分解成许多容易解决的小 问题,原来的问题也就容易解决了 模块化和软件成本关系:根据总成本曲线,每个程序都 相应地有一个最适当的模块数目 M,使得系统的开发成本 最小.为什么使用模块:复杂问题简单化,降低成本抽象的概念:抽出事务的本质特性而暂时不考虑它们 的细节.衡量模块独立的两个标准是什么?它们各表示什么含 义?衡量模块的独立性的标准是两个定性的

36、度量标准:耦 合性和内聚性。(1) 耦合性。也称块间联系。指软件系统结构中各模块 间相互联系紧密程度的一种度量。模块之间联系越紧密, 其耦合性就越强,模块的独立性则越差。模块间耦合高低 取决于模块间接口的复杂性、调用的方式及传递的信息。(2) 内聚性。又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就越高。耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合, 提高模块的 独立性,为设计高质量的软件结构奠定基础。4、启发规则(案例分析)详细设计1、 详细设计

37、目的:对模块的算法设计和数据结构设计(设 计出的处理过程应该尽可能简明易懂)2、 过程设计的工具,具体有那些:程序流程图,盒图 (NS),PAD(问题分析图)图,判定表,判定树,过程设计语言 (PDL)也称伪码3、Jacks on 设计方法:(1 )分析并确定输入数据和输出数据的逻辑结果,并用 Jackson图描绘这些数据结构.(2 )找出输入数据结构和输出数据结构中有对应关系的 数据单元。(3)从描绘数据结构的Jackson图导出描绘程序结构的 Jackson 图(4)列出所有操作和条件(包括分支条件和循环结束条 件),并且把他们分配到程序结构图的适当位置(5)用伪代码表示程序4、程序复杂程

38、度的定量度量 实现1、实现定义:通常把编码和测试统称为实现2、软件测试定义:为了发现程序中的错误而执行程序的 过程3、软件测试目标:测试是为了发现程序中的错误而执行 程序的过程4、软件测试方法:第一种方法是黑盒测试,第二种方法 是白盒测试5、软件测试步骤:1单元测试(模块测试)2.子系统测试3. 系统测试4.验收测试5.平行运行6、 软件测试和软件生命周期的关系:软件测试在软件生命 周期中横跨两个阶段,编码和单元测试属于软件生命周期 的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期的另一个独立的阶 段。7、白盒测试技术:白盒测试时将程序看作是一个透明的盒子,

39、也就是说测试人员完全了解程序的内部结构和处理 过程。所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试又称为结构测试。8、测试用例:输入的数据和预期的结果9、黑盒测试技术:黑盒测试时完全不考虑程序内部的结 构和处理过程,只按照规格说明书的规定来检查程序是否 符合它的功能要求。黑盒测试是在程序接口进行的测试, 又称为功能测试。10、软件可靠性分析:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件可靠性可以根据与技术系统可靠性接近的平行定义来表示。 我们可以这样来定义软件可靠性:程序故障的频率和临界值。这里,故障是指在许可

40、的运行条件下一个不可接受的 结果或行为。同硬件一样,软件可靠性可以用错误出现和 被纠正的速率来表示。维护1、 软件维护定义:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程2、软件维护分类:改正性维护;适应性维护;完善性维护; 预防性维护3、为什么软件难维护:因为结构化维护与非结构化维护差别巨大;维护的代价高昂;维护的问题很多4、 决定软件课维护性的因素: 可理解性;可测试性;可修改 性;可移植性;可重用性;面向对象方法学引论1、为什么提出面向对象的方法:随着大型软件系统的出 现,在中小型软件系统取得成功的传统的软件工程方法面 临巨大的危机:1、软件生产率无法满足市场需求

41、2、软件复用率不高3、软件维护困难4、软件往往不能真正满足用户需求2、 面向对象方法学的优点:与人类习惯的思维方法一致; 稳定性好;可重用性好;较易开发大型软件产品;可维护性 好3、面向对象的基本概念:对象是由描述该对象属性的数据 以及可以对这些数据施加的所有操作封装在一起构成的 统一体4、模型定义:模型,就是为了理解事物而对事物作出的一 种抽象,是对事物的一种无歧义的书面描述。5、 面向对象开发软件的三种模型以及关系: :对象模型; 动态模型;功能模型;它使用数据结构(对象模型),执行操 作(动态模型),并且完成数据值的变化(功能模型)。关系: 功能模型指明了系统应该 ”做什么”动态模型明确

42、规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体 6、对象模型:描述系统数据结构7、功能模型:描述系统控制结构8、动态模型:描述系统功能面向对象分析1、面向对象开发方法主要包括面向对象分析、面向对象 设计和面向对象实现2、00A的主要任务:是识别出问题域内的类与对象 ,并分 析它们相互间的关系,最终建立起问题域的简洁,精确,可 理解的正确模型3、00A定义就是抽取和整理用户的需求并建立问题域精 确模型的过程4、如何建立对象模型:确定类与对象;确定关联;划分主题; 确定属性;识别集成关系对象模型通常有 5个层次:主题 层;类与对象层;结构层;属性层;服务层5、

43、如何建立动态模型:第一步,是编写典型交互行为的 脚本第二步,从脚本中提取出事件,确定触发每个事件的动作 对象以及接受事件的目标对象,建立事件跟踪图。第三步,排列事件发生的次序, 确定每个对象可能有的状 态及状态间的转换关系,并用状态图描绘它们6、如何建立功能模型:功能模型由一组数据流图或一组 用例图组成。首先画出基本系统模型图(基本系统模型由若干个数据源 点/终点,及一个处理框组成);然后画出功能级数据流图 (把基本系统模型中单一的处理框分解成若干个处理框);最后描述处理框功能面向对象设计1、面向对象设计定义:就是用面向对象观点建立求解域模 型的过程2、设计准则:模块化;抽象;信息隐藏;弱耦合

44、;强内聚;可重 用3、启发规则:1设计结果应该清晰易懂;2 一般-特殊结构的 深度应适当;3设计简单的类;4使用简单的协议;5使用简 单的服务;6把设计变动减至最小4、重用定义:也叫再用或复用,是指同一事物不作修改或稍 加改动就多次重复使用广义的说1知识重用;2方法和标 准的重用3软件成分的重用6、 软件成分的重用级别:1代码重用2设计结构重用3 分析结构重用7、 系统分解:大多数系统的面向对象设计模型 ,在逻辑上 都由4大部分组成,这4大部分对应于组成目标系统的 4 个子系统,它们分别是问题域子系统;人机交互子系统;任 务管理子系统;数据管理子系统面向对象实现、软件项目管理了解就可以软件工程

45、第一章软件工程学概述大纲要求:软件危机的概念、 原因及消除途径;软件工程 的概念、方法学;软件生命周期,主要软件过程的特点。自我解析1:软件危机概念:指在计算机软件的开发和维护过程中 所遇到的一系列严重问题。2:软件危机的原因:1)软件不同于硬件, 它是计算机系统中的逻辑部件而不 是物理部件。 软件缺乏 “可见性” 导致开发过程进展情况 难以衡量、 评价, 管理和控制软件开发过程困难; 后期软 件运行中还要进行软件完善或修改,所以软件维护较难。2)软件不同于一般程序, 它的一个显著的特点是规模庞 大,程序复杂性随程序规模增加呈指数增长。 所以软件需 要多人合作完成, 由于人才水平良莠不齐, 加

46、之涉及许多 技术问题,又缺乏管理,导致开发困难。3)主要原因: 软件本身独有的特点给开发和维护带来了 很多客观困难。 许多软件开发人员对软件开发和维护有不 少糊涂关键, 在时间过程中或多或少的采用了或多多少的 方法和技术。4)对用户要求没有完整准确的认识就匆忙着手编写程序 是许多软件开发失败的主要原因之一。5)在软件的开发和维护关系问题上存在错误的观念。软件维护工作通常是在软件完成之后进行的, 因此是极端艰 难的工作, 需要话费很大的代价。 所以做好软件的定义工 作, 是降低软件成本、 提高软件质量的关键。 在软件生存 周期的不同的结点进行修改是需要付出很大的代价的, 所 以在在早期引入变更,

47、涉及面较小,付出的代价较低。3.软件危机的消除途径:1)应该对计算机软件有一个正确的认识。 (消除软件就 是程序的错误的概念)2)必须充分认识到软件开发不是某种个体劳动的神秘 技巧, 而应该是一种组织良好、 管理严密、 各类人员协同 配合、共同完成的工程项目。3)应该推广使用在时间中总结出来的开发软件的成功 的技术和方法,并且研究探索更好更有效的技巧和方法, 尽快消除在计算机系统早起发展阶段形成的一些错误概 念和做法。4)开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施(方法和 工具),又要有必要的组织管理措施。软件工程正式从管 理和技术两方面研究如何更好的开发和维护计算机软

48、件 的一门新兴学科。4.软件工程的概念: 概括的说,软件工程是指导计算机软件开发和维护的 一门工程学科。 采用工程的概念、 原理、 技术和方法来开 发与维护软件, 把经过时间考研而证明正确的管理技术和 当前能够得到的最好的技术方法结合起来, 以经济地开发 出高质量的软件并有效地维护它,这就是软件工程。5.软件工程的基本原理1)用分阶段的生命周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用现在程序设计技术5)结果应该能清楚地审查6)开发小组的人员应该少而精7)承认不断改进软件工程时间的必要性6.软件工程方法学 概念:通常把在软件生命周期全过程中使用的一整套技 术方法的集合称为方

49、法学( methodology ) ,也成为范型( paradigm )要素: 方法(回答怎样做)工具(支撑环境)过程(框架、工作步骤)软件工程方法学分类: 传统方法学 (又称: 生命周期 方法或结构化范型)和面向对象方法学7.软件生命周期 概念:软件生命周期是软件的产生直到报废的生命周 期。周期内包括:问题定义、可行性研究、需求分析、总 体设计、 详细设计、 编码和单元测试、 综合测试和软件维 护,共 8 个阶段。问题定义:要解决的问题是什么。 (1)可行性研究:对于上一个阶段所确定的问题有 行得通的解决办法吗。(2)需求分析:准确的确定,为了解决这个问题, 目标系统必须做什么。( 3)总体

50、设计: 概括的说, 应该怎样实现目标系统。(4)详细设计:详细设计的任务就是把解决法具体 化,即:怎样的具体地实现这个系统。(5)编码和单元测试:写出正确的、容易理解和容 易维护的程序模块。(6)综合测试:通过各类型的测试使软件达到预定 的要求。(基本测试:集成测试和验收测试)(7)维护 任务:通过各种必要的维护活动使系统持久地满足用 户的需要。分类:改正性维护,适应性维护,完善性维护(所占 比例最高)和预防性维护。8.软件过程及特点1)瀑布模型( 20 世纪 80 年代前) 特点:o阶段间具有顺序行和依赖性 推迟实现的观点 质量保证的观点优点: 强迫开发人员采用规范的方法 (例如, 结构化

51、技术);严格的规定了每个阶段必须提交的文档;要求每 个阶段交出的所有产品都必须经过质量保证小组的仔细 验证。缺点: 可运行软件产品交付客户之前, 用户只能通过文档 来了解软件产品是什么样子的, 在反馈过程中, 不能了解 客户的真正需求,因此开发出的软件不能满足客户需求。2)快速原型模型优点:不带反馈环,基本上都是通过线性顺序开发的。 减少瀑布模型的缺点, 由于用户需求不确定导致的软件开发风险。缺点:所选用的开发技术和工具不一定符合主流的发 展;快速建立起来的系统结构加上连续的修改可能会导致 产品质量低下。3)增量模型(又称渐增模型)优点:O能在较早的时间内向用户提交可完成部分工作 的产品; 逐

52、步增加产品功能可以使用户有较充分的时间 学习和适应新产品,从而减少一个全新的软件可能给客户 组织带来的冲击; 有利于系统的维护。缺点:o由于各个构件是逐渐并入已有的软件 体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。在开发过程中,需求的变化是不可避免的。 增量模型的灵活性可以使其适应这种变化的能力大大优 于瀑布模型和快速原型模型,但也很容易退化为 边做边改 模型,从而使软件过程 的控制失去整体性。 如果增量包之间存在相交的情况且未很好处理,则必须做全盘 系统分析,这种模型将功能细化后分别 开发的方法较适应于需求经常改变的软件开发过程。特点:引进了增量包

53、的概念,无须等到所有需求都出来, 只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的4 )螺旋模型适用范围:内部开发的大型软件项目优点:O1 对可选方案和约束条件的强调有利于已有 软件的重用,也有助于把软件质量作为软件开发的一个重 要目标 减少了过多的测试(浪费资金)或测试不足 (产品故障多)多带来的风险螺旋模型中维护知识模型的另一个周期,在 维护和开发之间并没有本质的区别。缺点:要求开发人员具有丰富的风险评估经验和这方 面的专门知识,否则的话会出现真正的风险。5 )喷泉模型(典型的面向对象的软件

54、模型之一) 优点:提高软件的开发效率,节省开发时间,使用于面向对象的开发过程缺点:开发阶段是重叠的,因此在开发中需要大量 的开发人员,不利于项目的管理, 此外该模型要求严格的 管理文档,使得审核难度加大。6)Rational 统一过程(重量级)=RUP( Rational Unified Process,RUp特点:O1迭代式开发可视化建模 验证软件质量 控制软件变更7 )敏捷过程(例如:极限编程) 价值观声明:01个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文 档O客户合作胜过合同谈判0响应变化胜过遵循计划极限编程(eXtreme Programming,XP)有效的开发实践:O1客

55、户作为开发团队的成员0使用用户素材0短交付周期0验收测试0结对编程0测试驱动开发0集体所有0持续集成0开放的工作空间 及时调整计划0简单的设计 C2重构使用隐喻特点:具有对变化和不确定性的更快速、更敏捷的 反映特性,而且在快速的同时仍然能够保持可持续的开发 速度。1)微软过程(略)第二章可行性研究大纲要求:可行性研究的任务、过程;用符号等表示系 统的流程图与数据流图;数据字典的内容、方法、用途以 及实现过程;成本/效益分析方法。自我解析1可行性研究的任务 根本任务:对以后的行动方针提出建议。其他任务:01进一步分析和澄清问题定义。0导出系统逻辑模型,探索主要解法(即 系统实现方案),探索方面包括:

温馨提示

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

评论

0/150

提交评论