软件工程导论综合复习一.ppt_第1页
软件工程导论综合复习一.ppt_第2页
软件工程导论综合复习一.ppt_第3页
软件工程导论综合复习一.ppt_第4页
软件工程导论综合复习一.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合复习 第一章概述 一 掌握软件的概念 了解其特点及分类基于软件的概念软件是计算机程序 规程以及运行计算机系统可能需要相关文档和数据 其中 程序是按事先设计的功能和性能要求编写的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发 维护和使用有关的图文材料 注意 程序并不是软件 程序只是软件的组成部分 关于软件的分类 主要考虑基于软件功能的划分 系统软件应用软件支撑软件 基于软件的特点 作为问题分析及判断 1 软件是一种逻辑实体 2 软件的开发 是人的智力的高度发挥 而不是传统意义上的硬件制造 3 软件维护与硬件的维修有着本质的差别 4 软件的开发和运行常常受到计算机系统的限制 对计算机系统有着不同程度的依赖性 5 软件的开发至今尚未完全摆脱手工艺的开发方式 使软件的开发效率受到很大限制 6 软件的开发是一个复杂的过程 7 软件的成本非常高昂 二 软件危机掌握软件危机的概念 分析其原因 消除办法及其表现形式 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 概括的说软件危机包含下述两个方面的问题 如何开发软件 以满足对软件日益增长的需要 如何维护数量不断膨胀的已有软件 软件危机的主要表现有 对软件开发成本和进度的估计常常不很准确用户对 已完成的 软件系统不满意的现象经常发生 软件产品质量往往靠不住 软件常常是不可维护的 软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产痃提高的速度远远跟不上计算机应用迅速普及深入趋势 产生软件危机的原因 在软件开发和维护过程中存在很多严重的问题 一方面与软件本身的特点有关 软件是一种无形的产品等 另一方面也和软件开发与维护的方法不当有关 认为软件开发就是简单的代码编写等 实际上讲就是没有认识软件的生命周期问题 消除软件危机的途径 在新时期要对软件有一个正确的认识 改变以前认为软件就是程序的错误观念 要认识到软件开发是一项工程项目 为了解决软件危机既要有技术措施 方法和工具 又要有必要的组织管理措施 三 软件工程1 什么是软件工程 软件工程是指研究软件生产的一门学科 也就是将完善的工程原理应用于经济地生产既可靠又能在实际机器上有效运行的软件 2 什么是软件工程方法学 通常把在软件生命周期全过程中使用的一整套技术的集合 称为软件工程方法学 软件工程方法学包括三个要素 方法 工具和过程 其中 方法是完成软件开发的各项任务的技术方法 为软件开发提供了 如何做 的技术 工具为软件工程方法提供了自动的或半自动的软件支撑环境 过程则是将软件工程的方法和工具综合起来以达到合理 及时地进行计算机软件开发的目的 注 传统方法学和面向对象方法学是目前使用得最广泛的两种软件工程方法学 四 软件生命周期 什么是软件的生命周期 它是怎样划分的 软件也有一个孕育 诞生 成长 成熟 衰亡的生存过程 一般称之为计算机软件的生存期 一般说来 软件生命期由软件定义 软件开发和软件维护三个时期组成 每个时期又可进一步划分成若干个阶段 软件定义时期主要任务是 确定软件开发工程必须完成的总目标 确定工程的可行性 导出实现工程目标应该采用的策略及系统必须完成的功能等 这一时期又可进一步划分为问题定义 可行性研究和需求分析 开发时期具体设计和实现在前一个时期定义的软件 它通常由下述4个阶段组织即总体设计 详细设计 编码和测试 其中前两个阶段称为系统设计 后两个阶段可叫系统实现 系统维护时期主要是使软件持久地满足用户的需要 软件生命周期详细划分 问题定义 主要任务是弄清用户要计算机解决的问题是什么 可行性研究 任务是为前一阶段提出的问题寻求一种至数种在技术上可行 且在经济上有较高效益的解决方案 需求分析 弄清用户对软件系统的全部需求 主要是确定目标系统必须具备哪些功能 总体设计 设计软件的结构 即确定程序由哪些模块组成以及模块间的关系 详细设计 把总体设计中的问题具体化 专门针对单个模块的设计 编码 按照选定的语言 把模块的过程性描述翻译为源程序 测试 通过各种类型的测试 及相应的调试 使软件达到预定的要求 软件运行维护期 是软件生存周期的最后一个时期 软件人员在这一时期的工作 主要是做好软件维护 维护的目的 是使软件在整个生存周期内保证满足用户的需求和延长软件的使用寿命 第二部分 一 软件过程的概念及四大要素 软件过程是软件工程人员为了获得软件产品而在软件工具的支持下实施的一系列软件工程活动 软件过程中主要强调四大要素 生命周期 人员 方法 产品 概括地说软件过程描述了开发出客户需要的软件 什么人 在什么时候 做什么事以及怎样做这些事以实现某一特定的具体目标 二 软件过程的基本活动由于软件的复杂性和多样式 软件开发并没有一个理想的理想的过程 不同的开发组织或者不同的软件类型往往存在着完全不同的软件开发过程 但一般来讲软件过程有如下一些活动 问题提出 提出软件需要做什么 软件需求规格说明 将需求分析活动中获得的信息以文档的形式确定下来 描述了软件的功能 列出软件必须满足的所有约束条件等 软件设计 确定软件应该怎样做 软件实现 将所设计的各个子系统编写成计算机可接受的程序代码 软件确认 检查与验证系统是否符合客户期望软件演化 通常使用生命周期模型简洁地描述软件过程 生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序 因此也称为过程模型 软件过程模型是描述软件过程的整体框架 它是软件过程的一种抽象表示 一般来讲有下列几种具体的模型瀑布模型快速原形模型增量模型螺旋模型喷泉模型Rational统一过程敏捷过程与极限编程微软过程形式化方法模型基于组件的开发模型 二 软件过程典型模型 Rational统一过程 retionalunifiedprocess简称RUP 是由Retional软件公司推出的一种完整而且完美的软件过程 它总结了6条最有效的软件开发经验 这些经验被称为最佳实践 迭代式开发管理需求使用基于构件的体系结构可视化建模验证软件质量控制软件变更 RUP中有9个工作流 前6个是核心工作流程 后3个为核心支持工作流程 4个阶段 初始 精化 构建 移交 第三部分软件项目管理 一 软件项目的特征及四大要素 软件项目的特征软件项目有如下显著特征 软件产品的不可见性项目的高度不确定性软件过程的多变化性软件人员的高流动性 软件项目管理的4P人员 people 产品 product 过程 process 项目 project 软件项目管理活动1 项目启动 确定目标和范围 确定项目范围组建项目团队建立项目环境2 项目规划 建立项目基本计划 确定项目活动预算项目成本制定进度计划 3 项目实施 按计划执行和控制项目 监控项目执行管理项目风险控制项目变更4 项目收尾 交付产品总结经验教训 客户验收项目安装培训软件总结项目经验 高效的团队建设注意如下原则项目成员集中办公人人参与产品设计关注最终产品发布注重项目人员培训建立良好的企业文化 图3 1面向数据流自顶向下求精过程 二 项目沟通管理1 项目沟通复杂性软件团队规模是影响沟通有效性的重要因素之一 团队成员数量的增加会使项目的有效交流变得十分困难 对于一个具有n个成员的项目团队来说 彼此之间的沟通渠道数量是n n 1 2 当项目成员数量超过3个人时 共沟通渠道的数量就会快速增长 实践表明项目成员数量应该保持在3 7人之间 2 几种项目沟通方式 总体上讲分为面对面和非面对面两种沟通类型 会议沟通 面对面 优点 比较正式的沟通 会后形成会议纪要 双方签字认可 还可能形成其他文档 不足 是有时间要求 有些细节问题可能无法沟通清楚 需会前后作补充 口头沟通 面对面 优点 随时随时进行 比较随意 沟通内容与形式比较灵活 双方没压力 不足 一般比较难得到一些比较正式的承诺或文档 图3 1面向数据流自顶向下求精过程 电子邮件优点 是现代办公常用方式 具有异步性和及时性特点 它是一种支持事件驱动沟通的方式 不足 对一些需要立即反馈的情况不适合 沟通结果不能直接作为合同等正式文件的内容 项目网站优点 是保持组间交流 对外发布项目信息的理想工具 可以利用其发布相关重要的项目文档不足 不能立即提醒项目人员关注 书面报告优点 有明确的法律效力和规范性 是一种正式的书面沟通方式 其语言表达更加准确 直观 严谨 能达到沟通最佳效果 不足 缺乏灵活性 如果只有一份正式文件 对方无法获知其中的诸多细节 需要其他沟通方式作补充 三 两种软件规模估算常用的估算方法有 代码行 功能点等技术1 代码行技术是一种简单而直观的软件规模估算方法 它从属于直观估算与量化估算相结合的一种方法 2 功能点技术是依据软件信息域的基本特征和对软件复杂性的估计 估算出软件规划 适用于软件开发初期估算 用软件代码行估算软件的开发规模直观 简单易行 其缺点为 代码行数估算依赖于开发工具的功能和表达能力 项目开发初期估算它的代码行数十分困难 用代码行估算方法会对需要设计精巧的项目产生不利影响 代码行估算不适宜非过程式的程序设计 采用功能点度量的优点 1 与程序设计工具无关 适用于各种语言环境 这对于面向对象的开发方式尤为有用 2 由于项目启动时就能基本上确定系统的输入 输出等参数 所以功能点度量能用于软件开发成本在初期预估 采用功能点度量的缺点 1 该方法涉及到的主观因素比较多 如Fi的选取与评估人的经验和态度有较大的关系 2 计算公式中的FP值的物理意义不直观 不易理解 三 软件的成本估算 软件成本估算通常注意以下三个原则 真实性与预见性原则 透明性与适应性原则 方便性与稳定性原则 软件开发规模与成本估算的方法常用的四种估算方法 1 类比估算法 参照已完成类似项目 估算软件开发成本和工作量 2 分解估算法 将项目分解成若干子系统 先估算每个子系统成本和工作量 再估算整个软件开发成本 3 周期估算法 将系统按系统生命周期分解为若干阶段并估算 然后汇总出总工作量和成本 4 经验估算法 根据实验或历史数据给出软件开发工作量或成本的经验估算公式 注意 采用分解法估算时应考虑系统集成时需要的工作量 四 软件风险及相关 什么是软件风险 使软件项目的实施受到影响和损失 甚至导致失败的 可能会发生的事件例如 人员的临时流失 计划过于乐观 设计的低劣软件风险的特点事先难以确定带来损失 影响项目实施 甚至会导致项目失败 什么是软件风险管理 在风险影响软件项目成功实施前 对它进行识别和处理 并预防和消除风险的发生识别风险 会有哪些风险 预防和消除风险 最好别让风险发生 制定风险发生后的处理措施 万一发生该怎么办 风险管理的组成 1 3 风险管理 风险评估 风险控制 风险识别 风险分析 风险优先级 风险管理计划 风险化解 风险监控 1 项目经理应该具备的基本素质和条件 有表率作用 有洞察力 技术过硬 有决断力 善于沟通善于激励他人 必要时能够支持上级领导 有全局观念 支持与关心团队成员 鼓励新观念新思想 有创新精神 五 软件项目管理辅助知识 2 软件项目管理中人力资源的重要性相关资料表明 对2000家亏损国企的调查表明 政策性亏损占9 9 客观原因造成的亏损占9 2 经营不善造成的亏损高达81 71 调查显示 HR HumanResource 对企业战略的整体影响力高达43 几乎是其他任何因素影响力的两倍 软件项目的实施需要多种资源 其中人力资源是最基本 最重要 最具创造性的资源 是影响项目成效的决定性因素 人力资源是人类可用于生产产品或提供各种服务的活力 技能 知识和可提供的商誉价值 人是企业最重要的资产 人的因素决定企业或项目的成败 有效地管理人力资源是项目经理所面临的最为艰巨的挑战 人力资源在经济活动中是居于主导地位的动能性资源 人类不同于自然界其他生物之处在于人具有目的性 主观能动性和社会意识 人力资源是具有时效性的资源 人力资源的形成 开发 使用都具有时间方面的制约 3 如何提高软件项目质量相关资料表明 对2000家亏损国企的调查表明 政策性亏损占9 9 客观原因造成的亏损占9 2 经营不善造成的亏损高达81 71 调查显示 HR HumanResource 对企业战略的整体影响力高达43 几乎是其他任何因素影响力的两倍 软件项目的实施需要多种资源 其中人力资源是最基本 最重要 最具创造性的资源 是影响项目成效的决定性因素 人力资源是人类可用于生产产品或提供各种服务的活力 技能 知识和可提供的商誉价值 人是企业最重要的资产 人的因素决定企业或项目的成败 有效地管理人力资源是项目经理所面临的最为艰巨的挑战 人力资源在经济活动中是居于主导地位的动能性资源 人类不同于自然界其他生物之处在于人具有目的性 主观能动性和社会意识 人力资源是具有时效性的资源 人力资源的形成 开发 使用都具有时间方面的制约 3 7软件项目管理辅助知识 3 提升软件项目质量注意问题进行全面质量管理思想的教育 对全体员工进行全面质量管理思想的教育 以达到以下目的 并做好如下工作一是将满足顾客的需求放在首位 二是明白提高质量与降低成本的关系 三是树立百分之百合格产品的责任感 明确顾客需求 搞清楚什么样的产品是让用户满意的产品 了解市场 经常将别的厂商的产品向大家展示 并进行研究 让大家别人的的产品是怎么做的哪些做得好 那些还存在问题 让员工明白什么是好的产品 给出样板 进行足够的培训 让大家都真正明白什么是好的合格的产品 建立明确的质量基准和质量测评制度 产品好坏一定要有一个明确公开的标准来衡量 每个人都可以把自己的工作结果与之对照 从而知道自己做得是好是坏 而且这种标准要以一种制度的形式切实付诸实施 才能增加可信度 建立相对完善的激励机制 如果检测的结果对个人的利益无任何影响 则员工没有尽力提高质量的动力 要在物质和精神方面对员工根据他们的绩效进行不同的激励 帮助质量检测部门变成提高质量的催化剂建立一套明确一致的解决问题的方法 出现问题后 大家能够按照此方法去解决问题 而不是互相埋怨或手足无措 在全体员工中培育主人翁意识和敬业精神 如果大家都抱着 公司不是我的 我是来打工的 公司效益好坏 能够存活发展与我无关 产品质量如何提高 公司如何搞好 让员工有一定的自由和权利 有质量小组 质量小组由不同角色的人员组成 负责发现质量问题 讨论解决方法 提出并实施解决方案 第四章需求分析 需求分析的特点问题的复杂性交流障碍需求易变性一不致性和不完整性 需求分析的任务 1 确定软件系统的综合需求 2 分析系统的数据需求 3 导出软件系统的逻辑模型 4 修正系统开发计划 5 开发原型系统 6 验证软件需求分析的正确性 7 编写软件需求规格说明书 需求收集的方式1 访谈2 问卷调查3 场景使用4 用户资料收集 二 分析建模与规格说明1 分析建模结构化分析实际上也算是一种创建模型的活动 根据结构化分析的原则 需求分析过程要建立三种模型 它们分别是数据模型 功能模型 行为模型 实体 联系图可以建立数据模型 数据流图是建立功能模型的基础 状态转换图又是建立行为模型的基础 实体 联系图与状态转换图 2 实体 联系图 为了把用户的数据要求清楚 准确地描述出来 系统分析员通常要建立一个概念性的数据模型 概念性数据模型是一种面向问题的数据模型 是按照用户的观点对数据建立的模型 它描述了从用户角度看到的数据 它反映了用户的现实环境 而且与在软件系统中的实现方法无关 数据模型中包含3种相互关联的信息 数据对象 数据对象的属性及数据对象彼此间相互连接的关系 联系数据对象彼此之间相互连接的方式称为联系 也称为关系 联系可分为以下3种类型 1 一对一联系 1 1 例如 一个部门有一个经理 而每个经理只在一个部门任职 则部门与经理的联系是一对一的 2 一对多联系 1 N 例如 某校教师与课程之间存在一对多的联系 教 即每位教师可以教多门课程 但是每门课程只能由一位教师来教 3 多对多联系 M N 例如 图3 2表示学生与课程间的联系 学 是多对多的 即一个学生可以学多门课程 而每门课程可以有多个学生来学 联系也可能有属性 实体联系图的符号Entity RelationshipDiagram使用ER来建立数据模型数据模型中包含3种相互关联的信息 实体 数据对象 用矩形框表示属性 用椭圆形或圆角矩形表示实体或关系的属性关系 用连接相关实体的菱形框表示具体例子见上图 数据规范化一般规范化有六级 1NF 2NF 3NF BCNF 4NF 5NF P3 第一范式数据冗余度最大 第六范式的冗余度最小 但必须注意如下几个问题 一是范式级别越高 存储同样的数据就需要分解成更多张表 因此存储过程也就越显复杂 二是随着范式级别的提高 数据存储结构与基于问题域的结构间的匹配程度也随之下降 因此在需求变化时数据的稳定性较差 三是范式级别越高则性能将下降 综上所述一般从实用角度分析最好选用第三范式比较恰当 3 状态转换图状态转换图也叫状态迁移图 是描述系统的状态如何相应外部的信号进行推移的一种图形表示 状态状态是任何可以被观察到的系统行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论