软件工程概述
软件的定义
软件是计算机程序、规程、以及运行计算机系统可能需要的相关文档和数据
或者说 软件是包括程序、数据和文档的完整集合
软件是一种具有抽象的逻辑实体
软件的开发是一种逻辑思维成熟的过程,而无明显的制造过程
软件的分类
按照划分方式的不同
- 系统软件
- 应用软件
-
中间件软件
或者
- 通用软件
- 定制软件
- 可配置软件
软件危机
是指由于落后的软件生产方式无法适应迅速增长的计算机软件需求
从而导致软件开发过程中出现一系列严重问题的现象
原因
一方面是由于软件本身存在着复杂性,另一方面是因为软件开发和维护所使用的方法不合理
软件工程
三要素:方法 工具 过程
软件声明周期模型
- 瀑布模型
- 增量模型(对待需求不明确的项目)
- 演化模型(对待需求不明确的项目)
- 喷泉模型(面对对象)
- 螺旋模型(风险考虑 大型软件开发)
- V模型和W模型(并没有克服瀑布模型缺点)
- 原形方法(能够逐步明确用户需求,适应需求变化)
软件需求分析
先行步骤
- 系统分析
- 可行性分析
需求建模
原则
- 问题的信息域必须表示和理解
- 软件将完成的功能必须定义
- 软件的行为必须表示
数据建模
功能和行为建模
面对对象需求分析方法
OOA/OOD
用例图->系统顺序图
用例图->领域模型
系统顺序图,领域模型->系统操作契约
领域建模
用例建模
用例图
– 角色
– 基础用例
– 包含用例
– 拓展用例
系统顺序图
结构化需求分析方法
数据流图+数据词典
软件设计的原则
模块的独立性
内聚性,指模块自身的属性
内聚类型(内聚性由弱到强)
- 巧合内聚(语句复用)
- 逻辑内聚(传送子模块控制参数,进而选择功能)
- 时间内聚
- 过程内聚(举例:判断文件权限,执行读取)
- 通信内聚(信息内聚)(使用相同的数据缓存区)
- 序列内聚(一个子模块的输出是另一个的输入)
- 功能内聚
模块的耦合性(耦合性由强到弱)
- 内部耦合
- 公共耦合
- 外部耦合
- 控制耦合
- 标记耦合
- 数据耦合
- 非直接耦合(由上级模块进行控制)
面对对象设计原则
- 单一指责原则
- 开闭原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 组合/聚合复用原则
面对对象设计方法
模型层次化
- 控制器层
- 业务逻辑层
- 持久层
设计用例实现方案
结构化设计方法
变换型数据流和变换型系统结构
事务性数据流与事务型系统结构图
变换映射
由变换型数据流图到系统初始结构图
事务映射
由数据流图推导事务型系统结构图
变换-事务混合型的系统结构图
软件实现
程序设计方法
- 结构化程序设计方法
- 面对对象程序设计方法
程序设计风格
- 源程序文档化
- 数据说明
- 语句结构
- 输入和输出
- 错误处理
软件测试
测试用例
测试目的
是为了发现错误
系统测试步骤
- 单元测试
- 集成测试
- 确认测试
- 系统测试
- 验收测试
测试用例设计方法
- 白盒测试
- 黑盒测试
软件维护
- 改正性维护
- 适应性维护
- 完善性维护
- 预防性维护
软件项目管理
一些例题
1、 面向对象设计需要做哪些工作工作对应的成果模型是什么5 分)
什么是模块的耦合性举至少 3 种降低耦合性的方法
3、UML 用模型来描述系统的结构(静态特征)以及行为(动态特征),请
针对静态和动态两类特征,每类至少列举 2 种对应的 UML 图
留学韩国的小明新交一韩国女友如花,交往期间发生了如下事件:(1)小
明希望如花学会中华散打技能; (2)如花习武期间,去年整容的鼻子不幸塌陷,
需要重新修补;(3)毕业后如花随小明回北京,由于水土不服,如花卧病,经
多次调理后康复并习惯中国生活; (4)如花学习更高深的九阳神功,重构内力
以增强体制。假设把如花比作软件,请说明以上四类事件分别对应于哪一类
软件维护工作。
GRASP(职责分配原则)
http://www.cnblogs.com/sevenyuan/archive/2010/03/05/1678730.html
请列举出软件生命周期中贯穿的软件工程过程的六个基本活动
什么是用例用户来说,为什么用例方法比传统需求分析中的功能特性列表更有效p>
关于数据流图
http://blog.csdn.net/xianshengsun/article/details/7439537
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!