购买

¥ 30.0

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 第1章--软件工程学概述

第1章--软件工程学概述.ppt

第1章--软件工程学概述

烟雨梦兮
2018-10-14 0人阅读 举报 0 0 暂无简介

简介:本文档为《第1章--软件工程学概述ppt》,可适用于IT/计算机领域

软件工程学概述课程的要求、目标及特点课程的主要内容考核办法软件工程产生的原因传统软件开发方法学面向对象的软件开发方法学软件过程模型课程的要求、目标及特点要求有一定的编程基础自学能力目标了解软件工程学基本原理、规范、方法提高对软件项目的分析设计能力开阔视野建立项目概念思考职业规划增强未来竞争力特点理论性强抽象适合高年级学习以概要性介绍为主需要在实践中提高能力课程的主要内容软件工程过程的主要活动如需求分析设计测试软件开发方法学传统方法学面向对象方法学项目管理知识实践环节基于实际的应用完成设计、分析多看书多编程多交流积累经验考核方法笔试出勤大作业软件设计报告学期中间布置三周时间完成人一组根据要求进行需求分析、系统设计制作PPT组内代表在课堂上讲解分钟学期末上交PPT的打印稿和电子版参考书软件工程实践者的研究方法RogerSPressman机械工业出版社软件工程IanSommerville机械工业出版社*参考书软件工程过程PierreNRobillard清华大学出版社其他资源网上搜索知名网站信息的权威性外文书每章后面的“进一步阅读”所列的内容学校图书馆中外文网络数据库软件发展的历史早期上世纪年代中期之前编写者和使用者往往是同一个人第二个时期上世纪年代中期年代中期软件作坊个体软件开发方法生产软件产品出现软件危机年北大西洋公约组织(NATO)在联邦德国召开国际会议讨论软件危机问题正式提出“软件工程”这个词一门新兴的工程学科就此诞生。第三个时期上世纪年代中期年代中期结构化程序设计第四个时期上世纪年代中期以后面向对象程序设计软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题包括:费用过高严重超期失败率高可靠性差难以维护软件危机大型软件>,行高级语言代码阿波罗登月计划的软件有万行代码IBM大型机操作系统开发人员最多时达到人从年到年花费年时间完成总计耗费约人年。经反复修改仍有上千条错误年年美国范登堡空间试验基地多次发射火箭失败绝大部分因为程序错误软件的复杂性超出了个人能力控制的范围http:wwwuntedubenchmarksarchivesjulycrisishtm*软件危机的表现软件开发的成本和进度估计很不准确用户对已完成的软件不满意软件质量不可靠软件维护困难或不可维护缺少适当的文档软件成本占计算机系统总成本的比例逐年上升世纪年代初占年代中期占年代初占以上软件生产率提高速度缓慢软件危机产生的原因软件本身的特点缺乏可见性完成前不易衡量其好坏复杂性随规模增加呈指数上升无法保证质量用户的原因需求不明或易变认为软件可以随意改动开发和管理人员的原因不重视文档只重视编码开发随意性大维护困难图引入同一变动付出的代价随时间变化的趋势消除软件危机的途径要有技术措施也要有管理措施软件工程软件工程的介绍为了克服软件危机科学家们从其他产业(如机械制造、建筑等)的工程化生产得到启示提出了“软件工程”的概念。概括地说软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来以经济地开发出高质量的软件并有效地维护它这就是软件工程。软件工程典型的定义“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件而建立和使用完善的工程原理。”该定义不仅指出了软件工程的目标是经济目标是经济地开发出高质量的软件而且强调了软件工程是一门工程学科它应该建立并使用完善的工程原理。年IEEE(TheInstituteforElectricalandElectronicengineers)进一步给出了一个更全面更具体的定义:“软件工程是:()把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程也就是把工程应用于软件()研究()中提到的途径。软件工程的本质特征:软件工程关注大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐的合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品软件工程的基本原理用分阶段的生命周期计划严格管理(领导干预)坚持进行阶段评审(LED屏项目GPS项目)实行严格的产品控制(修改要批准华为灯)采用现代程序设计技术结果应能清楚的审查开发小组的人员应该少而精(通讯开销)承认不断改进软件工程实践的必要性软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology)也称为范型(paradigm)。软件工程方法学包含个要素:方法、工具和过程。其中方法是完成软件开发的各项任务的技术方法回答“怎样做”的问题工具是为运用方法而提供的自动的或半自动的软件工程支撑环境过程是为了获得高质量的软件所需要完成的一系列任务的框架。目前使用的最广泛的软件工程方法学分别是传统方法学和面向对象方法学。、传统方法学传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务并使用适当的软件工具或软件工程环境来支持结构化技术的运用。该方法把软件生命周期的全过程依次划分为若干个阶段然后顺序地完成每个阶段的任务。前一阶段任务的完成是下一阶段工作开始的前提和基础。每一阶段的开始和结束都有严格的标准在每一阶段的结束之前都必须进行正式严格的技术审查和管理复审。结构化方法结构化方法是年代末由DeMarco、Yourdon、Constantine等人提出的系统的开发方法包括结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)IDEF、ER方法等。无论系统多么复杂总可以自顶向下被分解成若干个子系统更小的子系统分别进行分析设计。传统方法学的问题传统方法学要求对上一阶段结果进行固定才能开始下一阶段的工作如果软件系统规模庞大需求模糊且不断变化传统方法学必须反复从头再来造成系统结构不稳定无法保证进度和质量而需求不断变化是现代软件的一个重要特征因为环境变化太快(人员、机构调整平台、技术变化)(短信服务平台、云计算)面向对象方法学面向对象方法学具有下述个要点:()把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的程序中任何元素都是对象复杂对象由比较简单的对象组合而成也就是说用对象分解取代了传统方法的功能分解。()把所有对象都划分成类(class)。每个类都定义了一组数据和一组操作类是对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性是对象的状态信息而施加于数据之上的操作用于实现对象的动态行为。()按照父类与子类的关系把若干个相关类组成一个层次结构的系统。在该层次中派生类自动拥有上层基类中定义的数据和操作这种现象称为继承。()对象彼此间仅能通过发送消息互相联系。面向对象方法学的优点对象比功能稳定需求变化可以限制在对象内对象独立性好增减对象对外部影响小根据需求可不断进化*两种方法学比较存款取款利息结算帐户余额帐户余额过程式编程范型面向对象编程范型存款取款利息结算“银行帐户”对象数据和操作成为整体??数据和操作分离*软件开发方法学现状软件开发取得了巨大的进展软件超期、超预算甚至失败的情况仍普遍存在软件工程学仍是最活跃的研究领域之一生命周期各阶段的任务瀑布模型问题定义可行性研究需求分析总体设计详细设计编码和单元测试综合测试维护定义开发维护由WinstonRoyce在年提出直到世纪年代早期一直是惟一被广泛采用的软件开发模型。*问题定义要解决的问题是什么?确定要开发软件系统的总目标给出功能、性能、可靠性以及接口等方面的要求可行性研究必须回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”估计可利用的资源(计算机硬件软件人力等)、成本、效益、开发进度完成可行性研究报告提交评审需求分析和定义准确的确定“为了解决这个问题目标系统必须做什么”主要是确定目标系统必须具备那些功能。对待开发的软件提出的需求进行分析并给出详细的定义编写软件需求规格说明书初步的用户手册测试方案提交评审*软件设计回答:“系统应该如何实现?”总体设计把各项需求转换成软件的体系结构结构中每个模块都和一个需求相对应从各种可能的设计方案里选择最佳方案详细设计对每个模块要完成的工作进行具体的描述为编写源程序打下基础完成文档提交评审系统说明用户手册测试计划实现计划数据库设计结果编码和单元测试把软件设计转换成计算机语言代码即源程序写出的程序应当是结构良好、清晰易读且和设计相一致单元测试查找各模块在功能和结构上的问题并加以纠正综合测试集成测试将已测试过的模块按一定顺序组装起来再进行测试以发现与接口有关的问题验收测试按照需求规格说明书的规定由用户(参与)对目标系统进行测试文档测试计划、详细测试方案和测试报告软件维护改正性维护运行中发现软件的错误需要修改适应性维护为了适应变化的工作环境对软件进行适当变更完善性维护为增强软件的功能需做维护预防性维护表结构分析设计过程小结阶段关键问题结束标准问题定义问题是什么?关于规模和目标的报告书可行性研究有可行的解吗?系统的高层逻辑模型数据流图成本效益分析报告可行性研究报告需求分析系统必须做什么?系统的逻辑模型数据流图、数据字典、算法描述需求规格说明书初步用户手册总体设计系统应该如何实现?系统说明用户手册测试计划详细实现计划数据库设计结果表结构分析设计过程小结阶段关键问题结束标准详细设计怎样具体实现这个系统?编码规格说明HIPO图或PDL编码和单元测试正确的程序模块源程序清单单元测试方案和结果综合测试符合要求的软件综合测试方案和结果完整一致的软件配置维护持久的满足用户需要的软件完整准确的维护记录软件过程软件过程是为获得高质量软件所需要完成的一系列任务的框架它体现了完成各项任务的工作步骤。概括地说软件过程描述为了开发出客户需要的软件什么人(who)、在什么时候(when)、做什么事(what)以及怎样做(how)这些事以实现某一特定的具体目标。过程定义了运用方法的顺序、应交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施以及标志软件开发各个阶段任务完成的里程碑。为了获得高质量软件产品软件过程必须科学、有效。每一种软件的开发过程不尽相同。通常使用生命周期模型简洁的描述软件过程。生命周期模型规定了把软件生存期划分成哪些阶段以及各个阶段的顺序因此也称为过程模型。瀑布模型世纪年代前唯一被广泛采用的过程模型现在仍是使用最广泛的模型。体现了传统软件工程方法学的软件过程。问题定义总体设计需求分析可行性研究详细设计综合测试编码与单元测试软件维护瀑布模型的特点阶段间具有顺序性和依赖性必须等前一阶段的工作完成之后才能开始后一阶段的工作前一阶段的输出文档就是后一阶段的输入文档推迟实现的观点尽可能推迟编码质量保证的观点要点:每个阶段都必须完成规定的文档没有交出合格的文档就是没有完成该阶段的任务要点:每个阶段结束前都要对所完成的文档进行评审实际的瀑布模型带反馈环的瀑布模型反馈用于修改错误瀑布模型的问题需求错误会造成严重影响用户参于在需求分析但只能看到文档看不到产品最终产品可能和用户的期望不符不能响应用户需求的变化例子监控系统的图像分辨率问题快速原型模型有助于获取用户的真实需求快速原型模型快速建立起来的可以在计算机上运行的程序它所能完成的功能一般是最终产品能完成的功能的一个子集用户通过试用原型提出修改意见开发人员修改原型再交用户试用……直到用户确认原型系统就是他们所需要的为止例如:网站(首页示意子页模板)文字或图片是临时的重点在于展示结构布局主要栏目颜色风格等快速原型验证规格说明验证设计验证编码测试综合测试维护变化的需求验证快速原型模型快速原型的核心意思?*快速原型模型的特点不带反馈环经过用户确认规格说明正确性高开发人员在建立原型中学到了许多东西设计和编码阶段出错的可能性减少内部结构不重要重要的是便于快速搭建和修改原型可能抛弃也可能作为后续开发的基础增量模型(渐增模型)把软件产品作为一系列的增量构件来设计、编码、集成和测试实现各构件前全部完成需求分析和设计每个构件能够完成特定的功能包含多个相互作用的模块构成使用增量模型时第一个增量构件往往实现软件的基本需求提供最核心的功能把新构件集成到现有软件中去时形成的产品必须是可测试的功能、界面都比较多可考虑用增量模型年Mills提出增量模型目的是适应用户逐渐细化需求的形成过程以减少软件开发过程中的返工。*增量模型(渐增模型)增量模型的优缺点优点分批向用户提交产品用户可渐进地使用和熟悉新产品可维护性好结构是开放的在实现第一个构件前概要设计已完成风险较小缺点技术难度大:需要开放的体系结构不能破坏原来的产品对设计人员要求高有等待:概要设计全部完成后构件的设计实现才能开始风险更大的增量模型规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户构件:构件:构件n:风险更大的增量模型不完成总体设计就进入构件设计一旦确定了用户需求之后就着手拟定第一个构件的规格说明文档完成后规格说明组将转向第二个构件的规格说明与此同时设计组开始设计第一个构件…用这种方式开发软件不同的构件将并行的构建因此有可能加快工程进度。但是使用这种方法将冒构件无法集成到一起的风险。开发软件必须重视风险控制否则欲速则不达螺旋模型年由BarryBoehm正式发表基本思想是使用原型及其他方法尽量降低风险原型法可降低“不能满足需求”的风险每前进一步都进行风险的识别和分析在排除风险的情况下相当于瀑布模型特别适合大型的复杂系统*简化的螺旋模型完整的螺旋模型螺旋模型分析螺旋的第一圈可能产生产品的规格说明再下面的螺旋可能用于开发一个原型系统随后可能是软件的更完善的版本。每一圈还要根据用户评估的反馈对项目计划(包括进度、费用)进行调整。特点:强调风险分析客户未必接受(如影响利润)因此适合于内部的大型系统的软件开发随着过程的进展演化开发者和用户能够更好的识别和对待每一个演化级别上的风险。演进的方法不一定可控依赖于相当丰富的风险评估经验来保证成功。喷泉模型典型的面向对象的软件过程模型迭代(向下箭头):表示目标性质不断增加和明确无缝:在分析、设计、编码等活动之间不存在明显的界限整体是有序的(向上的)维护期进一步开发运行状态集成和测试阶段编码阶段面向对象设计阶段面向对象分析阶段需求阶段喷泉模型重点应放在分析阶段早期定义了一系列面向问题的对象在整个开发过程中不断充实这些对象Rational统一过程Rational统一过程(RationalUnifiedProcess,RUP)是由Rational公司推出的一种软件过程。RUP总结了条经过多年商业化验证的最有效的软件开发经验这些经验被称为“最佳实践”。RUP最佳实践迭代式开发每个迭代过程以可执行版本结束管理需求使用“用例”和“脚本”来捕获需求使用基于构件的体系结构使用构件降低复杂性提高重用率可视化建模使用可视化建模语言UML提高管理复杂性的能力验证软件质量质量评估贯穿于全过程全员参与控制软件变更对修改进行控制、跟踪和监控RUP软件开发生命周期纵轴代表核心工作流横轴代表时间过程支持核心工作流RUP中有个核心工作流其中前个为核心过程工作流(CoreProcessWorkflows)后个为核心支持工作流(CoreSupportingWorkflows)。工作阶段RUP中的软件生命周期在时间上被分解为四个连续的阶段每个阶段都有明确的目标并且定义了用来评估是否达到这些目标的里程碑。如果评估结果令人满意的话可以允许项目进入下一个阶段。初始精化构建移交四个阶段的工作目标初始阶段建立业务模型定义最终产品视图并且确定项目的范围。精化阶段设计并确定系统的体系结构制定项目计划确定资源需求。构建阶段开发出所有构件和应用程序把它们集成为客户需要的产品并且详尽地测试所有功能。移交阶段把开发出的产品提交给用户使用。RUP迭代式开发RUP强调采用迭代和渐增的方式来开发软件开发过程由多个迭代过程组成。一个迭代是一个完整的开发循环产生一个可执行的产品版本是最终产品的一个子集它增量式地发展从一个迭代过程到另一个迭代过程到成为最终的系统。RUP重复一系列组成软件生命周期的循环但是在不同的迭代过程中是以不同的工作重点和强度对这些核心工作流程进行访问的。全球有上千家软件公司在使用RUP。敏捷过程为了使软件开发团队具有高效工作和快速响应变化的能力位著名的软件专家于年月联合起草了敏捷软件开发宣言它由个简单的价值观声明组成。个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划极限编程极限编程(eXtremeProgramming,XP)是敏捷过程中最富盛名的一个其名称中“极限”二字的含义是指把好的开发实践运用到极致。目前极限编程已经成为一个典型的开发方法广泛应用于需求模糊且经常改变的场合。极限编程的有效实践(特色)客户作为开发团队的成员(不一定是真客户)使用用户素材(用户故事记录在卡片上)短交付周期(两周一个月)验收测试结对编程测试驱动开发集体所有持续集成可持续的开发速度(每周个小时)用户故事记录一个特殊的需求并记在卡片上。*极限编程的有效实践(续)开放的工作空间及时调整计划简单的设计重构使用隐喻(隐喻相当于体系结构从客户角度来描述一个项目的全局用户故事则从局部来描述)*极限编程的开发过程极限编程的迭代过程极限编程的特点综上所述以极限编程为代表的敏捷过程具有对变化和不确定性的更快速更敏捷的反映特性而且在快速的同时仍然能保持可持续的开发速度。上述这些特点使得敏捷过程能够较好的适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。微软过程作为世界上最大的同时也是最成功的软件公司之一Microsoft(微软)公司拥有自己独特的软件开发过程几十年的实践证明微软过程是非常成功和行之有效的。主要内容微软过程准则微软软件生命周期微软过程模型微软过程准则项目计划应该兼顾未来的不确定因素用有效的风险管理来减少不确定因素的影响经常生成并快速地测试软件的过渡版本从而提高产品地稳定性和可预测性采用快速循环递进地开发过程用创造性地工作来平衡产品特性和产品成本项目进度表应该具有较高稳定性和权威性使用小型项目组并发地完成开发工作在项目早期把软件配置项基线化项目后期则冻结产品使用原型验证概念对项目进行早期论证把零缺陷作为追求的目标里程碑评审会的目的是改进工作切忌相互指责微软软件生命周期五个阶段及里程碑()规划阶段确定产品目标。获取竞争对手的信息。完成对客户和市场的调研分析。确定新版本产品应具备的主要特征。确定相对于前一版本而言新版本应该解决的问题和需要增加的功能。五个阶段及里程碑(续)()设计阶段根据产品目标编写系统的特性规格说明书。主要描述软件特性、系统结构、各构件间的相关性以及接口标准。从系统高层着手开始进行系统设计主要完成:系统设计方案描绘系统结构图确定系统中存在的风险因素分析系统的可重用性。划分出系统的子系统给出各自系统和各个构件的规格说明。根据产品特性规格说明书制定产品开发计划。五个阶段及里程碑(续)()开发阶段完成产品中所有构件的开发工作包括编写程序代码和书写文档。()稳定阶段对产品进行测试和调式以确保已经正确地实现了整个解决方案产品可以发布了。()发布阶段发布产品获解决方案并把项目移交到运营和支持人员手中以获得最终用户对项目的认可。微软过程的生命周期模型微软过程小结综合了Rational同一过程和敏捷过程的许多优点是对众多成功项目的开发经验的正确总结有某些不足之处例如对方法工具和产品等方面的论述不如RUP和敏捷过程全面。在开发软件的实践中应该把微软过程与RUP和敏捷过程结合起来取长补短针对不同项目的具体情况进行制定。感谢本课程PPT参考了中国海洋大学信息学院魏振刚教授提供的“软件工程”课程的PPT西安交通大学刘海岩副教授提供的“高级软件工程”课程的PPT清华大学出版社提供的“软件工程导论”教学素材在此表示衷心感谢!软件工程课程细分SoftwareEngineeringMethodsSoftwareEngineeringMathematics(SEM)SpecificationandDesign(SDE)ConcurrencyandDistributedSystems(CDS)AdvancedConcurrencyModelChecking(MCH)PerformanceModelling(PMO)SoftwareDevelopmentManagement(SDM)AgileMethods(AGM)RequirementsEngineering(REN)ManagementofRiskandQuality(MRQ)ProcessQualityandImprovement(PRO)返回软件工程课程细分SoftwareEngineeringToolsObjectOrientation(OOR)ObjectOrientedDesign(OOD)ObjectOrientedProgramming(OOP)DesignPatterns(DPA)SoftwareTesting(STE)DatabaseDesign(DAT)FunctionalProgramming(FPR)ExtensibleMarkupLanguage(XML)ServiceOrientedArchitectures(SOA)MobileandSensorNetworks(MOB)SoftwareProductLines(SPL)返回*http:wwwuntedubenchmarksarchivesjulycrisishtm***由WinstonRoyce在年提出直到世纪年代早期一直是惟一被广泛采用的软件开发模型。**快速原型的核心意思?*年Mills提出增量模型目的是适应用户逐渐细化需求的形成过程以减少软件开发过程中的返工。**用户故事记录一个特殊的需求并记在卡片上。**

VIP尊享8折文档

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/81

第1章--软件工程学概述

¥30.0

会员价¥24.0

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利