--
冯·诺依曼结构
也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
--
系统工程概念
最先进不计成本,先进东西来自于战争(二战)
--
系统工程方法
霍尔三维结构
逻辑维度
时间维度
知识维度
切克兰德方法 核心不是 最优化,而是比较和探寻。
并行工程方法 制造过程与支持过程并行
综合集成法 钱学森命名
--
霍尔三维结构
逻辑维
时间维
知识维
--
系统工程生命周期阶段
信息系统生命周期
产生阶段
开发阶段
运行阶段
消亡阶段
--
信息系统建设原则
高层管理人员介入原则
如CIO介入 一把手工程
用户参与开发原则
用户确定范围/核心用户全程参与/用户深度参与
--
信息系统开发方 法
结构化法
面向对象方法
面向服务的方法
--
TPS 业务处理系统 电子数据处理系统
批处理 批量处理
--
MIS系统 由业务处理系统发展而成,
是在TPS基础上引进大量管理方法对企业整体信息进行处理。
MIS 系统四大部件 信息源、信息处理器、信息用户和信息管理者。
--
ES 专家系统 内部含有某个领域具有专家水平的大量知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域的问题。
决策
--
软件工程
--
瀑布模型
需求分析
软件设计
程序设计
编码实现
单元测试
集成测试
系统测试
运行维护
需求说明书 SRS
特点
1 严格区分阶段,每个阶段因果关系紧密相连
2 只适合需求明确的项目(软件开发失败率比较高)
缺点
1 软件需求完整性、正确性难确定
2 严格串行化,很长时间才能看到结果
3 瀑布模型要求每个阶段一次性完全解决该阶段工作,这不现实。(是串行执行 的)
--
原型模型
步骤 (原型开发)
需求分析
软件设计
程序设计
虚线
编码实现
单元测试
集成测试
系统测试
原型维护
说明 做一个小系统展示核心功能
适合需求不明确的项目
原型模型两个阶段
1 原型开发阶段
2 目标软件开发阶段
两个分支
1 抛弃型原型
2 演化型原型
--
原型及相关模型
增量模型
--
V模型
测试贯穿于始终
测试分阶段,测试计划提前
需求分析 验收测试
系统测试
概要设计 集成测试 (模块接口能不能正常)
详细设计 单元测试(单个模块的性能)
编码
--
迭代与增量
增量
一块一块增加
迭代
一轮一轮在变好
如影随形
--
螺旋模型
以快速原型为基础+瀑布模型
考虑了风险问题
风险分析
开发和有效性验证
评审
适合大型系统
--
构件组装模型
优点 易扩展、易重用、降低成本、安排任务更灵活。
缺点 构件设计要求经验丰富的架构师、设计不好的构件难重用。
建立构件库 构件获取、构件管理
建立库的成本低
模型建立 速度快、成本低
构件标准
CORBA
SUN J2EE
Microsoft DNA
--
敏捷开发方法
--
基于构件的软件工程(CBSE)
CBSE 体现了【购买而不是重新构造】的哲学
可组装性 所有外部交互必须通过公开定义的接口进行。
可部署性:能独立实体平台上运行。
文档化
独立性 可以在无其他特殊构件
标准化:符合某种标准化的构件模型。
--
构件组装模型
顺序组装 可以用两个已经存在的构件创建一个新的构件。
层次组装 两个构件间调用 接口兼容
叠加组装 多个构件合并形成新构件,对外提供接口。
--
快速应用开发模型(RAD)
RAD:
SDLC瀑布+CBSD(构件)
业务建模
数据建模
过程建模
应用生成
测试与交付
--
统一过程(UP)
用例驱动
以架构为中心
迭代和增量
初始阶段 确定系统范围
细化阶段 设计及确定系统架构
构造 构件 开发剩余构件和应用程序功能
移交 用户
四个阶段
初始 细化 构造 移交
9个核心工作流
1 业务建模
2 需求
3 分析与设计
4 实现
5 测试
6 部署
7 配置与变更管理
8 项目管理
9 环境
--
敏捷方法 (2000年逐步提出来)
发展
1 无软件开发方法
2 传统软件开发方法(瀑布模型)
预设性、以开发过程为本、整体分阶段
3 敏捷方法
适应性的、以人为本、增量迭代,小步快跑、适合小型项目
敏捷宣言
个体和交互胜过过程和工具
可工作的软件胜过大量文档
客户合作胜过合同谈判
响应变化胜过遵循计划
--
敏捷方法-XP
4大价值观
沟通
简单
反馈
勇气
12条过程实践规则
简单设计
测试驱动
代码重构
结对编程
持续集成
现场客户
发行版本小型化
系统隐喻
代码集成所有制
规划策略
规范代码
40小时工作机制
--
敏捷方法 SCRUM
产品待办列表 抽多少个需求
迭代4周 将这个迭代完成
每天站会 - 迭代评审会议 -
--
敏捷方法
极限编程 XP :价值观【交流、朴素、反馈、勇气】、近螺旋式的开发方法。
水晶方法:提倡“机动性”,不同场景项目
SCRUM:侧重于项目管理。
特征驱动开发方法(FDD):有效开发3要素: 人、过程、技术。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。
开放式源码
ASD方法
动态系统开发方法(DSDM) :倡导以业务为核心。
--
敏捷提倡 小步快跑、适合小型项目
--
逆向工程
是设计的恢复过程
反向分析
现有系统 - 再工程 -新系统
再工程包含:逆向工程 考虑新需求 正向工程
实现级 程序的抽象语法树、
结构级 程序之间相互依赖关系的信息
功能级 程序段功能及程序段之间关系的信息,如数据和控制流模型。
领域级 实体关系模型
--
逆向工程
重构、重组
设计恢复
--
净室软件工程
技术手段
统计过程控制下的增量式开发: 控制迭代
基于函数的规范和设计 盒子结构
正确性验证 净室工程的核心
统计测试和软件认证: 使用统计学原理,总体太大时必须采用抽样方法。
缺点
太理论化 正确性验证的步骤比较困难且耗时
开发小组不进行传统的模块测试,这是不现实的
脱胎与传统软件工程,不可避免带有传统软件工程的弊端。
--
...
--
结构化设计
...