软件工程1-2-史济民.ppt

上传人:小飞机 文档编号:5319404 上传时间:2023-06-25 格式:PPT 页数:55 大小:1.73MB
返回 下载 相关 举报
软件工程1-2-史济民.ppt_第1页
第1页 / 共55页
软件工程1-2-史济民.ppt_第2页
第2页 / 共55页
软件工程1-2-史济民.ppt_第3页
第3页 / 共55页
软件工程1-2-史济民.ppt_第4页
第4页 / 共55页
软件工程1-2-史济民.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《软件工程1-2-史济民.ppt》由会员分享,可在线阅读,更多相关《软件工程1-2-史济民.ppt(55页珍藏版)》请在三一办公上搜索。

1、湘 潭 大 学,软件工程,教材:软件工程原理、方法与应用(第三版)著作者:史济民 顾春华 郑红授课人:张陵山,第1章 绪论,某些新科技的发明创造会给其他一些看似无关的技术领域、商业企业、公众甚至整个社会文化带来深远而出人意料的影响和作用。这就是所谓的“意外效应法则”。计算机软件已经成为世界舞台上最为重要的科技领域,并且是“意外效应法则”的一个最好的体现。,现在的软件技术具有产品和产品生产载体的双重作用。作为一个产品,软件显示了由计算机硬件体现的计算能力。作为产品生产的载体,软件提供了计算机控制(操作系统)、信息通信(网络)以及应用开发和控制(软件工具和环境)的基础平台。软件传递了我们这个时代最

2、重要的产品信息。,现在,庞大的软件产业已经成为工业经济中的主导因素。早期的独立程序员也已经被多个专业的软件开发团队所代替。同过去的独立程序员一样,开发现代计算机系统时,软件开发人员依然面临同样的问题:为什么软件需要如此长的开发时间?为什么开发成本居高不下?为什么在将软件交付顾客使用时,我们无法找到所有的错误?为什么维护已有的程序要花费高昂的时间和人力代价?为什么软件开发和维护的过程难以度量?,1.1 软件和软件危机,软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需的数据,以及有关描述程序操作和使用的文档(R.S.Pressman)软件=程序(包括数据)+文档程

3、序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。数据是使程序能正常操纵信息的数据结构。文档是与程序开发,维护和使用有关的图文材料。,-软件的特征,软件与硬件的不同软件开发不同于硬件设计;软件生产与硬件制造不同;软件维护不同于硬件维修。软件是逻辑的,而不是物理的软件开发与人关系密切;软件开发成本大;软件生产是简单的拷贝;软件不会磨损和老化;软件受环境影响大;软件维护易产生新的问题。,-软件危机,软件危机的表现对软件开发成本和进度的估算很不准确;用户很不满意;质量很不可靠;没有适当的文档;软件成本比重上升;供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势。,-软件危机

4、,硬件/软件成本变化趋势,100%,0%,1955,1970,1985,-软件危机,软件技术进步落后于需求增长,-软件危机,软件危机的原因客观:软件本身特点-逻辑部件-规模庞大、复杂度高主观:不正确的开发方法-忽视需求分析-个人化方式:软件开发=程序编写-轻视软件维护,-软件危机,解决途径组织管理-工程项目管理方法技术措施-软件开发技术与方法-软件工具促使了软件工程的诞生按工程化的原理和方法组织软件开发是解决软件开发中的问题一个主要出路。,1.2 软件工程学的研究范畴,软件工程学的研究范畴“软件工程”一词是在1968年北大西洋公约组织在联邦德国召开的一次会议上提出。有多种定义,中心思想是把软件

5、当做一件工业产品。,软件工程学的研究范畴,软件开发方法为软件开发提供了“如何做”的技术个性化方法-结构化方法-面向对象方法-软件复用软件工具为软件开发提供了自动的或半自动的软件支撑环境单个工具-工具箱、集成工具-环境软件工程管理目的:为了按进度及预算完成软件计划内容:成本估算、进度安排、人员组织、质量保证等,.1.3 软件工程的发展,三种编程范型过程式编程范型程序由一组被动数据和一组能动过程组成程序=数据结构+算法着眼于程序的过程和基本控制结构,粒度最小面向对象编程范型数据及其操作被封装在对象中程序=对象+消息着眼于程序中的对象,粒度比较大基于构件技术的编程范型构件是通用的、可复用的标准化对象

