2012年4月23日星期一

UML 中文 FAQ / 第一部份 UML 基础

http://www.zhangxun.com/_templates/tmpl_doc.aspx?sname=umlfaq&section=one


Hibernate Spring Struts Eclipse NetBeans
VB.NET C# ASP.NET ADO.NET
> 建模 > UML > 登录 |
在线 10 人 登录 0 人

UML 中文 FAQ / 第一部份 UML 基础

阅读:18057 字数:3410
BasicHistory
1.2 draft 2005-8
1.1 2004-04-26
<添加新主题> <所有评论> 共 1 个主题 2 条评论
(1) 回复-可否推荐一些实用的 UML 学习资料 (张恂 99 字 0 回复 E2007-1-18 10:16:39 LID:2 Hit:180)
(2) [转] 可否推荐一些实用的 UML 学习资料 (张恂 159 字 1 回复 E2007-1-18 10:15:33 LID:1 Hit:139)


UML 有哪些特点?


概括而言,UML 建模语言具备这样一些特点:通用性、可视性、抽象性、实用性、 统一性 、灵活性、可扩展性和 广泛性 等等 ... (像不像软件质量属性?其实 UML 本身也是一种“软件”)

UML 的“通用性”主要是指不仅仅可以用它来描述软件,而且还可以用它来描述一般企业或组织的业务流程以及由软、硬件共同组成、以软件为主的复杂系统(即所谓的软件密集型系统),甚至还包括非软件系统。

UML 的“可视性”是指可以通过 UML 一系列的图形符号,组成多种视图(view)来直观、清晰地表达系统分析设计中方方面面的、许多复杂的概念。 UML 主要是为了方便人们的阅读和使用而设计的,所以它采用了形式化或半形式化的、易于人们理解和交流的形式。

UML 是一种分析设计专用的抽象建模语言,它本身不是编程(programming)语言或实现级别的语言。目前 UML 还不能直接执行,也不是一种严格意义上的程序语言,却可用它来生成可执行的程序框架。

UML 是一种比 C、C++、Java、VB、Delphi 等文本高级语言抽象层次更高的图形语言,通过它我们可以抽象地表示用高级编程语言编写的文本程序的逻辑结构和行为。相比传统的第三代、第四代高级编程语言(3GL、4GL),UML 能够更加高效、准确地反映软件设计的方案和思路,在当代软件工程中,UML 是被真正用来“设计程序/高级程序”(design the programs)的语言。从这个意义上看,不妨可以称之为“甚高级”或第五代程序设计语言(5GL)—— 鄙人之陋见。

UML 基本上不能算作一种全新的发明,而且作为一项产品,它也并非来自学者教授、科研机构理论性研究的最新学术成果,而是直接来自于产业界、工程界的实践总结,它是在软件工业实践归纳基础上进行理论升华的产物,其核心内容反映了 30 多年来全球软件工业的领导者在软件分析、设计和构造领域的最佳实践和成功经验,因而具有很高的实用价值。

实践证明,作为对象技术的核心,面向对象分析设计(OOAD)方法比传统方法能更加准确、全面地描述物理现实世界和由逻辑概念构成的虚拟软件世界。UML 是用来表述 OO 概念的一种语言工具,而很奇妙,它本身作为一件产品同样也是由 世界级软件大师们 用 OO 方法设计出来的,这使得 UML 具有传统建模语言所不具备的极强的语法语义表达能力和非常灵活的可扩展性。

UML 有什么用?


UML 的用途非常广泛,可以概括为“描述、可视化、构造、记载”四种基本功能,在软件开发全生命周期的各阶段任务中,如业务建模、需求分析、系统设计、实现和测试、数据建模、项目管理等,均可根据需要采用。

UML 建模是建立软件开发文档非常有效的一个手段,通过 UML 图形可视化地描述系统需求,记载软件构成,能够显著地提高文档的质量和可读性,减少文档编写的工作量。

