上海大学软件工程复习

上传人:101****457 文档编号:50754399 上传时间:2018-08-10 格式:PPT 页数:47 大小:412KB
返回 下载 相关 举报
上海大学软件工程复习_第1页
第1页 / 共47页
上海大学软件工程复习_第2页
第2页 / 共47页
上海大学软件工程复习_第3页
第3页 / 共47页
上海大学软件工程复习_第4页
第4页 / 共47页
上海大学软件工程复习_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《上海大学软件工程复习》由会员分享,可在线阅读,更多相关《上海大学软件工程复习(47页珍藏版)》请在金锄头文库上搜索。

1、复习 软件工程学概述 可行性分析与需求分析 总体设计 详细设计 实现 维护 面向对象方法学引论 面向对象分析 面向对象设计上海大学计算机学院1软件工程学概述软件危机定义:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现: 开发成本和进度的估计常常很不准确; 用户对“已完成的”软件系统不满意; “闭门造车”; 软件质量不可靠;软件常常是不可维护的; 软件成本的比例逐年上升; 软件产品“供不应求”; 产生软件危机的原因 软件的规模加大、复杂性提高、性能增强; 软件是逻辑产品, 尚未完全认识其本质和特点; 缺乏系统的开发、维护大型软件项目的技术手段和管理方法; 用户和软件开发人员的

2、理解鸿沟; 错误的认识和作法上海大学计算机学院2软件工程学概述 软件工程 定义 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程 的概念、原理、技术和方法来开发与维护软件,把经过时间考验而 证明正确的管理技术和当前能够得到的最好的技术方法结合起来, 以经济地开发出高质量的软件并有效地维护它。 本质特性 软件工程的中心课题是控制复杂性 和谐地合作是开发软件的关键 上海大学计算机学院3软件工程学概述软件工程的7条基本原理1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件

3、工程实践的必要性上海大学计算机学院4软件工程学概述软件生命周期是软件产品或系统一系列相关活动的全周 期。 软件生命周期的3个大阶段1. 软件定义: 确定软件开发总目标;确定工程的可行性;导出实现策略及 系统功能;估计资源和成本,并且制定工程进度表。 问题定义、可行性研究、需求分析2. 软件开发: 具体设计和实现在前一个时期定义的软件 总体设计、详细设计、编码和单元测试、综合测试3. 软件维护: 使软件持久地满足用户的需要上海大学计算机学院5软件工程学概述 生命周期中各阶段的任务 1. 问题定义: “要解决的问题是什么?”; 确定用户要求解决的性质、工程 的目标和规模。 2. 可行性研究: “对

4、于上一个阶段所确定的问题有行得通的解决办法吗?” , 经济可行性、技术可行性、法律可行性、不同的方案 3. 需求分析: “为了解决这个问题,目标系统必须做什么”, 确定系统必 须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景 。 4. 总体设计(概要设计): “概括地说,应该怎样实现目标系统?”; 设计 出实现目标系统的几种可能的方案。推荐一个最佳方案。 5. 详细设计: “应该怎样具体地实现这个系统呢?”; 设计出程序的详细规 格说明。 6. 编码和单元测试: 写出正确的容易理解、容易维护的程序模块; 仔细 测试编写出的每一个模块。 7. 综合测试: 集成测试和验收测试,现场测

