软件工程 复习大纲

软件与软件工程

软件的定义

(1)指令的集合,执行指令可以满足预期的特性、功能和性能的需求
(2)数据结构,使得程序可以合理利用信息
(3)软件描述信息,用来描述程序的操作和使用

软件工程的定义

软件工程是指导计算机软件开发和维护的工程学科。它将系统化的、规范的、可量化的⽅法应用于软件的开发、运⾏和维护,即将⼯程化⽅法应用于软件

软件应用领域

(1)系统软件:编译器、编辑器、操作系统构件、驱动程序
(2)应用软件:处理商务或技术数据
(3)工程/科学软件:“数值计算”类程序
(4)嵌入式软件:微波炉的按键、燃油控制、刹车系统
(5)产品线软件:库存控制产品、大众消费品市场
(6)Web/移动APP:基于浏览器的APP,云计算、基于服务的计算
(7)人工智能产品:机器人、决策系统

遗留软件

发生演化的原因

(1)软件需要进行适应性调整,满足新的计算环境或者技术需求
(2)软件必须升级以实现新的商业需求
(3)软件必须扩展以具有与更多新的系统和数据库协同工作的能力
(4)软件体系结构必须进行改建使之适应不断演化的计算环境

统一过程模型

阶段性并发

阶段性并发进行:可能在构建、转换和生产阶段的同时,下一个软件增量的工作已经开始

5个UP阶段

(1)UP的起始阶段:包括客户沟通和策划活动
(2)细化阶段:包括沟通和通用过程模型的建模活动
(3)UP的构建阶段:与通用软件过程中的构建活动相同
(4)UP的转换阶段:包括通用构建的后期阶段和后期部署活动的第一部分
(5)UP的生产阶段:与通用过程中的部署一致

软件工程的人员方面

软件工程师特质

(1)个人责任感
(2)敏锐的意识
(3)坦诚
(4)抗压能力
(5)高度的公平感
(6)注重细节
(7)务实

软件团队

高效团队特征

(1)建立目标意识
(2)参与意识
(3)培养信任意识
(4)多样化

团队毒性

(1)混乱的工作氛围
(2)会造成团队成员分裂的挫败
(3)“支离破碎或协调不当”的软件过程
(4)对软件团队中角色的模糊定义
(5)“持续且重复性的失败”

设计概念

关注点分离

表明任何复杂问题被分解为可任意独立解决或优化的若干块,该问题便能够更容易地得到处理

模块化

模块化是软件的单一属性,它使程序能被智能化管理

为什么模块化

(1)模块化是为了使一个复杂的大型程序被人的智力所管理,软件应该具备的唯一属性
(2)如果一个大型程序仅由一个模块组成,它将很难被人所理解

信息隐蔽

为什么信息隐蔽

(1)降低副作用可能性
(2)减少局部设计对全局的影响
(3)突出控制接口处通信
(4)阻止全局数据使用
(5)促进封装
(6)形成高质量软件

功能独立

独立性可以通过两条定性的标准评估:内聚性和耦合性

内聚性

(1)偶然内聚
(2)逻辑内聚
(3)时间内聚
(4)过程内聚
(5)通信内聚
(6)顺序内聚
(7)功能内聚

耦合性

(1)非直接耦合
(2)数据耦合
(3)控制耦合
(4)特征耦合
(5)公共环境耦合
(6)内容耦合

重构

重构是使用不改变代码设计的外部行为而改进内部结构的方式改变的软件系统的过程

重构的目标

(1)提高模块的内聚性和耦合性
(2)删除无用或重复的代码
(3)为未来的扩展需要打基础

检查设计

(1)冗余性
(2)没有使用的设计元素
(3)低效的或不必要的算法
(4)拙劣的或不恰当的数据结构
(5)其它不足,并通过修改得更好的设计

体系结构

简单分类

(1)以数据为中心的体系结构:仓库、黑板
(2)数据流体系结构:管道-过滤器、批处理
(3)调用和返回体系结构:主程序/子程序、面对对象、层次结构
(4)面对对象的体系结构
(5)层次体系结构

用户界面设计

黄金规则

(1)把控制权交给用户
(2)减轻用户的记忆负担
(3)保持界面一致

界面分析

(1)用户分析
(2)任务分析与建模
用例、任务细化、对象细化、工作流分析、层次表示
(3)显示内容分析
(4)工作环境分析

设计步骤

(1)使用界面分析过程中开发的信息,定义界面对象和动作
(2)确定事件,即会导致用户界面设计会发生变化的事件
(3)描述每个状态的表示形式
(4)说明用户如何从界面提供的界面信息来解释每个状态

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值