UML 实质上是一种系统分析设计专用语言,通过可视化的图形符号结合文字说明或标记可以帮助业务/系统分析员、软件架构师/设计师、程序员等各种建模者有效地描述复杂软件(或业务)的静态结构和动态行为,包括工作流(数据流和控制流)、功能需求、结构元素及关系、架构组成、设计模式、对象协作、事件响应和状态变化等等。

UML 是描述软件设计模式(Design Patterns)最常用和最有效的标准语言。

UML 不能做什么?


UML 不是高度形式化的语言,一般不能用于定理证明。

UML 是基于面向对象(OO)方法的通用建模语言,目前不适合用户图形界面(GUI)设计、超大规模集成电路(VLSI)设计、基于规则的人工智能等专业领域。

UML 是一种离散型建模语言,适合对由软件、固件或数字逻辑构成的离散系统建模,不适合对工程和物理学领域中的连续系统建模。

作为语言(language),UML 本身仅仅是一种表达形式,不是建模方法(method),在实际的软件项目开发中仅仅掌握一套标准的图形符号是远远不够的。用好 UML 首先需要掌握 OOAD 的基本原则和方法,并在一定的软件开发过程(如统一过程 UP/USDP/RUP/AUP、XP 等)的指导下进行有取舍的运用。当然,有时候我们也会说“UML 方法”,这是指“采用 UML 建模的开发方法”或者“UML 的建模方法”。

为什么要学习和掌握 UML ?


我们认为 UML 对于当前大多数希望进一步改进质量的软件开发团队来说是 必不可少或必须 的。为什么这样说呢?因为, C++、Java 等源码并不能直观、方便地反映复杂程序的设计:如内部逻辑结构、各种隐含的依赖关系、运行时的状态改变和特殊行为等等。程序员编写出来的代码仅仅是一种可行的实现方式,很难反映出现象背后的真实本质 —— 软件的设计原理或算法,因此对于大多数稍稍复杂点的项目来说,仅有代码是不够的。

可视化建模历来是一种行之有效的最佳工程实践,并非软件行业所特有。软件的设计方案在用 C++、Java 等编程语言实现之前,通常隐藏在人们的头脑当中,C++、Java 程序是人们思考的结果产物。而解决方案的设计正确与否是决定解决方案本身及软件质量优劣的根本。为了保证一个复杂设计方案的正确性,我们最好在实现它之前,用简洁和恰当的方式把设计表达出来。相较于含混的大脑模型和冗长的程序代码,经验老到的程序员发现对图形化的软件设计模型进行验证往往是一种更为高效和可靠的工作方式。事实上通过程序代码来表达、讨论、评估和选择复杂软件的设计往往是很笨拙的,这一表达方式的空欠唯有通过像 UML 这样的比具体的程序语言/实现语言更高层次的、更抽象的建模语言来填补。

OO 方法是当代主流的软件开发技术。世界先进的软件团队和个人早已摆脱了对如何使用具体的平台 API、个别编程语言特性的纠缠,把更多的精力放在了需求、架构、设计机制和模式等对软件质量有重大影响的核心要素 —— 分析与设计上,因而成功开发出了规模越来越大、复杂度越来越高、质量越来越好的软件产品与系统。 UML 作为工业界 OO 建模语言的事实上标准和主要的表达媒介,在软件的分析、设计、架构和模式表达这些场合能发挥关键的作用。所以,熟练地掌握并运用好 UML 是当今项目主管、系统分析员、架构师/设计师以及高级程序员等软件工程人员所必备的一项基本技能。

<添加新主题> <所有评论> 共 1 个主题 2 条评论
(1) 回复-可否推荐一些实用的 UML 学习资料 (张恂 99 字 0 回复 E2007-1-18 10:16:39 LID:2 Hit:180)
(2) [转] 可否推荐一些实用的 UML 学习资料 (张恂 159 字 1 回复 E2007-1-18 10:15:33 LID:1 Hit:139)

