简述基于构件的软件开发的核心是什么急急急!!!
与传统的软件开发方式相比,基于构件的 软件开发方法 有什么突破呢? 一、体系结构 软件体系结构 代表了系统公共的高层次的抽象,它是系统设计成败的关键。
其设计的核心是能否使用重复的体系模式。
传 统的应用 系统体系结构 从基于主机的集中式框架,到在网络的客户端上通过网络访问服务器的框架,都不能适应目前企业所处的商业环境,原因是: 企业过分地依赖于某个供应商的软件和硬件产品。
这种单一供应商使得企业难以利用计算供应商的免费市场,将计算基础设施的重要决定交给第三方处理,这显然不利于企业在合作伙伴之间共享信息。
不能适应远程访问的分布式、多层次异构系统。
封装的应用系统在出现某种组织需要时,难以用定制来维护系统,从而难以满足多变的需求。
不能实现分析、设计核心功能重用,最多只能实现代码重用。
如今,应用系统已经发展成为在Intranet和Internet上的各种客户端可远程访问的分布式、多层次异构系统。
CBSD为开发这样的应用系统提供了新的 系统体系结构 。
它是标准定义的、分布式、模块化结构,使应用系统可分成几个独立部分开发,可用增量方式开发。
这样的体系结构实现了CBSD的以下几点目标: 能够通过内部开发的、第三方提供的或市场上购买的现有构件,来集成和定制应用软件系统。
鼓励在各种应用系统中重用核心功能,努力实现分析、设计的重用。
系统都应具有灵活方便的升级和系统模块的更新维护能力。
封装最好的实践案例,并使其在商业条件改变的情况下,还能够被采用,并能保留已有资源。
由此看出,CDSD从系统高层次的抽象上解决了复用性与异构互操作性,这正是分布式网络系统所希望解决的难题。
二、开发过程 传统的软件开发过程在重用元素、开发方法上都与CBSD有很大的不同。
虽然面向对象技术促进了软件重用,但是,只实现了类和类继承的重用。
在整个系统和类之间还存在很大的缺口。
为填补这个缺口,人们曾想了许多方法,如 系统体系结构 、框架、设计模式等。
自从构件出现以来,软件的重用才得到了根本改变。
CBSD实现了分析、设计、类等多层次上的重用。
图1显示了它的重用元素分层实现。
在分析抽象层上,重用元素有子系统、类;在设计层上重用元素有 系统体系结构 、子 系统体系结构 、设计模式、框架、容器、构件、类库、模板、抽象类等。
在 软件开发方法 上,CBSD引导软件开发从应用系统开发转变为应用系统集成。
建立一个应用系统需要重用很多已有的构件模块,这些构件模块可能是在不同的时间、由不同的人员开发的,并有各种不同的用途。
在这种情况下,应用系统的开发过程就变成对构件接口、构件上下文以及框架环境一致性的逐渐探索过程。
例如,在J2EE平台上,用EJB框架开发应用系统,主要工作是将应用逻辑,按session Bean、entity Bean设计开发,并利用JTS事务处理的服务实现应用系统。
其主要难点是事务划分、构件的部署与开发环境配置。
概括地说,传统的软件开发过程是串行瀑布式、流水线的过程;而CBSD是并发进化式,不断升级完善的过程。
图2显示了它们的不同。
三、软件方法学 软件方法学是从各种不同角度、不同思路去认识软件的本质。
传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流、面向对象等不断创新的观点反映问题的本质。
整个软件的发展历程使人们越来越认识到应按客观世界规律去解决软件方法学问题。
直到 面向对象方法 的出现,才使软件方法学迈进了一大步。
但是,高层次上的重用、分布式异构互操作的难点还没有解决。
CBSD发展到今天,才在软件方法学上为解决这个难题提供了机会。
它把应用业务和实现分离,即逻辑与数据的分离,提供标准接口和框架,使 软件开发方法 变成构件的组合。
因此,软件方法学是以接口为中心,面向行为的设计。
图3是其开发过程。
归纳起来,CBSD的 软件开发方法 学应包括下面几方面: 对构件有明确的定义。
基于构件的概念需要有构件的描述技术和规范,如UML、JavaBean、EJB、Servlet规范等。
开发应用系统必须按构件裁剪划分组织,包括分配不同的角色。
有支持检验构件特性和生成文档的工具,确保构件规范的实现和质量测试。
总之,传统的软件方法学从草稿自顶向下进行,对重用没有提供更多的辅助。
CBSD的软件方法学要丰富得多,它是即插即用,基于体系结构,以接口为中心,将构件有机组合,它把自顶向下和自底向上方法结合起来进行开发。
四、开发组织机构 传统软件的开发组织一般由分析员、设计员、程序员和测试员组成。
对一个小的应用系统来说,一个熟练的开发人员,可能兼顾以上多个角色。
但对CBSD来说,因为构件开发与应用系统集成往往是分开进行的,因此整个开发过程由六个角色来完成,他们是: 构件开发者 也是构件供货商,这些大多数是中间件构件提供(续致信网上一页内容)者。
应用构件集成者 针对某应用领域将已有构件组合成更大的构件模块或容器, 作为系统部署的基本单元。
应用系统部署者 将系统部署基本单元放入选定的平台环境或基本框架中,完成软件定制的要求。
开发平台服务器...
简述基于构件的软件开发的核心是什么急急急!!!
展开全部 与传统的软件开发方式相比,基于构件的 软件开发方法 有什么突破呢? 一、体系结构 软件体系结构 代表了系统公共的高层次的抽象,它是系统设计成败的关键。
其设计的核心是能否使用重复的体系模式。
传 统的应用 系统体系结构 从基于主机的集中式框架,到在网络的客户端上通过网络访问服务器的框架,都不能适应目前企业所处的商业环境,原因是: 企业过分地依赖于某个供应商的软件和硬件产品。
这种单一供应商使得企业难以利用计算供应商的免费市场,将计算基础设施的重要决定交给第三方处理,这显然不利于企业在合作伙伴之间共享信息。
不能适应远程访问的分布式、多层次异构系统。
封装的应用系统在出现某种组织需要时,难以用定制来维护系统,从而难以满足多变的需求。
不能实现分析、设计核心功能重用,最多只能实现代码重用。
如今,应用系统已经发展成为在Intranet和Internet上的各种客户端可远程访问的分布式、多层次异构系统。
CBSD为开发这样的应用系统提供了新的 系统体系结构 。
它是标准定义的、分布式、模块化结构,使应用系统可分成几个独立部分开发,可用增量方式开发。
这样的体系结构实现了CBSD的以下几点目标: 能够通过内部开发的、第三方提供的或市场上购买的现有构件,来集成和定制应用软件系统。
鼓励在各种应用系统中重用核心功能,努力实现分析、设计的重用。
系统都应具有灵活方便的升级和系统模块的更新维护能力。
封装最好的实践案例,并使其在商业条件改变的情况下,还能够被采用,并能保留已有资源。
由此看出,CDSD从系统高层次的抽象上解决了复用性与异构互操作性,这正是分布式网络系统所希望解决的难题。
二、开发过程 传统的软件开发过程在重用元素、开发方法上都与CBSD有很大的不同。
虽然面向对象技术促进了软件重用,但是,只实现了类和类继承的重用。
在整个系统和类之间还存在很大的缺口。
为填补这个缺口,人们曾想了许多方法,如 系统体系结构 、框架、设计模式等。
自从构件出现以来,软件的重用才得到了根本改变。
CBSD实现了分析、设计、类等多层次上的重用。
图1显示了它的重用元素分层实现。
在分析抽象层上,重用元素有子系统、类;在设计层上重用元素有 系统体系结构 、子 系统体系结构 、设计模式、框架、容器、构件、类库、模板、抽象类等。
在 软件开发方法 上,CBSD引导软件开发从应用系统开发转变为应用系统集成。
建立一个应用系统需要重用很多已有的构件模块,这些构件模块可能是在不同的时间、由不同的人员开发的,并有各种不同的用途。
在这种情况下,应用系统的开发过程就变成对构件接口、构件上下文以及框架环境一致性的逐渐探索过程。
例如,在J2EE平台上,用EJB框架开发应用系统,主要工作是将应用逻辑,按session Bean、entity Bean设计开发,并利用JTS事务处理的服务实现应用系统。
其主要难点是事务划分、构件的部署与开发环境配置。
概括地说,传统的软件开发过程是串行瀑布式、流水线的过程;而CBSD是并发进化式,不断升级完善的过程。
图2显示了它们的不同。
三、软件方法学 软件方法学是从各种不同角度、不同思路去认识软件的本质。
传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流、面向对象等不断创新的观点反映问题的本质。
整个软件的发展历程使人们越来越认识到应按客观世界规律去解决软件方法学问题。
直到 面向对象方法 的出现,才使软件方法学迈进了一大步。
但是,高层次上的重用、分布式异构互操作的难点还没有解决。
CBSD发展到今天,才在软件方法学上为解决这个难题提供了机会。
它把应用业务和实现分离,即逻辑与数据的分离,提供标准接口和框架,使 软件开发方法 变成构件的组合。
因此,软件方法学是以接口为中心,面向行为的设计。
图3是其开发过程。
归纳起来,CBSD的 软件开发方法 学应包括下面几方面: 对构件有明确的定义。
基于构件的概念需要有构件的描述技术和规范,如UML、JavaBean、EJB、Servlet规范等。
开发应用系统必须按构件裁剪划分组织,包括分配不同的角色。
有支持检验构件特性和生成文档的工具,确保构件规范的实现和质量测试。
总之,传统的软件方法学从草稿自顶向下进行,对重用没有提供更多的辅助。
CBSD的软件方法学要丰富得多,它是即插即用,基于体系结构,以接口为中心,将构件有机组合,它把自顶向下和自底向上方法结合起来进行开发。
四、开发组织机构 传统软件的开发组织一般由分析员、设计员、程序员和测试员组成。
对一个小的应用系统来说,一个熟练的开发人员,可能兼顾以上多个角色。
但对CBSD来说,因为构件开发与应用系统集成往往是分开进行的,因此整个开发过程由六个角色来完成,他们是: 构件开发者 也是构件供货商,这些大多数是中间件构件提供(续致信网上一页内容)者。
应用构件集成者 针对某应用领域将已有构件组合成更大的构件模块或容器, 作为系统部署的基本单元。
应用系统部署者 将系统部署基本单元放入选定的平台环境或基本框架中,完成软件定制的要求。
开发平...
软件体系结构描述语言与程序设计语言有什么区别
从软件体系结构研究和应用的现状来看,当前对软件体系结构的描述,在很大程度上来说还停留在非形式化的基础上,很大程度上依赖于软件设计师个人的经验和技巧。
在目前通用的软件开发方法中,其对软件体系结构的描述通常是采用非形式化的图和文本,不能描述系统期望的存在于构件之间的接口,更不能描述不同的组成系统的组合关系的意义。
这种描述方法难以被开发人员理解,难以适于进行形式化分析和模拟,缺乏相应的支持工具帮助设计师完成设计工作,更不能用来分析其一致性和完整性等特性。
因此,形式化的、规范化的体系结构描述对于体系结构的设计和理解都是非常重要的。
然而,要实现体系结构设计、描述等的形式化并不是一蹴而就的,我们必须先经历一个非形式化的过程,在非形式化的发展过程中逐步提取一些形式化的标记和符号,然后将它们标准化,从而完成体系结构设计、描述等的形式化。
本文首先简单地介绍传统的软件体系结构描述方法,然后再比较详细地讨论软件体系结构描述语言。
一、传统软件体系结构描述方法1、图形表达工具对于软件体系结构的描述和表达,一种简洁易懂且使用广泛的方法是采用由矩形框和有向线段组合而成的图形表达工具。
在这种方法中,矩形框代表抽象构件,框内标注的文字为抽象构件的名称,有向线段代表辅助各构件进行通讯、控制或关联的连接件。
例如:图1表示某软件辅助理解和测试工具的部分体系结构描述。
目前,这种图形表达工具在软件设计中占据着主导地位。
尽管由于在术语和表达语义上存在着一些不规范和不精确,而使得以矩形框与线段为基础的传统图形表达方法在不同系统和不同文档之间有着许多不一致甚至矛盾,但该方法仍然以其简洁易用的特点在实际的设计和开发工作中被广泛使用,并为工作人员传递了大量重要的体系结构思想。
为了克服传统图形表达方法中所缺乏的语义特征,有关研究人员试图通过增加含有语义的图元素的方式来开发图文法理论。
2、模块内连接语言软件体系结构的第二种描述和表达方法是采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言MIL(Module Interconnection Language)。
由于程序设计语言和模块内连接语言具有严格的语义基础,因此他们能支持对较大的软件单元进行描述,诸如定义/使用和扇入/扇出等操作。
MIL方式对模块化的程序设计和分段编译等程序设计与开发技术确实发挥了很大的作用。
但是由于这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,因此限制了他们处理和描述比程序设计语言元素更为抽象的高层次软件体系结构元素的能力
软件体系结构的研究范畴有哪些?请举例加以说明!
软件体系结构的形式化方法研究软件体系结构研究如果仅仅停留在非形式化的框图阶段,已经难以适应进一步发展的需要。
为支持基于体系结构的开发,需要有形式化建模符号、体系结构说明的分析与开发工具。
从软件体系结构研究的现状来看,在这一领域近来已经有不少进展,其中比较有代表性的是美国卡耐基梅隆大学(Carnegie Mellon University)的Robert J.A11en于l997年提出的Wright系统。
Wright是-种结构描述语言,该语言基于一种形式化的、抽象的系统模型,为描述和分析软件体系结构和结构化方法提供了一种实用的工具。
Wright主要侧重于描述系统的软件构件和连接的结构、配置和方法。
它使用显式的、独立的连接模型来作为交互的方式,这使得该系统可以用逻辑谓词符号系统,而不依赖特定的系统实例来描述系统的抽象行为。
该系统还可以通过一组静态检查来判断系统结构规格说明的一致性和完整性。
从这些特性的分析来说,Wright系统的确适用于对大型系统的描述和分析。
软件体系结构的建模研究研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。
根据建模的侧重点的不同,可以将软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型。
在这5个模型中,最常用的是结构模型和动态模型。
(1)结构模型这是一个最直观、最普遍的建模方法。
这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。
研究结构模型的核心是体系结构描述语言。
管道/过滤器风格的体系结构(2)框架模型框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。
框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
(3)动态模型动态模型是对结构或框架模型的补充,研究系统的"大颗粒"的行为性质。
例如,描述系统的重新配置或演化。
动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。
这类系统常是激励型的。
(4)过程模型过程模型研究构造系统的步骤和过程。
因而结构是遵循某些过程脚本的结果。
(5)功能模型该模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
它可以看作是一种特殊的框架模型。
这5种模型各有所长,也许将5种模型有机地统一在一起,形成一个完整的模型来刻画软件体系结构更合适。
例如,Kruchten在1995年提出了一个"4+1"的视角模型。
"4+1"模型从5个不同的视角包括逻辑视角、过程视角、物理视角、开发视角和场景视角来描述软件体系结构。
每一个视角只关心系统的一个侧面,5个视角结合在一起才能够反映系统的软件体系结构的全部内容。
"4+1"模型如图1所示。
图1 "4+1"模型发展基于体系结构的软件开发模型软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。
目前,常见的软件开发模型大致可分为三种类型:(1)以软件需求完全确定为前提的瀑布模型。
(2)在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如螺旋模型等。
(3)以形式化开发方法为基础的变换模型。
所有开发方法都是要解决需求与实现之间的差距。
但是,这三种类型的软件开发模型都存在这样或那样的缺陷,不能很好地支持基于软件体系结构的开发过程。
因此,研究人员在发展基于体系结构的软件开发模型方面做了一定的工作。
例如,为了形象地表示体系结构的生命周期,北京邮电大学的周莹新博士建立了一个软件体系结构的生命周期模型,该模型如图2所示。
数据抽象和面向对象风格的体系结构图2 软件体系结构的生命周期模型软件产品线体系结构的研究软件体系结构的开发是大型软件系统开发的关键环节。
体系结构在软件生产线的开发中具有至关重要的作用,在这种开发生产中,基于同一个软件体系结构,可以创建具有不同功能的多个系统。
在软件产品族之间共享体系结构和一组可重用的构件,可以增加软件工程和降低开发和维护成本。
一个产品线代表着一组具有公共的系统需求集的软件系统,它们都是根据基本的用户需求对标准的产品线构架进行定制,将可重用构件与系统独有的部分集成而得到的。
采用软件生产线式模式进行软件生产,将产生巨型编程企业。
但目前生产的软件产品族大部分是处于同一领域的。
目前全栈工程师常用的软件有哪些?
全栈工程师,也叫全端工程师,是指掌握多种技能,并能利用多种技能独立完成产品的人。
全栈工程师熟悉多种开发语言,同时具备前端和后台开发能力,从需求分析,原型设计到产品开发,测试,部署,发布全流程都十分熟悉。
一、全栈工程师由于经常研究各种技术,他不会精确记得所有语言代码的语法和API,他觉得没有Google和百度,几乎没法工作。
他记的只是一个Key,一个如何找寻答案的索引,而不是全部,人脑不是电脑,他不可能记下所有的东西。
二、对全栈工程师而言,各种辅助工具是十分重要的。
全栈工程师更多的工作不是造轮子,而是用各种轮子组合造产品。
下边就向大家推荐几类工具,希望对大家有帮助。
这里边主要推荐以下工具:需求分析工具、原型设计工具、代码检查工具、自动化测试工具、部署工具,最后还会给大家介绍一款大多数全栈工程师最近都在使用的端到端全流程的开发神器。
三、需求分析工具1. XMind,XMind是一种实用的思维导图工具。
思维导图是一种将思维形象化的方法。
它可用来作为管理项目、笔记或知识库,也可以用来头脑风暴,记录思路,整理软件产品功能和需求等等。
2. Visio,visio是一款便于开发和设计人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。
帮助我们创建具有专业外观的图表,以便理解、记录和分析信息、数据、系统和过程。
3. StarUML,StarUML是一套盛开源码的软件,不但免费自由下载,连代码都免费盛开。
StarUML可描摹9款UML图:用例图、类图、序列图、事态图、行动图、通信图、模块图、安排图以及复合构造图等。
四、原型设计工具1. Axure,Axure能帮助需求设计者,迅捷而轻便的创立基于目录组织的原型文档、功能解释、交互界面以及带注释的wireframe网页,并可积极生成用于演示的网页文件和word文档,以供给演示与开发。
2. Omni Graffle,Omni Graffle软件由Omni Group公司出品,可以在OS X平台上轻松绘制漂亮的图表、树状结构图、流程图、页面等,可以用来规划电影或剧本的情节走向、绘制公司组织图、专案进度等等。
该软件界面非常漂亮,模板丰富精致,容易激发灵感,辅助对齐和尺寸调整功能强大。
目前还推出了iPad版本的应用。
五、代码检查工具1. CodeReviewer,CodeReviewer是一款免费的、简单的又易于部署和使用的代码审查工具,由SmartBear开发——也是Collaborator的发明者,业界第一家推出商用代码审查工具的公司。
2. SmartBear,SmartBear是一个有助于团队通过共同的开发、测试和管理工作以便能生产出高质量代码的代码审查工具。
3. Crucible,Crucible是另一款超级受开发人员欢迎的代码审查工具,可以审查代码、讨论修改,通过Crucible灵敏的审阅流程来确定缺陷。
六、自动化测试工具1. QTP,QTP是一种自动测试工具,主要是用于回归测试和测试同一软件的新版本。
QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。
它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。
其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。
2. Selenium,Selenium是一个用于Web应用程序测试的工具。
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite、Google Chrome等。
这个工具的主要功能包括:测试与浏览器的兼容性,测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
测试系统功能,创建回归测试检验软件功能和用户需求。
七、部署工具1. Ansible,ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
2. Salt,Saltstack是一个大型分布式的配置管理系统(安装升级卸载软件,检测环境),也是一个远程命令执行系统。
saltstack的两大功能:远程执行和配置管理。
3. Puppet,puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。
4. 神器推荐:DevCloud,之所以说DevCloud(华为软件开发云)是全栈工程师的开发神器,是因为它可以提供软件开发全流程的工具,随时随地在云端进行项目管理、配置管理、代码检查、编译、构建、测试、部署、发布等。
这些功能让工程师能够把精力集中于产品的设计和研发,而不需要自己维护各类工具。
而且华为在这个产品上开放了多年的研发经验,让工程师的开发过程更标准化,从而进一步提升开发效率和产品质量。
5. 目前华为软件开发云对于5人+500M以内是免费的。
总结:技术快速更新迭代,各种辅助工具也层出不穷,眼花缭乱。
我们不需要面面俱到,在每个流程深入用好一个工具,就可以帮助我们提升我们的开发效率。
希望越来越多的工程师加入全栈工程师的阵营,体会全栈工程师的乐趣。
也希望大家可以多多沟通交流,寻找出更多的好工具。
新系统开发前进行什么分析填空题
需求分析奠定了软件工程和项目管理的基础。
我们在建造软件系统这座大厦的时候,如果需求分析的基础不够坚实和牢固,那么往往会导致软件系统问题百出,甚至被马上丢弃。
在建造软件系统的过程中,如果我们经常习惯地沿用一些不规范的方法,其后果便是产生一条鸿沟──开发者开发的与用户所想得到的软件存在着巨大的“期望差异”。
因此“需求”这个名词的定义不仅仅是从用户角度对系统外部行为的描述,以及从开发人员角度对系统内部特性的描述,其关键的一点是“需求”必须文档化。
需求的类型 软件需求包括三个不同的层次──业务需求、用户需求和功能需求。
除此之外,每个系统还有各种非功能需求。
业务需求(BusinessRequirement)表示组织或客户高层次的目标。
业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。
业务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。
使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档。
用户需求(UserRequirement)描述的是用户的目标,或用户要求系统必须能完成的任务。
用例、场景描述和事件响应表都是表达用户需求的有效途径。
也就是说用户需求描述了用户能使用系统来做些什么。
功能需求(Functional Requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。
功能需求有时也被称作行为需求(behavioral requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。
功能需求描述是开发人员需要实现什么。
非功能需求(Non-functional Requirement) 定义了软件产品为满足用户业务需求而必须具有的除功能需求以外的特性。
包括系统的完整性(联机帮助、 数据管理、用户管理、软件发布管理、在线升级等)、性能、可靠性、可维护性、可扩充性、对技术和业务的适应性等。
需求分析的任务 1 解决的问题 1) 齐全、准确地找出目标系统全部的功能、性能、限制; 2) 找出全部的输入流、输出流; 3) 找出所有的加工; 4) 产生完整的分层的DFD、数据字典、加工的描述; 5) 补充的意见。
2 综合要求 确定对系统的综合要求,系统功能要求,系统性能要求,运行要求,将来可能提出的要求。
3 任务 图1为需求分析任务图,需求分析阶段要完成的具体明确的最终任务就是形成一份经开发方和用户认可或达成共识的软件需求分析文档(需求规格说明书、修改后的项目开发计划、初步的用户手册、确认测试计划、数据要求说明书)。
这个文档能清晰准确地说明系统将要开发什么,能够规定出详细的技术需求,包括所有面向用户、面向机器和其它软件系统的接口。
可以说需求文档在开发过程中一直起指导作用。
为了更好地完成软件开发第一阶段的需求分析任务,提高质量,需求管理是必不可少的。
需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其他工作成果的一致性,并控制需求的变更,主要体现在跟踪和控制需求变更管理。
需求管理是开发工作有效进行的保证,是一种很高层次的系统行为,涉及整个开发过程和产品本身。
需求分析的方法 需求分析方法由对软件问题的信息域和功能域的系统分析过程及其表示方法组成,大多数的需求分析方法是由信息驱动的。
信息域具有三种属性: 信息流、信息内容和信息结构。
常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD),面向数据结构的结构化数据系统开发方法(DSSD),面向对象的分析方法(OOA)等。
选择那种方法要根据哪些资源在什么时间对开发人员有效,不能盲目套用。
这里着重阐述面向数据流的结构化分析方法(SA)。
面向数据流的结构化分析方法 面向数据流的结构化分析方法(Structured Analysis,简称SA),是面向数据流进行需求分析的方法,是需求分析使用最多的方法之一。
SA也是一种建模活动,该方法使用简单易读符号,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
适用于数据处理类型软件的需求分析,这一方法除了简单,容易掌握之外,还能和设计阶段的结构化设计(SD)衔接,从而取得良好的设计结果。
自顶向下逐层分解的分析策略 SA方法的基本手段:“分解”和“抽象”。
这是系统开发技术中控制复杂性的两种手段。
它先将系统“抽象”成一个模型,此模型是有输入和输出并有系统名称的盒子,然后打开这个盒子,对它进行逐层分解,直到能被理解,可以实现为止。
因此分析的策略是自顶向下,逐层加细,由抽象到具体的过程。
如图2。
结构化分析方法使用工具 SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求规格说明书中的主要部分。
描述工具是 1) 数据流图:描述系统由哪几部分组成,各部分之间有什么联系等等。
2) 数据字典:定义了数据流图中每一个图形元素。
3) 描述加工逻辑的结构化语...
结构化程序设计和面向对象程序设计的主要特征各是什么?
“面向过程程序设计”、主要是为拉大型的工程计算或者为拉完成某个任务而求出结果的对界面则要求不高 其优点是运行速度快“面向对象程序设计”主要是对各种事物能形象的描述并且模拟在计算机上运行它兼容以上面向过程的好多功能 优点是界面比较好做 缺点执行速度和容量没有上面的快 结构化程序设计 对于以上二者均适合 这只是说明设计是的思路和方法 按照俺自己的理解:前者是按照人们日常做事的顺序来设计语言,即无论做什么事都是按照顺序来执行的,一个个的功能模块都是联系在一起的。
总之:做事是有一个个的动作完成的。
后者则是把我们客观世界里的事物都封装起来,各个事物之间是相互独立的。
做什么事情都是由一个个的事物共同完成的,而不是顺序执行。
总之:做事是由一个个的事物共同完成的。
构件的软件工程中的构件
构件是面向软件体系架构的可复用软件模块。
构件(component)是可复用的软件组成成份,可被用来构造其他软件。
它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。
1995年,Ian.oraham给出的构件定义如下:构件(Component)是指一个对象(接口规范、或二进制代码),它被用于复用,接口被明确定义[8]。
构件是作为一个逻辑紧密的程序代码包的形式出现的,有着良好的接口。
像Ada的Package、Smalltalk-80和C++的class和数据类型都可属于构件范畴。
但是,操作集合、过程、函数即使可以复用也不能成为一个构件。
开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。
软件构件技术是软件复用的关键因素,也是软件复用技术研究的重点。
(1)有用性(Usefulness):构件必须提供有用的功能;(2)可用性(Usability):构件必须易于理解和使用;(3)质量(Quality):构件及其变形必须能正确工作;(4)适应性(Adaptability):构件应该易于通过参数化等方式在不同语境中进行配置;(5)可移植性(Portability):构件应能在不同的硬件运行平台和软件环境中工作。
日历、工作流构件、订单构件、用户界面控制等等都可以是构件。
构件具有以下几个特点:(1)自描述:构件必须能够识别其属性、存取方法和事件,这些信息可以使开发环境将第三方软件构件无缝地结合起来;(2)可定制:允许提供一个典型的图形方式环境,软件构件的属性只能通过控制面板来设置;(3)可集成:构件必须可以被编程语言直接控制。
构件也可以和脚本语言或者与从代码级访问构件的环境连接,这个特点使得软件构件可以在非可视化开发项目中使用;(4)连接机制:构件必须能产生事件或者具有让程序员从语义上实现相互连接的其他机制。
采用构件软件不需要重新编译,也不需要源代码并且不局限于某一种编程语言。
该过程叫做二进制复用(Binary Reuse),因为它是建立在接口而不是源代码级别的复用之上的。
虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自动的。
因此,可以用过程语言和面向对象语言创建构件。
由于构件技术是由基于面向对象技术而发展起来的,与面向对象的设计中的对象相类似,它们都是针对软件复用,都是被封装的代码,但它们之间仍存在很大差异。
(1)在纯面向对象的设计中,对象(类)、封装和继承三者缺一不可,但对构件可以没有继承性,只要实现封装即可;(2)从构件和对象的生成方式上,对象生成属于实例化的过程,比较单一,而生成构件的方式较多;(3)构件是设计的概念,与具体编程语言无关,不像对象属于编程中的概念,要依赖于具体的编程语言;(4)在对构件操作时不允许直接操作构件中的数据,数据真正被封装了。
而对象的操作通过公共接口部分,这样数据是可能被访问操作的;(5)对象对软件复用是通过继承实现的,构件对软件复用不仅可以通过继承还可以通过组装时的引用来实现。
因此,构件不是对象,只是与对象类似。
从力学角度来说,结构是指可以承受一定力的结构形态,它可以抵抗能引起形状和大小改变的力。
每种事物都有它的架构形态,这种架构形态体现着它的结构。
一个较复杂的结构由许多不同的部分组成,这些组成部分通常成为构件。
转载请注明出处51数据库 » 构件图主要用来完成软件开发的