1.1. 软件开发方法
1.1.1. 开发方法的分类
Ø 自顶向下开发方法和自底向上的开发方法
Ø 形式方法和非形式方法
Ø 整体性方法和局部性方法
Ø 软件自动化方法
过程、演绎、转换、归纳。
1.1.2. 软件开发(过程)模型
Ø 瀑布模型
Ø 演化模型
增量模型
螺旋模型
构件组装模型
并行开发模型
Ø 喷泉模型
喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。
无间隙是指在开发活动,即分析、设计和编码之间不存在明显的界限。
Ø 智能模型
基于知识的软件开发模型。
应用基于规则的系统,采用归约和推理的机制。
Ø RAD模型
RAD是一个线性顺序模型,强调在极短的开发周期和可复用程序构件的开发。是瀑布模型的“高速”变种。
RAD方法包含业务建模、数据建模、处理建模、应用生产、测试及 反复五个阶段。
并非所有的应用软件都适合使用RAD。
Ø 原型模型
1.1.3. 第四代技术(4GT)
能使软件工程师在较高级别上说明软件的某些特征,然后利用工具根据开发者的说明自动生成源代码。
关键在于说明软件的能力,它用一种特定的语言来完成或者以一种用户可以理解的问题描述方法来描述待解决的问题的图形来表示。
开发者还必须进行测试,写出有意义的文档,并完成其他软件工程范型中同样要求的所有集成活动。必须考虑维护是否能够迅速实现。
1.1.4. 原型化方法
原型的分类:
Ø 水平原型和垂直原型
Ø 抛弃型原型和演化型原型
Ø 实验型、探索型和演化型
Ø 抛弃式原型、演化式原型和递增式原型
原型生命周期:
选择原型法考虑的因素:
u 系统结构
联机事务处理系统。
u 逻辑结构
结构化系统:操作系统、文件管理系统、MIS系统等。
u 用户特征
用户有要求,需求不明确,愿意为原型投资,用户积极参与。
u 应用约束
u 项目管理
u 项目环境
原型法的准则:
u 大多数的应用系统都能从一个小的系统结构集合中导出。
u 多数系统使用一个常用和熟悉的功能集合。
u 大多数的输入编辑能从一个小的编辑模型集合中导出。
u 基于一个4步的报表模型生成应用系统的报表。
u 有一个正确的设计结构集合,对原型将会产生积累作用。
原型法的策略
u 用第三范式规范数据,建立应用系统的数据模型;
u 大多数富有成效的建立模型的途径是利用组合工程;
u 最有成效的建立模型的途径是“裁剪和粘帖”。
u 用系统举例;
u 字典驱动的软件结构;
u 文档的自动化;
u 小的原型化队伍;
u 交互式的和综合的原型开发者的工作台;
u 陈述性规格说明;
u 终端用户报表生成器;
u 专业的原型化人员;
u 开发人员参加原型化。
混合原型法策略
u 仅对屏幕的原型化
u 使用购买到的应用系统作为初始原型。
u 可行性分析中的原型化
u 子系统原型化。
u 原型与需求建议。
u 最终用户进行原型化。
原型化中心
u 开发中心
u 生产中心
u 信息中心
u 原型化中心。
原型法与项目管理
u 估计过程
u 费用重新分配
u 变化控制
u 活动停止
1.1.5. 敏捷方法
Ø XP中每次发布的内容不是演示版,而是实用版。
Ø XP的核心是其总结的沟通、简单、反馈、勇气四大价值观。
Ø XP方法论属于轻量级,也就是文档量少,遵从“代码就是文档”的思想。
Ø XP是适合于中小型团队在需求不明确或者迅速变化的情况下进行软件开发。
Ø XP的十二种最佳实践:
计划游戏;
小型发布;
隐喻;
简单设计;
测试先行;
重构;
结对编程;
集体代码所有制;
持续集成;
每周工作40小时;
现场客户;
编码标准。
1.1.6. 净室软件工程
Ø 使用盒结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制。
Ø 使用统计的测试来获取认证被交付的软件的可靠性所必须的出错率信息。
1.2. 总体规划与软件定义
1.2.1. 任务
Ø 制定软件的发展战略。
Ø 确定组织的主要信息需求,形成软件的总体结构方案,安排项目开发计划。
Ø 制定系统建设的资源分配。
1.2.2. 步骤
Ø 对当前系统进行初步的调查。
Ø 分析和确定系统的目标。
Ø 分析子系统的组成以及基本功能。
Ø 拟定系统的实施方案。
Ø 进行系统的可行性分析。
Ø 编写可行性报告。
1.2.3. 方法
Ø 关键成功因素法
Ø 战略目标集转化法
Ø 企业系统规划方法
1.2.4. 目标系统的框架分析
Ø 分析管理目标和系统目标
根据系统调查的结果进行分析,总结出现行系统中的关键问题,做出问题列表;
根据问题列表,构造目标的层次结构;
对目标树种的各项分目标进行分析;
将目标树按各层分目标在系统中所起的的作用重新绘制。
Ø 确定系统的范围和功能
绘制出系统的总数据流程图;
根据系统方案的要求,用户的要求和现行系统的环境及确定系统边界的原则,在总数据流图上圈出系统范围。
与用户讨论,协商修改有关内容。
确定系统范围,并作出分析说明。
Ø 确定系统总体结构及投资概算
计算机系统软、硬件设备投资;
系统开发费用;
系统安装
维护费用
人员培训费。
1.2.5. 可行性分析
Ø 经济可行性
Ø 技术可行性
Ø 管理上的可行性
Ø 开发环境的可行性
Ø 可行性分析的步骤:
核实问题定义与目标;
研究分析现有系统;
现有系统的物理模型-à现有系统的逻辑模型-à新系统的逻辑模型à新系统的物理模型。
为新系统建模;
系统上下文关系范围图(DFD0层图);
实体关系图;
用例模型;
域模型;
IPO表。
用户复核;
提出并评价解决方案;
确定最终推荐的解决方案;
草拟开发计划;
提交可行性分析报告。
1.2.6. 成本/效益分析
Ø 项目的成本:基础建设支出、一次性支出和运行维护费用。
Ø 项目的收益:一次性经济收益、非一次性经济收益、非经济收益。
1.2.7. 详细调查
Ø 原则
n 自顶向下全面展开
n 存在的不一定是合理的
n 分工和协作相结合
n 点面相结合展开调查
n 主动沟通的工作方式
Ø 方法
n 收集资料
n 开调查会
n 个别访问
n 书面调查
n 参加业务实践
n 发电子邮件
Ø 注意事项
n 事先计划
n 调查态度
n 调查顺序
n 研究分析
1.2.8. 新旧系统的分析和比较
Ø 目的
n 评估旧系统存在的问题,评估升级旧系统的价值和升级的代价。
n 寻找旧系统中存在的主要问题,为新系统的设计目标提供参考。
n 在新系统方案确定后,进行新旧系统比较以便验证新系统的设计是否完备。
n 理解新旧系统之间的差异、确定新旧系统转换的技术路线。
Ø 原则
n 比较新旧系统
n 复查问题
n 控制规模
Ø 转换策略
n 直接转换
n 逐步转换
n 并行转换