2019华南理工 软件工程 复习提纲

2019华南理工 软件工程 复习提纲

1.软件过程模型的概念理解与类型
软件:指令的集合;数据结构;软件描述信息。
软件工程:基础——过程层;方法——为构建软件提供技术上的解决方法;工具——为过程和方法提供自动化或半自动化的支持。
软件过程:在开发产品或构建系统时,遵循一系列可预测的步骤(路线图)是非常重要的,有助于及时交付高质量的产品。软件开发中所遵循的路线图就称为软件过程。
软件过程:是工作产品构建时所执行的一系列活动、动作和任务的集合。
活动:主要实现宽泛的目标,与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系
动作:包含了主要工作产品生产过程中的一系列任务
任务:关注小而明确的目标,能够产生实际产品(如构建一个单元测试)
软件工程过程框架:沟通、策划、建模、构建、部署。
普适性获得:软件项目跟踪和控制、风险管理、软件质量保证、技术评审、测量、软件配置管理、可复用管理、工作产品的准备和生产。
过程模型:为软件工程工作提供了特定的路线图,该路线图规定了所有活动的流程、动作、任务、迭代的程度、工作产品及要完成的工作应如何组织。
过程模型类型:
一、惯用过程模型(
1.1瀑布模型
1.2 V模型
1.3增量过程模型——线性过程流+并行过程流的特征
1.4演化过程模型——迭代的过程模型
1.4.1原型开发——沟通—快速策划—建模快速设计—构建原型—部署交付及反馈
1.4.2螺旋模型——结合了原型的迭代性质和瀑布模型的可控性和系统性特点。
风险驱动型的过程模型生成器。特点:采用循环的方式逐步加深系统定义和实现的深度,同时降低风险;确定一系列里程碑作为支撑点,确保利益相关者认可是可行的且可令各方满意的系统解决方案。

1.5并发模型——允许软件团队表述本章所描述的任何过程模型中的迭代元素和并发元素。能够提供精确的项目当前状态图。不是把软件工程活动、动作和任务局限在一个事件的序列,而是定义了一个过程网络。

二、专用过程模型
2.1基于构件的开发——本质上是演化模型,有很多螺旋模型的特点,需要以迭代方式构建软件。采用预先打包的软件构件来开发应用系统。
2.2形式化方法模型——主要活动是生成计算机软件形式化的数学规格说明。应用严格的数学符号来说明、开发和验证基于计算机的系统。(变形:净室软件工程)
2.3面向方面的软件开发——是对横切关注点进行局部表示的一种机制,超越了子程序和继承方法

三、统一过程
UML——统一建模语言,包含大量用于面向对象系统建模的开发的符号
过程模式:描述了软件工程工作中遇到的过程相关的问题,明确了问题环境并给出了针对该问题的一种或几种解决方案。
2.传统"瀑布模型"的主要缺陷
a.实际的项目很少遵守瀑布模型提出的顺序
b.客户通常难以清楚地描述所有的需求
c.客户必须很有耐心,因为只有在项目接近尾声的时候,他们才能得到可执行的程序
3.敏捷工程,尤其是XP、结对编程等概念的理解
敏捷工程:是哲学理念和一系列开发指南的综合。
哲学理念推崇:让客户满意且尽早的增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品以及精简开发。
XP:使用面向对象方法作为推荐的开发范型,包含了策划、设计、编码和测试4个框架活动的规划和实践。(KIS原则)
结对编程:两个人面对同一台计算机共同为一个故事开发代码。这一方案提供了实时解决问题和实时质量保证的机制。
4.需求分析模型基本元素,以及各类元素的理解
a.基于场景的元素
——使用基于场景的方法可以从用户的视角描述系统。
b.基于类的元素
——每个使用场景都意味着当一个参与者和系统交互时所操作的一组对象,这些对象被分成类——具有相似属性和共同行为的事物集合。
(UML类图,列出属性、可以用于修改这些属性的操作)
c.行为元素
——基于计算机的系统行为能够对所选择的设计和所采用的实现方法产生深远的影响。因此需求分析模型必须提供描述行为的建模元素
(状态图:表现系统行为的方法。描绘系统状态以及导致系统改变状态的事件)
5.设计模型的基本元素,以及各类元素的理解
1)数据设计元素
数据设计(数据体系结构)创建了在高抽象级上(以客户/用户的数据观点)表示的数据模型和信息模型。数据模型被逐步求精为特定实现的表示(计算机能够处理的表示)。
2)体系结构设计元素
提供了软件的整体视图。
从以下三个来源导出:关于将要构建的软件的应用域信息;特定的需求模型元素(数据流图/分析类);可获得的体系结构风格和模式。
通常被描述为一组相互联系的子系统,且常从需求模型中的分析包中派生出来。
3)接口设计元素
描述了信息如何流入和流出系统,以及被定义为体系结构一部分的构件之间是如何通信的。
三个重要元素:用户界面;和其他系统、设备、网络、信息生成者或使用者的外部接口;各种设计构件之间的内部接口。
4)构件级设计元素
完整地描述了每个软件构件的内部细节。
构件级设计为所有局部数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有构件操作(行为)的接口。
5)部署级设计元素
指明软件功能和子系统将如何在支持软件的物理计算环境内进行分布。
6.经典的软件体系结构的基本风格
每种风格描述一种系统类别,包括:
(1)完成系统需要的某种功能的一组构件(例如,数据库、计算模块);
(2)能使构件间实现“通信、合作和协调”的一组连接件;
(3)定义构件如何集成成为系统的约束;
(4)语义模型,能使设计者通过分析系统组成的已知属性来理解系统的整体性质 。
以数据为中心的体系结构——数据存储(文件/数据库)位于这种体系结构的中心,其他构件经常访问该数据存储
数据流体系结构——(管道—过滤器模式)当输入数据经过一系列计算机构件和操作构件的变换形成输出数据;
(若数据流退化成单线变换,则称为批处理序列)
调用和返回体系结构——(主程序/子程序体系结构)(远程过程调用体系结构)
能够设计出一个相对易于修改和扩展的程序结构
面向对象体系结构——系统的构件封装了数据和必须用于控制该数据的操作,构件间通过信息传递进行通信与合作
层次体结构——每个层次个字完成操作,这些操作逐渐接近机器的指令集
建立用户界面(建立操作系统接口(提供各种实用工具服务和应用软件功能))