支持 IE 1024 * 768 以上
Skip to content

What makes a 5GL?

Impossible, but ...
Comment From time to time vendors in the application development space have claimed 5GL (5th generation language) capabilities. If you think about this for a moment you will realise that this can't be true. The idea of GLs is that each is an abstraction of the former, so we had machine code (on which I cut my teeth as a developer); assembler; third generation languages such as COBOL, Java, C++ and so forth; and finally 4GLs (now sometimes referred to as ABLs-advanced business languages-as 4GL seems to be out of fashion).
You can't get a further level of abstraction than a 4GL so there can't be such a thing as a 5GL, just as you can't abstract further than meta-meta-metadata (which is what high-end repositories provide).
So, if you can't get beyond a 4GL, what can you do to a 4GL to make it a quantum step forward compared to current 4GLs, even if it isn't actually a 5GL?
One possible answer is that you could build a data federation engine into the development environment. This would allow you to create applications that accessed diverse, heterogeneous data sources. Now, data federation has typically been thought of as being used for EII (enterprise information integration) and the premise has been that it is about queries. But a database look-up is, from a theoretical perspective, just a query, even if it is going to be used for a transactional application, so supporting data federation within a development environment sense. Indeed, it is easy to see how such an approach could be used for building MDM (master data management) applications, for example.
So, is there anybody actually doing this? Well, as you might guess, yes. A small UK company called Abbro Interactive has a tool called Abbro (now in version 3-it has been in use for some seven years), which does exactly this. You can go to the company's website and take a look at the facilities provided but the key to note is that this is a 4GL with extras that, in the case of federation, includes the ability to reverse engineer existing databases to create database views that can then be merged or joined, and caching capabilities so that reading the same data from these sources does not mean repeated database access.
The product is based on its own scripting language which is interpreted dynamically at run-time by the Abbro engine. It has to work this way because it is intended that applications will be event-driven, so event exits may occur at any time. Note that this facilitates the deployment of workflow as well as alerts, notifications and so on. It includes the ability to scan documents and populate forms therefrom, support for bar codes (and, at least in theory, RFID tags) and GPS messages so that you can determine the locations of things.
As I said: a 4GL with extras.
However, you can't buy Abbro as a product: at present all you can do is to have the company build an application for you using Abbro (based on a proof of concept, if required), which should be significantly faster (in terms of delivery) and cost less money than would normally be the case. Once you've got the application you can customise it but the underlying logic will be developed by Abbro Interactive for you. The company does have one package built on Abbro, for export documentation, but its potential uses are much broader than this. The company is considering how it might make use of channel partnerships but however good the product is, we cannot expect to see widespread deployment while Abbro itself remains the only company doing core development work.
Copyright © 2007, IT-Analysis.com

Ads by Google


2.2 程序设计语言的演变简史

http://book.51cto.com 2010-07-06 09:30 王东青 清华大学出版社 我要评论(0)

