Home About us Products Services Contact us Bookmark
:: wikimiki.org ::
API

API

编程接口,简称API(Application Programming Interface),就是软件系统不同组成部分衔接的约定。 随着软件规模的日益庞大,我们需要把复杂系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

API在各语言中的表达方式

Visual Basic

[Public|Private] Declare Function|Sub name Lib "libname" [Alias "aliasname"](Byval] variable [As type][,[Byval] variable [As type...]) [As type] dffgffgghgbhg

C Sharp

[DllImport("libname", 'Named Parameters')] [public|private|internal] [Type] FunctionName(Type parameter1,Type parameter2...);

参看


- 软件工程 ---- Category:程序设计 Category:计算机语言 ja:Application Programming Interface ko:API

软件

軟--件(中国大陆香港用语,台湾作软体)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件应用软件和介于这两者之间的中间件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。 软件并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。 软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。

系统软件

系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。 一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。

应用软件

应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。 较常见的有 #文字处理软件 如WPS、Word等 #信息管理软件 #辅助设计软件 如AutoCAD #实时控制软件 #教育与娱乐软件

按操作系统分类


- BeOS
- DOS
- Linux
- Mac OS
- Unix
- Windows

软件开发

软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉,需求分析设计,实现和测试系统工程。 软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。

软件许可

不同的软件一般都有对应的软件许可,软件的使用者必须在同意所使用软件的许可证的情况下采能够合法的使用软件。从另一方面来讲,某种特定软件的许可条款也不能够与法律相抵触。 未经软件版权所有者许可的软件拷贝将会引发法律问题,一般来讲,购买和使用这些盗版软件也是违法的。

相关内容


- 计算
- 计算机
- 计算机科学
- 计算机程序设计
- 程序设计语言
- 软件工程
- 算法
- 数据结构
- 软件开发过程
- 软件开发工具
- 软件优化
- 数字图像处理
- 计算机图形学
- 办公自动化
- 计算机网络
- 数据库
- 电子表格
- 开放源代码
- 自由软件
- 密码学
- Wiki
- 網誌
- 操作系统
- 软件许可证
- 推荐软件

参见


- 计算机软件列表 ja:ソフトウェア ko:컴퓨터 소프트웨어 nb:Dataprogram simple:Software th:ซอฟต์แวร์

Visual Basic

Visual Basic(VB)是一种由微软公司开发的包含协助开发环境事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面GUI)和快速应用程序开发RAD)系统,可以轻易的使用DAORDOADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序

发展历史

1991年微软公司推出了Visual Basic 1.0版。这在当时引起了很大的轰动。许多专家把VB的出现当做是软件开发史上的一个具有划时代意义的事件。其实,以我们现在的目光来看,VB1.0的功能实在是太弱了。但在当时,它是第一个“可视”的编程软件。这使得程序员欣喜之极,都尝试在VB的平台上进行软件创作。微软也不失时机地在四年内接连推出VB2.0,VB3.0,4.0三个版本。并且从VB3开始,微软将ACCESS的数据库驱动集成到了VB中,这使得VB的数据库编程能力大大提高。从VB4开始,VB也引入了面向对象的程序设计思想。VB功能强大,学习简单。而且,VB还引入了“控件”的概念,使得大量已经编好的VB程序可以被我们直接拿来使用。 2002年Visual Basic .NET 2002 (v7.0)問世,2003年Visual Basic .NET 2003 (v7.1)問世,2005年11月7日Visual Basic 2005 (v8.0)問世,同時間推出Visual Basic 2005的免費簡化版本Visual Basic 2005 Express Edition給Visual Basic初學者及學生使用。 Visual Basic 2005 Express Edition雖然是免費的版本,但是微軟公司要求使用這個版本的人必須要到微軟公司網頁註冊取得產品註冊碼後方能使用,否則Visual Basic 2005 Express Edition將僅能運行30天。 通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用Visual Basic快速创建Windows程序,现在还可以编写企业水平的客户/服务器程序及强大的数据库应用程序

由VB派生的语言

