版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机与信息学院
2013.12软件开发模型及方法声明本课件为计算机及信息工程学院2013级硕士研究生课程《软件复用》专用;本课件为非正式出版物,仅供选课同学参考,不得外传。如有不当之处,欢迎指正、交流;在制作本课件的过程中,参阅了大量的学术论文、论著和教材,有些没有一一列举,对它们的作者表示真诚的感谢。
在大型软件应用系统或特定领域中一族相关的软件应用系统的开发中,如何确定哪些是应以可复用构件形式存在的部分、怎样以一种系统的方式进行处理等问题要比单单写出一个可复用构件要复杂的多,也重要的多,因为这些问题关系到整个应用系统或应用系统族的结构和可维护性,从而影响到软件产品的开发效率和质量。应用软件复用技术的软件开发方法的研究来解决这个问题.课程介绍一、软件开发模型二、软件开发方法三、复用驱动的软件开发简介
一、软件开发模型
软件开发模型是软件开发全部过程、活动和任务的结构框架。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件开发工作的基础。最早出现的软件开发模型是1970年W.Royce提出的瀑布模型,而后随着软件工程学科的发展和软件开发的实践,相继提出了原型模型、演化模型、增量模型、喷泉模型等。1、瀑布模型
分析编码50年代末:二级模型“做什么”“编程-实现”需求分析设计编码测试运行瀑布模型雏型系统需求软件需求需求分析设计编码测试运行1970年,W.Royce将雏型进一步精化其中:每一阶段具有以下特征:从上一阶段接受工作对象,即输入;对这一输入实施本阶段的工作给出本阶段的结果作为输出。系统需求软件需求需求分析设计编码测试运行瀑布模型活动如瀑布流水式的组织规定每一活动的工作对象和输出评审、确认和反馈特点支持开发结构化软件阶段的顺序性和依赖性为软件开发和维护提供有效的管理模式,质量保证特点:适用于小型系统的开发,不够灵活,不适合需求模糊的系统问题:无法通过开发活动澄清本来不确切的软件需求
维护、甚至返工的代价由于顺序固定,前期阶段工作造成差错,越到后期造成的损失越大。(2)演化模型需求设计编码测试集成需求设计编码测试集成开发反馈开发反馈...核心系统开发第二次迭代针对事先不能完整地定义需求针对用户的核心需求,开发核心系统根据用户的反馈,实施活动的迭代(3)增量(渐增)模型
称为有计划的产品改进型,它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动。第一个中间版本纳入一部分需求,下一个中间版本纳入更多的需求,直到完成微软“同步-稳定的产品开发模型”
将项目分为若干个里程碑阶段
定义稳定、灵活的体系结构,并为构件和子系统的开发提供统一的接口
开发构件,维持一个可发布的系统版本可以准确把握项目进展情况增强开发人员的信心和成就感可以随时根据市场情况及时作出调整(4)喷泉模型
软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。各项活动之间无明显边界。特征:迭代无缝主要用于面向对象技术的软件开发演化维护确认实现设计分析(5)螺旋模型是瀑布模型与演化模型的结合,并增加风险分析。它将开发划分为制定计划、风险分析、实施开发、客户评估四类活动。特点瀑布模型+快速原型+风险分析迭代过程一个螺旋式周期确定目标,选择方案,选定完成目标的策略风险角度分析该策略启动一个开发阶段评价前一步的结果,计划下一轮的工作(7)智能模型
又称基于知识的软件开发模型,它是知识工程与软件工程在开发模型上结合的产物。它可以协助软件开发人员完成开发工作。必须建立知识库,将模型本身、软件工程知识和特定领域的知识分别存入知识库,由此构成某一领域的软件开发系统。获取需求需求分析具体描述优化程序验证维护调整知识库/专家系统(8)构件集成模型特点面向对象基于构件库融合螺旋模型特征支持软件开发的迭代方法软件重用二、软件开发方法
软件开发方法是软件开发过程所遵循的办法和步骤,其目的在于有效地得到一些工作产物,也就一个运行的系统及其支持文档,并满足有关的质量要求。可从四个方面的特征评价:1、技术特征:支持各种技术概念的方法特色;2、使用特征:用于具体开发时的有关特色;3、管理特性:增强对软件开发活动管理的能力方面的特色;4、经济特征:给软件机构产生的在质量和生产力方面的可见效益。一般分为四类方法:
1、模块化方法
2、结构化方法
3、面向数据结构方法
4、面向对象方法
5、复用驱动的方法下面展示一些有关的典型方法1.Parnas方法
最早的软件开发方法是由D.Parnas在1972年针对软件在可维护性和可靠性方面这两个问题提出的。首先,Parnas提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。现在信息隐蔽原则已成为软件工程学中的一条重要原则。
Parnas提出的第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。软件是很脆弱的,一个微小的错误就可能引发严重的事故,所以必须加强防范。此外,模块之间也要加强检查,防止错误蔓延。2.SASD方法
1978年,E.Yourdon和L.L.Constantine提出了结构化方法,即SASD(StructuredAnalysis&StructuredDesign)方法,也称为面向功能的软件开发方法或面向数据流的软件开发方法。1979年TomDeMarco对此方法作了进一步的完善。Yourdon方法是80年代使用最广泛的软件开发方法。它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。这一方法不仅开发步骤明确,SA、SD、SP相辅相成,具有相当好的一致性,而且给出了两类典型的软件结构(变换型和事务型),便于参照,使软件开发的成功率大大提高,从而深受软件开发人员的青睐。3面向数据结构的软件开发方法
(1)Jackson方法
1975年,M.A.Jackson提出了一类至今仍广泛使用的软件开发方法。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细设计。
Jackson方法有时也称为面向数据结构的软件设计方法。
(2)Warnier方法
1974年,J.D.Warnier提出的软件开发方法与Jackson方法类似。差别有三点:一是它们使用的图形工具不同,分别使用Warnier图和Jackson图;另一个差别是使用的伪码不同;最主要的差别是在构造程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据结构。4问题分析法PAM(ProblemAnalysisMethod)问题分析法是80年代末由日立公司提出的一种软件开发方法。PAM方法希望能兼顾Yourdon方法、Jackson方法和自底向上的软件开发方法的优点,而避免它们的缺陷。它的基本思想是:考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。这一方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图。从上述步骤中可以看出,这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。这一方法在日本较为流行,软件开发的成功率也很高。由于在输入、输出数据结构与整个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。
5面向对象的软件开发方法
八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。其中,Booch,Coad/Yourdon,Rumbaugh的OMT(ObjectModelingTechnology),和Jacobson的OOSE(Object-ObjectedSoftwareEngineering)方法在面向对象软件开发界得到了广泛的认可。特别值得一提的是统一的建模语言UML(UnifiedModelingLanguage),该方法结合了Booch,OMT,和OOSE方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。面向对象方法都支持三种基本的活动,通过这三种活动构造系统模型:
识别对象和类描述对象和类之间的关系通过描述每个类的功能定义对象的行为(1)Booch方法
Booch方法中的对象交互作用图被用来描述重要的互相作用,显示参与的对象和对象之间按时间排序的消息。可见性图用来描述互相作用中对象的可见性。对象的可见性定义了一个对象如何处于向它发送消息的方法的作用域之中。例如,它可以是方法的参数、局部变量、新的对象、或当前执行方法的对象的部分。
Booch方法的过程包括以下步骤:l
在给定的抽象层次上识别类和对象l
识别这些对象和类的语义l
识别这些类和对象之间的关系l
实现类和对象Booch方法的优势在于其丰富的符号体系,包括:l
类图(类结构-静态视图)l
对象图(对象结构-静态视图)l
状态转移图(类结构-动态视图)l
时态图(对象结构-动态视图)l
模块图(模块体系结构)l
进程图(进程体系结构)用于类和对象建模的符号体系使用注释和不同的图符(如不同的箭头)表达详细的信息。Booch建议在设计的初期可以用符号体系的一个子集,随后不断添加细节。
(2)Coad/Yourdon方法
Coad/Yourdon方法严格区分了面向对象分析OOA和面向对象设计OOD。该方法利用五个层次和活动定义和记录系统行为,输入和输出。这五个层次的活动包括:
发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整个应用的基础,然后,据此分析系统的责任。
识别结构。该阶段分为两个步骤。第一,识别一般-特殊结构,该结构捕获了识别出的类的层次结构;第二,识别整体-部分结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,便于理解。定义属性。其中包括定义类的实例(对象)之间的实例连接。定义服务。其中包括定义对象之间的消息连接。
在面向对象分析阶段,经过五个层次的活动后的结果是一个分成五个层次的问题域模型,包括主题、类及对象、结构、属性和服务五个层次,由类及对象图表示。五个层次活动的顺序并不重要。
面向对象设计模型需要进一步区分以下四个部分:
问题域部分(PDC)。面向对象分析的结果直接放入该部分。
人机交互部分(HIC)。这部分的活动包括对用户分类,描述人机交互的脚本,设计命令层次结构,设计详细的交互,生成用户界面的原型,定义HIC类。
任务管理部分(TMC)这部分的活动包括识别任务(进程)、任务所提供的服务、任务的优先级、进程是事件驱动还是时钟驱动、以及任务与其它进程和外界如何通信。
数据管理部分(DMC)。这一部分依赖于存储技术,是文件系统,还是关系数据库管理系统,还是面向对象数据库管理系统。(3)Rumbaugh的OMT(ObjectModelingTechnology)方法
OMT方法从三个视角描述系统,相应地提供了三种模型,对象模型,动态模型和功能模型。
对象模型描述对象的静态结构和它们之间的关系。
该方法将开发过程分为四个阶段:
1分析。基于问题和用户需求的描述,建立现实世界的模型。分析阶段的产物有:问题描述对象模型=对象图+数据词典动态模型=状态图+全局事件流图功能模型=数据流图+约束
2系统设计。结合问题域的知识和目标系统的体系结构(求解域),将目标系统分解为子系统。该阶段的主要产物是:系统设计文档,包括基本的系统体系结构和高层次的决策。
3对象设计。基于分析模型和求解域中的体系结构等添加的实现细节,完成系统设计。主要产物包括:细化的对象模型
细化的动态模型
细化的功能模型
4实现。将设计转换为特定的编程语言或硬件,同时保持可追踪性、灵活性和可扩展性。(4)OOSE(Object-OrientedSoftwareEngineering)方法
Jacobson的方法与上述三种方法有所不同,它涉及到整个软件生命周期,包括需求分析、设计、实现和测试等四个阶段。需求分析和设计密切相关。需求分析阶段的活动包括定义潜在的角色(角色指使用系统的人和与系统互相作用的软、硬件环境),识别问题域中的对象和关系,基于需求规范说明和角色的需要发现usecase,详细描述usecase。设计阶段包括两个主要活动,从需求分析模型中发现设计对象,以及针对实现环境调整设计模型。第一个活动包括从usecase的描述发现设计对象,并描述对象的属性、行为和关联。在这里还要把usecase的行为分派给对象。
在该方法中的一个关键概念就是usecase。usecase是指行为相关的事务(transaction)序列,该序列将由用户在与系统对话中执行。因此,每一个usecase就是一个使用系统的方式,当用户给定一个输入,就执行一个usecase的实例并引发执行属于该usecase的一个事务。基于这种系统视图,Jacobson将usecase模型与其它五种系统模型关联:
领域对象模型:usecase模型根据领域来表示。分析模型:usecase模型通过分析来构造。设计模型:usecase模型通过设计来具体化。实现模型:该模型依据具体化的设计来实现usecase模型。测试模型:用来测试具体化的usecase模型。由G.Booch,J.Rumbough和Jacobson等人发起,在Booch方法、OMT方法加OOSE方法的基础上推出了统一建模语言(UML))三、复用驱动的软件开发1、由复用驱动的软件开发方法的特点:强调从复用角度构造软件系统的体系结构(SoftwareArchitecture)。强调对真实系统中的可复用部分的识别,将其作为构件系统进行开发。系统的体系结构实际上规定了复用构件或构件系统的环境,只有在确定软件系统的体系结构的基础上才能进行可复用构件的识别和分析。面向对象方法中没有明确的提出构造软件体系结构,但是它的对象模型中包含了体系结构的概念。对象模型中包括类,类之间的关系,消息的传递。这实际上就是一个对软件体系结构的定义。这个体系结构是和真实系统的结构一致的,但是它没有考虑到在较大的粒度上进行复用的问题。而由复用驱动的软件开发方法强调从复用的角度构造软件体系结构。从而为有效的实现复用打下基础。
强调对可复用部分的识别是由复用驱动的软件开发方法的另一个特点,这要求有意识的从复用的角度去认识、分析真实系统。面向对象方法强调从对象的角度认识真实系统的本来面貌,从而建立与真实系统一致的对象模型,这个对象模型一直贯穿在分析、设计、实现和测试各阶段,保证了各个阶段所使用和依据的模型的一致性。但是在整个过程中都没有将大粒度的复用考虑在内。对象模型的可复用性主要是类的可复用性,而类的可复用性则是真实系统中构成元素的可复用性决定的,并通过面向对象编程语言来实现的。面向对象方法就复用所作的工作是比较有限的。2、复用驱动的开发与对象方法
由复用驱动的软件开发方法并不推翻面向对象方法,相反,它是以面向对象方法为基础的,承袭了面向对象方法的优点,即从对象的角度认识真实系统,建立贯穿软件开发各个阶段的对象模型。但这一点在由复用驱动的软件开发方法中并不是第一步的工作,在此之前要构造软件体系结构和识别、分析真实系统中可复用的部分。由复用驱动的软件开发方法的首要任务之一就是从真实系统中分析、识别出这些部分作为可复用的构件系统,然后再使用面向对象的方法对其进行进一步的认识和分析。当然,希望这进行两步工作所采用的方法是一致的。
3、复用驱动的领域软件开发
领域给由复用驱动的软件开发方法的应用提供了良好的背景条件,因为领域具有比较同一的、固定的领域职责,而领域内各系统是为履行领域职责服务的。同一领域职责在不同地区的不同履行方式形成具体系统的差异。同时,领域内参与履行不同领域职责的事物是比较一致的,因为既然同属于一个领域,相互之间必定由比与领域外的事物更多的一致之处,有更加紧密的联系,实际上这也是由领域职责所决定的。基于领域的软件开发很少是只开发单个系统的,一般是一族相似或相关的系统。即便是目前仅开发一个系统,由于领域内履行相同职责的系统具有相似性,此单个系统也会具有以后开发的相似系统中可复用的部分。这也为由复用驱动的软件开发方法提供了客观条件。4、复用驱动的结构
从领域内软件系统族的角度来考虑复用。系统中可复用的部分称为构件,相关的构件组成构件系统。以构件系统为基础构造的满足领域内用户需求的系统称为应用系统。构件系统和应用系统的体系结构是十分重要的,理解此体系结构的一个途径是认识到应用系统是从构件系统中构造而来的,也就是说开发者通过组合构件系统中的可复用构件了来构造应用系统。
ApplicationSystemEngineeringApplicationSystem2ApplicationSystem3ApplicationSystem1ComponentSystem2ComponentSystem1层次体系结构,最高层是应用系统层,其中的应用系统是通过大量复用下三层的构件而开发得到的。应用系统层下面是针对特定领域或特定业务的可复用构件层。第三层是中间件构件层,它提供一些重要的接口服务的接口。第四层是系统软件构件层,它提供针对硬件的接口。
ApplicationSystemsBusiness-specificComponentsMiddlewareComponentsSystemSoftwareComponents5.支持领域复用的软件开发过程
“面向对象的系统分析”一书(北大)提出的。过程主要分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建厦门市集美区康城幼儿园非在编教职工招聘3人备考题库及答案详解(新)
- 2026浙江绍兴市强制医疗所招聘编外人员2人备考题库及参考答案详解
- 2026重庆市渝北幼儿园招聘备考题库及1套完整答案详解
- 2026年康复医学治疗技术中级职称考试题库和答案详解
- 公交公司内部治安保卫制度
- 传染病分级分层分流制度
- 2025年潍坊工商职业学院单招职业技能测试题库带答案解析
- 2025年翁源县幼儿园教师招教考试备考题库含答案解析(必刷)
- 2025年苏州健雄职业技术学院单招职业倾向性测试题库带答案解析
- 2025年芜湖学院马克思主义基本原理概论期末考试模拟题带答案解析(夺冠)
- 单值-移动极差控制图(自动版)
- JGT124-2017 建筑门窗五金件 传动机构用执手
- 《GNSS基础知识》课件
- 第7课-离子推进技术(推力器)
- 大学德语四级词汇
- 用友PDM操作手册
- 某项目标底及投标报价测算分析报告
- 中国抑郁症防治指南
- 科创板股票投资知识测试题目
- GB 6529-1986纺织品的调湿和试验用标准大气
- 地基处理教材课件
评论
0/150
提交评论