2.2 程序设计语言的演变简史
最早的程序设计语言是机器语言,出现在20世纪50年代初。机器语言(machine language)也称为机器代码指令(machine code instruction)。直接用二进制的机器代码指令编写的、由处理器执行的程序就是机器语言程序。这是早期的程序设计语言,虽然计算机可以直接执行这种语言编写的程序,而且效率高、速度快,但是这种程序的可读性较差、难以记忆、与计算机处理器硬件紧密相关导致可移植性差。第一个商用计算机UNIVAC就使用了机器语言编程。有人把这种语言称为第一代语言(first generation language,1GL)。
机器语言很快被称为第二代语言(2GL)的汇编语言所代替。汇编语言(assembly language)是指用符号代替数字机器代码指令和其他常量进行编程的程序设计语言。汇编语言通常由计算机硬件制造商定义,使用的符号是有助于程序设计人员记忆的机器代码的缩写。被称为汇编程序的实用工具把汇编语言符号翻译成目标计算机的机器指令代码。这种语言依然是低级程序设计语言,因为一条汇编语言编写的语句只能翻译成一条机器指令代码。
当一条程序语句能够翻译成多条机器指令代码时,这种语言就称为高级程序设计语言。例如FORTRAN、COBOL、BASIC等都是高级程序设计语言。
第三代语言(3GL)是从2GL精炼而来的。2GL侧重于改进语言的逻辑结构,3GL主要是提高了语言的用户友好性。许多常见的语言都是3GL,例如FORTRAN、COBOL、BASIC、C、C++、Visual Basic、Java、C#等,都是典型的3GL。下面,介绍一下这些典型语言的演变过程及其特点。
1953年,IBM的John Backus领导一个开发团队开始开发FORTRAN语言。1957年4月,第一个FORTRAN版本正式发布。这是一个优化的编译器,也是一个高级程序设计语言。FORTRAN是公式翻译系统(formula translating system)的缩写。1966年FORTRAN语言被美国标准协会纳入标准,称为FORTRAN 66。与FORTRAN 66相比,1977年发布的FORTRAN 77语言有了许多重要的改变,特别是开始支持字符数据。1990年发布的Fortran 90语言增加了模块化编程并具备对象编程的特点。在发布的标准规范中,名称中的部分大写字母改成了小写字母。完全具备面向对象编程的版本是2003年发布的Fortran 2003,该版本与C语言具有互操作性。Fortran 2008语言在并行编程方面得到了增强。IBM开发的FORTRAN语言最早主要用于科学计算,后来逐渐应用在天气预报、有限元分析、流体力学、计算物理、计算化学等高性能计算领域。
Grace Hopper于1959年提出了COBOL语言的第一个规范。COBOL是通用商业语言(common business-oriented language)的简称,主要用于商业、金融、行政等行业领域。1968年,COBOL语言被纳入ANSI标准。2002年,COBOL语言被ISO接纳为标准。COBOL-2002包括了许多面向对象语言的特征,例如,支持本地语言、用户定义的函数、指针、在.NET和Java环境中执行等,并且还可以生成和分析XML语言。
1964年,美国达特茅斯学院的两位教授John Kemeny和Thomas Kurtz在教授计算机课程的时候,针对非计算机专业的学生的特点,提出了BASIC(beginner's all-purpose symbolic instruction code,针对初学者的一般用途的符号指令代码)语言。该语言采用了解释计算方式,具有简单易学的特点。在20世纪70、80年代出现了大量的BASIC语言变种,例如微软公司1981年发布的IBM BASICA、Borland公司1985年发布的Turbo BASIC等。微软公司1991年推出的Visual Basic语言,除了具有图形化用户界面、事件驱动编程、集成的开发环境等特点之外,继承了BASIC语言的许多特点。
1972年,AT&T贝尔实验室的Dennis Trichie在开发Unix操作系统的过程中,提出了C程序设计语言。之所以称为C语言,是因为其来自早期的B(BCPL)语言。1978年,Brian Kernighan和Dennis Ritchie出版了《C程序设计语言》一书,该书详细描述了C语言的规范。1983年,C语言成为ANSI C。1990年,ANSI C被纳为ISO标准。1999年,被称为C99的ISO/IEC 9899:1999标准引入了一些新的功能,包括内联函数、long long int数据类型、可变长度的数组、单行注释等。虽然C语言来自于操作系统的实现,但是现在也被广泛应用于开发各种可移植的应用程序,并且对后来的许多语言有重大的影响。例如,C++、Java、C#等语言都受到了C语言的显著影响。
1979年,在贝尔实验室工作的、29岁的Bjarne Stroustrup在写剑桥大学的博士论文时,对C语言进行了研究,并尝试在C语言中增加类以便增强C语言的功能。他的这项研究结果产生了C with Classes语言。1983年,C with Classes语言的名称改为C++语言,其中++表示增量运算符。与C语言相比,C++语言中增加了虚拟函数、函数名和运算符重载、引用、用户控制的内存控制等。1985年,《C++程序设计语言》一书出版。1989年,多继承性、抽象类、静态成员函数、常量成员函数、保护成员等功能被增加到C++语言中。1990年,C++中又增加了模板、异常处理、命名空间等功能。1998年,C++语言被纳入ISO/IEC标准体系中。2003年,新修订后的标准是ISO/IEC 14882:2003。目前,C++是一种非常流行的程序设计语言,在系统软件、应用软件、嵌入式软件、高性能服务器等诸多领域都有广泛的应用。
Visual Basic是微软公司于1991年发布的、基于COM模型的、具有集成开发环境的第三代事件驱动式程序设计语言。在Visual Basic语言中,可以使用拖拉技术创建表单,表单上可以放置控件,控件有属性和事件处理程序。使用Visual Basic语言可以创建可执行程序、ActiveX控件、DLL文件等。1998年,微软发布的Visual Basic 6是该软件的最终版本,其后续版本被命名为Visual Basic .NET语言。2002年发布的Visual Basic .NET是一种基于微软.NET框架的面向对象程序设计语言,该版本的语言与VB6开发的应用程序之间没有兼容性。2007年发布的Visual Basic 2008(也称为VB9)是与Microsoft .NET Framework 3.5对应的,增加了许多新的功能,例如条件运算符、匿名类型、LINQ支持、XML字符支持等。
Java语言是1995年由Sun Microsystems公司发布的,是James Gosling领导的开发小组开发的程序设计语言。最初的名称是Oak,后来命名为Java。Java源程序经过编译生成可以运行在Java虚拟机上的字节码,从而实现Write Once,Run Anywhere的跨平台运行目标。Java语言的主要特点包括:纯粹的面向对象语言、跨平台、编译-解释执行、支持多线程、支持分布式应用等。Java也是一种源代码开放软件。目前,Java语言是一种非常流行的程序设计语言,在许多领域都有广泛的应用。据TIOBE公司统计,Java语言在程序设计语言排行榜中持续多年名列榜首。
C#语言是微软公司于2001年发布的、具有面向对象功能的、运行于.NET Framework之上的程序设计语言。C#语言的主要开发人员是丹麦软件工程师Anders Hejlsberg。C#继承了C和C++强大功能的同时,去掉了一些它们的复杂特性,例如没有宏和模板,不允许多重继承等。C#与Java有许多类似的地方,例如,与Java几乎同样的语法和编译成中间代码再运行的过程。但是,C#又与Java语言有显著的不同,它借鉴了Pascal、Delphi等语言的特点,是.NET程序开发的首选语言工具。2001年,ECMA接受C#语言为其标准,并发布了ECMA-334C#语言标准规范。2003年,C#语言也成为ISO/IEC 23270标准。
第四代语言(4GL)是从3GL演变而来的,具有更高抽象级别程序设计语言或程序设计环境。虽然说3GL是更加自然的、块结构的语言,但是3GL的开发方法依然比较缓慢、容易出错。与3GL相比,4GL是针对特定目的的、面向问题和系统工程的程序设计语言。目前,4GL可以分为一般作用的语言(例如Clipper、Foxpro、PowerBuilder等)、数据库查询语言(例如SQL语言)、报表生成语言(例如Metafont、Oracle Report、NATURAL等语言)、数据操纵和统计分析语言(例如MATLAB、SAS、SPSS、Stata等语言)、Web开发语言(例如ColdFusion)等。
目前,有关第五代语言(5GL)的话题正处于讨论中。一般地认为,5GL关注的是约束条件和逻辑,而不是如何去实现算法。例如,对于一个给定的问题,5GL侧重于写出解决这种问题需要的条件和约束,而不是关注如何编写算法来解决这种问题。5GL主要用于解决人工智能领域中的问题。

没有评论:

发表评论