5、试或平行运行 8. 软件维护: 使系统持久地满足用户的需要。包括: 改正性维护,适应性 维护,完善性维护,预防性维护。上海大学计算机学院6软件工程学概述生命周期模型规定了把生命周期划分成哪些阶段及各个 阶段的执行顺序,因此,也称为过程模型。 u典型的过程模型1. 瀑布模型(Waterfall model)2. 快速原型开发模型(Rapid Prototyping model)3. 增量模型(Incremental model)4. 螺旋模型(Spiral model)5. 喷泉模型6. 其它模型 极限编程XP(eXtreme Programming) RUP(Rational Unified

6、Process) 建造修补模型(Build-and-fix model) 上海大学计算机学院7软件工程学概述 瀑布模型 特点 1. 阶段间具有顺序性和依赖性 2. 推迟实现的观点 清楚地区分逻辑设计与物理设计, 尽可能推迟程序的物理实现。 3. 质量保证的观点(文档驱动) 每个阶段都必须完成规定的文档 每个阶段结束前都要对所完成的文 档进行评审 缺点 1. 开发过程一般不能逆转,否则代价太大 。 2. 规格说明很难理解:“我知道这是按我 的要求做的,但不是我想要的样子。” 3. 软件的实际情况必须到项目开发的后期 客户才能看到。上海大学计算机学院8软件工程学概述增量模型 把软件产品作为一系列增

7、量构件来 设计、编码、集成和测试。 优点 每个阶段交付一个可用的产品 。 减少一个全新产品给客户带来 的心理上的影响。 分阶段地交付产品不需要大的 资金支出。 需求经常变化,增量模型的灵 活性使其具有更加优越的适用 性。 缺点 需要一个开放的结构,方便构 件的加入。上海大学计算机学院9软件工程学概述上海大学计算机学院10生命周期模型优点缺点瀑布模型文档驱动的有序方法交付产品可能不符合客户 的要求 快速原型模型确保交付的产品符合客户的要求还没有证明无懈可击增量模型增大投资的早期回报要求开放的结构,可能退 化为建造-修补模型 螺旋模型结合上述所有模型的特性只能用于大型的内部软件 产品,开发者必须精

8、通风 险分析和风险排除可行性分析与需求分析 需求分析的任务 1.准确地回答“系统必须做什么?” 2.“分析软件需求和书写软件需求规格说明书” 软件需求 用户解决问题或达到目标所需要的条件或能力; 系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具 有的条件或能力 反映上述两个定义中所描述的条件或能力的文档说明 需求层次:业务需求用户需求功能与非功能需求 具体任务 确定对系统的综合要求 功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向 需求、扩展需求 分析系统的数据要求 导出系统的逻辑模型 书写软件需求规格说明书 修正系统开发计划上海大学计算机学院11需求分析

9、数据流图 数据流图(DFD)符号数据源点/数据终点数据流数据存储加工/处理根据描述画数据流图上海大学计算机学院12总体设计 总体设计的任务 1. “概括地说,系统应该如何实现?”2. 系统划分:即确定组成系统的程序、文件、数据库、人工过程和文 档等3. 设计软件的结构:即确定每个程序是由哪些模块组成,以及这 些模块相互间的关系。上海大学计算机学院13总体设计 设计原理 1.模块化 模块化的根据 C(P1P2) C(P1) C(P2) E(P1P2) E(P1) E(P2) 1.抽象 抽象就是抽出事物的本质特性而暂不考虑它们的细节 2. 逐步求精 为了能集中精力解决主要问题而尽量推迟对问题细节的

10、考虑。 3.信息隐藏和局部化 信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过 程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化: 把一些关系密切的软件元素物理地放得彼此靠近。 4.模块独立 每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。 模块独立性的衡量标准 模块内聚(Cohension) :模块内各元素交互的程度 模块耦合(Coupling) :模块间交互程度上海大学计算机学院14总体设计各种耦合的含义 设计时力争做到低耦合。应该采取的设计原则是:尽量 使用数据耦合,少用控制耦合和特征耦合,限制公用耦 合的范围,完全不用内容耦合。上海大学计算

11、机学院15耦合程度高低 耦合1. 内容耦合2. 共用耦合3. 控制耦合4. 印记(特征)耦合5. 数据耦合总体设计各种内聚的含义 设计时力争做到高内聚,并且能够辨认出低内聚 的模块,通过修改设计提高模块的内聚程度。上海大学计算机学院16内聚程度低高 内聚 1. 偶然性内聚 2. 逻辑性内聚 3. 时间性内聚 4. 过程性内聚 5. 通信性内聚 6. 顺序内聚 7. 功能性内聚 8. 信息性内聚总体设计 启发规则1. 改进软件结构提高模块独立性 2. 模块规模应该适中 3. 深度、宽度、扇出和扇入都应适当 4. 模块的作用域应该在控制域之内 模块的作用域:受该模块内一个判定影响的所有模块的集合。

