软件开发过程为什么建模
㈠ 为什么要用UML建模之建模的重要性
从制定一点初步计划到完成一个满足适当功能的狗窝,可能不用别人帮助,在几个小时内就能够实现。只要狗窝够大且不太漏水,狗就可以安居。假如未能达到希望的效果,返工总是可以的,无非是让狗受点委屈。
假如想为家庭建造一所房子,备好木料、钉子和一些基本工具之后,也能开始工作,但这将需要较长的时间,并且家庭对于房子的需求肯定比狗对于狗窝的需求要多。在这种情况下,除非曾经多次建造过房子,否则就需要事先制定出一些具体的计划,再开始动工,才能够成功。至少应该绘制一些表明房子是什么样子的简图。假如想建造一所能满足家庭的需要并符合当地建筑规范的合格房屋,就需要画一些建筑图,以便能想清楚房间的使用目的以及照明、取暖和水管装置的实际细节问题。做出这些计划后,就能对这项工作所需的时间和物料做出合理的估计。尽管自己也可能建造出这样的房屋,但若有其他人协作,并将工程中的许多要害部分转包出去或购买预制的材料,效率就会高得多。只要按计划行事,不超出时间和财务的预算,家庭多半会对这新房感到满足。假如不制定计划,新房就不会完全令人满足。因此,最好在早期就制定计划,并谨慎地处理好所发生的变化。
假如你要建造一座高层办公大厦,若还是先备好木料、钉子和一些基本工具就开始工作,那将是非常愚蠢的。因为你所使用的资金可能是别人的,他们会对建筑物的规模、外形和风格做出要求。同时,他们经常会改变想法,甚至是在工程已经开工之后。由于失败的代价太高了,因此必须要做详尽的计划。负责建筑物设计和施工的是一个庞大的组织机构,你只是其中的一部分。这个组织将需要各种各样的设计图和模型,以供各方相互沟通。只要得到了合适的人员和工具,并对把建筑概念转换为实际建筑的过程进行积极的治理,将会建成这座满足使用要求的大厦。假如想继续从事建筑工作,那么一定要在使用要求和实际的建筑技术之间做好平衡,并且处理好建筑团队成员们的休息问题,既不能把他们置于风险之中,也不能驱使他们过分辛劳地工作以至于精疲力尽。
希奇的是,很多软件开发组织开始想建造一座大厦式的软件,而在动手处理时却似乎他们正在仓促地造一个狗窝。
有时你是幸运的。假如在恰当的时间有足够的合适人员,并且其他一切事情都很如意,你的团队有可能(仅是可能)推出一个令用户眼花缭乱的软件产品。然而,一般的情况下,不可能所有人员都合适(合适的人员经常供不应求),时间并不总是恰当的(昨天总是更好),其他的事情也并不尽如人意(经常由不得自己)。现在对软件开发的要求正在日益增加,而开发团队却还是经常单纯地依靠他们唯一真正知道如何做好的一件事——编写程序代码。英雄式的编程工作成为这一行业的传奇,人们似乎经常认为更努力地工作是面对开发中出现的各种危机的正常反应。然而,这未必能产生正确的程序代码,而且一些项目是非常巨大的,无论怎样延长工作时间,也不足以完成所需的工作。
假如真正想建造一个相当于房子或大厦类的软件系统,问题可不是仅仅编写许多软件。事实上,要害是要编出正确的软件,并考虑如何少写软件。要生产合格的软件就要有一套关于体系结构、过程和工具的规范。即使如此,很多项目开始看起来像狗窝,但随后发展得像大厦,原因很简单,它们是自己成就的牺牲品。假如对体系结构、过程或工具的规范没有作任何考虑,总有一天狗窝会膨胀成大厦,并会由于其自身的重量而倒塌。狗窝的倒塌可能使你的狗恼怒;同理,不成功的大厦则将对大厦的租户造成严重的影响。
不成功的软件项目失败的原因各不相同,而所有成功的项目在很多方面都是相似的。成功的软件组织有很多成功的因素,其中共同的一点就是对建模的采用。
建模是一项经过检验并被广为接受的工程技术。建立房屋和大厦的建筑模型,能帮助用户得到实际建筑物的印象,甚至可以建立数学模型来分析大风或地震对建筑物造成的影响。
建模不只适用于建筑业。假如不首先构造模型(从计算机模型到物理风洞模型,再到与实物大小一样的原型),就装配新型的飞机或汽车,那简直是难以想象的。新型的电气设备(从微处理器到电话交换系统)需要一定程度的建模,以便更好地理解系统并与他人交流思想。在电影业,情节串联板是产品的核心,这也是建模的一种形式。在社会学、经济学和商业治理领域也需要建模,以证实人们?的理论或用最小限度的风险和代价试验新的理论。
模型是对现实的简化。
模型提供了系统的蓝图。模型既可以包括具体的计划,也可以包括从很高的层次考虑系统的总体计划。一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。每个系统都可以从不同的方面用不同的模型来描述,因而每个模型都是一个在语义上闭合的系统抽象。模型可以是结构性的,强调系统的组织。它也可以是行为性的,强调系统的动态方面。
建模是为了能够更好地理解正在开发的系统。
通过建模,要达到4个目的:
(1)模型有助于按照实际情况或按照所需要的样式对系统进行可视化。
(2)模型能够规约系统的结构或行为。
(3)模型给出了指导构造系统的模板。
建模并不只是针对大的系统。甚至像狗窝那样的软件也能从一些建模中受益。然而,可以明确地讲,系统越大、越复杂,建模的重要性就越大,一个很简单的原因是:
因为不能完整地理解一个复杂的系统,所以要对它建模。
人对复杂问题的理解能力是有限的。通过建模,缩小所研究问题的范围,一次只着重研究它的一个方面,这就是Edsger Dijkstra几年前讲的“分而治之”的基本方法,即把一个困难问题划分成一系列能够解决的小问题;解决了这些小问题也就解决了这个难题。此外,通过建模可以增强人的智力。一个适当选择的模型可以使建模人员在较高的抽象层次上工作。
任何情况下都应该建模的说法并没有落到实处。事实上,一些研究指出,大多数软件组织没有做正规的建模,即使做了也很少。按项目的复杂性划分一下建模的使用情况,将会发现:项目越简单,采用正规建模的就越少。
这里强调的是“正规”这个词。实际上,开发者甚至对非常简单的项目也要做一些建模工作,虽然很不正规。开发者可能在一块黑板上或一小片纸上勾画出他的想法,以对部分系统进行可视化表示,或者开发组可能使用CRC卡片描述一个场景或某种机制的设计。使用任何一种这样的模型都没有什么错。假如它能行得通,就可以使用。然而,这些非正规的模型经常是太随意了,它没有提供一种轻易让他人理解的共同语言。建筑业、电机工程业和数学建模都有通用的建模语言,在软件开发中使用一种共同的建模语言进行软件建模也能使开发组织获益匪浅。
每个项目都能从一些建模中受益。即使在一次性的软件开发中——由于可视化编程语言的支持,可以轻而易举地扔掉不适合的软件。建模也能帮助开发组更好地对系统计划进行可视化,并帮助他们正确地进行构造,使开发工作进展得更快。假如根本不建模,项目越复杂,就越有可能失败或者构造出错误的东西。所有实用系统都有一个自然趋势:随着时间的推移变得越来越复杂。虽然今天可能认为不需要建模,但随着系统的演化,终将会对这个决定感到后悔,但那时为时已晚。
㈡ 软件开发过程中为什么要建模
UML建模分为需求建模和设计建模,需求建模的目的是确定系统边界并明确系统需要实现的功能。而设计建模主要目的是用于开发团队中的设计思想交流;以及后续程序设计的依据;后续测试和验收程序的依据。
UML的特点是可视化的图形建模,表达能力强;支持面向对象开发;对各个开发阶段统一设计规范和标准;易学易用。
㈢ 软件开发模型有哪几种各有什么特点
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。软件工程的主要环节包括人员管理、项目管理、需求分析、系统设计、程序设计、测试、维护等,如图所示。软件开发模型是对软件过程的建模,即用一定的流程将各个环节连接起来,并可用规范的方式操作全过程,好比工厂的生产线。
8.混合模型(hybrid model)过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。各种模型的比较每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点。各种模型的优点和缺点:模型优点缺点瀑布模型文档驱动系统可能不满足客户的需求快速原型模型关注满足客户需求可能导致系统设计差、效率低,难于维护增量模型开发早期反馈及时,易于维护需要开放式体系结构,可能会设计差、效率低螺旋模型风险驱动风险分析人员需要有经验且经过充分训练
9.RUP模型(迭代模型)
RUP(Rational Unified Process)模型是Rational公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程。它描述了一系列相关的软件工程流程,它们具有相同的结构,即相同的流程构架。RUP 为在开发组织中分配任务和职责提供了一种规范方法,其目标是确保在可预计的时间安排和预算内开发出满足最终用户需求的高品质的软件。RUP具有两个轴,一个轴是时间轴,这是动态的。另一个轴是工作流轴,这是静态的。在时间轴上,RUP划分了四个阶段:初始阶段、细化阶段、构造阶段和发布阶段。每个阶段都使用了迭代的概念。在工作流轴上,RUP设计了六个核心工作流程和三个核心支撑工作流程,核心工作流轴包括:业务建模工作流、需求工作流、分析设计工作流、实现工作流、测试工作流和发布工作流。核心支撑工作流包括:环境工作流、项目管理工作流和配置与变更管理工作流。RUP 汇集现代软件开发中多方面的最佳经验,并为适应各种项目及组织的需要提供了灵活的形式。作为一个商业模型,它具有非常详细的过程指导和模板。但是同样由于该模型比较复杂,因此在模型的掌握上需要花费比较大的成本。尤其对项目管理者提出了比较高的要求。它具有如下特点:(1)增量迭代,每次迭代都遵循瀑布模型能够在前期控制好和解决风险;(2)模型的复杂化,需要项目管理者具有较强的管理能力。
10.IPD模型
IPD(Integrated Proct Development)流程是由IBM提出来的一套集成产品开发流程,非常适合于复杂的大型开发项目,尤其涉及到软硬件结合的项目。
IPD从整个产品角度出发,流程综合考虑了从系统工程、研发(硬件、软件、结构工业设计、测试、资料开发等)、制造、财务到市场、采购、技术支援等所有流程。是一个端到端的流程。在IPD流程中总共划分了六个阶段(概念阶段、计划阶段、开发阶段、验证阶段、发布阶段和生命周期阶段),四个个决策评审点(概念阶段决策评审点、计划阶段决策评审点、可获得性决策评审点和生命周期终止决策评审点)以及六个技术评审点。
IPD流程是一个阶段性模型,具有瀑布模型的影子。该模型通过使用全面而又复杂的流程来把一个庞大而又复杂的系统进行分解并降低风险。一定程度上,该模型是通过流程成本来提高整个产品的质量并获得市场的占有。由于该流程没有定义如何进行流程回退的机制,因此对于需求经常变动的项目该流程就显得不大适合了。并且对于一些小的项目,也不是非常适合使用该流程。
㈣ 软件开发过程中为什么需要可视化,多视点的建模语言
UML建模分为需求建模和设计建模,需求建模的目的是确定系统边界并明确系统需要实现的功能。而设计建模主要目的是用于开发团队中的设计思想交流;以及后续程序设计的依据;后续测试和验收程序的依据。
UML的特点是可视化的图形建模,表达能力强;支持面向对象开发;对各个开发阶段统一设计规范和标准;易学易用。
㈤ 软件开发中有哪几种过程模型
软件开发过程
免费下载
链接:https://pan..com/s/1rgR0neDfmCzLvLV1mMNwzA
软件开发过程(英语:software development process),或软件过程(英语:software process),是软件开发的开发生命周期(software
development life
cycle),其各个阶段实现了软件的需求定义与分析、设计、实现、测试、交付和维护。软件过程是在开发与构建系统时应遵循的步骤,是软件开发的路线图。
㈥ 为什么要使用软件开发模型
软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。
(6)软件开发过程为什么建模扩展阅读
软件开发模型基本目标
1、开发尽可能多的软件产品,满足社会对软件全方位、不同应用领域的应用需求,是软件工程的首要目标。
2、提高软件的生产效率。由于软件产品的特殊性使得如何提高软件产品的生产效率成了迫切需要解决的难题。为此,人们从各个方面研究、探讨软件产品生产的内在规律,包括生产过程的管理、组织形式、开发工具、程序设计方法等,试图找出比较满意的求解方案。
3、满足应用的功能需要。这里包括几层意思:产品功能强、性能好、按期交付使用、易于用户操作和维护。
4、降低软件开发成本,包括降低软件设计成本和软件维护成本,而软件维护成本比开发成本要大得多。因此,提高软件可维护性是降低软件开发成本的有效途径。
㈦ 在面向对象软件的开发和设计中,为什么要使用UML建模
uml是面向对象的分析设计方法,dfd是面向数据流的设计方法。当然uml功能强,表述容易清晰,对将来采用面向对象的实现会省很多力气。
uml是面向对象分析方法的表达工具,涉及的图包括用例图,活动图,类图,时序图,协作图,状态图等等;可以涵盖从需求分析到设计,编码整个开发过程用到的模型。
dfd是面向过程分析方法的表达工具,功能大概等价于用例图,活动图,加上e-r模型,可以涵盖面向过程分析(业务建模,概念建模)中所用到的模型。
㈧ 常见的软件开发模型是什么
演化模型、螺旋模型、喷泉模型、智能模型等。
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。
最早出现的软件开发模型是1970年W·Royce提出的瀑布模型。该模型给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品,投入使用。
但计算拓广到统计分析、商业事务等领域时,大多数程序采用高级语言(如FORTRAN、COBOL等)编写。瀑布模式模型也存在着缺乏灵活性、无法通过并发活动澄清本来不够确切的需求等缺点。