软件工程复习(1).doc_第1页
软件工程复习(1).doc_第2页
软件工程复习(1).doc_第3页
软件工程复习(1).doc_第4页
软件工程复习(1).doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

软件工程单选2*15 判断1*10 过程设计2*10 简答6*4 综合16第一章软件 = 程序 + 数据 + 文档。 数据 = 初始化数据 + 测试数据文档 = 开发文档 + 管理文档。1什么叫程序、软件、软件产品?什么是软件工程? 程序:由个人开发,供个人使用。规模小,功能有限,缺乏良好的用户界面和适当的文档资料 软件:是一系列按照特定顺序组织的计算机数据和指令的集合探索式面向控制流式面向数据结构式面向数据流式面向对象式 软件产品:有多个用户,有良好的用户界面、合适的使用手册和良好的文档支持。经过系统化设计、精心实现和彻底测试过的。不仅包含程序代码,还有所有相关的文件。一组工程师团队开发2编程结构:顺序、选择、循环3软件设计技术的发展第二章1生命周期阶段及描述软件的生命周期是指软件产品会在其一生中所经历的一系列可识别的阶段。第一阶段:可行性研究阶段 随后是:需求分析和说明、设计、编码、测试及维护2为什么使用生命周期?生命周期鼓励以系统化和规范的方式开发软件。当程序由团队开发时,避免导致混乱和项目失败。3瀑布模型(其他的生命周期模型基本上都来自于经典瀑布模型)l 不同的阶段分别是:可行性研究、需求分析和说明、设计、编码和单元测试、集成和系统测试(开发阶段)以及维护(开发阶段完成后开始,工作量大,时间较长)可行性研究需求分析与说明设计编码和单元测试集成与系统测试维护l 特点:n 将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。n 项目管理跨越整个项目期限。l 生命周期中可行性研究和产品测试和交付之间的部分被称为开发部分 l 优势: 有利于大型软件开发过程中人员的组织及管理 有利于软件开发方法和工具的研究与使用 提高了大型软件项目开发的质量和效率。l 劣势: 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险; 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量; 开发时间(周期)十分长 成本高;4其他模型迭代瀑布模型:l 避免了经典瀑布模型不支持处理在任何阶段发生的错误机制的缺点l 不适用于很大型的项目和风险很多的项目可行性研究需求分析与说明设计编码和单元测试集成与系统测试维护优点:1)和使用迭代瀑布模型开发同等的系统相比:成本更低;客户的需求都能够得到准确的定义,技术问题也能得到解决;2) 关注满足客户需求缺点:1) 可能导致系统设计差2) 效率相对较低3) 难以维护原型模型:特点:1)在执行实际软件开发前,建立系统的一个工作原型。原型是系统的一个模拟执行,功能有限、可靠性较低及性能不充分。 2)原型用处:说明输入数据格式、消息、报告以及和客户的交互对话;帮助工程师仔细的检查和产品开发相关的技术问题;第一次就“完全弄好”是不可能的,因此需计划放弃第一个产品,这样后面就能开发出一个好产品。 3)适用于开发团队不清除解决方案时 4)首个阶段是初次需求收集阶段进化模型:(增量模型)特点:l 软件被分为几个模块逐步构建和交付l 开发团队首先开发核心模块优点:l 人员分配灵活l 各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。 缺点:l 需要软件具备开放式的体系结构l 模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。 l螺旋模型:(元模型)特点:l 每个环回代表软件过程的一个阶段(环回数量不固定)l 每个阶段被分为4个部分l 包含所有讨论过的模型l 强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。 优点l 比其他模型灵活l 强调风险分析,降低开发风险l 支持用户需求的动态变化缺点:l 过多的迭代次数会增加开发成本,延迟提交时间l 需要具有相当丰富的风险评估经验和专门知识5模型的比较(参考以上)6如何理解“软件开发的生命周期模型”?为什么在开发一个大型软件产品时遵循一个生命周期模型很重要?(见点1,点2)第三章1项目经理职责 写项目建议书、项目造价估算、时间安排、项目人员、软件过程修改、项目检测和控制、软件组态管理、风险管理、与客户交谈以及经理报告和演讲等。2项目规划包含活动: 1)估计项目的一些基本属性:成本;期限;工作量 规划活动的效率是基于如下估计的准确度的: 2)人力和其他资源的调度 3)人员组织和人员配置计划 4)风险识别、风险分析以及风险减少规划 5)杂项计划,如质量保证计划、组态管理计划等3项目规模估算的度量:l 两种度量被广泛用来估计规模:代码行和功能点 1)代码行(LOC):通过计算已开发程序中源指令的数量估算项目规模,用来注释代码和头部的行都被忽略了。 优点:最简单易用的 缺点:A.对问题的规模给出了一个数值,会因为个人编码风格不同而有很大变化B.好的问题规模策略应考虑到问题的总体复杂性,以及解决这一问题所需的工作量。C.与代码质量和效率没有太大关系 D.阻碍使用更高级别的编程语言、代码重用等 E.会测量程序的词汇复杂程度,但并不处理更重要的而又微妙的逻辑上或结构上的复杂性问题 F.很难根据问题描述准确估算,只有代码被完整开发后才能被准确计算出来 2)功能点(FP):软件产品的规模直接取决于它支持的多种不同的功能或特性。 优点:它可以很容易地直接根据问题说明来估算软件产品的规模4.常见的项目估算方法l 经验估算法:专家判断法、 Delphi成本估算l 启发式方法l 分析估算法5.调度l 为了调度项目活动,软件项目经理需要完成:1)确定完成项目所需的各项任务2)把大型任务划分为小型活动3)确定不通活动之间的依存关系4)建立完成活动所需时间的最有可能估算5)分配资源到活动6)规划不同活动的起止日期7)确定路径。关键路径是决定项目持续时间的活动链l 工作分解结构(WBS):用于把一个给定的任务集递归分解成小活动l 活动网络和关键路径方法MIS问题的活动网络示意图:需求说明15设计数据库部分45设计GUI部分45编码数据库部分45集成与测试120编码GUI部分45撰写用户指南60完成0关键路径方法(CPD):1)完成项目的最小时间(MT)是从开始到结束所有路径的最大值。2)一个任务最早的开始(ES)时间是从开始到这个任务所有路径的最大值。3)最晚的开始(LS)时间是MT与从该任务到结束所有路径最大值的差值。4)一个任务的最早结束时间(EF)是任务的最早开始时间和任务持续时间之和5)一个任务的最晚结束(LF)时间可以通过MT减去从该任务到结束所有路径的最大值得到6)松弛时间(ST)是LS-EF,也可以写成LF-EF。松弛时间(浮动时间)是在一个任务能够影响项目的结束时间之前被推迟的总时间。松弛时间指明了开始和结束任务的灵活性。注意:在关键路径中一般是 没有浮动时间的。7)关键任务是松弛时间为0的任务8)从开始节点到结束节点且仅包含关键任务的路径被称为关键路径。l Gantt图(图P56)1)主要用于把资源分配到活动2)是一种特殊类型的条形图,其中每个横条都代表一个活动l PERT图1) 方块表示活动,箭头表示关系2) 表示了项目估算中的统计变量,假设一个正态分布3) 每个任务都标记有消极、相识、乐观的估算需求说明12,15,20设计数据库部分40,45,60设计GUI部分24,30,38编码数据库部分95,105.120集成与测试100,120,140编码GUI部分38,45,52撰写用户指南50,60,70完成06.风险管理风险是可能在项目进行过程中发生的任何可预知的不利事件或情况。 项目风险:涉及各种形式的预算、进度、人员、资源以及和客户相关的问题风险识别 技术风险:涉及潜在的设计、实现、对接、测试及维护问题,包括需求说明歧义、需求说明不全、需求说明改变、技术的不确定性及技术落后 业务风险:建立一个无人想要的优秀产品的风险、失去预算或人员承诺的风险等 风险成真的可能性(r)风险管理 风险评估 和该风险相关的问题的后果(s): p(风险优先级)=r*s 规避风险:与客户讨论以减少工作范围,奖励工程师以避免人员变更的风险等风险控制 转移风险:涉及获得一个第三方开发的有风险的组件,或购买保险保障等 减少风险:涉及规划遏制风险所造成的损害的方法,如存在一些关键人员可能离开的风险第四章1需求收集和分析需求收集:涉及到采访最终用户和客户,以及研究现有的文档,从而收集到与系统相关的所有可能的信息对已收集需求的分析:主要目的在于清楚的了解客户的确切需求。需识别并解决最重要的需求问题是异常(需求中的歧义)、不一致(需求中任意两条相互抵触)和不完整(需求中有些部分被忽视)的问题。2软件需求规约(SRS)SRS通常以非正式的形式包含了所有的用户需求,开发团队和顾客意见的一个合约的记录SRS文档用户的重要类别及其需要如下:用户、顾客和销售人员,软件开发人员,测试工程师,用户手册作者,项目经理,维护工程师SRS文档记录系统的功能需求、非功能需求、实施目的3功能需求每个高级需求涉及到从用户那里接受一些数据,然后将其转换为所需的回应,再把回应输出给用户。第五章1SRS文档的完成标志设计开始设计阶段的目标就是将SRS文档当作一种输入,并在设计阶段完成完成之前生成的文件2优秀的软件设计特点:1)正确性:能够正确执行系统的所有功能2)可理解性:易于理解3)效率:有效率的4)可维护性:易于更改易于理解具备的特征: 1)对于不同的设计组件,应该使用一致的且有意义的名字 2)设计应该是模块化的(模块化) 3)准确的把模块安排在一个层次中(清楚分解、模块整齐排列)整齐排列的特征:1) 分层次的解决方法2) 低扇出3) 抽象化3内聚和耦合模块分解首要特点:高内聚、低耦合功能独立重要,原因如下:1) 错误隔离:减少错误传递2) 重新使用的范围3) 可理解性:复杂度降低内聚力分类:巧合、逻辑、临时、程序、沟通、顺序、功能耦合的分类:数据、标记、控制、公共、内容4设计方法l 面向功能的设计特点:1)一个系统被视为能够执行一系列的函数 2)系统状态是集中的,并在不同的函数之间共享l 面向对象的设计特点:1)系统被视为是一个对象的集合(即实体)。2)系统的状态在对象中是分散的,并且每个对象可以控制自己的状态信息面向功能的设计和面向对象的设计的区别:1) 不同于面向功能的设计方法,在OOD中基本抽象物并不是sort、display、track之类的功能,而是employee、picture、machine、radar system等真正存在的实体2) 在OOD中,状态信息是在系统对象之间分发的集中共享存储器中及时呈现的3) 如果作为一组他们形成了更高级别的功能,则SA/SD之类的面向功能的技术会把功能组织在一起。面向实体的技术会以在其上操作的数据为基础,把所有的功能组织在一起第六章1结构分析结构分析技术是基于以下基本原则:1) 自上而下的分解方法2) 分治原则每个功能都被独立分解3) 使用数据流程图来图形化表示分析结果2数据流图(P117图)3DFD缺点 1)DFD中有相当多的部分是不精确的。在DFD模型中,通过其标记来判断一个气泡执行的功能,然而一个较短的标记可能无法体现出一个气泡的所有功能 2)DFD并未定义控制方面 3)执行分解到连续级别的方法和分解回到最终级别是高度主观的,取决于分析师的选择和判断。同一问题可能出现多个DFD,且不好取舍 4)对于如何准确的分解一个给定的功能到其子功能,数据流程图技术并未提供任何明确的指导,需主观判断来执行分解4设计审查审查小组由参与设计、执行、测试及维护的成员组成审查设计文档由以下几方面:1) 可追溯性 2)正确性 3)可维护性 4)执行5在面向功能的设计的语境下,你认为“自上而下的分解”这个短语的意思是什么? (主要强调传统的设计方法的基本思想,自上而下,逐步求精,模块分解是其核心)第七章1基本机制:对象、类与实例、继承、消息和方法2OOD的优势: 1)代码和设计复用 2)提高的生产率 3)简便的测试和维护 4)代码与设计更好的可理解性最主要的是提高的生产率,例如:1) 使用预定义类库进行的代码复用2) 继承导致的代码复用3) 更简单的和更直观的抽象,即对于固有复杂性的更优组织类名属性方法()4) 更好的问题分解3五种类型,九种图结构视图:类图、对象图行为视图:序列图、协作图、状态图、活动图实施视图:构件图环境视图:部署图用户视图:用例图类图活动图第八章1面向对象基本思想使用对象、类、继承、封装、消息等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。2什么叫模式模式是在很多应用中重复发生的问题的可复用的解决问题的方案一个模式有四个重要组成部分:1) 问题2) 问题发生的环境3) 解决方案4) 解决方案生效的环境3用例模型 序列图4面向对象的分析(OOA)和面向对象的设计(OOD)之间有什么不同?OOA与OOD是软件工程/过程的两个不同阶段;从技术上说是两个不同层次的技术,前者要求更抽象,能够把问题描述清楚,针对的是需求、问题等,后者在前者的成果基础上要求更具体的设计,强调怎么实现,非常精确第九章1.一个良好用户界面的特征l 学习速度l 使用比喻和直观的命名名称l 一致性l 基于组件的界面l 使用速度l 重新调用的速度l 错误预防l 吸引力l 一致性l 反馈l 对于多个技术级别的支持l 错误回复(撤销命令)l 用户指南和在线帮助2用户指南和在线帮助在线帮助系统、指导消息、错误信息3基于模式的界面与无模式的界面一个基于模式的界面不同集合的命令可以根据系统所处的模式进行调用一个无模式的界面只有一个单一模式,所有的命令在软件操作的整个过程中都可用4图形用户界面(GUI)与基于文本的用户界面1)在一个GUI中,拥有不同信息的多个窗口可以同时显示在用户屏幕上2)GUI中也可能有图标化的信息表示以及象征性的信息操作3)一个GUI通常支持使用一个有吸引力的和用户友好的菜单选择系统进行命令选择4)在一个GUI中,一个指向设备,可以用来发布命令,提高命令发布程序的效率5)在图形显示方面,一个GUI需要有图形运算能力的特殊终端,同时也需要特殊的输入设备5用户界面的种类基于命令语言的界面、基于菜单的界面(活动菜单、弹出菜单、层级菜单)、直接操作界面第十章1.编码编码标准:l 限制使用全局变量的规则。l 不通模块的文件头应先行体现代码内容l 全局变量、局部变量和常量标识符的命名规则 全局变量:以大些字母开头 局部变量:全部由小写字母构成 常量:全部由大写字母构成l 错误返回规范和异常处理机制 编码指南:l 不要使用太艰深或太困难以至于难以理解的编码风格l 避免模糊的副作用l 不要将一个标识符用于多种用途l 代码应有良好的记录l 任何函数的长度都不应超过10行源代码l 不要使用goto语句2.代码复审分为:代码走查和代码检查代码走查:是一种非正式的代码分析技术代码检查:与代码走查相反,其目的在于要发现由于忽略和不正确的编程所导致的一般类型的错误。3.测试目的:识别存在于一个软件产品中所有缺陷,即发现错误。而不是证明没有错误。4.一个软件产品要经历4个级别的测试:单元测试、集成测试、系统测试、验收测试5.黑盒测试 特点:在黑盒测试中,测试用例是根据输入/输出值的检验所设计出来的,并不会根据所需设计或代码的知识。用来确认软件功能的正确性和可操作性。 主要方法:等价类划分、边界值分析、错误推测法、因果图法、场景法6、白盒测试特点:根据所需设计或代码的知识设计出来的。 主要方法: 逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖)、基本路径测试法(路径覆盖)、划分法7.程序分析工具:静态分析工具、动态分析工具8. 黑盒测试和白盒测试之间的区别?黑盒测试:目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性.白盒测试:了解程序结构和处理过程,检查是否所有的结构和路径都是正确的,检查程序的内部动作是否按照设计说明的规定正常进行。9通常大型软件产品在三个不同测试级别进行测试,即单元测试、集成测试和系统测试。为什么不在系统开发完成后再对其进行一个单独彻底的测试,例如,在系统测试中检测该产品的所有缺陷呢?第十一章1. 软件的可靠性概念本质上,软件产品的可靠性代表了其可信赖或可依赖程度,也可被定义为在一段给定时间中该产品能够正确运行的概率;2. 硬件与软件的可靠性(图P237)硬件:故障时由于组件损耗造成,修正错误可以更换或修理出现故障的零件,修复好可靠性保持之前水平。关注稳定性。软件:只有在找到了错误并改变设计或代码后,才会停止出现故障,修复好可靠性会增高或降低。关注提升可靠性。3. 软件质量(优质软件的几个质量因素)可移动性、可用性、可复用性、正确性、可维护性4. SEI能力成熟度模型(CMM)把软件开发企业分为5个成熟度级别:CMM级别重点关键过程域基本级能胜任的人重复级(可重复级)项目管理软件项目规划、软件配置管理确定级(已定义级)过程的定义过程定义、培训项目、同行评议管理级产品和过程质量定量的过程度量、软件质量管理优化级过程连续改进缺陷预防、过程变更管理和技术变更管理5. ISO和SEI/CMM的比较1) ISO 9000是一个由国际标准组织颁布的,SEI CMM供内部使用2) SEI CMM专为软件产业特别开发出来的,可以处理很多仅和软件产业相关的问题3) SEI CMM超出了质量保障的范围,会为组织做好准备以最终达成TQM,ISO 9001目标是第三级别的SEI CMM模型4) SEI CMM模型提供了一个关键过程域(KPA)的列表,提供了逐渐取得质量提升的方式6. 指出使测量软件可靠性比测量硬件可靠性更加困难的因素大多数硬件故障是由于组件损耗造成的,要修正硬件错误我们可以更换或修理出现故障的零件。就软件而言,只有在找到错误并改变设计或代码后它才会停止出现故障。鉴于此当硬件修复好之后,它的可靠性还是在故障发生之前的水平;而软件故障修复好之后,它的可靠性则会增加或降低。从另一个角度来看硬件可靠性研究所关注的是稳定性,而软件可靠性研究的目的在于提高可靠性。第十二章理解CASE工具和 CASE环境?1计算机辅助软件工程(CASE)的概念、范围、环境概念:

温馨提示

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

评论

0/150

提交评论