7.软件界面设计的黄金规则
用户操纵控制
以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式。
提供灵活的交互。
允许用户交互被中断和撤销。
当技能级别增长时可以使交互流线化并允许定制交互。
使用户与内部技术细节隔离开来。
设计应允许用户与出现在屏幕上的对象直接交互。
减少用户的记忆负担
减少对短期记忆的要求。
建立有意义的缺省。
定义直观的快捷方式。
界面的视觉布局应该基于真实世界的象征。
以不断进展的方式揭示信息。
保持界面一致
允许用户将当前任务放入有意义的环境中。
在应用系统家族内保持一致性。
如果过去的交互模型已经建立起了用户期望,除非有不得已的理由,否则不要改变。

8.构件级设计的四大基本原则及其内容
开闭原则(OCP)。“模块[构件]应该对外延具有开放性,对修改具有封闭性”。
Liskov 替换原则(LSP)。“子类可以替换它们的基类”。
依赖倒置原则(DIP)。“依赖于抽象,而非具体实现”。
接口分离原则(ISP)。“多个客户专用接口比一个通用接口要好”。

9.软件测试的基本概念、基本步骤与方法,以及单元测试、集成测试、确认测试和系统测试各自的主要目标是什么?
软件测试的目的:是为了发现软件设计和实现过程中因疏忽所造成的错误。
基本步骤:测试从“小范围”开始,并逐步过渡到“软件整体”。
方法:
目标:
单元测试:
侧重于软件设计的最小单元(软件构件/模块)的验证工作
侧重于构件的内部处理逻辑和数据结构
集成测试:
构建软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试
(自顶向下集成:是一种构建软件体系结构的增量方法,从主控模块开始,沿着控制层次逐步向下,以深度优先或广度优先的方式将从属于主控模块的模块集成到结构中去)
(自底向上集成:从原子模块(程序结构的最底层构件)开始进行构建和测试)
(回归测试:重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用)
(冒烟测试:是时间关键项目的决定性机制,允许软件团队频繁地对项目进行评估)
(集成测试工作产品:包含测试计划和测试规程,并称为软件配置的一部分)
确认测试:
始于集成测试的结束。(已测试完单个构件,软件已组装成完整的软件包,且接口错误已被发现和改正)
测试集中于用户可见的动作和用户可识别的系统输出。
软件确认是通过一系列表明软件功能与软件需求相符合的测试而获得的。
系统测试:
恢复测试——通过各种方式强制地让系统发生故障,并验证其能适当恢复(自动——对重新初始化、检查点机制、数据恢复和重新启动进行正确的评估/人工干预——计算平均恢复时间)
安全测试——验证建立在系统内的保护机制是否能够实际保护系统不受非法入侵
压力测试(敏感性测试)——要求以一种非正常的数量、频率或容量的方式执行系统
性能测试——测试软件在集成环境中的运行性能(需要软件、硬件工具)(常与压力测试仪器进行)
【软件要与其他系统成分(硬件、人、信息)相结合,并执行一系列集成测试和确认测试】
10.软件白盒测试环路复杂度的计算方法及简单应用
白盒测试(玻璃盒测试/结构化测试)
是一种测试用例设计方法,利用作为构件级设计的一部分所描述的控制结构来生成测试用例。
可以:1)保证一个模块中的所有独立路径至少被执行一次
2)对所有的逻辑判定均需测试取真/取假两个方面
3)在上下边界及可操作的范围内执行所有循环
4)检验内部数据结构以确保其有效性
环路复杂度的计算方法:
1)流图中域的数量=环复杂性
(由边和结点限定的区域称为域,计算域时,将图的外部作为一个域)
2)环复杂性V(G)=E-N+2=边数-结点数+2
3)V(G)=P+1=判定结点数+1

11.软件测试和调试的区别与联系
软件测试是一种能够系统地加以计划和说明的过程,可以进行测试用例设计,定义测试策略,根据预期的结果评估测试结果。
调试出现在成功的测试之后。
(测试结果与期望的表现不一致)调试试图找到隐藏在症状背后的原因,从而使错误得到修正。调试是使错误消除的过程。
联系:调试未能找到问题的原因-推测原因-附加测试-测试用例-结果-调试-识别别的原因-修正-回归测试
12.UML表示类之间的主要关系及其画法示意图

13.UML类图的分析与设计及其具体画法
14.UML行为分析图及其画法
15.实现高质量软件的管理和实践活动
软件工程方法:
项目管理技术:(包括明确的质量管理和变更管理技术)
项目经理使用估算以确认交付日期时可以达到的;进度依赖关系是清楚的,团队能抵抗走捷径的诱惑;进行了风险规划
质量控制:
质量保证:
16.项目管理甘特图及其画法

17.理解图书馆管理信息系统或智能交通或智慧医疗等应用系统背景,如何系统化地运用软件工程学理论何方法进行分析、设计与项目管理和实施。

以上内容必须掌握,其它内容根据教材和授课PPT复习理解。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值