6、类程序=构件+架构着眼于适合整个领域的类对象,粒度更大,过程式和面向对象的编程范型,银行储蓄处理业务,三代软件工程传统软件工程开发过程经历的阶段:结构化分析 结构化设计 面向过程的编码 软件测试 面向对象软件工程开发过程经历的阶段:OO分析与对象抽取 对象详细设计 面向对象的编码和测试 基于构件的软件工程开发过程经历的阶段:领域分析和测试计划定制 领域设计 建立可复用构件库 查找并集成构件,1.4 软件工程的应用,软件工程指导中小型软件软件工程指导大型软件软件工程的成就解决软件开发中的部分问题(非本质)软件生产率稳步增长软件工程发展的展望开发伴随软件复用,开发为了软件复用软件就是服务,小结,软

7、件工程自1968年提出以来,在过去30余年中,已发展成为用于指导软件生产工程化,覆盖软件开发方法学、软件工程管理、软件工具与环境等内容的一门新学科。随着程序设计从结构化程序设计发展到面向对象程序设计,软件工程也由传统的软件工程演变为面向 对象的软件工程,现正向更新一代的基于构件的软件工程迈进。长期的实践,软件工程积累了许多行之有效的原理与方法,已经为产业界广泛接受与应用。,上篇:传统软件工程,第2章 软件生存周期与软件过程第3章 结构化分析与设计,第2章 软件生存周期与软件过程,软件生存周期 传统的软件过程软件演化模型 形式化方法模型 统一过程和敏捷过程 软件可行性研究,2.1 软件生存周期,

8、软件生存周期(Software Life Cycle):一个软件从问题提出立项开始,直到软件产品最终退役(废弃不用)为止。软件生存周期分为三个时期:计划、开发和维护。整个软件生存周期划分为多个相对独立的较小阶段,给每个阶段赋予确定而有限的任务,从而降低了整个软件工程的难度,提高了软件开发生产率。,典型的软件生存周期,软件生存周期的主要活动,需求分析明确需要解决的问题(从用户的视角)。建立需求模型:描述软件的功能、性能、约束、接口等。软件分析在需求模型基础上从开发人员的视角对软件进行分析。建立与需求模型一致的分析模型:描述软件的逻辑模型。软件设计将分析模型转变为设计模型。软件设计分为总体设计和详

9、细设计两个阶段。总体设计:确定软件的总体结构和全局性设计原则。详细设计:确定各部件的数据结构和操作。建立软件设计模型:考虑实现技术和平台。,软件生存周期的主要活动,编码用程序设计语言将设计文档翻译成源程序。建立软件实现模型:包含现有软件构件包。软件测试发现程序中的错误、提高软件质量单元测试、集成测试、确认测试、系统测试运行维护,软件过程与软件生存周期的关系,软件过程围绕软件开发所进行的一系列活动。软件过程模型把软件生存周期中软件开发活动的有序流程用一个合理的框架来规范描述。软件过程模型是一种软件过程的抽象表示法,它从一个特定的角度表现一个开发过程。软件生存周期中的阶段和软件过程中的活动是基本一

10、致的。,2.2 传统的软件过程,传统的过程模型瀑布模型waterfall model基于软件生存周期的线性开发模型快速原型模型rapid prototype model基于原型的迭代化开发模型,瀑布模型,W.Royce于1970年提出线性开发模型强调软件文档每一个阶段必须完成规定的文档每一个阶段都要复审完成的文档,瀑布模型,特点阶段的顺序性和依赖性推迟实现的观点质量保证的观点存在问题不适合需求模糊的系统开发初始阶段很难彻底弄清软件需求,快速原型模型,需求,原型开发,最终系统设计,原型评价,最终系统实现,用户反馈,快速原型法的过程模型,快速原型模型,特点“逼真”的原型可以使用户迅速作出反馈。循环

11、回溯和迭代:非线性模型。使用快速开发工具。种类渐进型:对原型补充和修改获得最终系统。抛弃型:原型废弃不用。应防止的偏向舍不得抛弃,从而影响软件质量。,2.3 软件演化模型,演化开发模型:使所开发的软件在迭代中逐步完善,是渐进式的开发模型,也称为迭代化开发模型。增量模型(incremental model)螺旋模型(spiral model)构件集成模型(component integration model),增量模型,增量模型是瀑布模型的顺序特征与原型法的迭代特征相结合的产物,把软件看作一系列相互联系的增量,每次迭代完成一个增量。增量小而可用的软件。第一个增量通常是软件的核心。特点在前面增量

