-
建模 - [风头浪尖]
2007-11-30
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://arkshow.blogbus.com/logs/11319756.html
程序:可在目标计算机上执行的一组指令集合。
理解:编写程序的目标是让代码在计算机上正确运行,程序员只要知道输入、输出和算法即可,与此无关的信息都不重要。软件:软件用于对信息进行处理。由实现指定功能和要求的程序 + 描述其如何使用和操作的文档构成。
总结:“编程”仅仅是软件开发过程中的一个“局部任务”,软件开发不仅要产生正确的“程序”,还要包括其他为满足用户要求而必须进行的工作。
“用户满意”是软件项目成功的重要标志。软件危机——“不是每个软件项目都能做到让用户满意”
1) 造成软件危机的原因
l 早期软件开发的随意性
l 缺少有效的工程管理和团队协调机制
l 硬件发展和计算机普及造成的冲击
l 软件规模和复杂度提高造成的影响
2) 软件危机的主要表现
l 软件开发周期、成本的严重超过预算;
l 软件质量难于保证,用户不满意
l 缺乏有效的文档说明,导致软件无法维护和完成适应性改变
l 生产效率远远低于计算机普及的速度
l ……
软件工程
3) 软件危机产生——必须借鉴传统工程学科取得的成功经验,采用工程化的原则和系统的、成熟的方法指导和规划软件开发的全过程——软件工程学(软件工程是研究关于软件生产的各个方面的工程学科)
4) 软件工程的研究内容
软件开发技术:软件过程,软件开发方法,软件工具和软件工程环境
软件工程管理:管理学、经济学、心理学等相关内容。
软件工程三要素:过程,方法,工具。
l 软件过程定义了工程中的主要活动和实施步骤(活动关系)
l 软件开发方法为软件过程活动的有效完成提供技术上的指导,当前主要应用的软件开发方法有:结构化开发方法、面向对象开发方法。
l 软件工具提供了软件工程的实践(支撑)环境,确保软件过程和开发方法的有效应用
软件过程
1) 什么是软件过程
l 软件过程是一个为建造高质量软件所需要完成的任务的框架——R.Pressman
l 软件过程是产生软件产品的互相连贯的一组活动极其结果——I.Sommerville
l 理解:软件过程的定义回答了如下问题
a) 开发软件都需要干什么工作——过程活动集合
b) 必须先干什么,接下来再干什么,最后干什么——活动之间的关系。
2) 软件过程的意义
l 对开发软件的完整任务进行结构化分解,各个阶段的工作目标更突出,降低问题复杂度,也便于对软件项目的估算、度量、管理。
l 成熟稳定的开发过程将保证开发人员的经验积累和传递,提高开发生产率
3) 软件过程的度量——评估软件过程的标准化和规范化程度CMM ( Capability Maturity Model 能力成熟度模型) 是SEI(美国国防部软件工程研究所)定义的一种方法,对竞标国防部项目的软件公司的能力进行评估。 CMM模型将软件过程成熟度分为5个等级,分别是:
初始级:无规范过程
可重复级:有基本的成本和进度管理规程,可以取得与以往类似项目的成功
已定义级:有标准的软件过程,并已经标准化、文档化
已管理级:有对过程和产品质量的详细度量,并可应用于过程控制
优化级:有基于客观度量的过程改进策略
软件过程模型
过程模型从一个特定角度简化描述软件过程
l 工作流——活动次序
l 数据流——产品阶段形态的变换
l 角色/动作模型——参与者的角色和任务
典型的通用过程模型
瀑布模型
1)特点:
l 借鉴传统工程过程,具有广泛影响
l 按线性关系组织过程活动,强调活动执行次序的单向性和活动间的相邻依赖性
l 焦点是文档和交付产品,每个活动在结束点(里程碑)必须交付规定的文档和阶段产品;并完成质量审查才能激活下一个活动。
l 瀑布模型体现了推迟实现的观点,即概念设计应该先于系统实现完成。
2)问题——过于理想化
l 没有体现软件开发过程固有的迭代和反复
l 误差扩大
l 需求变更的冲击
l 开发进度的问题
3) 带有原型的瀑布模型
l 软件原型是对目标软件系统的部分实现
l 原型根据其用途可分为抛弃型和演化型两种
l 在瀑布模型的中前期活动中引入原型技术,可以在很大程度上稳定需求,减少变化的冲击
4) V模型
l 体现了软件开发过程中固有的反复和回溯
l V模型的焦点是基于正确性的活动关系。它直观的表达了瀑布模型隐藏的过程反复。
进化式开发模型(增量模型,螺旋模型)
增量模型
l 增量模型描述了增量式开发过程的活动组织。即先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。
l 确定增量开发的优先级是增量模型在需求分析阶段的主要任务。
l 增量模型关注的焦点是系统的发布时间 螺旋模型1)螺旋模型最初由Boehm(1988)提出,螺旋模型的焦点是——风险控制。2)螺旋模型的每个周期完成一个指定的阶段目标,在周期上分布若干关键区域
l 目标设置:指定目标、规划可选方案
l 风险评估和管理:预估方案,规避风险
l 开发和验证:目标实现和验证
l 下一阶段的规划
3)螺旋周期的半径与该目标的风险度成反比,而与目标实现的投入成正比。
基于构件的软件开发模型
1)
构件式软件开发过程包括的主要活动l 领域分析——分析领域通用需求
l 应用需求分析——分析应用特定需求
l 构件/构架生产——通用/专用构件开发
l 构件/构架库维护
l 系统组装——利用构件拼装目标系统
2) 优势:复用构件提高开发效率和可靠性
3) 根据用户需求确定“可获得的”和“待开发的”构件是需求分析阶段的主要任务。
OMG.....看了一上午,还有一堆要看。。

收藏到:Del.icio.us
评论