微软开发了一系列有关VB的脚本语言:
- Visual Basic for Application,即VBA,包含在微软的应用程序中(比如Office),以及类似WordPerfect Office这样第三方的产品里面。VBA这样嵌入在各种应用程序中看起来有些矛盾,但是它的功能和VB一样强大。
- VBscript是默认的ASP语言,还可以用在Windows脚本编写和网页编码中。尽管它的语法类似于VB,但是它却是一种完全不同的语言。VBS不使用VB运行库运行,而是由Windows脚本主机解释执行。这两种语言之中的不同点影响ASP网站的表现。 当微软准备开发一种新的编程工具的时候,第一决定就是利用最抢手的VB6来进行旧改,或者就是重新组建工程开发新工具。微软后来开发了VB的继任者Visual Basic .NET,同时也是.NET平台的一部分。VB.net编程语言是一种真正的面向对象编程语言,和VB并不完全兼容。

语言特性

面向对象 VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组建的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面VB程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。 窗体控件的增加和改变可以用拖放技术实现。一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮]]。每个控件都有自己的属性事件。默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序。举个例子来说:窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗口大小,控件也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。 VB的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。有很少功能的对话框窗口(比如没有最大化最小化按钮的窗体)可以用来提供弹出功能。 VB的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。 VB使用参数计算的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组建的出现,程序员可以选用自己需要的扩展库。和有些语言不一样,VB对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。 VB使得大量的外界控件有了自己的生存空间。大量的第三方控件针对VB提供。VB也提供了建立、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。

术语

在讨论Visual Basic时,经常可以听到以下这些术语,因此对这些术语的基本理解十分有帮助。

控件

简单的说,控件就是构成或者说建造Visual Basic应用程序的图形化工具,包括窗体、按钮、复选框、列表框、数据控件、表格控件和图片控件等等...。

事件

由用户或操作系统引发的动作。事件的示例有击键、单击鼠标(Click)、雙击鼠标(DblClick)、一段时间的限制,或从端口接收数据。

方法

嵌入在对象定义中的程序代码,它定义对象怎样处理信息并响应某事件。例如,数据库对象有打开纪录集并从一个记录移动到另一个记录的方法程序的基本元素,它含有定义其特征的属性,定义其任务和识别它可以响应的事件的方法。控件和窗体是Visual Basic中所有对象的示例。

对象

一个控件、窗体等都可被看作一个对象。

过程

为完成某些特定的任务而编写的代码段,过程通常用于响应特定的事件,也可以当作应用程序的用户自定义函数来使用。

属性

属性是组成用户界面的各对象的性质的具体描述。例如上述“对象”中所提到的尺寸、位置、颜色、宽度、高度等等都称为控件的 属性。属性决定对象的外观,有时也决定对象的行为。对象的属性绝大部分是VB中已经事先定义好的,但也有的属性是需要在应用 过程中才去定义的。属性即可为对象提供数据,也能从对象取回信息。

关于VB的争议

反对者

