基于模型的软件开发方法,在软件建模与设计中软件开发的方法有几种

1,在软件建模与设计中软件开发的方法有几种1) 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构 。?。?) 在开发过程中,需求的变化是不可避免的 。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性 。在使用增量模型时,第一个增量往往是实现基本需求的核心产品 。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布 。这个过程在每个增量发布后不断重复 , 直到产生最终的完善产品 。
2 , 对几种软件过程模型的理解建立和使用一套合理的工程原则 , 从而经济地获得可靠的、可以在实际机器上高效运行的软件 。(Fritz Bauer)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化的方法应用于软件,以及对犯法的研究 。(IEEE93)软件产生的过程 。(笔者)2、过程框架:通用过程框架:沟通、策划、建模、构建、部署 。3、过程模式:定义了一系列的软件开发中所需要的活动、动作、工作任务、工作产品及相关的行为,如原型开发,软件工程可定义为一系列模式的组合 。4、瀑布模型:一个系统的、顺序的软件开发方法,从用户需求规格说明开始,通过策划、建模、构建和部署的过程,最终提供一个完整的软件并提供持续的技术支持 。5、增量过程模型:以迭代的方式运用瀑布模型,在瀑布模型的每个阶段运用线性序列,每个序列产生一个软件的可交付增量 , 每个序列中的过程可以交叉 。RAD模型:增量过程模型的改进版 , 只是沟通、策划只执行一次,每个线性序列只包含建模、构建、部署三个过程 。6、演进过程模型:原型开发模型:沟通—策划—建模—原型构建—部署—沟通,不断循环 。螺旋模型:以原型开发为基础 , 只是把软件开发作为一系列演进版本,每一循环标记为里程碑 。螺旋模型会贯穿整个软件生命周期 。协同开发模型:为每个开发活动定义状态,一个活动状态的变更将引起其他活动状态的改变,可用于其他过程模型中,反映整个项目的状态 。7、专用过程模型:只是用于某些特定的软件工程方法 。基于构件的开发模型:具有螺旋模型的许多特点 , 本质上是演化模型,需要以迭代的方式构建软件,不同之处是采用预先打包的软件构建开发程序 。形式化方法模型:主要活动是生成计算机软件形式化的数学规格说明,软件工程师用严格的数学符号来说明、开发和验证基于计算机的系统 。面向方面的软件开发模型:对纵向分解的软件构件进行横向切片,称为方面,以表示构件功能及非功能的横切属性 。面向方面是对横切关注点局部表示的一种机制 , 超越了子程序和继承的方法 。如果某个关注点(客户需要的属性或者技术兴趣点)涉及系统多个方面的功能、特性和信息 , 这些关注点成为横切关注点 。8、统一过程模型:用例驱动,以架构为核心,迭代并且增量 。和通用过程框架活动不同,统一过程分为五个阶段,起始(产生用例)——细化(产生五种视图,用例模型、分析模型、设计模型、实现模型和部署模型)——构建(代码)——转换(部署、beta测试、反馈
3,软件项目开发过程模式有哪些基于构件的软件开发模型基于构件的开发模型利用模块化方法将整个系统模块化 , 并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程 。基于构件的开发模型融合了螺旋模型的许多特征 , 本质上是演化形的,开发过程是迭代的 。基于构件的开发模型由软件的需求分析和定义、体系结构设计、构件库建立、应用软件构建,以及测试和发布5个阶段组成,采用这种开发模型的软件过程如图1-13所示 。图1-13采用基于构件的开发模型的软件过程构件作为重要的软件技术和工具得到极大的发展,这些新技术和工具有Microsoft的DCOM、Sun的EJB , 以及OMG的CORBA等 。基于构件的开发活动从标识候选构件开始,通过搜查已有构件库,确认所需要的构件是否已经存在 。如果已经存在 , 则从构件库中提取出来复用;否则采用面向对象方法开发它 。之后利用提取出来的构件通过语法和语义检查后将这些构件通过胶合代码组装到一起实现系统,这个过程是迭代的 。基于构件的开发方法使得软件开发不再一切从头开发,开发的过程就是构件组装的过程,维护的过程就是构件升级、替换和扩充的过程 。其优点是构件组装模型导致了软件的复用,提高了软件开发的效率 。构件可由一方定义其规格说明,被另一方实现 。然后供给第三方使用 , 构件组装模型允许多个项目同时开发,降低了费用,提高了可维护性,可实现分步提交软件产品 。由于采用自定义的组装结构标准,缺乏通用的组装结构标准,因而引入了较大的风险 。可重用性和软件高效性不易协调,需要精干的有经验的分析和开发人员,一般开发人员插不上手 。客户的满意度低,并且由于过分依赖于构件,所以构件库的质量影响着产品质量第一步:需求调研分析1相关系统分析员向用户初步了解需求,然后用word列出要开发的系统的大功能模块 , 每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面 。2 系统分析员深入了解和分析需求,根据自己的经验和需求用word或相关的工具再做出一份文档系统的功能需求文档 。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能 。3 系统分析员向用户再次确认需求 。第二步:概要设计首先,开发者需要对软件系统进行概要设计,即系统设计 。概要设计需要对软件系统的设计 进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、 运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础 。第三步:详细设计在概要设计的基础上,开发者需要进行软件系统的详细设计 。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系 , 需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试 。应当保证软件的需求完全分配给整个软件 。详细设计应当足够详细 , 能够根据详细设计报告进行编码 。第四步:编码在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求 , 开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求 。第五步:测试测试编写好的系统 。交给用户使用,用户使用后一个一个的确认每个功能 。第六步:软件交付准备在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物 。《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置 。《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明 。第七步:验收用户验收 。【基于模型的软件开发方法,在软件建模与设计中软件开发的方法有几种】
4,软件开发方法原发布者:FX资料库1软件开发实施方案系统开发严格按照软件工程的方法进行组织,系统的开发过程按照需求分析、系统分析与设计要求、系统编码、系统测试几个过程有序推进 。下表所示系统开发流程图,采用原型及迭代方式开发,根据用户需求持续改进,直到最终用户确认满意 。1.1开发流程总述如下图示流程定义了我公司内部的软件开发过程,以指导和规范软件项目中开发过程的定义和相应的实施 。该过程可划分为一系列子过程,包括:软件需求分析、设计、编码、测试、验收、维护,每个子过程又由一系列任务和活动组成,如设计过程又可分为结构设计和详细设计 。但是在实际开发项目中,情况仍然会是千变万化的,因此我们也并不是一成不变的死板执行一个僵化的工作流程 , 我们的原则是在一个规范流程的指导和约束下,根据具体工程项目的实际要求,为每一个项目评估并制定真正能够最好的满足该项目要求的开发流程 。图1.41软件开发流程总图在应用系统软件开发项目中,我们仍将遵循这一思想,这一点将在随后的项目开发实施计划部分有具体的体现,在这里和下面的相关章节中,我们仍将围绕着这个完整的开发流程来分析说明,以此来阐明我们对项目开发的完整过程管理思想和相关实践 。下面我们对这个软件开发工作流程进行简要地分解说明 。1.2软件需求分析(1)概述由于应用系统与众多相关应用软件需要进行交互,因此需要先对这些应用系统进行分别梳理,充分做好需求调研工作,编写经项目单位认可并评审通过的《系统需求常见的软件开发方法有结构化方法、Jackson方法、维也纳开发方法(VDM)和面向对象的开发方法 。1.结构化方法:指导思想:自顶向下 , 逐步求精;基本原则:功能的分析与抽象 。优点:1、 适用于数据处理领域的问题;2、支持工具较多,发展成熟 。缺点:1、不适应规模大的项目;2、不适应特别复杂的项目;3、难于解决软件重用的问题;4、难于适应需求变化的问题;5、难于彻底解决维护问题 。2.Jackson方法:这是一种面向数据结构的方法过程:JSP—>JSDJSP方法:1、以数据结构为驱动;2、首先描述问题的输入 , 输出数据结构,分析其对应性,然后退出相应的程序结构,从而给出问题的软件过程描述 。JSD方法:1、以事件作为驱动;2、首先建立现实世界的模型 , 再确定系统的功能需求,对需求的描述特别强调了操作之间的时序性 。3.维也纳开发方法(VDM):这是一种形式化的开发方法 , 是一个基于模型的方法 。主要思想:将软件系统当做模型来给予描述,具体说是把软件的输入,输出看做模型对象 , 而这些对象在计算机中的状态可看做为该模型在对象上的操作 。借助工具:描述工具语言Meta-IV 。4.面向对象的开发方法:定义:以对象作为最基本的元素,是分析问题 , 解决问题的核心 。对象:具体的事物,事件,概念和规则 。基本点:尽可能按照人类认识世界的方法和思维方法来分析和解决问题 。1:瀑布方法所有软件方法的祖先是瀑布方法(waterfall methodology) 。它之所以被称为瀑布方法是因为开发模块相互之间的依次流动,瀑布方法通过控制阀门的一系列活动组成 。这些控制阀门决定一个给定的活动是否已经完成并且可以进入下一个活动 。需求阶段处理决定了所有的软件需求 。设计阶段决定整个系统的设计 。代码在代码阶段编写 。代码然后被测试 。最后产品被发布 。对瀑布方法模型最基本的批评就是瀑布方法对于反馈事物发展状况耗时太长 。软件的一些内容那个很容易被理解,而另一些内容则相反 。因此 , 当用户对于手边出现的问题都没有很好理解的时候,开发人员试图先完成所有的需求(也就是说,将需求量化到实际的规格说明当中)是非常空难的 。更进一步来说,如果在需求中出现一个错误 , 它将传播到设计阶段,传播到代码中等 。同时一般不存在过程中返回的真正能力 。因此,如果进入测试并且发现设计的一部分是无法工作的 , 那么就会进行修改并修补问题而交差,但是这种方法将会失去设计活动的所有上下文环境——你只是有目的地对系统权宜行事!认识到这个问题后瀑布方法已经被修改成几种形式 。例如螺旋式瀑布方法它继承并使用了多个瀑布模型 。这种方法缩短了生命周期向下的时间;也就是说 , 为解决为题提供了迭代方案 。最终,大家无法脱离瀑布方法是因为它确实是合乎常规的方法 。首先 , 这种方法可以决定将要构建的内容 。接着,决定将要如何构建这些,下一步,世界构建这些内容 。可以确保自己确实构建自己所需的东西(并且可以成功运行) 。2:统一过程统一过程应用了基于处理系统首先考虑的最重要方面而实施的短期迭代开发 。开发一个寡欲各种用列(use case)的调查文档(也就是说,对用户与系统交互的简短描述),并且开始排除那些可能对整个系统成功造成风险的用列 。只要适合 , 就可以在开发过程中添加或者删除用列 。统一过程的4个阶段定义如下:初始(inception):系统仍然处于决定系统内容的阶段——系统将要完成什么以及系统的边界是什么 。如果系统能够很好的理解,那么这个阶段就非常短 。细化(Elaboration):正在将体系结构的风险移至系统 。一种表述该阶段的说法是,“你是否已经解决了所有难题?”或者“你知道如何完成你将要去完成的事情吗?”构造(Construction)正在完成所有相关的用列来使系统为移交做好准备 , 也就是说,进入Beta版本 。移交(Transition)使系统通过它的最后发布阶段以及Beta版本 。它可能包括软件的操作及维护 。这是一个关注于维护要素的敏捷过程,但是仍然采用了大量用例开发 , 间模等方面的传统实践 。3:极限编程:极限编程的开发过程就是以代码为中心的方法 。让用户告知你一些有关系统是如何如用转的故事描述,基于故事相互之间的重要性来定制这些系统这样就可以为自己的团队提供一个故事集合 , 可以在一个给定的迭代中完成他们,大约两周时间——每周工作40个小时,你将团队划分,双人应付没一个故事,在代码被编写时提供确定数量的内建对等评审 。你和你的同伴在编写自己代码的同时编写单元测试 。在完成自己负责的那段代码后,将其拿到集成的机器上 , 放入代码基线 , 运行从所有人的代码中积累而成的单元测试 。在完成iji负责的那段代码后,将会提供一个运行系统使用户可以评审来确保自己的工作满足他们的需要 。注意极限编程并没有将软件的设计设置成一个高级阶段 。相反它认为那些最前端的设计对于整个系统开发不是很有帮助 , 并且随着实际开发的进行它最终还是被修改 。极限编程对于需要持续提供运行系统的软件卡发来说非常适用 。当缺少用户介入或者项目规模很大时极限编程方法将会不好用,因为这时协调和设计活动实际上变得更重要了 。极限编程合理地考虑开发团体的能力,这样可以有效计划 。

    推荐阅读