1、软件工程学概述可行性分析与需求分析总体设计详细设计实现维护面向对象方法学引论面向对象分析面向对象设计复习 Date 1上海大学计算机学院软件工程学概述 软件危机 定义: 指在计算机软件的 开发和维护过程 中所遇到的一系列严重问题。 典型表现: 开发成本和进度的估计常常很不准确; 用户对 “已完成的 ”软件系统不满意; “闭门造车 ”; 软件质量不可靠; 软件常常是不可维护的; 软件成本的比例逐年上升; 软件产品 “供不应求 ”; 产生软件危机的原因 软件的规模加大、复杂性提高、性能增强 ; 软件是逻辑产品 , 尚未完全认识其本质和特点 ; 缺乏系统的开发、维护大型软件项目的技术手段和管理方法;
2、 用户和软件开发人员的理解鸿沟 ; 错误的认识和作法Date 2上海大学计算机学院软件工程学概述 软件工程 定义软件工程是指导计算机软件 开发和维护 的一门 工程学科 。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的 管理技术 和当前能够得到的最好的技术方法结合起来,以 经济地开发出高质量 的软件并 有效地维护 它。 本质特性软件工程的中心课题是控制复杂性和谐地合作是开发软件的关键Date 3上海大学计算机学院软件工程学概述 软件工程的 7条 基本原理 用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查
3、开发小组的人员应该少而精 承认不断改进软件工程实践的必要性Date 4上海大学计算机学院软件工程学概述 软件生命周期是软件产品或系统一系列相关活动的全周期。 软件生命周期的 3个大阶段 软件定义 : 确定软件开发总目标;确定工程的可行性;导出实现策略及系统功能;估计资源和成本,并且制定工程进度表。问题定义、可行性研究、需求分析 软件开发 : 具体设计和实现在前一个时期定义的软件总体设计、详细设计、编码和单元测试、综合测试 软件维护 : 使软件持久地满足用户的需要Date 5上海大学计算机学院软件工程学概述 生命周期中各阶段的任务1. 问题定义: “要解决的问题是什么 ?”; 确定用户要求解决的
4、性质、工程的目标和规模。2. 可行性研究: “对于上一个阶段所确定的问题有行得通的解决办法吗 ?”, 经济可行性、技术可行性、法律可行性、不同的方案3. 需求分析: “为了解决这个问题,目标系统必须做什么 ”, 确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景。4. 总体设计(概要设计) : “概括地说,应该怎样实现目标系统 ?”; 设计出实现目标系统的几种可能的方案。推荐一个最佳方案。5. 详细设计: “应该怎样具体地实现这个系统呢 ?”; 设计出程序的详细规格说明。6. 编码和单元测试: 写出正确的容易理解、容易维护的程序模块; 仔细测试编写出的每一个模块。7. 综
5、合测试: 集成测试和验收测试,现场测试或平行运行8. 软件维护: 使系统持久地满足用户的需要。包括: 改正性维护,适应性维护,完善性维护,预防性维护。Date 6上海大学计算机学院软件工程学概述生命周期模型规定了把 生命周期划分成哪些阶段 及 各个阶段的执行顺序 ,因此,也称为过程模型。u典型的过程模型 瀑布模型 (Waterfall model) 快速原型开发模型 (Rapid Prototyping model) 增量模型 (Incremental model) 螺旋模型 (Spiral model) 喷泉模型 其它模型 极限编程 XP(eXtreme Programming) RUP(R
6、ational Unified Process) 建造 修补模型 (Build-and-fix model) Date 7上海大学计算机学院软件工程学概述 瀑布模型特点 阶段间具有顺序性和依赖性 推迟实现的观点 清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。 质量保证的观点 (文档驱动 ) 每个阶段都必须完成规定的文档 每个阶段结束前都要对所完成的文档进行评审缺点 开发过程一般不能逆转,否则代价太大。 规格说明很难理解: “我知道这是按我的要求做的,但不是我想要的样子。 ” 软件的实际情况必须到项目开发的后期客户才能看到。Date 8上海大学计算机学院软件工程学概述 增量模型 把软件
7、产品作为一系列增量构件来设计、编码、集成和测试。 优点 每个阶段交付一个可用的产品。 减少一个全新产品给客户带来的心理上的影响。 分阶段地交付产品不需要大的资金支出。 需求经常变化,增量模型的灵活性使其具有更加优越的适用性。 缺点 需要一个开放的结构,方便构件的加入。Date 9上海大学计算机学院软件工程学概述生命周期模型 优 点 缺点瀑布模型 文档 驱动 的有序方法 交付 产 品可能不符合客 户的要求快速原型模型 确保交付的 产 品符合客 户 的要求 还 没有 证 明无懈可 击增量模型 增大投 资 的早期回 报 要求开放的 结 构,可能退化 为 建造 -修 补 模型螺旋模型 结 合上述所有模型的特性 只能用于大型的内部 软 件产 品,开 发 者必 须 精通 风险 分析和 风险 排除Date 10上海大学计算机学院