12、 模块的控制域:模块本身以及所有直接或间接从属于它的模块的集 合。 所有受判定影响的模块应该都从属于做出判定的那个模块,最好局 限于做出判定的那个模块本身及它的直属下级模块。 5. 力争降低模块接口的复杂程度 6. 设计单入口单出口的模块 7. 模块功能应该可以预测上海大学计算机学院17总体设计上海大学计算机学院18模块的判定作用范围(a) 差的结构图; (b) 不理想的结构图; (c) 理想的结构图TOPABCDEF(b)TOPABCDEF(a)TOPABCDEF(c)总体设计结构图描述软件系统的模块层次结构,清楚地反映出程序中各模块之间 的调用关系和数据传递。上海大学计算机学院19AB输入

13、 数据输出 数据调用模块被调用模块选择调用循环调用总体设计面向数据流的设计方法 基本思想: DFD 结构图 两种信息流类型 变换流:掌握从变换流到初始结构图的转换 事务流上海大学计算机学院20详细设计详细设计的任务 不是具体地编写程序,而是设计程序的“蓝图”,确定每个模块的 处理过程。 结构程序设计 自顶向下逐步求精; 具有单入、单出的控制结构(取消GOTO语句); 结构化定理:任何单入口单出口的程序都可以由“顺序”、“选择” 和“循环”三种基本结构实现。 过程设计的工具(重点是画图)程序流程图盒图PAD图判定表上海大学计算机学院21详细设计程序流程图的基本符号上海大学计算机学院22(1) 顺

14、序结构AB(2) 选择结构PBAFT(3) 先判定型循环结构TPSF(4) 后判定型循环结构FSTP(5) 多情况选择(case structure)详细设计PAD图的基本符号上海大学计算机学院23详细设计判定表上海大学计算机学院24实现 编码风格 编码风格的作用就是使代码容易读; 风格良好的代码更容易阅读和理解,错误更少; 1.使用一致和有意义的标识符名 2.用缩进显示程序结构 3.用加括号的方式排除二义性 4.避免大量使用循环嵌套和条件嵌套 5.当心运算符的副作用 6.把数定义称常量 7.利用sizeof()计算对象的大小 8.清晰的代码,而非最巧妙的代码 9.程序的注释 序言性注释和功能

15、性注释 对一段程序注释,而不是每一个语句 10. 使用数据结束标记(EOF、BOF),不要指定数据的数目来判断文件 的结束。上海大学计算机学院25实现 测试 测试的目的就是在软件投入生产性运行之前,尽可能多地发现软 件中的错误。测试是为了发现程序中的错误而执行程序的过程。 调试的目的是诊断并改正错误。 对软件规格说明、设计和编码的最后复审。 开发总工作量的40%以上,极端情况下,其他开发步骤总成本的3 倍到5倍。 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案 。 成功的测试是发现了至今为止尚未发现的错误的测试。 测试只能查找出程序中的错误,不能证明程序中没有错误。 Pareto原理:80%的错误很可能是20%的模块造成的。 从“小规模”测试逐步到“大规模”测试。 穷举测试是不可能的。 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。 上海大学计算机学院26实现测试方法 黑盒测试:又称功能测试或数据驱动测试 白盒测试:又称结构测试或逻辑驱动测试 测试步骤 模块测试(单元测试) 在这个测试步骤中所发现的往往是编码和详细设计的错误 子系统测试 模块放在一起形成一个子系统来测试 着重测试模块的接口 系统测试 经过测试的子系统装配成一个完整的系统来测试 发现的往往是软件设计中的错误,也可能发现需求说明中的错误 验收测试(确认测试) 它

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号