版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2013级云计算专业软件工程学期末考试复习大纲一、 第一章软件工程介绍(1) 何为软件?(2) 软件和硬件不同的特性: 软件是设计开发的,而不是传统意义上生产制造的。 在软件不会“磨损”,但存在退化,硬件失效曲线与软件失效曲线对比 整体向着基于构建的模式发展,但多数仍是按客户需求定制的。(3) 软件危机(了解)是引入软件工程的原因(4) 何为软件工程?(IEEE1993的定义):软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。二、 第二章过程综述(1) 软件工程是一种层次化技术,其包括质量关注点、过程、方
2、法和工具。(2) 过程框架定义了若干小的框架活动,为完整的软件开发过程建立了基础。 通用过程框架活动包括沟通、策划、建模、构建和部署五种。 过程框架还包含一些适用于各个软件过程的普适性活动。这样活动主要有软件项目跟踪和控制、风险管理、软件质量保证、正式的技术复审、测量、软件配置管理、可复用管理和工作产品的准备和产生。三、 第三章过程模型(1) 软件过程模型是软件开发全部过程、活动和任务的结构框架,也称软件开发模型或软件生存周期模型。 惯例过程模型(又称传统过程模型、严格过程模型),强调对过程活动和任务的详细定义、识别和应用。它力求实现结构化和有序。 敏捷过程模型提倡弱化软件过程中过于正式的要求
3、,并将自我组织、协作、沟通和可适应性作为主要原则。 惯例软件过程模型主要有瀑布模型、演化过程模型和统一过程模型等类型。(2) 瀑布模型 瀑布模型又被称为经典生命周期,它提出了一个系统的、顺序的软件开发方法。它从用户需求规格说明开始,通过策划、建模、构建和部署的过程,最终提供一个完整的软件并提供持续的技术支持。 瀑布模型存在的问题:l 缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发,实际的项目很少遵守瀑布模型提出的顺序。l 客户必须要有耐心,因为只有在项日接近尾声的时候,他们才能得到可执行的程序。l 开发早期存在的问题往往要到交付使用时才发现,维护代价大。(3) 演化过程模型演化模型是迭
4、代的过程模型,使得软件工程师能够逐步开发出更完整的软件版本。其主要有原型模型和螺旋模型两种。 原型模型的主要特点l 快速制订原型开发的计划、快速建模和快速构建l 原型应交付给客户试用,并收集反馈意见,改进原型 螺旋模型结合了原型的迭代性质和瀑布模型的系统性和可控性特点。随着演进过程的开始,从圆心开始顺势针方向,执行螺旋上的一圈表示的活动。每次演进都要考虑风险,每个演进过程都要标记里程碑。螺旋模型应用在计算机软件的整个生命周期。是开发大型系统的理想方法,可以有效的应对风险。l 螺旋模型的特点:Ø 可应用在计算机软件的整个生命周期Ø 是开发大型系统和软件的理想方法Ø
5、把原型开发作为降低风险的机制(4) 统一过程(UP)是一种“用例驱动、以架构为核心,迭代并却增量”的软件过程。其包括并发进行的起始、细化、构建、转化和生产5个阶段。l 起始阶段包括沟通和策划,定义软件的需求,提出系统的大致框架,并制定开发计划,以保证开发具有迭代和增量的特性。l 细化阶段包括沟通和建模活动。细化阶段扩展了起始阶段定义的用例,并扩展体系结构以包括软件的5种视图:用例模型、分析模型、设计模型、实现模型和部署模型。l 构建阶段于通用软件过程中的构建活动相同,构建采用体系结构模型作为输入,开发系统构建,使最终用户能够操作用例。l 转化阶段包括通用构建活动的后期活动以及部署活动。软件被提
6、交最终用户进行beta测试,并发布支持信息(手册、问题解决指南及安装步骤)。转换阶段结束时,软件增量称为可用的发布版本。l 生产阶段和通用过程的部署活动一致。在该阶段,监控软件持续使用,提供运行环境的支持,提交缺陷报告和变更请求。四、 第四章敏捷视角下的软件过程(1) 敏捷联盟的12条原则(了解即可,注意选择题和判断题) 尽早交付有价值的软件来让顾客满意。 在后期也欢迎变更,利用变更来为客户创造竞争优势。 交付的时间间隔越短越好。 业务人员和开发人员必须天天在一起。 围绕受激励的个人构建项目。 最有效的信息传递方式是面对面交谈。 可工作软件是进度的首要度量标准。 提倡可持续的开发速度。 关注优
7、秀的技能和好的设计。 简单是必要的。 好的架构和设计出自于自组织团队。 每隔一定时间,反省工作,调整行为。(2) 建立敏捷过程的三个关键性假设 提前预测哪些需求是稳定的和哪些需求会变化非常困难。 对很多软件来说,设计和构建是交错进行的。 从制定计划的角度来看,分析、设计、构建和测试并不像我们所设想的那么容易预测。(3) 极限编程(eXtreme Programming, 简称XP)是一种常用的敏捷过程。它使用面向对象方法作为推荐的开发范型。XP包括策划、设计、编码和测试4个框架活动。 策划活动开始于建立一系列描述待开发软件必要特征与功能的“故事”,XP团队成员评估每一个故事并给出以开发周数为度
8、量单位的成本。 设计严格遵循KIS原则,适用简单而不是复杂的表述。鼓励适用CRC卡来组织相关的对象和类,鼓励重构。 编码的一个关键概念是结对编程。两个人面对同一台计算机共同为一个故事开发代码。实施中两个人担当的角色略有不同。 测试。在编码开始之前建立单元测试是XP的关键因素,所建立的单元测试应当适用一个可以自动实施的框架,易于重复执行,这种方式支持代码修复后的回归测试策略。(4) Scrum是一种有效解决时间紧张的、需求变化的和业务关键的项目的敏捷过程。Scrum过程定义了计划会议、每日例会、评审会议和回顾会议四种会议。 Scrum的计划会议l 订出 Sprint 目标和需要完成的Backlo
9、gl 对本次Sprint 的Backlog进行必要的细化和任务分割l 会议的结束后,团队将会决定他们能够交付哪些东西,以及验收的标准 Scrum的每日例会l 团队成员间工作进度的沟通和协调Ø 昨天做了什么Ø 存在什么问题Ø 今天准备做什么l 沟通任务板和燃尽图 Scrum的评审会议l 团队在会议中向最终用户展示这次 Sprint工作成果l 评审检查是否已达到 Sprint 的目标l 团队成员得到反馈,并以之创建或变更 Backlog条目 Scrum的回顾会议l 继续做(保持好的做法)l 停止做(去除错误的做法)l 更好地做(改进有问题的做法)五、 第七章需求工程(
10、1) 需求工程是一个软件工程动作,始于沟通并持续到建模。(2) 需求工程为以下工作提供了良好的机制:理解用户需要什么、分析要求、评估可行性、协商合理的方案、无歧义的详细说明方案、确认规格说明。(3) 需求工程过程通过执行起始、导出、精化、协商、规格说明、确认和管理七个不同的活动来完成。 在起始阶段,软件工程师会询问一些似乎与项目无直接关系的问题,以建立基本的谅解。 导出需求面临范围问题、理解问题和易变问题。导出需求的主要有协同需求收集、质量功能部署和用户场景三种方法。 精化阶段开发精确的技术模型用以说明软件的功能、特征和约束。精化的最终结果是形成一个分析模型,该模型定义了问题的信息域、功能域和
11、行为域。 通过协商过程来调解客户/最终用户提出的过高要求和需求冲突。 规格说明是需求工程师完成的最终工作产品。它将作为软件工程师后续活动的基础,它描述了一个基于计算机系统的功能和特性,以及那些将影响系统开发的约束。 在确认阶段将对需求工程的工作产品进行质量评估。确认需求时需要检查需求模型的一致性、是否有遗漏以及歧义性。正式技术评审是最主要的需求确认机制。 需求管理用于帮助项目组在项目进展中标识、控制和跟踪需求以及变更需求的一组活动。(4) 质量功能部署(QFD)是一种将客户要求转化为软件技术的技术。QFD目的是最大限度的让客户从软件工程中感到满意。它确认三类需求:正常需求、期望需求、令人兴奋的
12、需求。(5) 需求工程导出的工作产品包括七种:必要性和可行性陈述、系统或产品范围的说明、客户/用户及共利益者的列表、系统技术环境的说明、需求列表及每个需求适用的领域限制、一系列适用场景和任何能够更好定义需求的原型。(6) 分析模型应为基于计算机的系统提供必要的信息、功能和行为域的说明。分析模型主要包括基于场景的元素、基于类的元素、行为元素和面向信息流的元素。六、 第八章构建分析模型(1) 分析模型使用文字和图表的综合形式以相对容易理解的方式描绘需求的数据、功能和行为。更重要的是可以更直接的评审它们的正确性、完整性和一致性。(2) 分析模型必须实现的三个主要目标:描述客户需要什么、为软件设计奠定
13、基础、定义在软件完成后可以被确认的一组需求。分析模型在系统描述和设计模型之间建立桥梁。(3) 分析建模的方法主要有面向对象分析和结构化分析两种。前者关注于定义类和影响客户需求的类之间的协作方式。而后者则考虑数据和数据处理的分析建模方法。(4) 基于场景的建模从用户的角度表现系统;面向流的建模在说明数据对象如何通过处理函数进行转换方面提供了指示;基于类的建模定义了对象、属性和关系;行为建模描述了系统状态、类和事件在这些类上的影响。l 基于场景的模型从用户的角度描述软件需求。用例是主要的建模元素,还可以适用活动图说明场景,泳道图显示了处理流如何分配给不同的用户。l 面向流的建模,常常使用DFD(数
14、据流图)。它开始于环境图,结束于模块规格说明。l 在基于类的建模型中,按职责划分可将类分为实体类、控制类和边界类三种。CRC(类-职责-协作)提供了一个简单的方法,可以识别和组织与系统或产品需求相关的类。CRC卡片被分为三部分,顶部写类名,下面左侧列出类的职责,右侧部分列出类的协作关系。l 可以运用UML的状态图和顺序图进行行为建模。七、 第九章设计工程(1) 软件设计是软件工程过程的技术核心,它开始于需求分析和需求建模完成之后。设计模型提供了数据/类设计、体系结构设计、接口设计和构件设计的细节。(2) 软件设计工程中,进行数据/类设计、体系结构设计、接口设计和构件设计的目的 数据/类设计:将
15、分析类模型转化为设计类的实现以及软件实现所要求的数据结构。 体系结构设计:定义软件的主要结构元素之间的联系、可用于达到系统所定义需求的体系结构风格和设计模式以及影响体系结构实现方式的约束。 接口设计:描述软件和协作系统之间、软件和使用人员之间是如何通信的。 构件设计:将软件体系结构的结构元素变换为对软件构件的过程性描述。(3) HP公司开发了软件质量属性FURPS: 功能性(Functionality ):评估程序的特征集和能力、所提交功能的普遍性以及整个系统的安全性。 易用性(Usability ):通过考虑人为因素、整体美感、一致性和文档来评估。 可靠性(Reliability):通过测量
16、故障的频率和严重性、输出结果的精确性、故障平均时间、故障恢复能力和程序的可预见性来评估。 性能(Performance) :度量处理速度、响应时间、资源消耗、吞吐量和效率。 可支持性(Supportability ) :综合了可扩展性、适应性和耐用性三面的能力。(4) 抽象是人类处理复杂问题的基本方法之一,主要有数据抽象和过程抽象两种。(5) 模式(Pattern)是解决某一类问题的方法论,它将解决某类问题的方法总结归纳到理论高度。软件模式主要有分析模式、体系结构模式、设计模式和编码模式(又称习惯用语)四种。(6) 模块化是将软件被划分为独立命名的、可寻址的构件(又被称为模块),把这些构件集成
17、到一起可以满足问题的需求。(7) 信息隐蔽原则建议模块应该具有的特征是:每个模块对其他所有模块都隐蔽自己的设计决策。(8) 通过开发具有“专一”功能和“避免” 与其他模块过多交互的模块,可以实现功能独立。独立性可以使用内聚性(显示模块相关功能的强度)和耦合性(显示模块间的相互依赖性)两条定性的标准评估。(9) 求精是一个细化的过程,它和抽象是互补的概念。(10) 重构是在不改变代码(或设计)的外部行为的前提下,改进软件系统内部结构的过程。通过重构提高模块的内聚性,降低模块间的耦合性,在实施重构前,保证已有足够的测试用例,以在重构之后进行回归测试。(11) 在设计模型通常定义了用户接口类、业务域
18、类、过程类、持久类和系统类五种不同的设计类。良定义设计类的四个特征是完整性与充分性、原始性、高内聚和低耦合。八、 第十章进行体系结构设计(1) 软件体系结构的作用是:分析设计在满足需求方面的有效性、在设计变更相对容易的阶段,考虑体系结构可能的选择方案、降低与软件构造相关联的风险。(2) 体系结构风格是一种加在整个系统设计上的变换,其目的在于为系统的所有的构件建立一个结构。通常分为:以数据为中心的体系结构、数据流体系结构、调用和返回体系结构、面向对象体系结构和层次体系结构五种风格。(3) 传统的结构化设计需要映射变换流和事务流两种数据流到软件体系结构。九、 第十一章构件级设计建模(1) 构件是系
19、统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口。构件级设计定义了数据结构、算法、接口特征和分配给每个软件构件的通信机制。(2) 基于类的构件基本设计原则:(前四个) 开关原则:模块对外延具有开放性,对修改具有封闭性。 LISKOV替换原则(或里氏替换原则):子类可以替换它们的基类。 依赖倒置原则:依赖于抽象,而非具体实现。 接口分离原则:多个用户专用接口比一个通用接口要好。(3) 内聚性意味着构件或者类只封装那些相互关联密切,以及与构件或类自身有密切关系的属性和操作。按从强到弱排序内聚性:功能内聚、分层内聚、通信内聚、顺序内聚、过程内聚、暂时内聚、实用内聚。(4)
20、藕合是类之间彼此联系程度的一种定性度量。按从强到弱排序耦合性:内容藕合、共用耦合、控制耦合、印记耦合、数据耦合、例程调用耦合、类型使用耦合、包含或者导入耦合、外部耦合。(5) 模块的高内聚和低藕合是构件设计建模的重要目标。(6) 传统构件的设计常用表示方法有图形化设计表示(程序流程图、N-S图)、表格式设计表示(决策表:条件、动作、条件组合和处理规则)和程序设计语言(PLD)。十、 第十三章软件测试策略(1) 软件测试策略将软件测试用例的设计方法集成到一系列经周密计划的步骤中去,从而使软件构造成功地完成。任何测试策略都必须包含测试计划、测试用例设计、测试执行以及测试结果数据的收集与评估。(2)
21、 传统软件的测试策略是将测试分为单元测试、集成测试、确认测试和系统测试。 单元测试是针对程序中的模块或构件,主要揭露编码阶段产生的错误。 集成测试针对集成的软件系统,主要揭露设计阶段产生的错误。 确认测试是根据软件需求规约对集成的软件进行确认,主要揭露不符合需求规约的错误。 系统测试是针对基于计算机系统中的软件,以揭露不符合系统工程中对软件要求的错误。(3) 单元测试的主要内容包括:模块接口、局部数据结构、边界条件、所有独立路径和所有错误处理路径。在单元测试中,每个被测模块开发一个驱动(driver)程序和若干个桩(stub)模块。(4) 集成测试通常采用增量方式,其主要有自顶向下集成和自底向
22、上集成方法。 自顶向下集成的优缺点:l 优点:不需要驱动模块;能尽早对程序的主要控制和决策机制进行检验,能较早发现整体性的错误;深度优先的自顶向下集成能较早对某些完整的程序功能进行验证。l 缺点:测试时低层模块用桩模块替代,不能反映真实情况;重要数据不能及时回送到上层模块。 自底向上集成的优缺点:l 优点 :不需要桩模块,所以容易组织测试;将整个程序结构分解成若干个簇,对同一层次的簇可并行进行测试,可提高效率。l 缺点:整体性的错误发现得较晚。(5) 回归测试是对已进行过的测试的子集的重新执行,以确保对程序的改变和修改,没有传播非故意的副作用。回归测试集(已经过测试的子集)包括三种不同类型的测试用例: 能测试软件所有功能的代表性测试用例 专门针对可能会被修改影响的软件功能的附加测试 注重于修改过的软件模块的测试(6) 冒烟测试是一种常用的集成测试方法,它让软件团队频繁地对项目进行评估。冒烟测试提供了下列好处: 降低了集成风险 提高最终产品的质量 简化错误的诊断和修正(7) 测试和测试是确认测试的两种常用方法。 测试是由用户在开发者的场所进行的,软件在开发者对用户的“指导下”进行测试。经测试后的软件称为版软件。 测试是由软件的最终
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全国自考(教育学)模拟试卷19
- 2026年高考化学考前20天冲刺讲义(四)(原卷版)
- 2026届山东省临沂平邑县联考中考语文考前最后一卷含解析
- 会计实习的总结
- 六年级《老人与海鸥》教学设计
- 六年级数学数和数的运算家庭练习题
- 企业托管协议书(9篇)
- 2026 学龄前自闭症社交距离认知课件
- 2026年财产分割协议标准法律
- 河南四市2025-2026学年高三5月质量检测(许济平洛四模)物理+答案
- 6.3 社会主义市场经济体制(教学设计) 2025-2026学年统编版道德与法治八年级下册
- 风湿免疫科临床常用评分量表
- 2026年及未来5年市场数据中国电化学工作站行业发展监测及投资战略咨询报告
- 江苏省南京市2025届中考化学试卷(含答案)
- 检察职能党课:法律监督
- DB35-T 2262-2025 海峡两岸共通 美人茶加工技术规程
- DB5134-T 14-2021 美丽乡村 农村人居环境整治规范
- 矿井供电设计毕业论文
- 《医学免疫学》 课件 第1-7章 免疫学概述- 细胞因子
- 大学校医笔试试题及答案
- 雨课堂在线学堂《社会研究方法》作业单元考核答案
评论
0/150
提交评论