软件工程-第1章绪论lyh.ppt

上传人:zhu****ei 文档编号:5405093 上传时间:2020-01-28 格式:PPT 页数:32 大小:238.50KB
返回 下载 相关 举报
软件工程-第1章绪论lyh.ppt_第1页
第1页 / 共32页
软件工程-第1章绪论lyh.ppt_第2页
第2页 / 共32页
软件工程-第1章绪论lyh.ppt_第3页
第3页 / 共32页
点击查看更多>>
资源描述
软件工程 原理 方法与应用 李亚红lyh nyist SoSo 主义 小两口A 精细管理 小两口B 粗放管理 小两口C 信任管理 软件工程中的管理模式也大抵超不出以上三种或其组合 英文中有个词叫 So So 平常的 不好不坏的 福建方言中有个词发音类似 Sh oSh o 的词 意思都是 马马虎虎 即 tiger tiger horse horse 中国人有四种 新加坡人 香港人 台湾人 大陆人 大陆人大都喜欢 马马虎虎 或者说许多时候都只能马马虎虎 难得糊涂 或者说大都是 SoSo 主义者 软件工程却希望做到像上文所述第一种的 精细管理 这时就会与大陆人的 SoSo 主义冲突 故大陆软件公司搞软件工程成功很困难 红绿灯 话说比较早的时候街上的红绿灯很简单 一个方向红的时候一个方向绿 每隔60秒交替变化 这时用简单的定时模拟电路控制就可以了 而且通过电阻电容的调整也能调整变化间隔 后来觉得这样很不人性化 用户界面不好 让行人干等不好 应该加一个数字计时器 显示还剩下的需要等待秒数 这时用模拟电路的架构就不行了 必须用数字电路 需求变化第一次导致架构变化 许多路口 由于两个方向的流量不一样 导致需要两个方向的灯亮的时间不一样 比如一个90秒 一个30秒 这时要求红绿灯能进行设置 对数字电路架构添加这种功能不是很难 再后来 由于许多路口的流量变化很大 要求红绿灯能智能控制 于是安装了摄像头监控流量 与红绿灯一起跟监控中心联网 就是所谓的智能交通 需求总是变化的 其中许多是由竞争对手而不是用户驱动的 许多需求导致产品架构变化 代价通常是很大的 阿波罗 计划 话说在1961年 美国总统肯尼迪向全国发言 宣布开始一个为期十年的太空计划 阿波罗 登月计划 目标是要把一个人送上月球 1969年登月计划成功完成 下文是人们对该计划为何能成功的总结 相信也适用于软件工程 首先 选择了一个明确的目标 把人送上月球 其次 有一个基本的计划可以遵循 许多问题都还没有解答 但已有一个起步之处 一个基础计划 第三 有一个目标时间 在十年之内把这个梦想变成现实 参与登月计划的人们一天接着一天地为实现他们的目标一起工作 他们并不确切知道怎样把一个人送上月球 但是他们忠实于目标并且确信它能被做到 他们并不确切知道宇宙飞船看起来是什么样子 更未想到计算机在这个项目里会起到那样大的积极作用 虽然存在着许多未知的因素 但是他们始终把目标摆在面前 他们利用了团体的智慧 即使碰到暂时的失败 也保持着实现目标的信心 因为他们确信他们的目标能够被实现 结果就是美国提前一年成功地把人送上月球 再重复一下他们开展计划的步骤 第一 设定了一个目标第二 着手制定计划第三 严格规定了一个实现目标的时间第四 利用集体的智慧第五 每个人都在头脑里不断记着目标第六 开展行动第七 抱有实现目标的必胜信心 学习软件工程的重要性 随着计算机的日益普及 计算机软件无处不在 以软件的说明 开发 维护和管理为内容 作为信息产业的一个支柱 软件工程这一学科已逐渐为人们所熟悉和广泛应用 对软件产业的形成和发展起着决定性的推动作用 在计算机应用中至关重要 在人类进入信息化社会时成为新型信息产业的支柱 软件的规模越大 越复杂 人们的软件开发能力越显得力不从心 于是 人们开始重视软件开发过程 方法 工具和环境的研究 软件工程应运而生 人们已认识到 如有哪个项目不遵循软件工程原则必定会受到实践的惩罚 一些清华大学计算机系的毕业生认为 软件工程课是他们参加工作以后最能直接应用的一门专业课 课程目的 掌握软件工程的基本概念 学会软件工程的分析 设计方法 编码以及测试 维护的基本策略和方法 了解软件工程技术新的发展趋势和动向 学时分配 软件工程的产生 软件生命周期及瀑布开发模型 软件开发各阶段的目标 任务 特点 步骤和文档 结构化方法的基本思想 开发过程和步骤 应遵循的原则和准则 面向对象方法的基本思想 基本概念 基本模型 软件工程的管理技术 本课程的主要内容 第一章绪论 从三个方面介绍软件软件工程学传统软件工程和面向对象软件工程 需掌握的知识点了解软件的特点 软件危机的产生及其表现形式 理解软件工程的定义及特点 深刻理解软件危机产生的原因 软件的定义 软件 程序 数据 文档 软件已经成为基于计算机的系统及产品的关键组成部分 软件已经从硬件的附庸 演化为一门独立的产业 软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据 加上描述程序的操作和使用的文档 程序是为了解决某个问题而用程序设计语言描述的适合计算机处理的语句序列 程序执行时一般输入一定的数据 才能输出特定的结果 文档是软件开发活动的纪录 主要供人们阅读 方便软件的开发和管理 软件的特征 软件有别于人类其它创造物 其特征是明显的 1 软件是逻辑产品 而非传统意义上的物理产品 因而具具有抽象性 2 软件是由开发而成的 而非传统意义上制造产生的 3 软件不会 磨损 但是较难维护 失效率曲线 4 大多数软件是自定的 而非通过已有构件组装得到 软件种类划分 按功能分类应用软件系统软件支撑软件按失效影响分类高可靠性软件一般可靠性软件按工作方式分类分时软件实时软件交互式软件批处理式软件 按规模分类微型小型中型大型 甚大型极大型按服务对象分类项目软件产品软件按使用频度分类一次性使用软件频繁使用软件 支撑软件是用于支撑软件开发和运行的软件 可帮助开发者快速 准确 有效地进行软件研发 管理 评测 支撑软件包括软件开发工具 软件评测工具 界面工具 转换工具 软件管理工具 语言处理程序 数据库管理系统 网络支撑软件等 系统软件是为了方便地使用机器及其输入输出设备 充分发挥计算机系统的效率 围绕计算机系统本身开发的程序系统 如我们使用的操作系统 常用的有DOS Windows Unix等 语言编译程序 数据库管理软件 应用软件是专门为了某种使用目的而编写的程序系统 常用的有文字处理软件 如WPS和Word 专用的财务软件 人事管理软件 计算机辅助软件 如AutoCAD 绘图软件 如3DS等 软件的发展 软件的发展经历的三个阶段程序设计阶段 50至60年代程序系统阶段 60至70年代软件工程阶段 70年代以后 1950 1960年 面向批处理有限的分布自定义软件 1960 1978年 多用户实时处理数据库软件产品 1975 1989年 分布式系统嵌入 智能 低成本硬件消费者影响 1985 2000年 强大的桌面系统面向对象技术专家系统人工神经网络并行计算网络计算 软件危机 软件工程 软件生产的发展过程 软件危机 开发软件所需的高成本同产品的低质量之间存在着尖锐的矛盾 这种现象就是所谓的软件危机 SoftwareCrisis 受硬件性能的限制和对软件能力的认识不足 软件规模较小小规模作坊式的开发组织 编程作为个人思维的技艺 除程序框图 程序编辑器 编译器仅有编程手段和检验工具以外 没有可行的软件方法和开发工具 几乎不存在软件项目管理的概念 被动地修改临时性的出错 也许还会带来更大的危害和隐患 谈不到扩充功能和版本升级等维护机制 软件开发周期大大超过规定日期 软件系统开发成本高 质量差 满足不了市场需求 软件系统开发人员少 质量低 软件系统维护难度大 软件危机的定义 软件危机出现的原因 软件危机的主要特点 软件工程的定义 软件工程定义为 运用现代科学技术知识来设计并构造计算机程序及为开发 运行和维护这些程序所必须的相关文档资料 软件工程学定义为 建立并使用完善的工程化原则 以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法 软件工程是一类工程 工程是将理论和知识应用于实践的科学 就软件工程而言 它借鉴了传统工程的原则和方法 以求高效地开发高质量软件 其中应用了计算机科学 数学和管理科学 计算机科学和数学用于构造模型与算法 工程科学用于制定规范 设计范型 评估成本及确定权衡 管理科学用于计划 资源 质量和成本的管理 软件工程概念的出现源自软件危机 软件工程概述 软件工程需要解决的问题主要有 软件成本 软件可靠性 软件维护 软件生产率和软件复用 软件工程 SoftWareEngineering 的框架可概括为 目标 过程和原则 软件工程需要达到的基本目标 生产具有正确性 可用性以及开销合宜的产品 正确性指软件产品达到预期功能的程度 可用性指软件基本结构 实现及文档为用户可用的程度 开销合宜是指软件开发 运行的整个开销满足用户要求的程度 这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题 它们形成了对过程 过程模型及工程方法选取的约束 软件工程过程 生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤 软件工程过程主要包括开发过程 运作过程 维护过程 它们覆盖了需求 设计 实现 确认以及维护等活动 需求活动包括问题分析和需求分析 问题分析获取需求定义 又称软件需求规约 需求分析生成功能规约 设计活动一般包括概要设计和详细设计 概要设计建立整个软件系统结构 包括子系统 模块以及相关层次的说明 每一模块的接口定义 详细设计产生程序员可用的模块说明 包括每一模块中数据结构说明及加工描述 实现活动把设计结果转换为可执行的程序代码 确认活动贯穿于整个开发过程 实现完成后的确认 保证最终产品满足用户的要求 维护活动包括使用过程中的扩充 修改与完善 伴随以上过程 还有管理过程 支持过程 培训过程等 软件工程概述 软件工程过程 ISO9000定义 软件过程是把输入转化为输出的一组彼此相关的资源和活动 从软件开发的观点看 它就是使用适当的资源 包括人员 硬软件工具 时间等 为开发软件进行的一组开发活动 在过程结束时将输入 用户要求 转化为输出 软件产品 软件工程的主要环节 软件工程过程定义了 方法使用的顺序 要求交付的文档资料 为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑 软件工程过程包含四种基本的过程活动 Plan软件规格说明Do软件开发Check软件确认Action软件演进 软件工程过程 软件工程的原则是指围绕工程设计 工程支持以及工程管理在软件开发过程中必须遵循的原则 软件工程概述 软件工程学的范畴 1 软件开发方法学为软件提供了 如何做 的技术 早期的程序设计基本上属于个人活动性质 程序员各行其事 并无统一的方法可循 20世纪60年代后期兴起结构化程序设计 不仅可以改善程序的清晰度 而且也能提高软件的可靠性与生产率 20世纪80年代出现了smalltalk C 等语言 只有在软件开发早期乃至全过程都采用面向对象技术 才能更好的发挥该技术的固有优势 2 软件开发工具 为软件工程方法提供了自动的或半自动的软件支撑环境 工欲善其事 必先利其器 3 软件工程环境 方法与工具相结合 再加上配套的软 硬件支持就形成环境 4 软件工程管理 目的 为了按照进度及预算完成软件开发计划 实现预期的经济和社会效益 软件工程的多视角理解 软件工程 工程观点 管理观点 技术观点 包括 软件项目的招标 投标 合同 实施 监督 验收 推广等方面来研究 以经济管理科学的理论为依据 研究软件工程的规划策略和经济收益等工程问题 包括 软件项目开发的人员组织 过程控制 进度风险分析和质量保证体系等方面 以科学性 合理性 高效可行 及可测量性为目标 来研究工程项目管理 包括 软件项目的分析 设计 编码 测试 维护等技术方法 依据软件技术理论 以高效 健壮 可复用 可维护的软件为目标 研究软件体系结构 组成成分 以及构造方式等 软件工程的6条原理 用分阶段的生命周期计划严格管理这一条是吸取前人的教训而提出来的 统计表明 50 以上的失败项目是由于计划不周而造成的 坚持进行阶段评审统计结果显示 大部分错误是在编码之前造成的 大约占63 错误发现的越晚 改正它要付出的代价就越大 要差2到3个数量级 实行严格的产品控制当需求变动时 其它各个阶段的文档或代码随之相应变动 以保证软件的一致性 采纳现代程序设计技术采用先进的技术即可以提高软件开发的效率 又可以减少软件维护的成本 结果应能清楚地审查开发小组的人员应少而精开发人员的素质和数量是影响软件质量和开发效率的重要因素 应该少而精 怎样培养软件工程的思维与方法 1 考虑整个项目或者产品的市场前景 2 从用户的角度来考虑问题 3 从技术的角度考虑问题 4 合理进行模块的分割 5 人员的组织和调度 6 开发过程中文档的编写 7 充分考虑实施时可能遇到的问题 比如 如果可以采用多线程进行程序中各个部分并行处理的话 就最好采用多线程处理 在Windows下开发的时候 能够把功能封装成一个单独的COM构件就不作成一个简单的DLL或者是以源代码存在的函数库或者是对象 比如能够在B S结构下运行并且不影响系统功能的话就不一定要在C S下实现 传统软件工程与面向对象软件工程 传统软件工程以结构化程序设计为基础 面向对象软件工程以面向对象程序设计为基础 两类软件工程范型的比较 面向过程的程序设计与面向对象的程序设计 面向过程的程序设计 程序 数据结构 算法面向对象的程序设计 程序 对象 消息
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!