高分!软件体系结构、软件结构、architecture三者如何理解?哪个高人能说清楚?

xxn_xxn 2001-08-16 04:53:51
...全文
425 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilddragon 2001-09-25
  • 打赏
  • 举报
回复
gz
ddk3000 2001-09-24
  • 打赏
  • 举报
回复
用的着区分那么清楚吗?
xxn_xxn 2001-08-20
  • 打赏
  • 举报
回复
该给谁分呢?
结构也好,架构也好,我们需要的是一个统一的定义。

一些定义:
² Dewayne Perry和Alexander Wolf于1992年正式提出软件体系结构的概念:软件体系结构是具有一定形式的结构化元素。结构化元素包括:进程元素、数据元素和连接元素。
² Mary Shaw和David Garlan于1993年提出:软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。设计和说明总体系统结构作为一个新问题正式提出来了
² Dewayne Perry和David Galan于1995年IEEE软件工程学报上定义:软件体系结构是一个程序/系统各部件的结构、它们之间的相互关系、进行设计的原则和随时间演进的指导方针。
² 南加州大学软件工程中心的Barry Boehm指出:一个软件体系结构包括:
(1)一个软件和系统部件、互联及约束的集合;
(2)一个系统需求说明的集合;
(3)一个基本原理用以说明这一部件、互联和约束能够满足系统的需求。
² 1997年,Bass,Clements和Kazman在《使用软件体系结构》一书中的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件部件、软件部件的外部可见特性及其相互关系。“外部可见特性”是指软件部件提供的服务、性能、特性、错误处理、共享资源使用等。这一定义强调软件体系结构必须从系统中抽象出某些信息。
对软件体系结构定义的总结分析:
ü 软件体系结构定义了软件部件(Component),包括部件间交互的定义,特别强调省略和部件相互关系无关的内容信息(content information)。
ü 软件体系结构并不说明什么是部件、什么是部件的相互关系。
ü 每一个软件系统都有自身的体系结构,即由软件部件及其相互关系组成。
ü 软件体系结构中每一部件的行为是体系结构的一部分,反映部件间如何进行交互。
ü 软件体系结构的基本元素是部件,部件的描述信息包括:
1) 计算功能:部件所实现的整体功能;
2) 额外功能特性:描述部件的执行效率、处理能力、环境假设和整体特性;
3) 结构特性:描述部件如何与其他部件集成在一起,以构成系统信息;
4) 家族特性:描述了相同或相关部件之间的关系。
bland 2001-08-18
  • 打赏
  • 举报
回复
呵呵,俺也赞成J2EE和.NET只是一个框架

TO jbtan(华南虎):
盼望你如果有时间也能到华工的白云黄鹤上的软件工程版发些文章!
武汉现在有一群对软件工程感兴趣的经常聚会,由于条件有限(房子空间有限),没敢大量增加人员,并且现在主要是内部讨论为主,因为都比较忙,也很少发文章---写文章很费时间 :)
//其实不仅仅是房子小的原因,而且人多难组织,讨论往往少且不充分

现在白云黄鹤上的软件工程版上发的文章是太浅,现在有我们一个打算是在下学期,在BBS上逐渐讨论些比较深入的东西
//我在白云黄鹤上的ID是qwwe(bland(异想天开));

jbtan 2001-08-18
  • 打赏
  • 举报
回复
和qingrun商讨:
就这个问题,我不止在这里讨论过。我不想争论,我也不喜欢教条主义。不过以下是更多的资料:
http://cseng.aw.com/book/toc/0,3830,0201699672,00.html
http://www.ericleach.com/sa2001/sa2book.html
http://www.bredemeyer.com/
http://www.wwisa.org/
你可以看到什么是software architecture.
青润 2001-08-18
  • 打赏
  • 举报
回复
不能同意jbtan()兄的描述。
j2EE中的EJB是应用程序模型,这样才比较确切。
.net中的com/com+/Dcom才是应用程序模型。
jbtan 2001-08-18
  • 打赏
  • 举报
回复
J2EE和.NET只是不同的应用程序模型(application model),他们都提供一种基于组件(component)模式(方法)来设计,开发,封装和部署企业级应用程序。并且,J2EE和.NET也就有自己一套体系结构, 但不能说J2EE就是software architecture。

在软件工程(SE)中, 一般把(软件体系结构)software architecture和(体系结构)architecture等同,现在也没有一个公认的定义。具体可以参考:http://www.sei.cmu.edu/architecture/definitions.html
但是,如果加以限定,architecture可以用在不同层次,如:系统级(software architecture), 应用级(J2EE architecture)等。

