




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件(ruǎnjiàn)与软件(ruǎnjiàn)工程马伟锋mawf@浙江科技学院(xuéyuàn)信息与电子工程学院(xuéyuàn)1共七十页本章(běnzhānɡ)内容1.1软件基本概念软件概念、软件特点、软件分类、软件发展1.2软件工程(ruǎnjiànɡōnɡchénɡ)“软件危机”、软件工程1.3软件生命周期1.4软件过程共七十页31.1软件(ruǎnjiàn)基本概念
1.1.1什么是软件?软件是:(1)指令的集合(计算机程序),通过执行这些指令来满足预期的特征、功能和性能需求;
(2)数据结构,使得程序可以(kěyǐ)合理的利用信息;(3)文档描述,用来描述程序操作和使用。程序=?软件共七十页41.1.2软件(ruǎnjiàn)的特点软件是逻辑产品,不同于物理产品,软件更新复杂,硬件简单替换。硬件会磨损(浴缸曲线),软件不会(失效曲线)。软件本身复杂,设计开发复杂,如人员要求高,成本、进度难控制,风险(fēngxiǎn)大、维护困难等。
采用构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的。共七十页5磨损(mósǔn)vs.退化磨合调整磨损用坏修改点实际曲线理想曲线硬件失效率曲线时间失效率时间失效率软件失效率曲线共七十页61.1.3软件(ruǎnjiàn)的分类系统软件(xìtǒnɡruǎnjiàn)应用软件工程/科学软件嵌入式软件产品线软件Web应用软件人工智能软件共七十页7软件(ruǎnjiàn)新的分类开放计算—普遍的,分布式计算普适计算—无线网络网络资源—万维网发展为一个计算引擎(yǐnqíng)开放源码—“免费”
源代码开放了计算机群体(它是一种福利,但也是一种潜在的威胁!)其他
(参见第31章)数据挖掘网格计算认知机纳米技术软件共七十页1.1.4软件(ruǎnjiàn)的发展共七十页早期面向批处理有限(yǒuxiàn)的分布自定义软件第二阶段多用户实时(shíshí)数据库软件产品第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机195019601970198019902000角色转变:程序–
工具–
服务–
知识共七十页10遗留(yíliú)软件软件必须进行适应性调整,以满足新的计算环境和技术的需求。软件必须升级以实现新的商业需求。软件必须扩展使之具有(jùyǒu)与更多现代系统和数据库的互操作能力。软件必须进行改建使之能适应多样化的网络环境。为什么一定要变更?共七十页11软件(ruǎnjiàn)发展面临问题对软件的质量要求越来越高。软件的体量变得越来越庞大,“个人英雄主义”很难在存在了。软件企业面临激烈(jīliè)的竞争。软件必须进行改建使之能适应多样化的网络环境。软件开发的方法严重落后。………………1968年10月,北大西洋公约组织(NATO)的科学家在德国召开的学术会议上正式提出了软件危机问题。共七十页1.1.5软件(ruǎnjiàn)危机
共七十页一些实际(shíjì)例子80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误(cuòwù)。美国阿托拉斯火箭的发射失败,原因是软件故障。日本第5代机因为软件问题在投入50亿美元后于1993年下马。共七十页一组统计数字共七十页危机(wēijī)原因共七十页软件规模(guīmó)类别参加人员数研制期限源程序行数
微型 1 1~4周0.5k小型1 1~6月1k~2k中型2~5 1~2年5k~50k大型5~20 2~3年50k~100k甚大型100~10004~5年1M(=1000k)极大型2000~50005~10年1M~10M
共七十页引入“工程(gōngchéng)”思想工程:以某组设想的目标为依据,应用有关的科学知识和技术手段,通过一群人的有组织活动将某个(mǒuɡè)(或某些)现有实体(自然的或人造的)转化为具有预期使用价值的人造产品过程。建筑工程机械工程共七十页软件工程:克服软件(ruǎnjiàn)危机的努力(1)从管理的角度
软件开发过程的研究、文档的标准化以及人们的交流方式等。(2)软件开发技术(jìshù)、方法的研究
如结构化软件开发方法,面向对象的开发共七十页20世纪80年代末,美国DoD和工业界开始认识到管理的重要性。美国DoD的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量进一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部如果软件开发组织不能对软件项目进行(jìnxíng)有效管理,就不能充分发挥软件开发方法和工具的潜力,也就不能高效率地开发出高质量的软件产品1.解决危机(wēijī)的管理途径共七十页提出有效的方法和工具支持软件开发:1968年提出软件工程概念和思想20世纪70年代的结构化软件开发方法20世纪80年代的面向对象的软件开发方法新的技术(jìshù):软件重用、快速原型、需求工程典型技术:COM,Java,C++,J2EE,.Net,….支撑工具和环境:Jbuilder,VisualStudio,WebLogic,…2.解决(jiějué)危机的技术方法途径共七十页211.2软件工程(ruǎnjiànɡōnɡchénɡ)种子定义:软件工程是建立和使用(shǐyòng)一套合理的工程原则,以便经济地获得可靠的、可以在实际机器上高效运行的软件。共七十页软件工程(ruǎnjiànɡōnɡchénɡ)定义:软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将(jíjiāng)工程化方法应用于软件。(2)在(1)中所述方法的研究。——IEEE共七十页软件工程(ruǎnjiànɡōnɡchénɡ)的特点1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中是由具有(jùyǒu)一种文化背景的人替具有(jùyǒu)另一种文化背景的人共七十页软件工程(ruǎnjiànɡōnɡchénɡ)的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚(qīngchu)地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性共七十页SoftwareEngineeringa“quality”focusprocessmodelmethodstools工具(gōngjù)过程(guòchéng)方法质量关注点软件工程:一种层次化技术软件工程共七十页举例(jǔlì):去杭州千岛湖旅游共七十页ALM(ApplicationLifecycleManagement)MSF(MicrosoftSolutionFramework)共七十页软件工程学通常把在软件生命周期全过程中使用(shǐyòng)的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。共七十页软件工程(ruǎnjiànɡōnɡchénɡ)的扩展共七十页1.3软件(ruǎnjiàn)生命周期模型共七十页1.4软件(ruǎnjiàn)过程软件过程是各个环节的粘合剂,串联。软件产品构建时所执行的一系列活动(activity)、动作(action)和任务(rènwu)(task)的集合。过程框架:框架活动+普适性活动Frameworkactivity+umbrellaactivity共七十页32过程(guòchéng)框架举例:过程框架框架活动软件工程动作工作任务工作产品(chǎnpǐn)里程碑和可交付成果QA检查点普适性活动共七十页33一个通用的框架包含(bāohán)5个活动:沟通策划建模需求分析(fēnxī)设计构建代码生成测试部署共七十页34普适性活动(huódòng)软件项目管理正式技术(jìshù)评审软件质量保证软件配置管理工作产品的准备和生产可复用管理测量风险管理共七十页1.4.1过程(guòchéng)流-框架活动流程沟通(gōutōng)策划建模构建部署共七十页361.4.1过程流-框架(kuànɡjià)活动流程共七十页37注意:项目不同(bùtónɡ),过程可能不同(bùtónɡ)活动、动作和任务的总体流程(liúchéng),以及它们之间相互依赖关系在每一个框架活动中,动作和任务细化的程度工作产品的定义和要求的程度质量保证活动应用的方式项目跟踪和控制活动应用的方式过程描述的详细程度和严谨程度客户和利益相关者对项目参与的程度软件团队所赋予的自主权队伍组织和角色明确程度共七十页38软件工程(ruǎnjiànɡōnɡchénɡ)实践的精髓Polya建议:1.理解问题(沟通分析)。2.计划解决方案(建模和软件设计)。3.实施(shíshī)计划
(代码生成)。4.检查结果的准确性(测试和质量保证)。共七十页1.5经典软件过程(guòchéng)模型(1)瀑布(pùbù)模型(WaterfallModel)传统瀑布模型共七十页
传统瀑布(pùbù)模型的特点提供了软件过程模型的基本框架(模板)。强调了每一阶段活动的严格顺序。质量保证观点:以经过评审确认了的阶段工作(gōngzuò)产品(文档)驱动下一阶段的工作,便于管理。是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。传统瀑布模型存在什么问题?1.5经典软件过程模型共七十页实际(shíjì)的瀑布模型1.5经典软件过程(guòchéng)模型共七十页瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点:实际项目很少按照该模型给出的顺序进行(jìnxíng);用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成。瀑布(pùbù)模型的优缺点1.5经典软件过程模型共七十页(2)原型(yuánxíng)模型—快速原型模型(RapidPrototypeModel)在用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等许多情况下,可以根据用户的一组基本需求,快速建造一个原型(yuánxíng)(可运行的软件),然后进行评估,进一步精化、调整原型(yuánxíng),使其满足用户的要求,也使开发者对将要做的事情有更好的理解。建造/修改原型
听取用户意见用户测试运行原型原型实现范型1.5经典软件过程模型共七十页快速(kuàisù)原型验证(yànzhèng)规格说明验证设计验证编码测试综合测试维护变化的需求验证维护过程开发过程1.5经典软件过程模型共七十页原型模型存在的问题⑴为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。⑵为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。⑶开发过程不便于管理。有效的使用原型模式建造(jiànzào)原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。1.5经典软件(ruǎnjiàn)过程模型共七十页(3)增量(zēnɡliànɡ)模型(IncrementalModel)是一种渐进地开发逐步完善的软件(ruǎnjiàn)版本的模型。需求分析验证规格说明验证设计验证维护针对每个构件完成详细设计、编码和集成,经测试后交付给用户1.5经典软件过程模型共七十页分析(fēnxī)分析(fēnxī)分析分析设计设计设计设计编码编码编码编码测试测试测试测试增量1增量2增量3增量4交付交付交付交付●●●●●
•
反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品。
•
早期的版本实现用户的基本需求,并提供给用户评估的平台。增量模型共七十页在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得(huòdé)回报。增量(zēnɡliànɡ)模型的优点1.5经典软件过程模型共七十页增量模型(móxíng)的困难在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放(kāifàng)的。开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险。1.5经典软件过程模型共七十页(4)螺旋(luóxuán)模型(SpiralModel)软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量(zēnɡliànɡ)模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量(zēnɡliànɡ)发布,早期的迭代中,发布的增量(zēnɡliànɡ)可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。1.5经典软件过程模型共七十页快速(kuàisù)原型验证(yànzhèng)规格说明验证设计验证编码测试综合测试维护变化的需求验证风险分析风险分析风险分析风险分析风险分析风险分析可看作在每个阶段之前都增加了风险分析过程的快速原型模型。简化的螺旋模型1.5经典软件过程模型共七十页完整(wánzhěng)的螺旋模型1.5经典(jīngdiǎn)软件过程模型共七十页
沟通螺旋(luóxuán)模型风险(fēngxiǎn)分析工程实施用户通信用户评估产品维护项目产品增强项目新产品开发项目概念开发项目计划建造及发布共七十页螺旋模型的优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标减少了过多测试或测试不足维护和开发之间并没有本质区别螺旋模型的特点风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大主要适用于内部(nèibù)开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险随着迭代次数的增加,工作量加大,软件开发成本增加1.5经典软件过程(guòchéng)模型共七十页(5)面向对象模型(móxíng)喷泉(pēnquán)模型(FountainModel)分析设计实现测试集成演化特点:主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征1.5经典软件过程模型共七十页可重用(zhòngyòng)部件组装模型(构件集成模型)
(ComponentIntegrationModel)
构件(components)也称为组件,是一段实现一系列有确定接口的程序体,具有自己的功能和逻辑,能同其他构件集成起来协调工作。该模型支持软件重用(Reusability),对缩短软件开发周期、降低项目成本有重要的现实意义。同时,建造符合某应用领域体系结构标准的构件,可以用来搭建分布式的、跨越不同操作平台(集成化软件开发环境(ISEE))的软件,扩展(kuòzhǎn)了软件的应用前景,促进了软件标准化、商品化的发展。因此,在此基础上专家们又提出了“基于构件的软件工程”(CBSE)。构件集成模型如下图所示:1.5经典软件过程模型共七十页
构件集成模型软件体系结构被建立后,必须用构件去充实(chōngshí),这些构件可从复用库中获得,或者根据专门需要而开发。整个过程可以演化地进行,面向对象方法给予技术上的支持。1.5经典软件过程(guòchéng)模型共七十页Sommerville提出基于组件开发有两种思路:完成高层设计,对设计中的组件给出描述,以便找出可复用的组件,这些组件可在体系结构层次上加入或更详细(xiángxì)的设计层次上加入。先根据需求搜寻可复用组件,再将设计建立在获得的组件基础上。这两种思路可结合起来。设计(shèjì)系统体系结构描述组件搜寻可复用组件集成系统先完成架构设计的复用系统需求描述搜寻可复用组件对需求作某些修改体系结构设计集成系统复用驱动设计1.5经典软件过程模型共七十页
构件技术主要有三种流行标准:OMG的CORBA:
对象管理组织发布的公用对象请求代理体系结构(CommonObjectRequestBrokerArchitecture)。通过一个对象请求代理(ORB)提供(tígōng)一系列服务,使得一个构件和其他构件通信,而不管它们在系统中的位置,实现了远程对象通过接口进行通信的机制。为了解决CORBA对象引用不透明、缺少多重接口、系统过于复杂等问题,专家们又开发了新一代面向对象中间件平台ICE(InternetCommunicationsEngine—互联网通信引擎)。使构建分布式应用系统更容易、性能和伸缩性更好。
1.5经典软件过程(guòchéng)模型共七十页微软的COM/DCOM:微软开发了构件对象模型(ComponentObjectModel),它提供了运行(yùnxíng)于windows之上的单个应用系统使用不同厂商生产的构件的规约。基于分布式环境下的COM称为DCOM(DistributeCOM)。SUN的EJB(EnterpriseJavaBean):随着Java在企业级应用的地位日趋重要,Sun提出了一个统一的企业级Java平台—J2EE(Java2EnterpriseEdition)。在J2EE中,EJB负责最核心的业务处理。它为服务器端的应用程序提供了一种与厂商无关的Java接口,让任何符合EJB规范的构件都可以运行在每一台这样的服务器上。
构件技术主要(zhǔyào)有三种流行标准:共七十页(6)统一软件开发过程
是由Rational公司的Booch、Jacobson、Rumbaugh提出的软件过程模型,也称RUP(RationalUnifiedProcess)。RUP重复一系列周期(zhōuqī),每个周期(zhōuqī)由一个交付给用户的产品结束。每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流(需求、分析、设计、实现、测试)分别迭代。
模型见下图:1.5经典软件过程(guòchéng)模型共七十页RUP软件开发生命周期共七十页初始阶段:进行问题定义,确定目标,评估其可行性,降低关键风险。细化阶段:制定项目计划、配置各类资源、建立系统架构(包括各类视图)。构造阶段:开发(kāifā)整个产品,并确保产品可移交给用户。移交阶段:产品发布、安装、用户培训。在每个阶段的每次迭代的最后,用例模型、分析模型、设计模型、实现模型都会增量,每个阶段结束的里程碑处,管理层做出是否继续、进度、预算、是否给下一阶段提供资助等决定。不同阶段工作流的侧重点不同,前两阶段大部分工作集中在需求、分析和架构设计上;在构造阶段,重点转移到详细设计、实现和测试上。1.5经典软件过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六安皋街商业运营管理有限责任公司招聘笔试题库2025
- 2025年生态修复工程中生态系统服务功能评估与生态修复工程实施策略
- 2025年三支一扶之公共基础知识押题练习试题B卷含答案
- 2025年国家电网招聘之文学哲学类真题练习试卷B卷附答案
- 2025年生态旅游可持续发展规划与管理:生态补偿机制研究
- 人机交互技术课件
- 作业治疗技术课件
- 2025年能源与资源行业:能源行业新能源政策环境与产业发展研究报告
- 新生儿拉便便护理常规
- 2025中考数学二轮专题复习-尺规作图【课件】
- 配电网自动化终端典型缺陷处理
- 广告牌供货与安装方案
- 个人能力展示
- 国家职业技术技能标准 4-14-02-05 老年人能力评估师 人社厅发202332号
- 江苏省南通市历年中考数学试卷真题合集(共6套)
- 全国各气象台站区站号及经纬度
- 动漫设计毕业论文当代中国动漫的思考
- 大班数学《钱币换算》课件
- 危险化学品企业安全培训空间建设应用指南
- 国开电大本科《外国文学专题》在线形考(形考任务一至四)试题及答案
- 04.第四讲 坚持以人民为中心
评论
0/150
提交评论