VB是一种充满了争议的语言:很多程序员对VB程序的质量有强烈的感受。很多人认为VB不配他们使用,认为它是一种给儿童和菜鸟程序员的语言。它自从设计开始就是一种简单的语言。一些C++Java中的特性在VB中并没有出现。在感受开发的方便和快速的同时,一些类似于编译时进行类型和声明检查的功能在默认情况下是关闭的。这样一些程序员一边感叹VB的易用性,一般沮丧地地看着一些类似于“未定义类型”错误的发生。 一些批评家认为VB的简单特性使得其在未来具有伤害性。很多人自学了VB,但是并没有学到好的编程习惯。当VB进入课堂的时候,学生们不会学到很多基础的程序技术和结构,因为很多技术已经包含在那些对用户可见的组件里面了。不用学习标准的编程习惯,因为VB具有可视化的特性,所以导致了一些莫名其妙的代码的产生。而且很多错误和警告的检查默认情况下都是关闭的,程序员很难找到隐藏的错误。有经验的程序员在用VB编程的时候都会把这些选项打开。 很多批评家批评微软简单地拷贝了BASIC的思想到VB中。著名的计算机科学家Edsger Dijkstra说过一句名言:“如果一个学生最早学过BASIC,那么几乎不可能让他学会优秀的编程:因为这些人已经放弃了涅磐的希望。[http://www.cs.virginia.edu/~evans/cs655/readings/ewd498.html 1]”(Dijkstra对待FortranPL/1COBOLAPL同样也毫不留情。)另外一个笑话是:“真正的程序员不用BASIC。12岁以下的孩子才用。”
- 并不是非常简便,它开发的程序只能运行在Microsoft Windows中。
- 个头太大了。Visual Studio要用好几张盘才能装下。VB程序在运行时候还需要一个1.4M大小的运行库
- IDE中有错误。
- VB不能很好的综合Windows的基础API,很多时候要使用低级运算的“小伎俩”来进行编程。而C语言的低级内存运算比VB的要简单得多。

支持者

但是很多VB的支持者解释说VB的易用性就是它最大的优势,可以让经验丰富的VB程序员或是刚刚懂得皮毛的人都能用自己的方式快速开发程序。而且VB的程序可以非常简单的和数据库连接。比如利用控件可以绑定数据库,这样一来用VB写出的程序就可以掌握数据库的所有信息而不用写一行代码。 很多语言的特性比如GoSub、On Error和用变量名字的最后一个字符判断声明类型(比如字符串型str$)都是从VB中来的。VB的语法和绝大部分语言都不同,可能会让新的程序员混淆。比如声明“Dim a,b,c As Integer”声明了c为整形变量,但是a、b都是Variant类型的。还有一些特性,比如下划线字符“_”用于一行代码分多行写时候。一些程序员在使用的时候由于不规范使得便引起报错。

总结

VB会吸引更多的赞誉和批评,也会继续为广大的用户和程序员使用。它非常适合用来开发拥有友好界面的程序(比如针对终端的数据),但是不适合开发其它程序(比如联合计算程序)。

VB不拥有的特性


- 继承。VB5和VB6都是面向对象的编程语言,但是不包含继承特性。VB中提供了特殊的类的功能,但是还是不能满足程序员的需求。VB.net 包含了所有面向对象的特性。
- 多线程支持
- 异常处理。VB.net中使用了Try-Catch-Finally来处理异常。而VB中只有"On Error Goto line"语句。
- 对指针的支持非常有限。
- VB只能支持8到32位的整形,很多语言都有无限制的支持。
- VB不允许在任何数组内存在不变的变量。 VB不支持以上特性,程序员需要自己建构方法来实现相似的功能。

VB革命

整形 VB1.0于1991年发布。这个连接编程语言和用户界面的进步被称为Tripod(有些时候叫做Ruby),最初的设计是由阿兰·库珀(Alan Cooper)完成的

时间线


- 1991年4月,Visual Basic 1.0 Windows版本发布
- 1992年9月,VB1.0 DOS版本发布。
- 1992年11月,VB2.0发布。它对于上一个版本的界面和速度都有所改善。
- 1993年夏天,VB3.0发布,分为标准版和专业版。其中包含一个数据引擎,可以直接读取Access数据库。
- 1995年8月,VB4.0发布了32位版本和16位的版本。其中包含了对的支持。
- 1997年2月,VB5.0发布。程序员可以用32位的版本导入由4.0版本创建的16位程序,并且能顺利编译。同时还包含了对用户自建控件的支持。
- 1998年夏天,VB6.0发布。
- 2001年VB.net.NET Framework发布。由于其使用了新的核心和特性,所以很多VB的程序员都要改写程序。
- 2003年,VB.net 2003和.NET Framework 1.1发布。
- 2004年,微软开放了Visual Studio.NET 2005的测试版本(代号Whidbey)。包含了.NET Framework2.0的测试版本。
- 2005年,微软宣布将不会再对非.NET版本的VB进行支持。VB社群立即作出反应表示关心这个消息,一些老用户还递交了希望能够继续对VB进行技术支持的请愿书。微软目前还不愿意改变他们的决定。
- Visual Studio.net 2005会在2005年11月7日发布。

外部链接


- [http://members.shaw.ca/mattleung/How%20to%20Create%20a%20Simple%20Game%20Using%20Microsoft%20Visual%20Basic.pdf 怎样利用VB.net开发简单的游戏] - PDF版本
- [http://msdn.microsoft.com/vbasic/previous/vb6/ MSDN上的VB6支持]
- [http://www.vbtutor.net/ VB的教程]
- [http://www.microsoft.com/products/info/product.aspx?view=2&pcid=aa13dcca-11d3-4355-a99d-2b86b92caec0 微软对VB的简介]
- [http://www.vb365.com/v7/Article/Catalog5/922.html BASIC万花筒——你所熟悉和陌生的BASIC]
- [http://www.vbgood.com VBGood(VB爱好者乐园)] ja:Microsoft Visual Basic ko:비주얼 베이직 ms:Visual Basic simple:Visual Basic th:วิชวลเบสิก

C Sharp

-- C#(发音为C Sharp)是由微软公司所开发的一种面向对象的、运行于.NET Framework之上的高级程序设计语言

语言特性

相对于CC++,这个语言在许多方面进行了限制和增强:
- 指针只能被用于不安全模式。大多数对象访问通过安全的引用实现,以避免无效的调用,并且有许多算法用于验证溢出,指针只能用于调用值类型,以及受垃圾回收器控制的托管对象。
- 对象不能被显式释放,代替为当不存在被引用时通过垃圾回收器回收。
- 只允许单重继承,但是一个类可以实现多个接口
- C#比C++更加类型安全。默认的安全转换是隐式转换,例如加宽整型和从派生类转换为基类。而布尔型同整型,及枚举型同整型不允许隐式转换,非空指针(通过引用相似对象)同用户定义类型的隐式转换必段被显式的确定,不同于C++的复制构造函数。
- 数组声明语法不同("int[] a = new int[5]" 而不是 "int a[5]")。
- 枚举位于其所在的名字空间中。
- C#中没有模版,但是在C# 2.0中引入了泛型,并且支持一些C++模版不支持的特性。比如泛型参数中的类型约束。另一方面,表达式不能像C++模版中被用于类型参数。
- 属性支持,使用类似访问成员的方式调用。
- 完整的反射支持。

C# 2.0 新特性

在C# 2.0中的新特性有:
- 局部类型(将类实现分在多个文件中)。
- 泛型或参数化类型。
- 一种新形式的迭代器,类似于Python使用函数式编程风格的yield关键字
- 匿名方法提供了closure功能

程序的执行

C#并不被编译成为能够直接在计算机上执行的二进制本地代码。与Java类似,它被编译成为中间代码,然后通过.NET Framework虚拟机——被称之为CLR通用语言运行时,Common Language Runtime)——执行。 所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。但是实际上,如果计算机上没有安装.Net Framework,那么这些程序将不能够被执行。 在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。

标准化

微软公司已经向ECMA申请将C#作为一种标准。在2001年12月,ECMA发布了ECMA-334 C#语言规范。C#在2003年成为一个ISO标准(ISO/IEC 23270)。现在有一些独立的实现正在进行,包括:
- 自由软件基金会的[http://www.dotgnu.org/ dotGNU Portable.NET]
- [http://www.go-mono.org/ Mono]

C#的Hello World程序

下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
class HelloWorld

参见


- 计算机科学课程列表

外部链接


- [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/CSharpSpecStart.asp?frame=true C# Language Specification (MSDN) (英文)]
- [http://www.ecma-international.org/publications/files/ecma-st/ECMA-334.pdf ECMA-334 C# Language Specification (.pdf) (英文)]
- [http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768&ICS1=35&ICS2=60&ICS3= ISO/IEC 23270:2003 C# Language Specification (英文)]
- [http://www.microsoft.com/china/MSDN/library/langtool/VCSharp/USgetstart_vcsharp.mspx Visual C# .NET 入门 (MSDN)]
- [http://www.mono-project.com/about/index.html MCS: Mono C# 编译器]
- [http://www.southern-storm.com.au/portable_net.html Portable.NET]
- [http://www.dotgnu.org/ DotGNU 计划 - 自由的 .NET 兼容平台]
- [http://www.icsharpcode.net SharpDevelop: 开源的 C# IDE] ja:C Sharp ko:C 샤프 th:ภาษาซีชาร์ป

软件工程

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言数据库软件开发工具系统平台,标准,设计模式等方面。 在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件嵌入式系统人机界面办公套件操作系统编译器数据库游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业农业银行航空政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。 软件工程师是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为系统分析员软件设计师系统架构师程序员测试员等等。人们也常常用程序员来泛指各种软件工程师。

软件工程与计算机程序设计

软件工程存在于各种应用中,存在于软件开发的各个方面。而程序设计通常包含了程序设计和编码的反复迭代的过程,它是软件开发的一个阶段。 软件工程力图对软件项目的各个方面作出指导,从软件的可行性分析直到软件完成以后的维护工作。软件工程认为软件开发与各种市场活动密切相关。比如软件的销售,用户培训,与之相关的软件和硬件安装等。软件工程的方法学认为一个独立的程序员不应当脱离团队而进行开发,同时程序的编写不能够脱离软件的需求,设计,以及工程,这是一个被争论了很久的问题。实际上,软件开发兼有两者的特点。但是这并不意味着它们可以被互相混淆。 很多人认为软件工程之于计算机科学信息科学就如传统意义上的工程学之于物理化学一样。 在美国,大约40%的软件工程师具有计算机科学的学位。在世界其他地方,这个比例也差不多。他们并不一定会每天使用计算机科学方面的知识,但是他们每天都会使用软件工程方面的知识。
软件工程与计算机科学:差异对比
软件工程 计算机科学
目标 在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统 探索正确的计算和建模方法,从而改进计算方法本身
产品 软件(比如办公套件和编译器) 算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题)
进度和时间表 软件项目都有特定的进度和时间表 研究项目一般不具有设定的进度和时间表
关注点 软件工程关注如何为用户实现价值 软件理论关注的是软件本身运行的原理,比如时间复杂度,空间复杂度,和算法的正确性。
变化程度 随着技术和用户需求的不断变化,软件开发人员必须时刻调整自己的开发以适应当前的需求。同时软件工程本身也处于不断的发展中。 对于某一种特定问题的正确解决方法将永远不会改变
需要的其他知识 相关领域的知识 数学
著名的探索者和教育家 Barry BoehmDavid Parnas, and Frederick P。 Brooks Edsger Dijkstra高德纳Robert TarjanPeter Slater, and 艾伦·图灵
著名的实践者 John BackusDan BricklinTim Berners-Lee林纳斯·托瓦兹理查德·马修·斯托曼
国内从业人数。 592,370(截至2002年) 不明
世界从业人数 不明 不明

软件危机

请参考:软件危机 软件工程的兴起要根源于20世纪607080年代的软件危机。在那个时代,很多的软件最后都得到了一个悲惨的结局。很多的软件项目开发时间大大超出了规划的时间表。一些项目导致了财产的流失,甚至某些软件导致了人员伤亡。同时软件开发人员也发现软件开发的难度越来越大。 OS 360操作系统被认为是一个典型的案例。到现在为止,它仍然被使用在IBM360系列主机中。这个经历了数十年,极度复杂的软件项目甚至产生了一套不包括在原始设计方案之中的工作系统。OS 360是第一个超大型的软件项目,它使用了1000人左右的程序员。Fred Brooks在随后他的大作《人月神话》(The Mythical Man-Month)中曾经承认,在他管理这个项目的时候,他犯了一个价值数百万美元的错误。 财产的损失:软件的错误可能导致巨大的财产损失。欧洲阿里亚娜火箭的爆炸就是一个最为惨痛的教训。 人员伤亡:由于计算机软件被广泛应用于包括医院等与生命息息相关的行业。这也使得软件的错误导致人员伤亡成为了可能。 在軟體工程界被大量引用的案例是Therac-25的意外. 在1985年六月到1987年一月之間, 六個已知的醫療事故來自於Therac-25錯誤地超過劑量, 導致患者死亡或嚴重輻射灼傷[http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html]。 在工业上,某些嵌入式系统导致机器的不正常运转,从而将一些人推入了险境。 最近的相关报道可以参见[http://catless.ncl.ac.uk/Risks]。

银弹与没有银弹

从软件危机被提出以来。人们一直在寻找解决它的方法。于是一系列的方法被提出并且加以应用。比如结构化的程序设计面向对象的开发CMMUML等等。 在1986年IBM大型电脑之父Fred Brooks发表了他的著名论文《没有银弹》(No Silver Bullet:Essence and Accidents of Software Engineering)。 在这篇著名的论文中他断言:“在10年内无法找到解决软件危机的银弹”(There will be no silver bullet within ten years)。 这篇论文在其后引起了巨大的反响。关于这本论文及其引起的反响,可以参考银弹与没有银弹。 Fred Brooks的著名作品还有《人月神话

方法学

软件工程的方法有很多方面的意义。包括项目管理,分析,设计,程序的编写,测试和质量控制。 软件设计方法可以区别为重量级的方法和轻量级的方法。重量级的方法中产生大量的正式文档。 著名的重量级开发方法包括ISO 9000CMM,和统一软件开发过程(RUP)。 轻量级的开发过过程没有对大量正式文档的要求。著名的轻量级开发方法包括极限编程(XP)和敏捷流程(Agile Processes)。 根据《新方法学》这篇文章的说法,重量级方法呈现的是一种“防御型”的姿态。在应用“重量级方法”的软件组织中,由于软件项目经理不参与或者很少参与程序设计,无法从细节上把握项目进度,因而会对项目产生“恐惧感”,不得不要求程序员不断撰写很多“软件开发文档”。而轻量级方法则呈现“进攻型”的姿态,这一点从XP方法特别强调的四个准则—“沟通、简单、反馈和勇气”上有所体现。目前有一些人认为,“重量级方法”适合于大型的软件团队(数十人以上)使用,而“轻量级方法”适合小型的软件团队(几人、十几人)使用。当然,关于重量级方法和轻量级方法的优劣存在很多争论,而各种方法也在不断进化中。 一些方法论者认为人们在开发中应当严格遵循并且实施这些方法。但是一些人并不具有实施这些方法的条件。实际上,采用何种方法开发软件取决于很多因素,同时受到环境的制约。

软件开发过程

请参考软件开发过程 软件开发过程是随着开发技术的演化而随之改进的。从早期的瀑布式(Waterfall)的开发模型到后来出现的螺旋式的迭代(Spiral)开发,以致最近开始兴起的敏捷开发方法(Agile),他们展示出了在不同的时代软件产业对于开发过程的不同的认识,以及对于不同类型项目的理解方法。 注意区分软件开发过程和软件过程改进之间的重要区别。诸如像ISO 15504, ISO 9000, CMM, CMMI这样的名词阐述的是一些软件过程改进框架,他们提供了一系列的标准和策略来指导软件组织如何提升软件开发过程的质量、软件组织的能力,而不是给出具体的开发过程的定义。

软件工程的发展方向

敏捷开发”(Agile Development)被认为是软件工程的一个重要的发展。它强调软件开发应当是能够对未来可能出现的变化和不确定性作出全面反应的。 敏捷开发被认为是一种“轻量级”的方法。在轻量级方法中最负盛名的应该是“极限编程”(Extreme Programming,简称为XP)。而与轻量级方法相对应的是“重量级方法”的存在。重量级方法强调以开发过程为中心,而不是以人为中心。重量级方法的例子比如CMM/PSP/TSP面向方面的编程(Aspect Oriented Programming,简称AOP)被认为是近年来软件工程的另外一个重要发展。这里的方面指的是完成一个功能的对象和函数的集合。在这一方面相关的内容有泛型编程(Generic Programming)和模板

软件工程师

请参考软件工程师以及IT工程师认证

相关内容


- 软件工程相关条目列表
- 计算机科学
- 计算机科学课程列表
- 计算机软件
- 软件开发过程
- 软件项目分析
- 软件项目设计
- 软件测试
- 程序设计语言
- IT工程师认证
- 中国计算机产业
- 软件危机

參考

# 胡崑山,《中国软件产业发展现状与人才需求》,2003年9月1日,http://software.ccidnet.com/pub/article/c372_a62973_p1.html

外部链接

Category:软件工程 ja:ソフトウェア工学 th:วิศวกรรมซอฟต์แวร์

Category:程序设计

Category:计算机软件 Category:软件工程

Category:计算机语言

Category:计算机软件 ja:Category:コンピュータ言語 ko:분류:컴퓨터 언어

wegetarianizm praca katalog Casino szkoy policealne










































:: RELATED NEWS ::




Jibuti
O Djibouti (Jibuti ou Djibuti) seu nome oficial é República do Djibuti - Jumhuriya Jibuti/République de Djibouti, é um pequeno país do nordeste de África, limitado a norte pela Eritreia, a leste pelo estreito de Bab el Mandeb, pelo Golfo de Aden e pela Somália e a sul e oeste pela Etiópia
Wikipedia:Lista automática de listas
Nesta página temos uma lista automática de listas. Ou seja, de artigos que são listas. Esta página é gerada automaticamente.

Banco de dados utilizado

O bancos de dados utilizado está disponível em Wikipedia:Download. A última versão utilizada foi a de 2 de outubro de 2004.

Lista automática de listas

# Lista de atores # Lista de aves do Brasil #
All Rights Reserved 2005 wikimiki.org