12、的基础上开发后面的增量。每个增量的开发可用瀑布或快速原型模型。每个增量开发的顺序性和总体的迭代性相结合。,增量模型,螺旋模型,特点瀑布模型(顺序性、边开发边复审)+快速原型(迭代性)风险分析-发现、控制风险一个螺旋式周期 计划:确定目标,选择方案,选定完成目标的策略 风险分析:从风险角度分析该策略 开发:启动一个开发活动 评审:评价前一步的结果,计划下一轮的工作,螺旋模型,构件集成模型,构件集成模型主要适用于面向对象的软件开发。面向对象的基本概念对象Object类Class继承Inheritance消息Message 面向对象对象+类+继承+消息通信,构件集成模型,构件在某个领域内具有通用性,

13、可以复用的软件部件将可以复用的构件存储起来,形成构件库特点面向对象基于构件库融合螺旋模型特征支持软件开发的迭代方法 软件复用,构件集成模型,2.4 形式化方法模型,形式化方法模型:基于程序变换和验证技术的软件开发转换模型(transformational model)净室模型(cleanroommodel),转换模型,开发过程第一步:确定形式化需求规格说明书(使用形式化语言)第二部步:进行自动的程序变换(由变换系统完成,产生形式化开发记录)第三步:针对形式化开发记录进行测试特点形式化软件开发方法 基于模型的,基于代数结构的,基于时序逻辑的形式化需求规格说明 变换技术程序自动生成技术 确保正确,

14、转换模型,转换模型,净室模型,净室思想在分析和设计阶段消除错误。在“洁净”状态下实现软件制作。增量模型把软件看成一系列的增量。每个增量是一个用形式化方式表示的“盒”。形式化盒结构表示分析和设计。正确性验证。,净室模型,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,增量1,增量2,增量n,净室模型,软件过程模型的特点汇总,2.5 统一过程和敏捷过程,统一过程Rat

15、ional Unified Process(RUP)描述了软件开发中各个环节应该做什么、怎么做、什么时候做以及为什么要做,描述了一组以某种顺序完成的活动。敏捷过程Agile Development是一种以人为核心、迭代、循序渐进的开发方法,其软件开发过程称为“敏捷过程”。,RUP,Rational Unified Process 将软件开发分为四个阶段:初始(先启)定义整个项目的范围;细化(精化)制定项目计划、描述功能、建立体系架构框架;构造(构建)构造软件产品;迁移 将软件产品移交到最终用户手中。每个阶段分为若干次迭代,每次迭代有一个核心工作流,都会经历需求、分析、设计、实现、测试等活动。,

16、敏捷过程,敏捷开发是以人为核心,以迭代方式循序渐进开发的方法。敏捷过程是把一个大项目分为多个相互联系的可独立运行的小项目,并分别完成,在此过程中软件一直处于可用状态。敏捷开发的价值观个人和交互胜过过程和工具 可以运行的软件胜过面面俱到的文档 客户合作胜过合同谈判 响应变化胜过遵循计划,敏捷开发的12条原则尽早、不断地提交有价值的软件 允许改变需求,利用变化来为客户创造优势尽快、不断地提交可运行的软件在业务人员和开发人员必须天天都在一起工作以积极向上的员工为中心建立项目组,提供环境和支持,并信任他们的工作在团队内部重视面对面的交流依据可运行软件来评估项目的进展提倡可持续的开发时刻关注技术上的精益

17、求精和好的设计,以增强敏捷能力简单是最根本的最好的构架、需求和设计出于自组织团队每隔一定时间,要反省如何才能更有效地工作,然后作相应调整,极限编程,extreme programming是一种轻量级的、敏捷的软件开发方法4个价值观交流、简单、反馈、勇气4个方面改善加强交流、从简单做起、寻求反馈、勇于实事就是12个核心实践完整团队、计划对策、测试、简单设计、结对编程、小软件版本、设计改进、持续集成、代码共有、编码标准、系统比喻、可持续的速度,2.6 软件可行性研究,目的研究项目是否可能实现和值得进行回答 Why to do?研究的内容经济可行性技术可行性运行可行性法律可行性,可行性研究的步骤,对当前系统进行调查和研究弄清当前系统导出新系统逻辑模型导出新系统的解决方案设计不同的解决方案提出推荐的方案本项目的开发价值推荐这个方案的理由编写可行性认证报告系统概述可行性分析结论意见,软件风险分析,风险识别项目风险技术风险商业风险风险预测风险发生的可能性风险发生后的后果风险的驾驭和监控,小结,随着软件工程的发展,许多学者先后提出了瀑布模型、快速原型模型、增量模型、螺旋模型、转换模型、净室模型和构件集成等多种过程模型,各种软件开发模型各有优缺点在选定软件开发过程时,开发者不仅应该了解开发过程的特点,还应该结合待开发系统的特点一起考虑。如有必要,也可以同时组合多种模型或创建新的模型。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号