再者,J2EE和.NET只是一个框架,代表一种方法。考虑如下情景:
一个软件系统BigBoot,有两个主要应用,一个面向个人用户,准备采用.NET architecture, 另一个面向商业用户,已经采用了J2EE, 数据库是分布式的,采用IBM MQSeries 作为MOM, 可以说,BigBoot具有一定的software architecture。
bland 2001-08-17
  • 打赏
  • 举报
回复
举个例:
微软的 VC与borland 的C++ BUILDER 系统可以说整体上设计思想,设计思路是一个体系的。
borland公司可以说支持的比微软更多更强,例如:CORBA
在具体的软件结构:例如类,数据结构上一方面利用或兼容WINDOWS API,一方面还要有自己的特色
软件架构:我们使用的VC中的ClassWizard自动生成的一堆软件,也就是某种框架,某种架构
xxn_xxn 2001-08-17
  • 打赏
  • 举报
回复
有点道理。我这里有关于architecture的一些说法:(一)
最近刚刚看到一个对architecture的定义,我认为还比较好理解:“The description of a system and its parts. This description includes a specification of the elements that compose the system, the interactions of the elements, patterns that guide the composition of the elements, and the constraints on these patterns.”

这与你对软件结构的描述是基本一致的:"软件结构可以对应为《国标》的“结构”,即指各层模块、子程序、公用程序等系统元素的划分,并包括简要说明每个系统元素的标识符和功能,分层次地给出个元素之间的控制和被控制关系。”。我认为这个概念是从结构化的角度来描述软件结构的。如果是从面向对象的角度描述一个结构良好的"architecture",它应该包括:
1)A set of classes,typically orgnized into mutiple hierachies
2)A set of collaborations that specify how those classes cooperate to provide various system functions
以及A range of patterns, from idioms to mechanisms to frameworks.

(二)
另外,我做过的一个项目,按照RUP的观点采用UML描述"architecture":
1)RUP对architecure的定义
The highest level concept of a system in its environment [IEEE]. The architecture of a software system (at a given point in time) is its organization or structure of significant components interacting through interfaces, those components being composed of successively smaller components and interfaces.
The organizational structure of a system. An architecture can be recursively decomposed into parts that interact through interfaces, relationships that connect parts, and constraints for assembling parts. Parts that interact through interfaces include classes, components and subsystems.

2)RUP是采用"The 4+1 View Model of Architecture",包括logical view,implementation view,process view,deployment view以及use case view来描述整个软件的architecture的。对比你对软件体系结构的理解“软件体系结构(模版中的注释——用图来表示软件系统的总体结构框架,并对其进行描述)即为系统的总体结构框架。这里所说的系统而非软件,是指包括系统的运行环境(硬件环境和支持环境)在内的整个大的系统。” 这种对"architecture"的描述似乎涵盖了“软件体系结构”的内容。

bland 2001-08-17
  • 打赏
  • 举报
回复
to qingrun(青润) :
呵呵,俺也是,所以说话常常出篓子。。。 :)
青润 2001-08-17
  • 打赏
  • 举报
回复
声明一点:本人所做的描述全部都是个人的理解,没有参照任何资料。
所以,难免会由一些用词不太确切的地方,这点还望见谅!
本人一项反感背书,除非我仍然不能理解的概念,我才会去特意地看书去实践。
bland 2001-08-17
  • 打赏
  • 举报
回复
呵呵,说话太不严谨了,应该是
软件架构:我们使用的VC中的ClassWizard自动生成的一堆程序,也就是基于某种框架,某种架构
的:例如:VIEW/DOC
不是基于相同软件体系结构的如:UNIX下的编程与WINDOWS下编程,那就不是基于一个体系结构的编程
青润 2001-08-16
  • 打赏
  • 举报
回复
这是高分么?^&^——我怎么没看出来?
软件体系结构:一个最高层次的软件结构的描述,可以将所有的软件架构归纳在这几种体系结构之中,目前世界上最热的两大体系结构就是:J2EE和M$.net。另外,还有Corba,不过,从Corba3的草案中可以看出,他和J2EE有融合的趋势。
软件结构:这三者中最低的层次,指一个具体的软件中各个组件(较小的功能、模块)和功能的分布及相互关系。
软件架构:这三者中的中间层次,指一个工程或者软件中比较大的框架性模块的划分和依据来源。

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