还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第一章软件工程学概述什么叫软件危机?软件危机的表现有哪些?产生软件危机的原因是什么?答1,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
2.a.对软件开发本钱和进度的估算很不准确“已完成的〃软件系统不满意的现象经常发生c.软件产品的质量往往靠不住d.软件常常是不可维护的e.软件通常没有适当的文档资料f.软件本钱在计算机系统总本钱中所占的比例逐年上升g.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
3.客观软件本身特点逻辑部件缺乏“可见性〃;硬件常有通用部件规模庞大管理和控制开发过程困难主观不正确的开发方法无视需求分析错误认为软件开发二程序编写轻视软件维护什么是软件工程?它有哪些本质特性?怎么样用软件工程消除软件危机?答
1.用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法
2.a.软件工程关注于大型程序的构造b.软件工程的中心课题是控制复杂性c.软件经常变化d.开发软件的效率非常重要e.和谐地合作是开发软件的关键f.软件必须有效地支持它的用户g.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品
3.a.对软件有一个正确的认识软件=程序+方法+规则+数据+文档软件开发应该组织良好、管理严密、协调配合推广使用成功的技术和方法应用开发和使用好的软件工具b.为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科什么是软件工程三要素?它们之间是什么关系?软件工程的根本原理是什么?答
1.工具,方法,过程
2.方法是完成软件开发的各项任务的技术方法,答复“怎样做〃的问题;工具是运用方法而提供的自动或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤
3.
(1)严格按照方案进行管理;
(2)坚持进行阶段评审;
(3)实行严格的产品控制;
(4)采用现代化的程序设计技术;
(5)结果要能清晰地审查;
(6)开发小组成员的素质要好,数量却不易多;
(7)要成认不断改善软件工程实践的必要性c¥t之汁任241S B=/m第7章实现一.程序设计语言的选择、编码风格(选择)程序设计语言的选择
1.系统用户的要求如果所开发的系统由用户负责维护,用户通常要求用他们熟悉的语言书写程序.
2.可以使用的编译程序:运行目标系统的环境中可以提供的编译程序往往限制了可以选用的语言的范围.
3.可以得到的软件工具:如果某种语言有支持程序开发的软件工具可以利用,则目标系统的实现和验证都变得比较容易
4.工程规模:如果工程规模很庞大,现有的语言又不完全适用,那么设计并实现一种供这个工程工程专用的程序设计语言,可能是一个正确的选择
5.程序员的知识:如果和其他标准不矛盾,那么应该选择一种已经为程序员所熟悉的语言
6.软件可移植性要求:如果目标系统将在几台不同的计算机上运行,或者预期的使用寿命很长,那么选择一种标准化程度高、程序可移植性好的语言就是很重要的
7.软件的应用领域FORTRAN语言特别适合于工程和科学计算COBOL语言适合于商业领域应用C语言和Ada语言适用于系统和实时应用领域LISP语言适用于组合问题领域PROLOG语言适于表达知识和推理编码风格源程序代码的逻辑简明清晰、易读易懂二.软件测试的定义、目的?软件测试的原则?简述软件测试的各个步骤的主要任务?定义为了发现程序中的错误而执行程序的过程目的从用户的角度出发,普遍希望通过软件测试暴露软件中隐臧的错误和缺陷,以考虑是否可接受该产品从软件开发者的角度出发,则希望测试成为说明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用原则
3.测试发现的错误中的80%很可能是由程序中20%的模块造成的问题是怎样找出这些可疑的模块并彻底地测试它们“小规模〃测试开始,并逐步进行“大规模〃测试通常,首先重点测试单个程序模块,然后把测试重点转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误
5.穷举测试是不可能的,所谓穷举测试就是把程序所有可能的执行路径都检查一遍的测试
6.为了到达最正确的测试效果,应该由独立的第三方从事测试工作7,充分注意测试中的群集现象经验说明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比
8.严格执行测试方案,排除测试的随意性
9.妥善保存测试方案,测试用例,出错统计和最终分析报告,为维护提供方便模块测试的目的是保证每个模块作为一个单元能正确运行模块测试通常又称为单元测试在这个测试步骤中所发现的往往是编码和详细设计的错误
2.子系统测试子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试模块相互间的协调和通信是这个测试过程中的主要问题这个步骤着重测试模块的接口把经过测试的子系统装配成一个完整的系统来测试发现的往往是软件设计中的错误,也可能发现需求说明中的错误兼有检测和组装两重含义,通常称为集成测试
4.验收测试验收测试也称为确认测试验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试根本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据系统将来要处理的信息进行测试验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误所谓平行运行就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果这样做的具体目的有如下几点1可以在准生产环境中运行新系统而又不冒风险2用户能有一段熟悉新系统的时间3可以验证用户指南和使用手册之类的文档4能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标三.集成测试中常使用自顶向下集成和自底向上集成两种策略,比较它们的区别?自顶向下可在测试早期实现并验证系统主要功能且不需驱动模块,但是需桩模块自底向上:设计测试用例容易且不需桩模块但是只有到最后程序才能作为一个整体M黑盒测试的优缺点?白盒测试的优缺点?白盒测试优点:迫使测试人员去了解软件的实现;检测代码中的每条路径和分支;揭示隐藏在代码中的错误;对代码的测试进行比较彻底缺点白盒测试投入较大,本钱较高;白盒测试不验证规格的正确性;无法检查代码中遗漏的路径和数据敏感性错误黑盒测试优点对较大的代码单元来说,黑盒测试比白盒测试的效率高;测试人员不需要了解实现得细节,包括特定的编程语言;测试人员和编程人员是相互独立的;从用户的角度进行测试,很容易被接受和理解;有助于暴露任何与闺阁不一致或者歧异的地方;测试用例可以在规格完成后马上进行缺点不能测试程序内部特定部位;如果程序未执行的代码无法发现;没有清晰的和简明的规格,测试用例很难被设计四.掌握白盒测试技术(逻辑覆盖)(重点考查题,详细介绍看书P162T65),设计测试用例(应用题)简介逻辑覆盖是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试适合于白盒测试覆盖程度由弱到强次序是语句覆盖->判定-〉条件-〉判定/条件->条件组合第8章维护一.什么叫软件维护?维护的分类及概念?软件维护在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程
1.诊断和改正错误一一改正性维护
2.为了和变化了的环境(如软硬件升级、新数据库等)适当地配合而修改软件一一适应性维
3.为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件一一完善性维护
4.为了改良未来的可维护性或可靠性,或为了给未来的改良奠定更好的基础而修改软件一一预防性维护二.维护的特点和过程?
三、结构化维护与非结构化维护的比照
2.维护的代价・有形代价费用已上升至总预算的80%;・无形代价占用资源以致延误开发;修改不及时引起用户不满;维护引入新错误,降低了软件质量,等等(影响维护工作量的因素有系统大小;程序设计语言;系统年龄;数据库技术的应用;先进的软件开发技术)
3.维护的问题•别人的程序很难读懂;文档与代码不一致;开发人员往往不参加维护;大多数软件在设计时没有考虑将来的修改过程维护组织,维护报告,维护的事件流,保存维护记录,评价维护活动(具体内容见书P192-194)•说明软件生命周期的划分为几个阶段,每个阶段的根本任务?瀑布模型、原型模型、螺旋模型、增量模型优缺点以及适用范围?•答
1.
1.问题定义问题定义阶段必须答复的关键问题是“要解决的问题是什么〃
2.可行性研究该阶段要答复的关键问题是“上一个阶段所确定的问题是否有行得通的解决方法〃3需求分析a.这个阶段的任务仍然不是具体地解决客户的问题,而是准确地答复“目标系统必须做什么〃这个问题b.这个阶段的另外一项重要任务,是用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明specification4概要设计抵这个阶段的根本任务是,概括地答复“怎样实现目标系统〃b.概要设计的另一项主要任务就是设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系5详细设计a.详细设计阶段的任务就是把解法具体化,也就是答复“应该怎样具体地实现这个系统〃这个关键问题b.这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明6编码和单元测试:这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块7综合测试及相应的调试使软件到达预定的要求8软件维护a.维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要b.通常有四类维护活动改正性维护、适应性维护、完善性维护、预防性维护
2.1瀑布模型优点可强迫开发人员采用标准的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证缺点“瀑布模型是由文档驱动的〃,缺乏灵活性仅通过静态的规格说明很难全面正确地认识动态的软件产品要求用户不经过实践就提出完整准确的需求是不切实际的适用范围由于瀑布模型完全依赖于书面的规格说明,很可能导致最终开发出的软件不能真正满足用户的需要2原型模型:优点克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险;有助于获取用户需求,加强对需求的理解尽早发现软件中的错误支持需求的动态变化缺点所选用的开发技术和工具不一定符合主流的开展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下;适用范围适合于需求动态变化,事先难以确定系统3增量模型优点能在较短的时间内向用户提交可完成局部功能的产品逐步增加产品功能可以使用户有较充裕的时间学习和适应缺点在把每个新的增量构件集成到现有的软件体系结构中时,必须不破坏原来已经开发的产品软件体系结构必须是开放的本身具有矛盾性*面要求开发人员把软件看作一个整体*另一方面要求开发人员把软件看作构件序列,构件间彼此独立4螺旋模型优点有助于获取用户需求,加强对需求的理解尽早发现软件中的错误支持需求的动态变化支持风险分析,可降低或者消除软件开发风险缺点过多的迭代次数会增加开发本钱,延迟提交时间只适合大型软件工程的开发,否则,每个阶段的风险分析将占用很大一局部资源,增加本钱对开发人员的风险分析能力是极大的考验适用范围适合于需求动态变化,事先难以确定并且开发风险较大的系统第2章可行性分析
1.可行性分析的目的?.可行性研究的步骤有哪些从哪些方面进行可行性研究?答
1.用最小的代价,在尽可能短的时间内确定问题是否能够解决
2.1复查系统规模和目标2研究目前正在使用的系统3导出新系统的高层逻辑模型4进一步定义问题55导出和评价供选择的解法6推荐行动方针7草拟开发方案8书写文档提交审查
3.技术可行性使用现有的技术能实现这个系统经济可行性系统的经济效益能否超过开发本钱操作可行性系统的操作方式在这个用户组织内是否行得通•常用的本钱估算方法有哪些?答代码行技术,任务分解技术,自动估计本钱技术•什么是数据流图?其作用是什么?其中的根本符号各表示什么含义?画数据流图的原则有哪些?答
1.软件系统逻辑模型的一种图形数据流图DFD是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的遮信工具数据流图有4种根本符号正方形表示数据的源点或终点;圆角矩形代表变换数据的处理;开口矩形代表数据存储;箭头表示数据流画数据流图的原则有1确定系统的源点和终点2确定系统的输入和输出数据流的关系3保持分解前后输入/输出数据流必须相同父子平衡4尽量简化加工之间的联系5用“自顶向下〃方法,逐层画出数据流图,每张数据流图中加工处理的个数不能超过9个7加减26注意分解速度一般每分解一层增加2-7个加工7在画数据流图时应防止线条交叉,必要时可使用重复的外部项(源点或终点)或数据存储符号8适当的命名,加工处理要编号第3章什么是数据字典?其作用是什么?包含哪些元素?数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合数据字典的作用是在软件分析和设计的过称中给人提供关于数据的描述信息数据字典应该由对以下4类元素的定义组成
(1)数据流
(2)数据流分量(即数据元素)
(3)数据存储
(4)处理考察重点系统流程图、数据流图、数据字典(应用题)第四章总体设计一.需求分析的定义、任务和目的是什么?定义为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求,对需求的深入理解是软件开发获得成功的前提条件任务根本任务是准确答复“系统必须做什么〃需求分析任务综述深入描述软件的功能和性能确定软件设计的约束确定软件同其它系统元素的接口细节定义软件的其它有效性需求目的为了开发出真正满足用户需求的软件产品根本任务是准确答复“系统必须做什么〃二..获取需求的常用方法正式访谈系统分析员将提出一些事先准备好的具体问题非正式访谈系统分析员将提出一些用户可以自由答复的开放性问题,以鼓励被访问人员说出自己的想法根本思想“自顶向下,逐步求精〃抽象和分解3•简易的应用规格说明技术
4.快速建立软件原型三.需求分析的原则
1.必须理解并描述问题的信息域2,必须定义软件应完成的功能
3.必须描述作为外部事件结果的软件行为
4.必须对描述信息、功能和行为的模型进行分解四.考察重点状态转换图、ER图(应用题)第五章•一总体设计的目标是什么?遵循的根本原理有哪些?目的概括的说总体设计的目的就是答复“系统该如何实现这个问题〃通过这个这个阶段的工作将划分出组成系统的物理元素一程序、文件数据库、人工过程和文档等,但每个物理元素仍然处于黑盒级,这些黑盒子里的具体内容将在以后仔细设计根本原理1》抽象抽出本质,忽略细节,分层理解2》模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求3》逐步求精为了能集中精力解决主要问题而尽量推迟对问题细节的考虑4》信息隐蔽和局部化信息隐蔽原理应该这样设计和确定模块,使得一个模块内包含的信息(过程或数据)对于不需要这些信息的模块来说,是不能访问的局部化是把一些关系密切的软件元素物理地放得彼此靠近显然,局部化有助于实现信息隐藏5》模块独立性模块独立是好设计的关键,而设计又是决定软件质量的关键环节模块化程度较高的软件容易编制独立的模块比较容易维护和测试•
2.什么是耦合?有哪几种耦合?什么是内聚?有哪几种内聚?如何增强模块的独立性?耦合:是对一个软件结构内不同模块之间互连程度的度量耦合强弱取决于模块间接口复杂程度,进入或访问一个模块的点,以及通过接口的数据模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性《耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统耦合种类公共耦合几个模块共享一个数据区域特征耦合把整个数据结构作为参数传递而被调用模块只使用其中一局部数据元素时就出现了特征耦合控制耦合一个模块通过传递控制信息来控制另一个模块标记耦合模块间通过参数表传递记录信息,这个记录是某一数据结构的子结构,而不是简单变量数据耦合只有数据在模块之间进行交换,只通过参数传递根本类型的数据非直接耦合两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的非直接耦合的模块独立性最强内聚:标志着一个模块内各个元素彼此结合的紧密程度内聚有七种,由弱到强分别为偶然内聚->逻辑内聚-〉时间内聚->过程内聚->通信内聚-〉顺序内聚->功能内聚增强模块独立性提高模块的内聚程度,减少耦合
3.衡量模块独立性的两个标准是什么?它们各表示什么含义?*高内聚,少耦合;*对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,模块所具有的独立性就越好可以说高内聚低耦合是我们进行软件设计的一贯原则•
4.什么叫模块?什么叫模块化?模块设计时应注意哪些规则?模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求规则高内聚,少耦合
4.影响耦合度的因素有哪些?.降低耦合度的方法有哪些?内容耦合公共耦合特征耦合控制耦合标记耦合数据耦合非直接耦合一内容方法尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合环境的范围,完全不用内容耦合第六章详细设计
1.详细设计的根本目标和任务?详细设计阶段的根部目标是确定应该怎样具体地实现所要求的系统详细设计阶段的任务是要设计出程序的“蓝图〃
2.层次图和层次方框图分别适用于软件工程的那个阶段?并比较它们的区别?层次图和层次方框图不同点
①层次图的形式和第节中介绍的层次方框图形式相同,但是表现的内容却完全不同
②层次图描绘的是软件的结构,层次方框图描绘的是数据结构
③层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系层次方框图矩形框代表数据,连线表示组成关系层次图很适于在自顶向下设计软件的过程中使用层次方框图适用于需求分析阶段.
3.Jackson方法的步骤?Jackson图的优点是什么?三种根本结构Jackson结构化设计方法根本上由下述五个步骤组成1分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构2找出输入数据结构和输出数据结构中有对应关系的数据单元3从描绘数据结构的Jackson图导出描绘程序结构的Jackson图~按照在数据结构图中的层次,在程序结构图的相应层次,为每对有对应关系的数据单元画一个处理框-根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图相应层次分别为它们画上对应的处理框一根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图相应层次分别为它们画上对应的处理框~若在构成顺序结构的元素中出现了重复或选择元素,需在Jackson图中增加一个中间层次的处理框4列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置5用伪码表示程序Jackson图的优点A便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;B形象直观、可读性好C既能表示数据结构也能表示程序结构(因为结构程序设计也只使用上述三种根本结构三种根本结构顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次选择结构选择结构的数据包含两个或多个数据元素,每次按一定的条件从这些数据元素中选择一个使用,具体分为:⑴选择结构,2可选结构A selectcondl BAselectA or cond2B ACendAorcond3DA end重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或屡次构成AA iterimtiKwhilc condB连Aend
4.程序复杂程度的度量方法环形复杂度的计算方法?McCabe方法和Halstead方法McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度环形复杂度的计算方法可以用下述3种方法中的任何一种来计算环形复杂度⑴流图中的区域数等于环形复杂度⑵流图G的环形复杂度VG=E-N+2,其中,E是流图中边的条数,N是结点数⑶流图G的环形复杂度VG=P+1,其中,户是流图中判定结点的数目例如,使用上述任何一种方法,都可以计算出图
6.16所示流图的环形复杂度为
45.说明结构化程序设计的主要思想是什么?结构化设计方法的步骤是什么?结构程序设计的经典定义如下所述“如果一个程序的代码块仅仅通过顺序、选择和循环这3种根本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的〃结构化设计的步骤如下
①评审和细化数据流图;
②确定数据流图的类型;
③把数据流图映射到软件模块结构,设计出模块结构的上层;
④基于数据流图逐步分解高层模块,设计中下层模块;
⑤对模块结构进行优化,得到更为合理的软件结构;
⑥描述模块接口掌握过程设计工具程序流程图,N-S图,PAD图,判定树,判定表(应用题)程序流程图也称为程序框图,程序流程图使用五种根本控制结构是
⑤多情况选择型T1(CASE型)
④后判定型循环
③先判定型循环()DOUNTIL()DO-WHILE盒图(N-S图)根本符号defELSE THENo部分部分DefinitionStatementoIndex循环条件DOUNTIL超循环条件PAD图1—0THEN人BMP-ELSESequential SelectiveLoops。
个人认证
优秀文档
获得点赞 0