




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
办公电话 51684274电子邮件 yliu 课后有问题最好用电子邮件I 参考书目软件工程导论 第5版 张海藩清华大学出版社软件工程 第二版 齐治昌 谭庆平 宁洪编著 高等教育出版社ShariLawrencePfleeger软件工程 理论与实践 第2版 高教出版社影印版 2003助教 唐建强博士考核方式 闭卷考试70 平时成绩 考勤 作业 30 课代表 第一讲如何认识软件与软件工程 教学目标 本课程的目的与任务是使同学们通过本课程的学习 了解软件项目开发和维护的一般过程 掌握软件开发的传统方法和最新方法 提高大家的软件开发能力与软件项目管理能力 学习管理的思想 工程的方法 1 1软件与软件危机 1 软件的概念 什么是软件 软件就是程序 一定要纠正软件就是程序 开发软件就是编写程序的错误观念 规模庞大 看不见 摸不着 软件 程序 数据 文档 1 1软件与软件危机 2 软件的概念软件定义 软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据 加上描述软件开发过程及其管理 程序的操作和使用的有关文档 程序 软件与软件产品 独唱 小合唱 合唱 万人大合唱 简单程序较复杂程序软件 1 1软件与软件危机 3 早期第二阶段第三阶段第四阶段 面向批处理 多用户 分布式系统 强大的桌面系统 有限的分布 实时 嵌入 智能 面向对象技术 自定义软件 数据库 低成本硬件 专家系统 软件产品 消费者的影响 人工神经网络 并行计算 网络计算机 19501960197019801990200021世纪 1 1软件与软件危机 4 存在并持续发展的问题 1 对软件开发成本和进度的估算很不准确2 用户很不满意3 质量很不可靠4 没有适当的文档5 软件常常是不可维护的6 供不应求 软件开发生产率跟不上计算机应用迅速深入的趋势 软件危机 在计算机软件的开发和维护过程中所遇到的一系列严重问题 软件危机例证 IBM公司的OS 360 共约100万条指令 花费了5000个人年 经费达数亿美元 而结果却令人沮丧 错误多达2000个以上 系统根本无法正常运行 OS 360系统的负责人Brooks这样描述开发过程的困难和混乱 像巨兽在泥潭中作垂死挣扎 挣扎得越猛 泥浆就沾得越多 最后没有一个野兽能够逃脱淹没在泥潭中的命运 1963年美国飞往火星的火箭爆炸 造成1000万美元的损失 原因是FORTRAN程序 DO5I 1 3误写为 DO5I 1 3 1967年苏联 联盟一号 载人宇宙飞船在返航时 由于软件忽略一个小数点 在进入大气层时因打不开降落伞而烧毁 1 1软件与软件危机 5 产生软件危机的原因在软件开发和维护的过程中存在这么多严重问题 一方面与软件本身的特点有关 另一方面也和软件开发与维护的方法不正确有关 客观 软件本身特点逻辑部件规模庞大主观 不正确的开发方法忽视需求分析错误认为 软件开发 程序编写轻视软件维护 1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议 讨论软件危机问题 在这次会议上正式提出并使用了 软件工程 这个名词 一门新兴的工程学科就此诞生了 软件工程指导计算机软件开发和维护的工程学科工程管理 开发技术1993年IEEE进一步给出了一个更全面更具体的定义 软件工程是 把系统的 规范的 可度量的途径应用于软件开发 运行和维护过程 也就是把工程应用于软件 研究 中提到的途径 1 2软件工程及其基本原理 1 软件工程的目标软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率 也就是要以较短的周期 较低的成本生产出高质量的软件产品 并最终实现软件的工业化生产 软件的质量特性 功能性 可靠性 可使用性 效率 可维护性和可移植性 1 2软件工程及其基本原理 2 1 2软件工程及其基本原理 3 软件工程的基本原理 1 按软件生命周期分阶段制订计划并认真实施 2 坚持进行阶段评审 3 坚持严格的产品控制 4 使用现代软件开发技术 5 明确责任 6 用人少而精 7 不断改进开发过程 1 3软件生命周期 1 概念软件也有一个孕育 诞生 成长 成熟和衰亡的生存过程 我们称这个过程为软件生命周期或软件生存期 软件生存期由软件定义 软件开发和运行维护3个时期组成 每个时期又可划分为若干个阶段 1 3软件生命周期 2 软件定义时期主要任务是解决 做什么 what 的问题确定工程的总目标和可行性 导出实现工程目标应使用的策略及系统必须完成的功能 估计完成工程需要的资源和成本 制订工程进度表 通常又分为3个阶段 问题定义 可行性研究和需求分析 1 3软件生命周期 3 软件开发时期主要任务是解决 如何做 how 的问题 即具体设计和实现在前一个时期定义的软件 由概要设计 详细设计 编码和测试4个阶段组成 1 3软件生命周期 4 软件运行维护时期主要任务是使软件持久地满足用户的需要 通常有4类维护活动 改正性维护 也就是诊断和改正在使用过程中发现的软件错误 适应性维护 即修改软件以适应环境的变化 完善性维护 即根据用户的要求改进或扩充软件 使它更完善 预防性维护 即修改软件为将来的维护活动预先做准备 统计数据表明 实际上用于软件维护的费用占软件总费用的55 70 软件工程学的一个重要目标就是提高软件的可维护性 减少软件维护的代价 1 3软件生命周期 5 各个阶段所要完成的基本任务问题定义与可行性研究本阶段要回答的关键问题是 到底要解决什么问题 在成本和时间的限制条件下能否解决问题 是否值得做 2 需求分析本阶段要回答的关键问题是 目标系统应当做什么 3 软件设计设计是软件工程的技术核心 本阶段要回答的关键问题是 如何实现目标系统 1 3软件生命周期 6 各个阶段所要完成的基本任务 4 程序编码和单元测试本阶段要解决的问题是 正确地实现已做的设计 即 如何编写正确的 可维护的程序代码 5 集成和系统测试测试是控制软件质量的重要手段 本阶段的主要任务是做集成测试和系统测试 6 软件运行和维护已交付的软件投入正式使用 便进入运行阶段 这一阶段可能持续若干年 软件在运行中可能由于多方面的原因 需要对它进行修改 1 4软件工程方法学 1 概念软件工程包含技术和管理两方面的内容 是技术和管理紧密结合所形成的工程学科 通常将软件开发全过程中使用的一整套技术方法的集合称为方法学 methedology 也称为范型 paradigm 1 4软件工程方法学 2 三要素 方法 工具 过程 软件工程方法是完成软件开发的各项任务的技术方法 软件工具是为运用方法而提供的自动和半自动的软件工程支撑环境 过程是为了获得高质量的软件所需要完成的一系列任务框架 它规定了完成各项任务的工作步骤 目前使用最广泛的软件工程方法学 传统方法 结构化方法 面向对象方法 1 4软件工程方法学 3 结构化方法也称为生命周期方法学或结构化范型 根据软件生命周期的各个阶段 采用结构化技术来完成每个阶段的任务 特点 1 强调自顶向下顺序地完成软件开发的各阶段任务 2 结构化方法要么面向行为 要么面向数据 缺乏使两者有机结合的机制 1 4软件工程方法学 4 面向对象方法是将数据和对数据的操作紧密地结合起来的方法 软件开发过程是多次反复迭代的演化过程 面向对象方法在概念和表示方法上的一致性 保证了各项开发活动之间的平滑过渡 对于大型 复杂及交互性比较强的系统 使用面向对象方法更有优势 1 5软件过程 软件过程是为了获得高质量软件所需要完成的一系列任务的框架 它规定了完成各项任务的工作步骤 过程定义了运用方法的顺序 应该交付的文档资料 为保证软件质量和协调变化所需要采取的管理措施 以及标志软件开发各个阶段任务完成的里程碑 通常使用生命周期模型简洁地描述软件过程 生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序 因此 也称为过程模型 将软件生存周期各活动规定为依线性顺序联接的若干阶段的模型 它规定了由前至后 相互衔接的固定次序 如同瀑布流水 逐级下落特点阶段的顺序性和依赖性推迟实现的观点质量保证 1 5 1瀑布模型 1 传统的瀑布模型 1 5 1瀑布模型 2 瀑布模型有许多优点 可强迫开发人员采用规范的方法 例如 结构化技术 严格地规定了每个阶段必须提交的文档 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证 各个阶段产生的文档是维护软件产品时必不可少的 没有文档的软件几乎是不可能维护的 瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型 存在问题不适合需求模糊的系统 在获得用户基本需求说明的基础上 投入少量人力和物力 快速建立一个原始模型 使用户及时运行和看到模型的概貌和使用效果 并对需求说明进行补充和精化 提出改进意见 开发人员进一步修改完善 如此循环迭代 直到得到一个用户满意的模型为止 1 5 2快速原型模型 1 1 原型系统已经通过与用户交互而得到验证 据此产生的规格说明文档正确地描述了用户需求 因此 在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工 2 开发人员通过建立原型系统已经学到了许多东西 在设计和编码阶段发生错误的可能性也比较小 这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性 3 软件产品一旦交付给用户使用之后 维护便开始了 根据所需完成的维护工作种类的不同 可能需要返回到需求分析 规格说明 设计或编码等不同阶段 1 5 2快速原型模型 2 使用增量模型开发软件时 把软件产品作为一系列的增量构件来设计 编码 集成和测试 每个构件由多个相互作用的模块构成 并且能够完成特定的功能 1 5 3增量模型 1 增量模型的优点 1 能在较短时间内向用户提交可完成一些有用的工作产品 即从第1个构件交付之日起 用户就能做一些有用的工作 2 逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品 从而减少一个全新的软件可能给用户组织带来的冲击 3 项目失败的风险较低 虽然在某些增量构件中可能遇到一些问题 但其他增量构件将能够成功地交付给客户 4 优先级最高的服务首先交付 然后再将其他增量构件逐次集成进来 因此 最重要的系统服务将接受最多的测试 1 5 3增量模型 2 增量构件开发每个增量构件应当实现某种系统功能 因此增量构件的开发可以采用瀑布模型的方式 如图所示 1 5 3增量模型 3 该模型将瀑布模型与快速原型模型结合起来 并且加入两种模型均忽略了的风险分析 螺旋模型的基本思想是 使用原型及其他方法来尽量降低风险 理解这种模型的一个简便方法 是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型 1 5 4螺旋模型 1 简化的螺旋模型 完整的螺旋模型 螺旋模型的优点对可选方案和约束条件的强调有利于已有软件的重用 也有助于把软件质量作为软件开发的一个重要目标 减少了过多测试或测试不足所带来的风险 在螺旋模型中维护只是模型的另一个周期 因而在维护和开发之间并没有本质区别 螺旋模型的缺点螺旋模型是风险驱动的 因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识 否则将出现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年无人机驾驶员职业技能考核试卷及答案(无人机遥控操作)
- 2025年电梯维修工程师资格考试试题及答案解析
- 高校合同审计报告模板(3篇)
- 高清柔性屏采购合同模板(3篇)
- 高空瓦匠施工合同范本(3篇)
- 爱婴医院考试试题及答案
- 卫生健康委员会疾病预防控制体系建设合同
- 汽修厂汽车维修工人劳动合同与职业发展规划
- 专业市场店铺股份收购及供应链整合协议
- 地下商场商铺产权转让协议
- 第六章-全球变化与海平面变化分解课件
- (完整版)高中物理必修一第一章测试题及答案
- 岁儿童行为量表CBCL
- VTE防治护理手册
- 小儿支气管哮喘-羽课件
- 新北师大版二年级上册数学 课桌有多长 教学课件
- 管道沟槽开挖安全安全技术交底
- 案件(线索)移送登记表
- 2021年全国质量奖现场汇报材料课件
- 《组织学与胚胎学》课件02细胞
- 名词性从句公开课
评论
0/150
提交评论