(1) 什么是软件危机,具体表现,消除软件危机的途径(*)
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
答:“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本和进度难以准确估算;软件产品的质量没有保证,软件常常是不可维护的。
- 开发成本和进度难以估算和控制,大大超过预期
- 用户对已完成的软件不满意,需求分析不够充分
- 软件产品的质量难保证
- 软件维护困难
- 难以改正错误
- 难以增加新功能
- 软件通常没有配套文档资料
- 软件成本占计算机系统总成本中比例逐年上升
- 软件开发生产率提升,落后于计算机普及速度。
产生软件危机原因
一是软件的特点
二是软件开发与维护的方法不当
消除软件危机的途径
- 消除错误的“软件就是程序”观
正确的软件概念是: 软件=程序+文档+数据
- 强调团队协作:软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,个人英雄主义没有作为
- 使用实践中总结出来的成功的技术
- 发展更好的软件工程工具。
(2) 软件工程概念,定义,三要素(方法、工具、过程)(*)
软件=程序+文档+数据
软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件开发技术结合起来,运用到软件开发和维护过程中,来解决软件危机。
实际上 软件应该是程序、数据及相关文档的完整集合
其中程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序需要的图文资料。
- 方法 完成软件开发任务所遵循的技术原理(理论、思想),回答“怎样做”的问题;
- 工具 自动的或半自动的,践行方法的操作支撑环境(如CASE工具);
- 过程 为了获得高质量的软件,所需完成的一系列任务框架,它规定了完成各项任务的工作序列。
(3)
软件生命周期时期,阶段划分,(*)
指一个软件从提出开发要求开始到该软件报废为止的整个时期。
进一步可将软件的生命周期划分为可行性研究、需求分析、设计、编码、测试、集成、维护阶段。
5阶段划分:需求定义;设计;编码;测试;维护
(1) 软件工程方法学的概念,内涵,要素,主要的范型
- 传统方法学
ü 采用结构化技术(SA、SD、SP)
ü 对软件生命周期划分阶段,按顺序完成各阶段任务
ü 每个阶段开始和结束都有严格标准,相邻的两个阶段,前一阶段的结束标准即为后一阶段的开始标准
ü 每阶段结束前都需要进行正式而严格的技术审查和管理复审
ü 强调自顶而下顺序地完成软件开发各阶段的任务
——基于瀑布模型
- 面向对象方法学
ü 把对象(Object)作为融合了数据及对数据的操作行为的统一的软件构件。
ü 对象彼此间通过消息传递协同工作,共同完成系统的功能
ü 把相关对象分类(Class)
ü 借鉴自然界的遗传变异的特性,提炼出继承及多态机制,有效提高软件构件重用性及改善软件系统结构,从而提高了软件生产效率及可维护性。
ü 主动多次反复迭代的演化过程
——基于迭代模型
(2) 软件过程概念,各种软件过程模型和特点(瀑布,快速原型,螺旋)
软件过程——为获得高质量软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤
软件生命周期模型——从软件项目需求定义之中软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部的过程、活动和任务的结构框架。
模型 |
优点 |
缺点 |
瀑布模型 |
文档驱动 |
系统可能不满足客户的需求 |
快速原型模型 |
关注满足客户需求 |
可能导致系统设计差、效率低,难于维护 |
增量模型 |
开发早期反馈及时,易于维护 |
需要开放式体系结构,可能会设计差、效率低 |
螺旋模型 喷泉模型 |
风险驱动 迭代 无缝 适合OO |
风险分析人员需要有经验且经过充分训练 |
瀑布模型
特点
(1)阶段间具有顺序性和依赖性
(2)推迟实现的观点
(3)质量保证的观点
快速原型模型
特点
快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统让用户
在计算机上试用它通过实践来了解目标系统的概貌。
螺旋模型
特点
螺旋模型的基本思想是使用原型及其他方法来尽量降低风险。理解这种模型的一
个简便方法是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型