




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件与软件工程,马伟锋mawf浙江科技学院信息与电子工程学院,1,本章内容,1.1软件基本概念软件概念、软件特点、软件分类、软件发展1.2软件工程“软件危机”、软件工程1.3软件生命周期1.4软件过程,3,1.1软件基本概念1.1.1什么是软件?,软件是:(1)指令的集合(计算机程序),通过执行这些指令来满足预期的特征、功能和性能需求;(2)数据结构,使得程序可以合理的利用信息;(3)文档描述,用来描述程序操作和使用。,程序=?软件,4,1.1.2软件的特点,软件是逻辑产品,不同于物理产品,软件更新复杂,硬件简单替换。硬件会磨损(浴缸曲线),软件不会(失效曲线)。软件本身复杂,设计开发复杂,如人员要求高,成本、进度难控制,风险大、维护困难等。采用构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的。,5,磨损vs.退化,6,1.1.3软件的分类,系统软件应用软件工程/科学软件嵌入式软件产品线软件Web应用软件人工智能软件,7,软件新的分类,开放计算普遍的,分布式计算普适计算无线网络网络资源万维网发展为一个计算引擎开放源码“免费”源代码开放了计算机群体(它是一种福利,但也是一种潜在的威胁!)其他(参见第31章)数据挖掘网格计算认知机纳米技术软件,1.1.4软件的发展,早期面向批处理有限的分布自定义软件,第二阶段多用户实时数据库软件产品,第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响,第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机,1950,1960,1970,1980,1990,2000,角色转变:程序工具服务知识,10,遗留软件,软件必须进行适应性调整,以满足新的计算环境和技术的需求。软件必须升级以实现新的商业需求。软件必须扩展使之具有与更多现代系统和数据库的互操作能力。软件必须进行改建使之能适应多样化的网络环境。,为什么一定要变更?,11,软件发展面临问题,对软件的质量要求越来越高。软件的体量变得越来越庞大,“个人英雄主义”很难在存在了。软件企业面临激烈的竞争。软件必须进行改建使之能适应多样化的网络环境。软件开发的方法严重落后。,1968年10月,北大西洋公约组织(NATO)的科学家在德国召开的学术会议上正式提出了软件危机问题。,1.1.5软件危机,一些实际例子,80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误。美国阿托拉斯火箭的发射失败,原因是软件故障。日本第5代机因为软件问题在投入50亿美元后于1993年下马。,一组统计数字,危机原因,软件规模类别参加人员数研制期限源程序行数微型114周0.5k小型116月1k2k中型2512年5k50k大型52023年50k100k甚大型100100045年1M(=1000k)极大型20005000510年1M10M,引入“工程”思想,工程:以某组设想的目标为依据,应用有关的科学知识和技术手段,通过一群人的有组织活动将某个(或某些)现有实体(自然的或人造的)转化为具有预期使用价值的人造产品过程。建筑工程机械工程,软件工程:克服软件危机的努力,(1)从管理的角度软件开发过程的研究、文档的标准化以及人们的交流方式等。(2)软件开发技术、方法的研究如结构化软件开发方法,面向对象的开发,20世纪80年代末,美国DoD和工业界开始认识到管理的重要性。美国DoD的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量进一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部如果软件开发组织不能对软件项目进行有效管理,就不能充分发挥软件开发方法和工具的潜力,也就不能高效率地开发出高质量的软件产品,1.解决危机的管理途径,提出有效的方法和工具支持软件开发:1968年提出软件工程概念和思想20世纪70年代的结构化软件开发方法20世纪80年代的面向对象的软件开发方法新的技术:软件重用、快速原型、需求工程典型技术:COM,Java,C+,J2EE,.Net,.支撑工具和环境:Jbuilder,VisualStudio,WebLogic,2.解决危机的技术方法途径,21,1.2软件工程,种子定义:软件工程是建立和使用一套合理的工程原则,以便经济地获得可靠的、可以在实际机器上高效运行的软件。,软件工程定义:,软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。IEEE,软件工程的特点,1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人,软件工程的基本原理,用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性,SoftwareEngineering,a“quality”focus,processmodel,methods,tools,工具,过程,方法,质量关注点,软件工程:一种层次化技术,软件工程,举例:去杭州千岛湖旅游,ALM(ApplicationLifecycleManagement),MSF(MicrosoftSolutionFramework),软件工程学,通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。,软件工程的扩展,1.3软件生命周期模型,1.4软件过程,软件过程是各个环节的粘合剂,串联。软件产品构建时所执行的一系列活动(activity)、动作(action)和任务(task)的集合。过程框架:框架活动+普适性活动,Frameworkactivity+umbrellaactivity,32,过程框架举例:,过程框架框架活动软件工程动作工作任务工作产品里程碑和可交付成果QA检查点普适性活动,33,一个通用的框架包含5个活动:,沟通策划建模需求分析设计构建代码生成测试部署,34,普适性活动,软件项目管理正式技术评审软件质量保证软件配置管理工作产品的准备和生产可复用管理测量风险管理,1.4.1过程流-框架活动流程,沟通策划建模构建部署,36,1.4.1过程流-框架活动流程,37,注意:项目不同,过程可能不同,活动、动作和任务的总体流程,以及它们之间相互依赖关系在每一个框架活动中,动作和任务细化的程度工作产品的定义和要求的程度质量保证活动应用的方式项目跟踪和控制活动应用的方式过程描述的详细程度和严谨程度客户和利益相关者对项目参与的程度软件团队所赋予的自主权队伍组织和角色明确程度,38,软件工程实践的精髓,Polya建议:1.理解问题(沟通分析)。2.计划解决方案(建模和软件设计)。3.实施计划(代码生成)。4.检查结果的准确性(测试和质量保证)。,1.5经典软件过程模型,(1)瀑布模型(WaterfallModel),传统瀑布模型,传统瀑布模型的特点,提供了软件过程模型的基本框架(模板)。强调了每一阶段活动的严格顺序。质量保证观点:以经过评审确认了的阶段工作产品(文档)驱动下一阶段的工作,便于管理。是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。传统瀑布模型存在什么问题?,1.5经典软件过程模型,实际的瀑布模型,1.5经典软件过程模型,瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点:实际项目很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成。,瀑布模型的优缺点,1.5经典软件过程模型,(2)原型模型快速原型模型(RapidPrototypeModel),在用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等许多情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。,建造/修改原型,听取用户意见,用户测试运行原型,原型实现范型,1.5经典软件过程模型,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,维护过程,开发过程,1.5经典软件过程模型,原型模型存在的问题为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。开发过程不便于管理。有效的使用原型模式建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。,1.5经典软件过程模型,(3)增量模型(IncrementalModel),是一种渐进地开发逐步完善的软件版本的模型。,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,1.5经典软件过程模型,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,增量1,增量2,增量3,增量4,交付,交付,交付,交付,反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品。早期的版本实现用户的基本需求,并提供给用户评估的平台。,增量模型,在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。,增量模型的优点,1.5经典软件过程模型,增量模型的困难,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险。,1.5经典软件过程模型,(4)螺旋模型(SpiralModel),软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。,1.5经典软件过程模型,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,可看作在每个阶段之前都增加了风险分析过程的快速原型模型。,简化的螺旋模型,1.5经典软件过程模型,完整的螺旋模型,1.5经典软件过程模型,沟通螺旋模型,风险分析,工程实施,用户通信,用户评估,产品维护项目,产品增强项目,新产品开发项目,概念开发项目,计划,建造及发布,螺旋模型的优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标减少了过多测试或测试不足维护和开发之间并没有本质区别螺旋模型的特点风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险随着迭代次数的增加,工作量加大,软件开发成本增加,1.5经典软件过程模型,(5)面向对象模型,喷泉模型(FountainModel),分析,设计,实现,测试,集成,演化,特点:主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征,1.5经典软件过程模型,可重用部件组装模型(构件集成模型)(ComponentIntegrationModel),构件(components)也称为组件,是一段实现一系列有确定接口的程序体,具有自己的功能和逻辑,能同其他构件集成起来协调工作。该模型支持软件重用(Reusability),对缩短软件开发周期、降低项目成本有重要的现实意义。同时,建造符合某应用领域体系结构标准的构件,可以用来搭建分布式的、跨越不同操作平台(集成化软件开发环境(ISEE))的软件,扩展了软件的应用前景,促进了软件标准化、商品化的发展。因此,在此基础上专家们又提出了“基于构件的软件工程”(CBSE)。构件集成模型如下图所示:,1.5经典软件过程模型,构件集成模型软件体系结构被建立后,必须用构件去充实,这些构件可从复用库中获得,或者根据专门需要而开发。整个过程可以演化地进行,面向对象方法给予技术上的支持。,1.5经典软件过程模型,Sommerville提出基于组件开发有两种思路:完成高层设计,对设计中的组件给出描述,以便找出可复用的组件,这些组件可在体系结构层次上加入或更详细的设计层次上加入。先根据需求搜寻可复用组件,再将设计建立在获得的组件基础上。这两种思路可结合起来。,设计系统体系结构,描述组件,搜寻可复用组件,集成系统,先完成架构设计的复用,系统需求描述,搜寻可复用组件,对需求作某些修改,体系结构设计,集成系统,复用驱动设计,1.5经典软件过程模型,构件技术主要有三种流行标准:OMG的CORBA:对象管理组织发布的公用对象请求代理体系结构(CommonObjectRequestBrokerArchitecture)。通过一个对象请求代理(ORB)提供一系列服务,使得一个构件和其他构件通信,而不管它们在系统中的位置,实现了远程对象通过接口进行通信的机制。为了解决CORBA对象引用不透明、缺少多重接口、系统过于复杂等问题,专家们又开发了新一代面向对象中间件平台ICE(InternetCommunicationsEngine互联网通信引擎)。使构建分布式应用系统更容易、性能和伸缩性更好。,1.5经典软件过程模型,微软的COM/DCOM:微软开发了构件对象模型(ComponentObjectModel),它提供了运行于windows之上的单个应用系统使用不同厂商生产的构件的规约。基于分布式环境下的COM称为DCOM(DistributeCOM)。SUN的EJB(EnterpriseJavaBean):随着Java在企业级应用的地位日趋重要,Sun提出了一个统一的企业级Java平台J2EE(Java2EnterpriseEdition)。在J2EE中,EJB负责最核心的业务处理。它为服务器端的应用程序提供了一种与厂商无关的Java接口,让任何符合EJB规范的构件都可以运行在每一台这样的服务器上。,构件技术主要有三种流行标准:,(6)统一软件开发过程是由Rational公司的Booch、Jacobson、Rumbaugh提出的软件过程模型,也称RUP(RationalUnifiedProcess)。RUP重复一系列周期,每个周期由一个交付给用户的产品结束。每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流(需求、分析、设计、实现、测试)分别迭代。模型见下图:,1.5经典软件过程模型,RUP软件开发生命周期,初始阶段:进行问题定义,确定目标,评估其可行性,降低关键风险。细化阶段:制定项目计划、配置各类资源、建立系统架构(包括各类视图)。构造阶段:开发整个产品,并确保产品可移交给用户。移交阶段:产品发布、安装、用户培训。在每个阶段的每次迭代的最后,用例模型、分析模型、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泉州医学高等专科学校《药物分析学》2023-2024学年第二学期期末试卷
- 宁波职业技术学院《体育保健学含实验》2023-2024学年第二学期期末试卷
- 草原研学牧场行企业制定与实施新质生产力项目商业计划书
- 高效包衣造粒一体机企业制定与实施新质生产力项目商业计划书
- 上海师范大学《建筑电气A》2023-2024学年第二学期期末试卷
- 体育保险经纪AI应用企业制定与实施新质生产力项目商业计划书
- 丽江文化旅游学院《太阳能及其利用技术》2023-2024学年第二学期期末试卷
- 企业家访谈录出版企业制定与实施新质生产力项目商业计划书
- 儿童绘本数字化行业深度调研及发展项目商业计划书
- 会服设备管理制度
- (完整word版)《教育学原理》期末考试试卷A及答案
- GB/T 42061-2022医疗器械质量管理体系用于法规的要求
- JJG 1148-2022电动汽车交流充电桩(试行)
- GB/T 20197-2006降解塑料的定义、分类、标志和降解性能要求
- GA/T 1499-2018卷帘门安全性要求
- 网上支付跨行清算系统报文交换标准
- 供应商大会品质报告课件
- 职工《劳动法》与《劳动合同法》知识培训课件
- 名师教学设计《Maybe you should learn to relax.》完整教学教案
- 机械原理课程设计-锁梁自动成型机床运动方案设计说明书
- (完整版)PEP人教版小学四年级英语下册全册单词表带音标
评论
0/150
提交评论