软件开发论文范文10篇

时间:2023-03-30 14:39:10

软件开发论文

软件开发论文范文篇1

关键词:给排水专业CAD软件开发方法

1、给排水专业CAD开发应用现状

在工程设计行业,CAD技术的应用大大提高了设计及绘图效率。CAD应用软件的开发也越来越重要。

在给排水设计领域,CAD开发应用起步较晚。有些设计院从八十年代末开始尝试进行CAD开发,但进展比较慢,多数是图块和小型实用程序,在深度和广度上都存在着差距。从1993年以后给排水CAD开发步伐开始加快。1994年底全国给排水学会和给排水技术情报网组织召开了“计算机技术在给排水专业应用研讨会”,对给排水软件开发起了积极的促进作用。

目前在给排水CAD开发方面已经取得了可喜的成绩,尤其是建筑室内给排水方面涌现出1些比较优秀的给排水CAD软件,如洛阳的1家软件和北京的几家软件。这些软件都具有计算机辅助设计建筑给排水平面图、自动生成系统图、自动统计材料表;进行室外给排水管网计算、自动生成图形等功能,其中个别软件已在室外设计和泵房设计等方面有了新的进展。

现有软件都偏重于民用建筑给排水方面,而且也有待于继续完善、发展。在给排水的其它领域,由于难度大,投资回报较低,软件公司还不愿涉足,所以进展缓慢。应用CAD进行给排水及水处理系统的优化设计更是少有人涉足。此外,目前还没有专业设计CAD软件的标准和规范。商业化软件多数都不经过权威部门严谨的技术测试和鉴定,所以其数据库、计算方法、设计方法和生成图形的准确性还没有严格保障,这1点还可能成为工程设计质量的隐患。

现在设计部门的给排水CAD应用水平也参差不齐。有的购买或自行开发了给排水专业软件,提高了设计绘图效率。有的只是在用AutoCAD的简单命令绘图,虽提高了CAD出图率,却根本谈不上利用CAD提高效率。给排水专业CAD应用水平还有待于进1步提高。

目前许多有精力的设计院及研究部门都在研究开发本单位适用的专业软件及应用程序,但由于开发经验不足,成绩不明显。本文将结合笔者的工作经验,着重论述有关给排水软件开发的原则、思路、方法及步骤,旨在抛砖引玉,促进给排水CAD软件开发工作。

2、给排水软件包开发思路及原则

由于现有建筑给排水软件已经比较成熟,且仍在继续开发、升级。1般开发者在水平和起点上均与这些软件开发有1定差距,所以应该购买此类软件,而着重开发适合本单位使用的实用程序、应用软件或优化设计软件。高起点开发者则应在深度及广度上向更高层次冲击。

1。给排水CAD软件开发依据及原则

(1)设计依据为有关设计规范、制图标准以及设计手册等;保证数据库、计算方法和设计方法的准确性。

(2)软件包开发设计首先要突出专业水平,把专业设计思想转化为计算机语言是专业软件包的关键所在。

(3)符合设计人员思维习惯及设计习惯,人机界面友好,操作简单,易掌握。

(4)适用性强,容易修改,容易扩充,容易发展。

(5)尽量使用效率高、功能强的计算机语言及开发工具。

(6)严格执行标准化及规范化。

(7)通过自动绘图以及建立标准图库,提高图纸复用率等途径,提高设计绘图速度,真正发挥计算机的优势,把设计人员从图板上解脱出来。

2。设计开发步骤

(1)开发适合于给排水专业应用的CAD软件环境,包括AutoCAD的优化配置及常用专业图块及绘图工具。

(2)开发1些独立的专业绘图软件,发展标准图形库,由浅到深,从易到难,逐步提高自动成图及图纸复用比例,使软件包成为覆盖面广,功能齐全的专业绘图软件包。

(3)开发给排水专业高阶段设计方案优化软件,以及设计、绘图1体化软件,逐步成为智能化、自动化程度较高的专家系统软件包。

3。开发人员配备软件开发是1项较复杂的脑力劳动,对开发人员要求也较高,专业软件开发人员大致可分为以下几个档次:

(1)初级水平:专业人员掌握1些基本计算机知识及开发工具可以进行1些专业图块制作,简单的实用程序开发。

(2)中等水平:较高专业水平加上较高计算机水平。熟悉专业设计习惯,有较丰富的设计经验的专业人员,如果掌握先进的CAD开发技术,可以开发出较高水平的CAD应用软件,可以提高设计效率,特别是可以大大提高绘图效率。

(3)高级水平:高深的专业水平加上先进的计算机开发技术。在专业方面应该熟练掌握专业基础知识,有丰富的工程设计经验,善于总结专业设计思路,发现规律,具有较强的系统工程及方案优化水平。在计算机方面要掌握LSP、ADS、DCL等开发工具(或其它高级开发工具)。这类人员开发专业CAD软件是最理想的。

由于给排水专业涉及面广,而且不同行业给排水设计习惯也不尽相同,不可能有软件可以覆盖所有给排水领域,适用于所有设计院,所以目前仍然需要分行业、分类进行开发。前述的个别建筑给排水软件包及开发人员属于较高水平,其开发设计思路非常值得向给排水其它领域延伸。4。开发工具(软件方面)

目前较常用的CAD开发工具主要有AutoLISP语言、ADS、DCL语言以及数据库处理,也有的开发者使用BASIC、FORTRAN等高级语言与AutoCAD的图形数据交换接口进行开发;还有用C++开发或用VB等在Windows界面下开发的;此外,网络技术也越来越重要。

开发CAD软件,需要非常熟悉AutoCAD命令,以及其中的各参数、系统变量、图层、图块、线形等,这样才能方便灵活地在程序中执行各种命令,掌握CAD开发技巧,例如图块的属性可以带许多信息,1条LINE线的厚度可以存入管道的管径等。此外现在有些软件使用数据的后处理方式,使软件和AutoCAD结合得更好,这些技术还需要对AutoCAD图元数据库和数据图形交换等有更深的了解。

AutoLISP是在AutoCAD内部使用的语言,用AutoLISP编辑的程序可以定义变量,对数据进行处理和作出图形,并可能自定义函数,比较适合搞人工智能工作,特别是它的表处理功能以及递归等功能比较独特,在CAD工作中它可以独立工作,也可能与DXF图形交换文件互相配合困难,要求开发人员具备C语言编程经验并熟悉ADS库中各函数用法。1般商业软件应该用ADS。

AutoCAD还提供了可编程对话框(PDB)工具,使用户可以结合自身专业特点,用DCL语言构造自己的对话框,从而改善界面,提高CAD软件效率。

目前最流行、最实用的专业CAD开发工具是ADS、DCL,加上少量AutoLISP。

3、开发过程1。专业绘图环境的开发

(1)AutoCAD的配置及改善

a。选择AutoCAD版本。目前最常用的是汉化AutoCAD12。0版。但其汉字输入不太方便,应配上较先进的汉字系统,或用12。0版forWindows(中文)。

b。对AutoCAD系统变量进行重新优化配置及设定,主要包括系统变量及尺寸变量设置,层、线形设置等,使acad。dwg成为理想的样板图。

c。对acad。mnu进行优化,将许多常用命令放在最容易拾取的位置或固定位置。专业菜单部分可加入acad。mnu,也可以独立编写。

d。利用acad。pgp做简化命令(10。0版以前的版本可在acad。lsp中用defun函数设定),编写acad。lsp。

(2)专业绘图功能

a。专业图框绘制:可由菜单点取或用屏幕幻灯菜单点取,自动生成各种图框。

b。专业常用图块:由菜单点取生成,自动插入断线。

c。开发实用的专业绘图工具程序:如标注标高、管径、坐标、管道立管、代号、各种管件等的程序,绘制单、双线管道的程序,生成专业设计说明、图例、专业词组的程序,以及文字、线形、线宽编辑和表格操作等实用程序。

d。开发或引进建筑图绘图程序。

专业CAD软件包都应具有高效的绘图环境,否则1旦自动生成等功能出现故障或不能适用时,用户就只能用AutoCAD简单命令来画图了。

2。专业绘图软件的开发

在专业绘图环境的基础上逐步开发1些相对独立的专业绘图软件,逐步形成功能强,覆盖面广的给排水综合软件包。

目前已开发的较成熟的软件有:民用建筑给排水CAD软件包、室外给排水管网计算软件、给排水管道纵断面图绘图软件、给排水外部管网设计软件等。

正在开发,初见成效的软件有泵房设计软件、平流沉淀池软件、机械加速澄清池软件、和市政管网CAD软件等。

尚未深入开发,开发难度大,但预期效果好的软件包括:辐射沉淀池、旋流沉淀池、水塔、综合管沟、架空管网、过滤间、软水站、污泥脱水间设计等项目。

给排水软件开发的另1条思路是发展给排水设备和构筑物的标准CAD图形库,从而提高图纸复用率,这比编制自动成图的软件要容易得多。标准CAD图形库还可以由权威部门编制后,作为标准图出版。此外,标准图还可作为软件包的1部分,即软件包可以交互式自动生成图形,也可以通过自动计算直接调用相应的标准图。

3。高阶段设计及方案优化设计软件的开发在

软件开发论文范文篇2

在工程设计行业,cad技术的应用大大提高了设计及绘图效率。cad应用软件的开发也越来越重要。

在给排水设计领域,cad开发应用起步较晚。有些设计院从八十年代末开始尝试进行cad开发,但进展比较慢,多数是图块和小型实用程序,在深度和广度上都存在着差距。从1993年以后给排水cad开发步伐开始加快。1994年底全国给排水学会和给排水技术情报网组织召开了“计算机技术在给排水专业应用研讨会”,对给排水软件开发起了积极的促进作用。

目前在给排水cad开发方面已经取得了可喜的成绩,尤其是建筑室内给排水方面涌现出一些比较优秀的给排水cad软件,如洛阳的一家软件和北京的几家软件。这些软件都具有计算机辅助设计建筑给排水平面图、自动生成系统图、自动统计材料表;进行室外给排水管网计算、自动生成图形等功能,其中个别软件已在室外设计和泵房设计等方面有了新的进展。

现有软件都偏重于民用建筑给排水方面,而且也有待于继续完善、发展。在给排水的其它领域,由于难度大,投资回报较低,软件公司还不愿涉足,所以进展缓慢。应用cad进行给排水及水处理系统的优化设计更是少有人涉足。此外,目前还没有专业设计cad软件的标准和规范。商业化软件多数都不经过权威部门严谨的技术测试和鉴定,所以其数据库、计算方法、设计方法和生成图形的准确性还没有严格保障,这一点还可能成为工程设计质量的隐患。

现在设计部门的给排水cad应用水平也参差不齐。有的购买或自行开发了给排水专业软件,提高了设计绘图效率。有的只是在用autocad的简单命令绘图,虽提高了cad出图率,却根本谈不上利用cad提高效率。给排水专业cad应用水平还有待于进一步提高。关键词:软件开发,给排水,CAD,给排水设计软件来自

目前许多有精力的设计院及研究部门都在研究开发本单位适用的专业软件及应用程序,但由于开发经验不足,成绩不明显。本文将结合笔者的工作经验,着重论述有关给排水软件开发的原则、思路、方法及步骤,旨在抛砖引玉,促进给排水cad软件开发工作。

二、给排水软件包开发思路及原则

由于现有建筑给排水软件已经比较成熟,且仍在继续开发、升级。一般开发者在水平和起点上均与这些软件开发有一定差距,所以应该购买此类软件,而着重开发适合本单位使用的实用程序、应用软件或优化设计软件。高起点开发者则应在深度及广度上向更高层次冲击。

1.给排水cad软件开发依据及原则

(1)设计依据为有关设计规范、制图标准以及设计手册等;保证数据库、计算方法和设计方法的准确性。

(2)软件包开发设计首先要突出专业水平,把专业设计思想转化为计算机语言是专业软件包的关键所在。

(3)符合设计人员思维习惯及设计习惯,人机界面友好,操作简单,易掌握。

(4)适用性强,容易修改,容易扩充,容易发展。

(5)尽量使用效率高、功能强的计算机语言及开发工具。

(6)严格执行标准化及规范化。

(7)通过自动绘图以及建立标准图库,提高图纸复用率等途径,提高设计绘图速度,真正发挥计算机的优势,把设计人员从图板上解脱出来。

2.设计开发步骤

(1)开发适合于给排水专业应用的cad软件环境,包括autocad的优化配置及常用专业图块及绘图工具。

(2)开发一些独立的专业绘图软件,发展标准图形库,由浅到深,从易到难,逐步提高自动成图及图纸复用比例,使软件包成为覆盖面广,功能齐全的专业绘图软件包。

(3)开发给排水专业高阶段设计方案优化软件,以及设计、绘图一体化软件,逐步成为智能化、自动化程度较高的专家系统软件包。

3.开发人员配备软件开发是一项较复杂的脑力劳动,对开发人员要求也较高,专业软件开发人员大致可分为以下几个档次:

(1)初级水平:专业人员掌握一些基本计算机知识及开发工具可以进行一些专业图块制作,简单的实用程序开发。

(2)中等水平:较高专业水平加上较高计算机水平。熟悉专业设计习惯,有较丰富的设计经验的专业人员,如果掌握先进的cad开发技术,可以开发出较高水平的cad应用软件,可以提高设计效率,特别是可以大大提高绘图效率。

(3)高级水平:高深的专业水平加上先进的计算机开发技术。在专业方面应该熟练掌握专业基础知识,有丰富的工程设计经验,善于总结专业设计思路,发现规律,具有较强的系统工程及方案优化水平。在计算机方面要掌握LSP、ADS、DCL等开发工具(或其它高级开发工具)。这类人员开发专业CAD软件是最理想的。 

由于给排水专业涉及面广,而且不同行业给排水设计习惯也不尽相同,不可能有软件可以覆盖所有给排水领域,适用于所有设计院,所以目前仍然需要分行业、分类进行开发。前述的个别建筑给排水软件包及开发人员属于较高水平,其开发设计思路非常值得向给排水其它领域延伸。 ^#tZu;?l`2[yoV=Q8u€OjyE0aqn&E€|7微电子学论文yKVqB^t(€h?n1DqMGTd7J(

4.开发工具(软件方面) 

目前较常用的CAD开发工具主要有AUTOLISP语言、ADS、DCL语言以及数据库处理,也有的开发者使用BASIC、FORTRAN等高级语言与AUTOCAD的图形数据交换接口进行开发;还有用C++开发或用VB等在WINDOWS界面下开发的;此外,网络技术也越来越重要。 

开发CAD软件,需要非常熟悉AUTOCAD命令,以及其中的各参数、系统变量、图层、图块、线形等,这样才能方便灵活地在程序中执行各种命令,掌握CAD开发技巧,例如图块的属性可以带许多信息,一条LINE线的厚度可以存入管道的管径等。此外现在有些软件使用数据的后处理方式,使软件和AUTOCAD结合得更好,这些技术还需要对AUTOCAD图元数据库和数据图形交换等有更深的了解。 

论文给排水设计软件开发方法探讨来自免费论文网

AUTOLISP是在AUTOCAD内部使用的语言,用AUTOLISP编辑的程序可以定义变量,对数据进行处理和作出图形,并可能自定义函数,比较适合搞人工智能工作,特别是它的表处理功能以及递归等功能比较独特,在CAD工作中它可以独立工作,也可能与DXF图形交换文件互相配合。其不足之处是速度慢,且程序代码几乎无法保护。 

ADS是AUTOCAD11.0版以后新增加的用来开发应用的一个C语言编程环境。它运行速度快,代码保护性好,能更有效地利用内存空间以及访问设备与系统,具有更强大的开发功能。但掌握ADS要比LISP困难,要求开发人员具备C语言编程经验并熟悉ADS库中各函数用法。一般商业软件应该用ADS。 

AUTOCAD还提供了可编程对话框(PDB)工具,使用户可以结合自身专业特点,用DCL语言构造自己的对话框,从而改善界面,提高CAD软件效率。 

目前最流行、最实用的专业CAD开发工具是ADS、DCL,加上少量AUTOLISP。 

三、开发过程

1.专业绘图环境的开发 

(1)AUTOCAD的配置及改善 

A.选择AUTOCAD版本。目前最常用的是汉化AUTOCAD12.0版。但其汉字输入不太方便,应配上较先进的汉字系统,或用12.0版FORWINDOWS(中文)。 

B.对AUTOCAD系统变量进行重新优化配置及设定,主要包括系统变量及尺寸变量设置,层、线形设置等,使ACAD.DWG成为理想的样板图。 

C.对ACAD.MNU进行优化,将许多常用命令放在最容易拾取的位置或固定位置。专业菜单部分可加入ACAD.MNU,也可以独立编写。 

D.利用ACAD.PGP做简化命令(10.0版以前的版本可在ACAD.LSP中用DEFUN函数设定),编写ACAD.LSP。 

(2)专业绘图功能 

A.专业图框绘制:可由菜单点取或用屏幕幻灯菜单点取,自动生成各种图框。 

B.专业常用图块:由菜单点取生成,自动插入断线。 

C.开发实用的专业绘图工具程序:如标注标高、管径、坐标、管道立管、代号、各种管件等的程序,绘制单、双线管道的程序,生成专业设计说明、图例、专业词组的程序,以及文字、线形、线宽编辑和表格操作等实用程序。

D.开发或引进建筑图绘图程序。 

专业CAD软件包都应具有高效的绘图环境,否则一旦自动生成等功能出现故障或不能适用时,用户就只能用AUTOCAD简单命令来画图了。 

2.专业绘图软件的开发 

在专业绘图环境的基础上逐步开发一些相对独立的专业绘图软件,逐步形成功能强,覆盖面广的给排水综合软件包。 

目前已开发的较成熟的软件有:民用建筑给排水CAD软件包、室外给排水管网计算软件、给排水管道纵断面图绘图软件、给排水外部管网设计软件等。 

正在开发,初见成效的软件有泵房设计软件、平流沉淀池软件、机械加速澄清池软件、和市政管网cad软件等。

尚未深入开发,开发难度大,但预期效果好的软件包括:辐射沉淀池、旋流沉淀池、水塔、综合管沟、架空管网、过滤间、软水站、污泥脱水间设计等项目。

给排水软件开发的另一条思路是发展给排水设备和构筑物的标准cad图形库,从而提高图纸复用率,这比编制自动成图的软件要容易得多。标准cad图形库还可以由权威部门编制后,作为标准图出版。此外,标准图还可作为软件包的一部分,即软件包可以交互式自动生成图形,也可以通过自动计算直接调用相应的标准图。

3.高阶段设计及方案优化设计软件的开发在

利用cad进行高阶段设计及方案优化设计方面,除在民用建筑给排水领域有个别公司研究外,在其它给排水领域中的研究国内还未见到报道。方案优化软件的难点在于系统化的设计思路和设计经验向计算机程序的转化,其中给排水及循环水流程的方案优化模型的建立本身就是给排水设计的一个难题。目前这方面进展缓慢的原因首先是它对开发人员要求高,这一领域的理想人选稀少;其次是给排水专业行业多,领域广,需开发的软件工作量巨大,具备这方面精力的研究部门或公司还很少。

总之,给排水专业绘图软件包开发是一项艰苦的工作,需要创造一个规模生产,流水线开发的环境,投入一大批高层次的人才。各部门的研究人员既要知难而进,又要避免重复劳动,在各行业、各领域开发出各有特色的实用专业软件。

四、给排水cad软件包开发实例———bywat

1.软件包结构

专业绘图环境-caautocad12.0汉化版

autocad配置及改-系统配置

参数设置

菜单优化

命令简化

专业绘图功能-

专业图框绘制

专业图块绘制

专业工具程序

绘建筑图程序

bywat-(2.0)b.

专业绘图软件-is泵及s泵基础绘图软件

水泵底座绘图软件

材料表等填充软件

给水管纵断面图绘图软件

排水管纵断面图绘图软件等多常

2.软件包主要技术特点

(1)符合设计人员设计习惯,简便易学。

(2)速度快,可提高设计绘图速度3到5倍。

(3)可由用户幻灯菜单自动点取专业图框。

(4)有丰富的专业图形符号,插入时管道自动断线。

(5)可方便地绘制建筑图。

(6)具有各种类型的标高、管径、坐标等标注功能以及一些方便实用的程序。

(7)绘材料表只需在屏幕菜单中点取材料名称即可将名称、材料、单位、标准图号等填入材料表中的合适位置,序号、数量也特别方便,速度快,辅助功能及提示功能强。如果需要,还可以自动填入单重,自动计算并填入总重。

(8)各型号水泵基础自动绘制,半自动生成水泵底座图形,自动计算和生成材料表。

(9)给排水管道纵断面图软件交互式、参数化绘图,可自动计算,并有辅助功能。

3.专业软件实例———排水纵断面图绘图软件

软件开发论文范文篇3

项目管理就是在项目活动中运用一系列的知识、技能、工具和技术,以满足或超过相关利益者对项目的要求,实际上就是通过项目各方干系人的合作,把各种资源应用于项目,以实现项目的目标,满足项目干系人的需求,其本质就是对时间、质量和成本的管理。

随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,项目开发的管理日益受到重视。

二、目前在软件项目管理中存在的误区

现在大多数企业都认识到了在项目中进行管理的重要性,但是仍然有许多企业在实施项目管理的过程中存在着这样那样的误区,主要表现在:

1.项目经理不够专业。在软件企业中,缺乏专业的项目管理人员来实施项目管理及担任项目经理,通常被任命的项目经理主要是因为他们能够在技术上独当一面,但是他们在管理方面特别是项目管理方面的知识比较缺乏。

2.项目计划缺乏纲领性。项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。

3.缺乏有效的管理意识。部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成人员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。

4.缺乏有效的沟通制度和机制。在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。

5.风险管理意识淡泊。有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。

6.项目干系人的不确定性。在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、工作职责等没有足够了解以至于无法得到完整需求或最终经权威用户代表确认的需求;或者是多个用户代表各说各话、昨是今非,但同时又要求项目尽早交付;项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。

7.缺乏项目团队的合理分工。项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任分工不够清晰而造成工作互相推诿、责任互相推卸的现象;有时各阶段不同角色或同阶段不同角色之间的责任分工比较清晰,但是各项目成员只顾完成自己那部分任务,不愿意与他人协作。这些现象都将造成项目组内部资源的损耗,从而影响项目进展。

三、解决软件项目管理中存在的误区的有效策略

要想解决上面描述的误区,归根到底还是要从管理学的角度入手,即在软件项目的开发过程中加入过程管理的内容,这样我们可以在软件开发中对各个过程的质量加以控制,从而达到保证软件产品质量的目的。为了有效提高管理水平,我们应该努力做到:

1.项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。

2.计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。

3.加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。

4.制定有效的沟通制度和沟通机制,提高沟通意识;采取多种沟通方式,提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的(下转第198页)(上接第196页)内容要采用多种方式进行有效沟通以确保传达到位,例如:除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。

5.通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法,掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。

6.项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。

7.项目经理应当对项目成员的责任进行合理的分配并清楚地说明,同时应强调不同分工、不同环节的成员应当相互协作,共同完善。

实施有效的项目管理绝非易事,对于软件企业而言,这不是一个小的改变,而是一种变革,企业需要为此付出艰苦的努力,同时,成熟有效的项目管理无疑将对企业起着至关重要的作用,项目管理的水平将是企业核心竞争力之一。

【参考文献】

[1]郭研.软件项目管理[J].物流科技,2005,(2).

[2]何国伟.论软件项目管理的质量(上)[J].质量与可靠性,2003,(6).

[3]何国伟.论软件项目管理的质量(下)[J].质量与可靠性,2004,(2).

[4]王仲涛,严俊,赵耀.对软件项目管理的初步探讨[J].船海工程,2001,(S2).

软件开发论文范文篇4

关键词:软件公司;成本控制;探索

1经营决策阶段的成本及其控制

经营决策阶段成本是指公司经营方向的选择,这是成本管理的第一个也是最为核心的环节。不过对于大多数IT软件业公司而言,这个阶段往往是最大的问题之所在,有时经常凭一个觉得是灵感的想法或者对市场初步的直观层面的调研就进行的决策。而这样的结果是往往没有摸透市场的真实情况,轻率上马项目,造成方向性错误,以至于导致企业的危机。

该阶段的成本控制,关键在于经营决策前科学而深入的市场调研及准确分析,目前很多中小型IT软件企业,其经营部的职员大多都并不是社会调查专业的,因而他们做市场调查的过程中所采用的方法不太科学,如在样本选取及抽样过程不合理,没有按照严格的社会调查方法进行调查和数据分析,甚至问卷设计都存在倾向性导致调查数据信度偏低。此外,大量的公司自我宣传的各种形式的软文和竞争对手有意的攻击性文章夹杂在其中,并不是很容易的进行分辨,更何况数据的随意性,来源的不可追溯性各种情况,所以只能作为参考。

2需求整理及分析确认阶段的成本及其控制

需求整理指市场经营人员根据高管对于市场方向的决策,而提出的具体的产品或者项目的原始需求,需求分析是指技术员对市场部门的需求进行分析,评估其可实现性以及实现难度,大致工时等,提交相关需求分析报告,最后市场经营部门进行确认这个阶段。

该阶段的成本控制,首先需要搞清这种沟通过程中产生偏差的原因,最为主要的往往并不是技术语言和市场语言的差异,或者市场人员和技术人员之间的思维定势的差异,而在于两者缺乏确定的科学的流程和在交流之前的准备以及相关概念约定俗成的定义造成的问题,同时还由于沟通和确认环节由于其特殊性,经常难以被有效的纳入进度管理程序流程当中。而提高该阶段的成本控制效率,必须逐一针对性的解决以上问题,首先要清晰的确定并严格执行市场和技术沟通的流程,尤其是要明确每个环节的控制点,也就是双方交付给对方的关键交付物,一定要有清晰的共同确认的模板,同时每次沟通前必须对于一些概念有着清晰的界定,然后公布这些信息,并在沟通前做好充足的准备,明确每次沟通前要沟通什么,要解决哪些问题,沟通结束后要交付哪些文档让双方进行确认等,同时一定要通过线上或者线下的管理模式,讲所有沟通环节全盘把握,并纳入进度管理。

3规划阶段成本及其控制

规划阶段成本是指在需求已经得到确认后,进入技术规划阶段的相关成本控制,该阶段有些软件开发公司常常出现的问题是对于规划予以过度的期望和过于沉重的内涵,在实际项目操作过程中,这个规划实际上包含着技术规划和非技术规划两个部分,因为对这两个部分的混淆,导致一些技术层面和市场层面的东西不必要的纠缠在一起,并且直接导致项目进度的拖欠,而且会导致由于非技术规划的不清晰,直接影响技术规划层面的实施。

该阶段的成本控制,必须清晰的区分非技术规划和技术规划,尤其在公司内部技术部门和市场经营部门之间的职责,需要设立一个在提出需求到技术规划之间过渡的位置,即对于需求具体细节的整理,要对于交付物有着清晰的确定,尤其是在不同时期交付不同的关键文档,如除了上面说的那六个文档外,技术部项目组长在需求分析的时候,还应该明确提交功能模块分析,开发代价,功能流程图,功能关联性图,可维护性及可拓展性分析等六个文档,此外在项目开发规划阶段,还要对于控制点的一些要素进行详细的规划用来提交给市场部门,如详细页面元素,页面元素价值度分析,表现形式,页面结构,页面效果等。

4开发阶段的成本及其控制

开发阶段的成本指需求确定并且规划清晰后的具体开发过程的成本管理问题,该阶段相对其他阶段来说比较清晰,但这里笔者认为需要关注的是,如何使得人力资源得到最大程度的利用,它是指公司第一线技术人员的能力最大程度发挥的状态,包含几个层次,(1)全部时间利用,(2)最大效率利用,(3)最大潜力激励利用,这三步需要逐步递进实现。这个需要一种完善的内部管理制度,以及公平公正的价值认定模式和绩效制度,从而一方面促进员工本身的发展,一方面增加对人才的吸引力。

该阶段的成本控制,可以引入最大可控制成本的概念,这里是指人力资源最大程度发挥后所能控制的成本,是公司在一定投入前提下,最大的可能的减少因管理导致人力发挥不足够而造成的成本,该成本为人力资源的极致成本,无法再进一步降低,此成本状态下的仍然出现效益不佳情况,则可说明在经营定位和经营方向上的问题,而非内部问题。促使人力资源得到最大利用度和发挥度,在此基础上的成本,为最大可控制成本,以上可以通过内部的管理系统来很好的实现。5需求变更成本及其控制

需求变更成本指在开发过程中,由于市场部门的需求改变导致的成本增加而实施的控制,对于项目开发的过程中,需求的频繁变更就成本控制而言是致命的,很多项目由于需求的变更而导致破产。

该阶段的成本控制,最关键的是要对于需求变更过程进行严格的管理,要从需求变更的开始,对于整个变更的每个具体的步骤进行跟踪,并且严格核算每次变更所需要的工作时,从而做好评估。同时,务必要明晰需求变更的必要性和风险性,以及所带来的实际成本的增加,所以需求要尽量经过详细的论证。

6测试成本及其控制

软件开发论文范文篇5

本文较详尽地分析了美国软件版权判例的三个发展阶段,指出:尽管美国计算机法律界对于软件版权保护“仍处于一种积极的动荡状态”,争论仍然存在,但经过几年的深入发展,美国软件版权保护出现了向版权法基本原理回归的健康倾向。外国正反两个方面的经验值得参考借鉴。

关键词计算机软件版权保护判例

1980年,美国国会通过了版权法修正案,将计算机软件正式纳入版权法的保护对象。由于美国计算机软件在全球的主导地位以及其在全球经济技术等方面重要影响,八十年代开始,世界各国纷纷也以版权法作为计算机软件知识产权保护的主要形式,从而形成了国际主流。但是,由于计算机软件的版权问题同计算机软件的技术及其发展是紧密相连的,法律界在具体处理软件的版权问题时遇到许多前所未有的新问题,并不断地引发出争论。为此,国际计算机法律界进行了大量的研究和探索,其中,世界上软件产业最发达的美国计算机法律界所遇到的问题最早也最多。因此,可以说美国在这方面已走在前面,特别是,美国法院在近十几年中对一系列软件版权案判处而形成的判例,不但丰富和发展了美国软件版权的法律体系,而且在很大程度上左右了世界软件版权保护的进一步发展。因此,了解和分析美国软件版权判例的发展,对于我们把握国际软件保护的发展趋势,不断完善我国软件版权保护是很有借鉴意义的。

一、美国前期软件版权判例简单回顾

美国虽然于1980年通过立法对计算机程序正式予以版权保护,但在法中没有作出很多具体规定,实际上是留给美国法院根据立法原则,已有的判例和具体案情进行处理,通过案例不断地丰富发展其法律体系。

美国前期的计算机程序案例主要是涉及计算机程序能否享有版权保护,什么形式或什么类型的计算机程序能够享有版权保护。现在这些案例被称为计算机程序版权纠纷的第一代案例。例如:Tandy公司诉Pesonal微计算机公司案(1981年)、Apple公司诉Franklin公司案(1983年)、Apple公司诉Formula公司案(1984年)等。其中影响最大、最具代表性的是Apple公司诉Franklin案(该案可详见电子工业出版社《计算机软件著作权保护手册》第129页,案件2)。通过这一系列案例解决了计算机程序作为版权保护对象的基本问题,具体地讲,主要包括以下一些结论:

1.计算机程序的源代码形式和目标代码形式都具有版权;

2.系统程序(包括操作系统、编译程序等)和应用程序一样都具有版权;

3.固化在ROM电路等载体上的程序具有版权;

4.微程序也可享有版权(详见《计算机软件著作权工作手册》第136页,案例4:NEC诉Intel案(1989年))。

以上这些通过美国第一代案例所总结出的结论已逐步被美国乃至世界计算机法律界所接受,有的甚至已纳入立法的法律内容。例如:有关计算机程序的源代码形式和目标代码形式都享有版权保护的内容在《欧洲共同体关于计算机程序保护的指令》、我国《计算机软件保护条例》以及关贸总协定关于知识产权的协定(Trips)中都有相应的规定。

二、计算机软件版权保护向深入发展

随着软件版权保护的发展,法律界面临着从简单的、逐字逐句的复制行为发展到带有伪装的拷贝行为的问题。再加上计算机软件作为一项智力劳动成果,它同一切人类文化科技成果一样,不可能凭空而降,它总是在不断继承、借鉴他人成果基础上不断改进、创新、发展而成的。根据版权法的基本原理,只要是利用原有软件的思想,则是合法的。因此,正确合理地区分计算机软件的思想概念与表现的界限,不但涉及对某个软件是否侵权的判定,而且直接涉及在软件开发过程中如何做到既能吸收他人软件中的先进技术,又不致陷入版权纠纷,同时还能享有自主的版权。从更深的角度来讲,正确合理区分软件的思想与表现,关系到版权法保护的基本宗旨,即通过保护软件版权所有者的合法权益,鼓励创作开发更多更先进的软件,促进技术和产业的健康发展。

上述第一代判例得到的结论从一定角度上讲,就是认定各类各种形式计算机程序的编码(包括源代码和目标代码)——美国法律界将其称为程序的文字性(Literal)部分,都是作品的表现,理应受版权法保护。而程序的功能目标,法律界也一致公认为属于作品的思想范畴,不受版权法保护。但是,在上述编码与功能目标两个“极端”之间存在着一个中间地带,例如程序的总体结构、接口设计、屏幕显示等等——美国法律界往往将这部分内容称为程序的非文字性部分,而这部分中间地带中哪些属于程序作品的思想概念,哪些属于程序的表现,这些有关软件开发中的版权问题,成为了计算机软件版权保护深入发展中的关键问题。

美国处理上述问题的案例出现在八十年代中期,例如:SAS公司诉S&H公司案(1985年)、Whelan诉Jaslow公司案(1986年)和Plains合作社诉Goodpasture公司案(1987年)。这些案例又称为第二代案例。其中最著名的也是影响最大的是联邦第三巡回法院二审判决的Whelan公司诉Jaslow公司案(该案可详见《计算机软件著作权工作手册第155页,案例12》)。

美国法院在处理计算机程序版权纠纷,采用了一些判断准则,其中最普遍的是所谓“接触加实质相似性”准则(Access&SubstantialSimilarity)。也就是说,法院在判定一个软件是否侵权时,首先要考虑被告是否曾经接触过原告的版权作品,如果被告有可能“看到或得到原告的程序”,则满足了“接触”条件。其次,法院要将两个程序进行相似性比较,比较包括文字成分(编程代码等)和非文字成分的相似性比较。如果出现相似或实质相似,就有可能判定侵权。这对于文字成分出现相似的情况,问题不大。而对非文字性成分相似的情况,相似的非文字成分必须是属于程序作品的表现时才有可能侵权。如果该相似的非文字成分是属于程序作品的思想概念范畴,就不应该认定为侵权,因为这是版权法原理所允许的。因此,问题又归结为程序作品,特别是其非文字性成分的思想和表现的区分。

美国第三巡回法院在审理Whelan诉Jaslow案中,提出:被告程序作品的思想就是该作品总的功能目的,除此之外,任何对该功能和目标不是必要的成分都应该视为表现。该法院认为,被告的程序虽然与原告程序编码完全不同,但两者的结构、顺序和组织(SSO)相同或相似,故构成了侵权,将计算机程序的版权保护一下子从文字性编码扩展到它的结构、顺序和组织。

除了计算机程序的结构、顺序和组织之外,八十年代中期开始,美国出现了许多涉及所谓计算机程序的“外观与感觉”(Look&feel),即程序的屏幕显示和用户接口版权纠纷的案件。例如:Broderbund公司诉Unison案(1986年)、Digital公司诉Softklone公司案(1987年)和Lotus公司诉Paperback公司与Stephenson公司(1990年)等(以上案例可参见《计算机软件著作权工作手册P168-178》)。这阶段的“外观与感受”案例与“SSO”版权案例都表现出明显的深入扩大版权保护范围的趋向。它们明确地提出,计算机程序中的非文字性成份,包括程序的SSO和用户界面中选单及其结构和组织、应答词及其显示形式和图象、命令和语法、功能键按击顺序和编排等,只要具有原创性和非显见性均可能享有版权……

从八十年代中期到九十年代初,这种将计算机软件的思想范围缩小,扩大受保护的表现的作法,虽然也有不同的作法(例如:1987年美国第五巡回法院判决的Plains合作社诉Goodpasture公司案),但是总的来讲,在美国法律界占了主导地位,同时也影响到了其他的国家,有些欧洲国家也开始采取了类似的扩大版权保护的作法。

三、当前软件版权保护向合理方向的新发展

从上述八十年代中期到九十年代初的美国第二代软件判例来看,美国对计算机软件的版权保护已经逐步背离了版权保护的基本原则,已经从保护“表现”深入到保护“思想”。其原因主要是,计算机软件的技术性较强,其思想和表现往往混合在一起,难以区分,而美国司法界对技术又不太熟悉。此外,美国计算机界,特别是大企业希望能给予软件的保护越强越好,以维护其优势地位也是一个重要因素。对这种做法,美国法律界乃至国际法律界是有不同意见的,尤其在日本,一些法学界人士对之提出了强烈的批评。同时,产业界的反应也是强烈的。持反对观点人士认为,目前,开发新软件总是要借鉴他人的思想的,没有人会一切从头做起。按照上述案例的作法,只是对资金雄厚的大公司有利,加强了大型软件公司的垄断地位,不利于竞争,并将遏制可兼容性产品的开发,使软件开发者如履薄冰,同时也使用户在软件的品种、价格方面失去选择机会,这将窒息软件产品的创新,不利于软件技术和产业的发展,有悖于版权法的宗旨。

随着争论的深入,九十年代初,形势出现转机。以1992年美国第二巡回法院判决的ComputerAssociatesInternational公司诉Altai公司案(简称Altai案)为标志的所谓第三代判例表明,美国软件保护又出现了逐步回归到版权基本原则上的趋势。

美国Altai案从根本上否定了Whelan案判决中建立起来的SSO等判断规则,同时又在版权基本理论和准则的基础上,结合软件的特点,提出了较为科学、合理的判断规则。

美国第二巡回法院在判决Altai案中认为:

(1)“一个程序仅含有一个思想”的观点不能成立,每个子程序至少有一个“思想”。在计算机领域,许多子程序已被标准化和规范化,以致于它们几乎在无意中就被写入计算机程序中,从而否定了Whelan案的“计算机程序思想唯一性”原则;

(2)一个程序中并不是只有一个结构;程序分解后的各个层次都存在一个结构,认为程序的“结构、顺序和组织”必然构成作品的“表现”的观点毫无根据。从而否定了Whelan案的SSO准则。

该法院在Altai案中提出了一套新的判断规则——“抽象、过滤和比较”三步判断法。具体内容为:

第一步对计算机程序进行抽象(Abstraction)。首先对指控他人侵权的原告程序分解为各级构成层次,从代码、子模块、模块……直到最高层次的功能设计,对程序分层次逐级抽象,将思想抽象出来。随着抽象层次的上升,被抽象出来的思想就越多,而剩下的“表现”就越少。

第二步过滤,即将抽象掉思想的各层次的表现,逐层次进行“过滤”。根据硬件环境、兼容性条件、效率因素、公有领域因素等外部因素过滤出不受保护的内容。

第三步比较,把过滤后剩余的部分与被指控侵权的程序在逐个抽象层次进行比较,以确定被告是否复制了过滤后剩下的“表现”。为确有复制,还需进一步评价被复制部分在程序中所占的重要性。

第二巡回法院在Altai案中提出并采用的合理界定计算机程序版权保护的范围的基本规则及其判断法则,较好地解决了版权基本原理在计算机软件方面的运用问题,体现了司法解释要与立法最终目的保持一致,既有效地保护权利人的合法权益,又有利于鼓励创新、鼓励合法竞争的公共利益。因此,引起了美国乃至各国计算机法律界的高度重视。在随后直至当前,从美国发生的众多计算机软件纠纷案来看,Altai案的法则已经普遍地为美国法律界所接受,并且在此基础上,有了进一步的发展和丰富。总的来说,有以下几方面特点:

1.分层抽象思想,Whelan案的SSO等法则已被实际否定

从近五年的美国案例来看,尽管美国各法院在判断计算机程序的版权保护范围的作法各有差别,但几乎所有的法院都拒绝采用Whelan案中提出的判别法则。人们越来越清楚一个程序包含许多层次的思想。Whelan案判决的法则普遍被认为过于简单化和保护过宽,所谓SSO法则实际已被否定。许多法院广泛地对计算机程序应用抽象法则(第九巡回法院称之为“内部”法则,而“过滤”则称为“外部”法则),确定不受保护各层次的思想,将其排除于侵权考虑之外。从而缩小了自Whelan案以来的受保护范围。

至于层次的划分一般都是自代码到功能目标设计逐层进行,但其中具体划分为几个层次,则根据具体案情,各有特色。例如:Altail案中法院是假设了目标码、源代码、参数表、服务要求和整体轮廓5个层次,进行抽象的。

又如:美国第十巡回法院在GatesRubber案中(1993年),是“按照与程序创作过程平行的方式”分成目标代码、源代码、算法及数据结构、模块、程序结构或构造、主要目标6层进行抽象的。

2.过滤作为判别法则的重要步骤,考虑了更多的因素

“过滤”是“三步判断法”中极重要的一个步骤,通过“过滤”将计算机程序中不受保护的成分剔除出去,显然将直接影响版权保护的范围。如果过滤得越多,则受保护的范围越小,侵权的可能性也越小。对于软件开发来说,其回旋的空间也越大。近年来,美国法院普遍接受“三步判断法”的法则,其关键在于广泛地采取了过滤法(或称外部法则等,实质差不多)来确认不受保护成分。而且总的趋势是过滤中考虑了更多的因素,也就是合理地缩小了版权保护范围。

过滤一般首先将根据版权法的基本原理进行。例如:第十巡回法院在Autoskill案中(1992年),首先根据如下原理进行过滤:

(1)根据思想——表达两分法原则程序的主要目的和功能总是不受保护的思想,类似地,每一典型模块也具有各自的目标和功能,而模块的基本功能和目标也是不受保护的思想或过程。

(2)根据过程(属于思想)和表现的两分法原则版权保护不能延及程序所体现的过程,而“通常,过程是作为部分系统构造、模块内部操作或算法出现的。”

(3)事实“计算机程序中,事实常常在很多抽象层次中出现,而且常常是作为部分数据结构或代码中的文字表达。”

(4)公有领域必须过滤出程序中所有非原创的成分,包括处有公有领域的成分。

(5)同一性原则版权必须拒绝保护那些“与思想、过程、发现等不可分离或紧密结合的表达。”

(6)精彩场景原则(Scenesafaire)第十巡回法院在该案中还应用了文学戏剧等作品中的精彩场景原则,对软件中某一特定主题的标准的或一般性的表现,也予以过滤,认为不应受保护。

最新的案例表明,美国法院在处理软件版权纠纷进行过滤时,还充分考虑计算机软件的特点:鉴于计算机软件是一个实用性很强的作品,其开发过程与一般文字作品不同,必然受到诸多因素的限制。如果将由于这些限制因素而造成的表现相似也视为侵权,显然也是不合理的。这就是所谓“外部因素”限制了表现的观点和作法。即将由于“外部因素”限制而产生的表现的相似不作为侵权论处。

其实,“外部因素”限制了表观的观点,在1987年美国联邦第五巡回法院审理Plains案中就已提出。当时,第五巡回法院就以棉花市场规律等作为外部因素限制了被告程序的表现为理由,否定了对被告侵权的指控。近年来,美国法院对“外部因素”的认识更加深入,在运用过滤法则中,确认了更多的“外部因素”,要求在相似性分析中过滤相关成分,从而限制或缩小版权的保护范围,近年来,一些判决中提到的外部因素有:

(1)硬件限制(Altai案、GatesRubber案和Cams案)即排斥对那些由于计算机硬件或其他硬件环境特征、标准等限制而产生的软件相似成分的保护;

(2)功用性(如Apple诉Microsoft案,第9巡回法院(1994年)、Capcom诉DataEast案,1994年等)即为功能目的纯粹的功能项或其编排将予以过滤掉。例如:著名的Apple公司诉Microsoft案中,法院指出:“纯功能性的项目或这些项目为了功能性目的”编排,完全不受版权保护所限。

(3)产业标准和用户要求产业标准和用户要求作为外部因素,即将那些由于符合产业标准而出现的相似部分排除于版权保护之外,是近年来美国法院的新提法(也有不同观点)。这个观点在GatesRubber案、Apple诉微软案、BrownBag案(第9巡回法院,1992年)和Capcom诉DataEast等案中均有反映。例如:美国法院在Apple诉Microsoft案中指出:“用户接口的功能元素或它们在产品中同类的编排的相似性并不暗含非法复制,但是标准化却跨越了竞争产品的功能性考虑”。“过度地扩大版权保护可能产生反作用,不利于固定的兼容标准的利用。”该法院又提出:“一些视觉显示和作品的功能目标紧密相关,都形成了标准,如果计算机程序的‘市场因素在决定顺序和组织时起了重要的作用’,那么这些模式可能会成为思想概念,而不为任何个人所用。”

(4)兼容性要求允许开发兼容软件一向是产业界的共识,在法律界也是没有很多疑义的。但在具体的司法案例中,将兼容性作为外部因素以限制版权保护范围则是近年来才出现。例如在Altai案中,法院提出,与其他程序共同运行的兼容性要求作为“外在考虑”因素,将限制程序员编写程序时的自由选择,从而限制了计算机程序中受保护的表现的范围。在第二巡回法院审理的GatesRubber案中,也提出软件兼容性要求所决定的程序部分应予以排除、过滤。

(5)除了上述之外,另外一些“外部因素”也被提出来作为“过滤”的条件如效率性,即设计编程中要求具有较高或最佳效率,进入公有领域可以自由使用的成分,广泛接受的编程方式等。

3.比较

比较是三步判断法则的第三步。通过比较,确定被指控侵权的程序与原告程序是否相似或实质相似,是原先美国法院一贯采用的方法。引入三步判断法则后,美国法院对如何进行比较以及判定侵权进一步进行了探索,并提出一些新的观点和做法。

(1)比较只对抽象——过滤后的成分进行从Altai案、GatesRubber案和Autoskill案来看,部分法院认为,被过滤的成分应该完全不予考虑。相似性比较只能根据过滤之后剩下的成分,然后才作出判断。

(2)在Apple诉Microsoft案、BrownBag等案中,法院提出,程序中某些过滤的成分,虽然就其本身来说,单独是不受保护的,但这些成分可以组成一个比其总和更强的作为整体的可能构成可版权的表现这种观点源自于汇编作品(或编辑作品)的版权,对于那些本身不享有版权的材料,如果在将其进行编排、挑选等工作,构成一个汇编作品,并体现一定独创性的话,则该汇编作品也是可以享有版权的。显然这种观点也是合理的。值得注意的是,这些法院在提出整体可能有版权的同时,又强调了,在这种情况下的比较,应该要求更高的相似性。

(3)新的更高的相似性比较标准

美国判例法在处理软件版权纠纷中发展了判定侵权的相似性标准,其中最突出的是,提出了“实质相同(或完全相同)”标准。例如:第九巡回法院在Apple诉Microsoft案中提出,对单个元素的复制。侵权的认定标准是采取“实质相似性”还是“实质相同性”标准,要根据这些元素是否受制于限定原则,如外部因素等来决定。如果受制于限定原则,则应该使用“实质相同”标准。第五巡回法院在EngineeringDynamiss案中(1994年)也提出,如果技术和思想概念约束限制了表达思想的可行的方式,那么只有“完全相同”的复制才可提起诉讼。

“实质相同”标准也被提出来应用于对程序作品的整体分析比较之中,第九巡回法院认为:对于那些大多数由可受保护的元素组成的作品,将在实质相似的标准下,提供“宽”的保护;而对于那些大部分由本身不受保护的元素所组成的作品,其保护范围只限于其所构成的作品的原创性的节选和编排,将在严格的实质相同的标准下比较分析,以提供“窄”的保护。

4.其他一些新作法

(1)“不计琐细”准则的最后删选

目前,美国有的法院在进行侵权比较分析后,即使发现“相似”或“相同”的部分或元素,还要将此部分与整个程序进一步比较,看其在产品中所处的地位和作用。如果此部分内容对整个作品的作用影响不大,就仍可能按照“不计琐细”原则,不能构成侵权的基础。例如:第十一巡回法院在审理Mitek案时,经过抽象——过滤——比较三步检测分析后,进一步使用“实质相同”标准,对程序作品进行整体比较,最后判定原告程序中5个非文字成分是可受保护的且与被告程序中的成分相似。但是,法院最终仍判决不存在侵权,其理由是这5个相似成分在程序作品作为整体中,缺乏重要性,属于原告程序中的“不计锁细”部分。

(2)一些标准的用户接口成分不受保护

近年来,美国出现了一系列所谓软件的“外观与感受”的版权纠纷案例。“外观与感受”不是一个版权术语,它被用来标识软件的各种非文字成分。例如:“外观”往往是指计算机程序的外在各种视听成分,屏幕显示用户接口的可见部分和其他可视的和可听的输出部分。“感觉”则往往包括程序中的动态的操作流程、键盘设计和其他能产生各种功能的方法等。从表面上看,“外观与感受”只涉及用户界面及其开发的版权问题。实际上,它必然与整个软件开发过程中的版权问题有关,特别是,这些案例的处理将影响到对软件开发中接口界面(不仅仅是用户接口)的版权处理。近年来美国“外观与感受”案例的处理结果虽然各不相同,但有一点是趋同的,即一些标准用户接口成分不受保护。例如:图形接口的基本特征,除了特别有其特色,与功能无特殊关系等成分之外,一般不受保护。这种处理方法,对于兼容性软件开发商来说,在处理难以回避的接口版权问题方面,将是有利的。

(3)判断侵权时更多地使用专家证据

现在,美国法院无论在抽象——过滤阶段,还是在比较和整体判断相似性方面,都更广泛地采用专家论证以判断是否侵权。早期,由于计算机软件的技术复杂性,专家的论证在案件判定方面占较重要的地位。以后,随着Whelan案侵权准则的简化,在“外观和感受”案件中,法院往往提出以普通观察者的观察和印象作为判决时的参考。如今,随着三步判断法则的使用,无论是抽象层次的划分,外部因素及其他限制原则的选取和使用,还是实质性相似的分析……都缺少不了专家的论证,这也是一般普通观察者难以胜任的。这是计算机软件本身技术特征所决定的。在软件版权纠纷处理方面,专家的论证已显示出越来越重要的作用。

四、结束语

综上所述,美国法律界近年来的一个明显倾向是,在有关软件开发中的版权问题方面,缩小了版权保护范围,为新软件的开发者提供了更广阔的天地,更宽松的环境。

软件开发论文范文篇6

关键词:计算机CAD软件开发暖通行业软件

0引言

随着计算机技术的发展及广泛应用,暖通行业中计算机的使用也越来越广泛。计算机的使用不仅可以解决原来人工很难完成的任务,如精确的数值计算,环境参数模拟等,更重要的是它加快了设计者的工作效率,可以使工程师高效率高质量的完成设计工作。

目前计算机在暖通领域的应用主要有CFD(计算流体力学)技术,CAD(计算机辅助设计)技术等。前者主要是一些科研机构做流体仿真的研究,用来模拟建筑环境参数的分布状况。而后者正是广大设计单位日常使用频率最高的实用性技术。本文主要讨论后者的发展概况和国内存在的问题,最后笔者根据自己的CAD实践经历提出一种面向实用的CAD软件开发思路。

CAD技术在设计院中的应用主要体现在两个方面。一方面为计算机辅助计算,这主要是解决在设计中的负荷计算,水力计算,湿空气分析等问题。另一方面为计算机辅助绘图,这主要是代替过去费时、费力的手工绘图。方案阶段可以手工示意,初步设计和施工图及最后的竣工图一般单位都要求计算机出图。

1发展概况

在我国,计算机应用于暖通领域起步于80年代。当时主要精中在辅助计算上,主要包括冷热负荷计算,水力平衡计算等。主要使用的语言为FORTRAN,BASIC等高级语言。由于计算工作的基础和规律性很强,有固定的计算公式,与计算机特征相吻合,到80年代末暖通的计算程序已基本定型。在以后的发展过程中这些程序只做了进一步的完善和语言上的调整,没有本质变化。本阶段的代表人物为陈在康,武建勋,施鉴诺及他们合著的<<暖通计算机方法>>,该书曾在一些高校被列为暖通专业规定的选修课。

在80年代后期国内出现了美国AutoDesk公司的AutoCAD绘图软件,它以普通的PC为平台,拥有强大的绘图功能和稳定的系统结构。基于以上的特点AutoCAD开始在国内一些机构被学习和使用。AutoCAD的使用可以说是暖通CAD历史上的一次飞跃。至今为止,AutoCAD已成为世界上使用率最高的CAD软件。

国内暖通绘图CAD的应用是随着建筑CAD的发展而发展起来的,80年代末,由于国家有关部门的重视,许多单位开始进行建筑CAD的研制与开发,并且很快形成了一定的规模,在此基础上暖通计算机绘图也迅速崛起,并渐渐和建筑CAD脱离,至90年代初形成了多套相对完整、独立的暖通软件包。这些软件包主要功能包括:建筑条件图的绘制、冷热负荷计算、供暖空调平面图与系统图的绘制和自动生成,在一定程度上满足了设计人员的需要。这时期的软件基本上有两种平台。一是自己独立的软件平台,但是与AutoCAD的数据共享比较困难。而更多的是在AutoCAD基础做出的二次开发。这时期比较著名的软件有国家机械委北方设计研究院开发的暖通CAD系统,北京华远公司开发的HOUSE软件包及铁道部6个设计院联合开发的HVAC-CAD软件包。

随着计算机硬件技术的不断进步,硬件已不再是计算机在暖通领域上应用的障碍。人们研究的重点都精中在了应用于暖通的计算机软件开发上。到了90年代,由于有多种方便又快捷的计算机高级语言的出现,编写面向暖通方面应用的计算程序已相对简单,并且可以方便的制作出友好的人机交互界面。甚至一些普通的编程爱好者就都可以独自完成焓湿图分析,负荷计算,水力计算等软件。这时一些科研机构就把精力转到了CFD这项国外一直比较领先的技术上,开始学习和研究一些国外的流体分析软件。

在进入21世纪的同时,我们经历了整个世界信息化和网络化带来的变革。整个世界的信息交流变的比从前任何时期都方便,这时如何实现数据的共享和快速的得到软件更新的问题又摆在了开发者的面前。国内一些高校又开始了CAD应用集成及网络化的研究。由于国家对建设的投入,工程建设中工作量的日益增加,加快了对绘图速度的要求。国内出现了更多的CAD辅助绘图软件,而在暖通方面,发展完善和应用较多的基本上都是在AutoCAD平台上二次开发的软件。上世纪开发出的软件又进一步得到了完善,而其中一些则是从其它软件中脱影而出,以其高度的集成性和一体化程度在国内的市场上杀出了自己的一片天空。目前国内常用的软件我们看到的有建研院的ABD软件包、北京(洛阳)鸿业公司的ACS软件包、北京天正公司的THvac软件包等。

相比之下,国内的CAD技术要比国外一些发达国家落后,这主要还是体现在自动化程度不高和图纸深度不够两方面。国外的暖通设计工作相对建筑设计比较独立,如在英国和日本专门从事建筑设备设计的设计院很多。这些单位往往只做建筑工程中除土建方面的设计工作,这些工作又分为空调、给排水(日本称卫生)、电气的设计。由于发达国家强调建筑以人为本宗旨,建筑的室内标准要求又偏高,整个建筑在设计过程中的投入就会很大。这就使得暖通设计更加独立和分工,相对的暖通软件也比较独立。这些软件很多都是在施工单位对图纸作进行深化时使用,图面表达非常接近施工。在英国的CAD软件很多,面向建筑设备的有400多种,其中面向暖通空调的有100多种。它们当中多数是辅助完成某种计算的独立软件。而辅助绘图用的也是独立平台的集成软件,它可以先前将建筑的AutoCAD的图纸输入作为条件图,再进行设备图的绘制。其中应用较广的是Hevacomp和Cymap公司的CADlink软件。日本对暖通设计图纸深度要求很高,施工图一般都出到1:50的比例甚至更高。使用的软件也多是独立平台的2.5维的设计软件。当前应用较广的绘图软件有CADWe''''llCAPE、CADWAEvolution等。总而言之,以上两个国家在暖通CAD方面,由于有功能强大的软件支持,施工图纸深度和国内图纸都有质的差别。

2国内存在的问题

虽然国内一些科研机构在很早就开始了计算机辅助设计的研发,但是就目前的市场应用来看,国产软件正在困惑中求生存。国内钻研CAD的多数都面向机械行业,要不就是面向建筑行业的。所以迄今为止,国内还没有一家真正独立平台的暖通CAD软件能够占有一定的市场。暖通行业中几乎都是AutoCAD的天下,从工作效率到出图的质量我国的CAD水平明显和国外存在着一定的差距。即使是二次开发的软件,一些单位往往刚拿到手时的争相学习,然后不过多久,人们就又回到了最原始的AutoCAD。分析其中的原因,应该说是多方面的。笔者根据自己的CAD应用和工程设计实践总结出以下几点,以供参考。

2.1标准有待普及和完善

标准化是实现暖通空调CAD系统集成化,并提高开发效率的关键问题之一。国际标准化组织(ISO)和国内一些机构已经对CAD的标准化工作做过很多的深入,但是针对暖通行业方面的CAD标准化工作近几年才开始有人探讨,离步入应用阶段还相距甚远。由于标准相对落后,从事设计的相关人员很难做到一些软件的数据共享,造成重复的数据输入工作。由于相关的图纸深度及表达方式没有统一要求,造成一些软件不适合有自主样式的设计单位使用。软件开发者也不知用什么样的数据输出方式和绘图样式才能得到用户的认可。

目前国内也存在暖通CAD软件与设计相关的技术规程接合不紧密的问题,例如没有使用技术规程指定的负荷计算方法,计算书样式等。一些软件的计算结果也没有经过可信度的认证。在制图方面,相关的制图标准也有待完善,如现行GB/T50114-2001暖通空调制图标准也只是针对当时手绘时期中一些主要的表达方式作了规范。目前还没有一本专门针对计算机制图,且能充分发挥计算机绘图特长的制图标准面世。如GB50114-2001中对制图时的线宽要求是b、0.25b、0.5b,这很难实现计算机和手绘的通用,特别是对日常打印机绘图很难适用。再如双线风管是否画中心线,各种设备在图面上如何表达,标号如何制定,图层名如何设置都没有明确的说明,这就造成了各单位的图面格式不统一,图层和图元样式相对杂乱的局面。

2.2体制完善和重视程度不够

国内的暖通设计工程师多数都是在建筑设计院工作,制定标准的单位一般也是建筑的科研单位或主管部门。这就给一些人造成了一个误解,他们总以为暖通只是一个与建筑配套的工种。有的人会说“人家建筑的图纸也没有那么多讲就,就甭说我们暖通了。制定绘图标准也是他们建筑的带头,不用我们暖通掺和了”。实际上这种看法是很不理智的。虽然暖通没有建筑专业的出图量多,但暖通专业必竟在图纸特点和计算机的应用上有比较接近机械的特点,所以我们更应该以自己的专业职责去对待自己的成果。特别是暖通CAD涉及到的参数之间关系众多,相对其它专业,暖通专业更应该注重各系统之间的关系和具体的实现形式。

现实中一些人还认为:“计算书只是一个形式,我有那么多年设计经验了,估的比你算的都准。”还有些人认为:“设计院画的太细了没用,到了现场可能改的面目全非,还要有多年安装经验的人才能施工。”还有人甚至认为:“一个简单的系统,根本不要计算机画图,找个老师傅比划两下都能做的出。年轻人把电脑摆弄的再好,也不如老师傅两句话”。由于专业本身的特点,以上的观点在一定程度上有其合理的一面。但我们更应该看到,随着我们现代化建设的加速发展,仅仅几个老师傅怎能满足大量工程建设工作的需要。从另一方面讲,经验和技术是相辅相成的,如果我们通过优秀的软件在图纸上解决了所有的问题,问题不再会压到施工安装上去了,那时施工单位也就不再去急需寻找老师傅了。所以在现阶段,优秀的CAD绘图软件还是必不可少的,这应该引起更多人对它的重新认识。

在其它一些国家,设计院出图只出到设计阶段,不出施工图。这里的设计阶段不代表国内的扩初设计或初步设计,这一阶段如果和国内的施工图阶段相比,只是没有给出定位和标高,管道的具体连接方法和施工也有一定的距离,可是设备表和系统图都很详尽。他们所谓的施工图一般是指施工单位(国内的安装公司)另外进行深化后的图纸。这里的施工图纸就应该和实际非常接近了,它一般只包括平面图和机房详细图。由于是在设备施工前期出图,建筑和结构和资料也相对比较完善。日本的施工图上都会把梁精确的表示出来,建筑资料中也会有明确的吊顶高度及灯的布置资料。以上这些资料,就使得对施工图纸的绘制有了更确切地把撑。正是有了国外这种体制的存在,很大程度上给绘制精确施工图的软件带来了发展空间,并且软件也能够真正地满足施工统一、拍图完整的要求。我们从国外的一些经验可以看出,对于国内的一些安装公司,如果单凭设计院出的图纸无法完成安装的话,就必须进行再深化。综上所述,这也是我国建筑和设备安装行业的一些体制问题,我们也期待着这种体制更进一步的完善。

2.3开发导向有误区

软件开发者应该从暖通工程师实际要求出发,并且最好有一定的设计经验再去从事开发工作,就会对开发方向有更大的把握。在笔者接触到过的一些国产软件当中,发现很多软件经常会犯一个通病。那就是往往在操作上追求华丽,以能一瞬间自动完成某些连接,或绘出三维图型而自豪,恕不知某些连接或样式在现场根本无法安装实现。这就造成了软件中看不中用的后果。

开发暖通软件不同于开发建筑软件,建筑软件多数只是图面表达上追求快捷和华丽。而暖通专业中的每个图形元素(我们或将其称作管道及部件)都具有一定的扩展实体参数。如记载管道材质,重量,用途,风量等参数。相连接的部件参数的如何交换、套用、合算都存在着很深的专业性。这要求软件开发者要同设计院、科研单位、施工单位进行广泛和深入的交流。由于这些原因,有时一些以建筑辅助设计软件开发为主的公司的是很困难完成上述要求的。

对于以上存在的问题,就希望开发者在开发前期多作论证,作好方案,提出合理可行的现实手段和预期目标。避免不假思索地去写代码,否则到最后就会得到费了很多力却没有得到别人认可的后果。

3面向实用的软件开发

对于发展国内的暖通CAD技术,笔者认为应该从两方面入手。一方面小规模的设计单位可以聘用专门的CAD技术人员,制定适合自己的出图样式,根据自己的标准来做二次开发的技术支持。只有这样做,最后的出图质量才能得到根本性的提高。另一方面大规模的设计院和国家有关部门也应投入资源去开发有我国自主知识产权的独立平台CAD软件,特别是对CAD出图的标准和深度应该有更明确的规范。下面笔者就以上述两种CAD类型软件的开发作为立足点,提出面向实用的软件开发思路及开发过程中应注意的事项。

3.1二次开发和样式制定

二次开发主要是指开发应用于AutoCAD基础上的插件,用户必须先在计算机上安装Autodesk公司的AutoCAD,之后再运行开发出的暖通工具包,最终加强AutoCAD的功能,使AutoCAD适合暖通绘图,以及符合自己公司制定的绘图样式。AutoCAD在R14版本之后就有很强的开放性和扩展性,允许用户方便的进行自定义和二次开发。并且在AutoCADHelp文档中有详细的参考和教程,便于用户查阅和学习。

目前面向AutoCAD二次开发的主要工具有AutoLISP/VisualLISP、VB/VBA的ActiveX及C/C++的ObjectARX。其中前两种比较适合个人开发和短期开发,后一种适合软件公司的长期开发项目。这里主要推荐前两种语言,部分原因是因为在AutoCAD中集成了两种语言的开发环境,并且有详细的帮助文件。LISP语言是人工智能学科领域中广泛采用的一种程序设计符号语言。这种语言在参数化绘图中有很大的灵活性,并且可以实现一定的人工智能。LISP开发出的程序可以象运行CAD普通命令一样在命令行中直接键入自己定义的命令运行,保持了用户的绘图习惯。VisualBasic(简称VB)是Microsoft公司开发的面向对象的Basic程序设计环境。它沿用了大家熟悉的Basic语言的语法和习惯,又引入了面向对象的程序设计理念和功能强大的调试环境,使编程效率和操作智能化程度有了明显的提高。特别是它引入的ActiveX技术,使的很多其它的应用程序与之有了相应的接口,且通过面向对象的操作,使程序有了更高效、更明确的实现途径,以及更容易完成各种其它应用程序之间的交互。VB本身简单易学,可以很快的制作出对话框和用户界面,是很多编程爱好者的首选。

二次开发的首要步骤是制定暖通绘图环境,就是指在绘图初期对新建图形中的一些参数进行初始化设置,这很像AutoCAD中模板的概念。类似建立一个暖通绘图的模板,当然这里的模板比AutoCAD中模板包含的数据要多。加载绘图环境也不像是在AutoCAD中打开模板,而是通过命令来实现的。加载好的环境有自己的操作界面,同时按要求新建一个空文档,再在其中绘出必要的图形元素。绘图环境可以根据绘图的比例和种类进行分类命名。当用户开始作图时,按作图要求加载既可,如可以建立像“风管平面图1/100”、“配管平面图1/100”、“水系统流程图”一样的绘图环境。

绘图环境中可以按自己的暖通设计特点定义菜单和工具栏的布置,如绘制平面图时出现平面图用工具栏,绘制详细图时出现详细图用工具栏。绘图环境设定好后,即绘出图框、设定好了图层、文字样式、标注样式、打印样式等。同时进行建筑设计的设计单位图框需要和建筑专业保持一致。专门的暖通设计单位可以自己编制,介意使用包含公司标志且占图面整边的标题栏。图层应该根据图面元素的种类进行分类,分层也不易太多,一般按定位轴线、建筑底图、房间名称、机器、风管、水管、标注等分层即可,层名一般按英文简写编制。文字、标注等样式一般按房屋建筑制图统一标准(GB/T50001-2001)、暖通空调制图标准(GB/T50114-2001)选取。

二次开发当中最核心的工作之一就是辅助绘图命令的开发。怎样让用户通过软件的应用使绘图更标准化,高效化是衡量软件成败的关键。当然做这些工作的前提是统一公司内部的图面样式,这里包括图面中一些细节因素表示方法的统一。如风管法兰要画几根线,中心线超出边界的长度,隐线处理的方法、常用图例的尺寸等。

辅助绘图命令中的一部分可以称为辅助操作命令,如对图层的快速操作、对象的过滤和编辑等。这些命令有时在Autodesk的Express中也有包含,如孤立一个层、显示所有层等。这些辅助操作使绘图过程更佳合理化,高效化。基本的暖通绘图命令应该包括风管绘制、风阀风口插入、水管绘制、管径标注、标号插入等。这其中包含的一些具体连接的处理方式一定要和现场施工保持一致。二次开发的初期一般不把风管,水管生成块,以追求修改的方便。辅助命令中的快速标注,可以方便地标出管道种类、标高、管径等。一些辅助绘图命令以可以是常用符号(即块)的插入等,如水管上下翻标记等图例符号的插入。

二次开发中一个长期的工作是常用图库的建立。常用图库可以按类别进行多级分类,如分为“风口”、“机器”这样的大类,“机器”又包含“风机”、“空调机”、“泵”这样的中类,“风机”中又包含“离心风机”、“轴流风机”这样的小类。这些图库应该对于用户具有一定的开放性,允许用户自己增加、改修图形。这些图形也可以通过厂家得到完全符合实际尺寸的样本来建立。图形单元插入时,图形应以块的形式插入,以追求修改的方便。

软件开发论文范文篇7

[关键词]知识创新SECI模型软件开发团队

一、引言

软件开发团队是软件研发企业中最常见的项目团队,一个软件从构想到真正出现在市场上,需要大量的从事不同工作的人共同努力,因此,软件研发企业目前的产品生产管理主要是以“项目”为主而进行运作。软件开发作为一项知识密集型的智力劳动,客观上要求必须对团队内部的知识进行系统的挖掘与利用,从而不断产生新的知识,才能保证高质量地完成开发任务。同时,软件开发团队是以特定客户为中心的任务导向团队,开发任务目标完全以用户需求为中心,开发任务的约束条件以客户要求为准,不能完全参考以往的任何模式,因此软件开发团队对知识创新的需求十分明显。本文对软件开发团队的知识创新进行分析,提出促进软件开发团队知识创新的措施。

二、基于SECI模型的软件开发团队知识创新

日本学者野中郁次郎在1991年提出了经典的知识创造模型——SECI模型,描述了在一个组织内部隐性知识和显性知识相互转化从而实现组织知识创新的过程。本文运用SECI模型,对软件开发团队的知识创新分析如下:

1.软件开发团队在社会化知识活动中的知识创新

软件开发团队中每个成员都有自己的隐性知识,而这些知识需要在与他人的交流中观察、感觉才能进行分享。由此,社会化模式通常是从设立一个互动的“范围”开始,在这个范围内促进成员经验和心智模式的分享。在软件开发团队中,社会化主要通过团队领导者积极的示范和指导、合理调整团队的结构,以及交叉培训等方式进行,以促进知识共享与创新。

2.软件开发团队在外化知识活动中的知识创新

外化(Externalization)过程是从个体的隐性知识到群体的显性知识的过程。由于外化从隐性知识创造出新的显性知识,所以它对知识创新至关重要。在软件开发团队中,外化过程一般由“对话或集体思考”开始,通过各种技术手段,将团队成员个人的隐性知识显性化,并融入到团队显性知识库中,以供整个团队利用。

3.软件开发团队在联结化知识活动中的知识创新

联结化(Combination)是从分离的显性知识到系统的显性知识的过程。软件开发团队中的管理者经常会收集不同来源的显性知识,并使用这些经过编辑的显性知识来创造新概念,另外,在开发工作中,也贯穿着知识的联结化活动。这个过程要求对团队内部的显性知识进行整合,在团队内部建立独特的知识系统,以便更好地整理团队内部的显性知识。4.软件开发团队在内化知识活动中的知识创新

内化(Internalization)过程是从显性知识到成员个人的隐性知识的过程。在软件开发团队中,项目计划,以及开发过程中的错误、经验,都记录在各种各样的文档中,这些构成了团队的显性知识,但要想让团队成员合理地利用这些知识,只有成员们真正地消化、吸收,使其转化为自身的隐性知识。这一过程可以通过组织培训,使团队成员通过学习各种手册、文件,以及他人的经验,扩充自己的隐性知识,促进知识创新。

三、促进软件开发团队知识创新的措施

软件开发团队可采取以下措施促进知识创新:

1.构建学习型的软件开发团队

其中首先是要建设有利于知识分享与创新的团队文化,其次是通过各种信息技术手段为团队成员学习提供便利。文化从意识形态层面对知识型员工的行为产生影响,在组织中营造浓厚的尊重知识和共享知识的氛围,为知识创新提供了无形的拉力。一方面,要保证团队内部畅通的沟通渠道,另一方面,通过建立各种激励机制,促使作为知识发送方的团队成员在已形成的“Ba”中自愿地贡献出自己的知识。这样就达到全体成员都乐于参与知识共享,最终发展成知识共享型组织文化(即学习型团队)的目的,从而促进了团队知识社会化及外化活动。

2.建立团队知识库系统

这涉及到知识的外化和联结化活动,并且为内化提供了有利条件,主要可以借助以下信息技术:①文档管理技术。利用文档管理技术,坚强团队知识分享,促进团队知识创新。②数据仓库与数据挖掘技术。这一技术通过将团队成员个人的隐性知识显性化,并融入到团队显性知识库中,为团队内部成员提供更多显性知识。

3.构建实践社区

在团队中构建实践社区,使团队成员在日常实践活动中相互影响,交流经验,就共同关注的问题进行探讨,共同解决问题,以便更好地挖掘隐性知识的价值。可借助信息技术,如知识协作技术,进行协同管理,通过建立内部网络,提供知识积累、交流的基本平台,其中对软件开发团队影响最大的是基于因特网这样的协作技术,包括电子邮件、短信服务、即时通信等网络交流工具,使各层级的成员都可以及时、方便地交流。

参考文献:

[1]IkujiroNonaka,RyokoToyama,NoboruKonno.SECI,BaandLeadership:AUnifiedModelofDynamicKnowledgeCreation.LongRangePlanning,2000(33):5-34

软件开发论文范文篇8

论文摘要:计算科学主要讲述了一种科学的思想方法,计算科学的基本概念、基本知识它的发展主线、学科分支、还有计算科学的特点、发展规律和趋势。

引言:随着存储程序式通用电子计算机在上世纪40年代的诞生,和计算科学的快速发展以及取得的大量成果。计算科学这一学科也也应运而生。《计算科学导论》正如此书的名字,此书很好的诠释了计算科学这一学科,并且指导了我们应如何去学好这一学科。使得我们收获颇多。并且让我深深的反思了我的大学生活。正如赵老师书中所讲的:“计算科学是年轻人的科学,一旦你选择了计算科学作为你为之奋斗的专业类领域,就等于你选择了一条布满荆棘的道路。一个有志于从事计算科学研究与开发的学生,必须在大学几年的学习中,打下坚实的基础,才有可能在将来学科的高速发展中,或在计算机产品的开发和快速更新换代中有所作为。

<一>什么是计算科学和它的来历

计算科学主要是对描述和变换信息的算法过程,包括其理论、分析、设计、效率分析、实现和应用的系统研究。全部计算科学的基本问题是,什么能(有效的)自动运行,什么不能(有效的)自动运行。本科学来源于对数理逻辑、计算模型、算法理论、自动计算机器的研究,形成于20世纪30年代的后期。

随着存储程序式通用电子计算机在上世纪40年代的诞生,人类使用自动计算装置代替人的人工计算和手工劳动的梦想成为现实。计算科学的快速发展以也取得大量成果,计算科学这一学科也也应运而生。

<二>计算科学的发展

a、首先先介绍图灵机

图灵机的发明打开了现代计算机的大门和发展之路。图灵机通过一条两端可无限延长的袋子,一个读写头和一组控制读写头的(控制器)组成它有一个状态集和符号集,而此符号集一般只使用0和1两个符号。而就是这个简洁的结构和运行原理隐含了存储程序的原始思想,深刻的揭示了现代通用电子数字计算机的核心内容。现在通用的计算机是电子数字计算机,而电子数字计算机的发展是建立在图灵机的基础之上。他的二进制思想使计算机的制作的简化成只需两个稳定态的元器件。这在今后的计算机制作上无论是二极管或集成电路上都显示了明显的优越性。

b、计算机带动的计算学科

1946年随着现代意义上的电子数字计算机ENIAC的诞生。掀起了社会快速发展的崭新一页。计算机工作和运行就摆在了人们的面前。

1、计算机语言

我们要用计算机求解一个问题,必须事先编好程序。因此就出现了最早的机器指令和汇编语言。20世纪50年代后,计算机的发展步入了实用化的阶段。然而,在最初的应用中,人们普遍感到使用机器指令编制程序不仅效率低下,而且十分别扭,也不利于交流和软件维护,复杂程序查找错误尤其困难,因此,软件开发急需一种高级的类似于自然语言那样的程序设计语言。1952年,第一个程序设计语言ShortCode出现。两年后,Fortran问世。作为一种面向科学计算的高级程序设计语言,Fortran的最大功绩在于牢固地树立了高级语言的地位,并使之成为世界通用的程序设计语言。Algol60的诞生是计算机语言的研究成为一门科学的标志。该语言的文本中提出了一整套的新概念,如变量的类型说明和作用域规则、过程的递归性及参数传递机制等。而且,它是第一个用严格的语法规则——巴科斯范式(BNF)定义语言文法的高级语言。还有用于支持结构化程序设计的PASCAL语言,适合于军队各方面应用的大型通用程序设计语言ADA,支持并发程序设计的MODULA-2,支持逻辑程序设计的PROLOG语言,支持人工智能程序设计的LISP语言,支持面积对象程序变换的SMALLTALK、C等。

2、计算机系统和软件开发方法

现代意义上的计算机绝不是一个简单的计算机了而也包括了软件(系统软件、应用软件)。各种各样的软件使得计算机的用途大大增强。而软件开发也成为了一个重要课题和发展方向。软件开发的理论基础即是计算模型。随着计算机网络、分布式处理和多媒体的发展。在各种高级程序设计语言中增加并发机构以支持分布式程序设计,在语言中通过扩展绘图子程序以支持计算机图形学程序设计在程序设计语言中已非常的流行。之后,在模数/数模转换等接口技术和数据库技术的支持下,通过扩展高级语言的程序库又实现了多媒体程序设计的构想。进入20世纪90年代之后,并行计算机和分布式大规模异质计算机网络的发展又将并行程序设计语言、并行编译程序、并行操作系统、并行与分布式数据库系统等试行软件的开发的关键技术依然与高级语言和计算模型密切相关,如各种并行、并发程序设计语言,进程代数,PETRI网等,它们正是软件开发方法和技术的研究中支持不同阶段软件开发的程序设计语言和支持这些软件开发方法和技术的理论基础----计算模型

3、计算机图形学

在计算机的硬件的迅速发展中。随着它的存储容量的增大,也掀起了计算机的巨大改革。计算机图形学、图像处理技术的发展,促使图形化界面的出现。计算机图形学是使用计算机辅助产生图形并对图形进行处理的科学。并由此推动了计算机辅助设计(CAD)、计算机辅助教学(CAI)、计算机辅助信息处理、计算机辅助测试(CAT)等方向的发展。图形化界面的出现,彻底改变了在一个黑色的DOS窗口前敲代码输入控制命令的时代。同时也成就了一个伟大的公司Microsoft。

4、计算机网络

随着用户迫切需要实现不同计算机上的软硬件和信息资源共享。网络就在我们的需求中诞生了。网络的发展和信息资源的交换使每台计算都变成了网络计算机。这也促进计算机的发展和广泛应用。

<三>计算机学科的主线及发展方向

围绕着学科基本问题而展开的大量具体研究,形成学科发展的主流方向与学科发展主线和学科自身的知识组织结构。计算学科内容按照基础理论、基本开发技术、应用以及他们与硬件设备联系的紧密程度分成三个层面:

1、计算科学应用层

它包括人工智能应用与系统,信息、管理与决策系统,移动计算,计划可视化,科学计算机等计算机应用的各个方向。

2、计算科学的专业基础层

它是为应用层提供技术和环境的一个层面,包括软件开发方法学,计算机网络与通信技术,程序设计科学,计算机体系结构、电子计算机系统基础。

3、计算科学的基础层

它包括计算科学的数学理论,高等逻辑等内容。其中计算的数学理论涵盖可计算性与计算复杂性理论形式语言与计算机理论等。

<四>计算机的网络的发展及网络安全

(1)计算机网络与病毒

一个现代计算机被定义为包含存储器、处理器、功能部件、互联网络、汇编程序、编译程序、操作系统、外部设备、通信通道等内容的系统。

通过上面定义,我们发现互联网络也被加入到计算机当中。说明了网络的重要以及普及性。21世纪是信息时代。信息已成为一种重要的战略资。信息科学成为最活跃的领域之一,信息技术改变着人们的生活方式。现在互联网络已经广泛应用于科研、教育、企业生产、与经营管理、信息服务等各个方面。全世界的互联网Internet正在爆炸性的扩大,已经成为覆盖全球的信息基础设施之一。

因为互联网的快速发展与应用,我们各行各业都在使用计算机。信息安全也显得格外重要。而随着计算机网络的发展,计算机网络系统的安全受到严重的挑战,来自计算机病毒和黑客的攻击及其他方面的威胁也越来越大。其中计算机病毒更是很难根治的主要威胁之一。计算机病毒给我们带来的负面影响和损失是刻骨铭心的,譬如1999年爆发的CIH病毒以及2003年元月的蠕虫王病毒等都给广大用户带来巨大的损失。

我们想更好的让计算机为我们服务,我们就必须很好的利用它,利用网络。同时我们也应该建立起自己的防护措施,以抵抗外来信息的侵入,保护我们的信息不受攻击和破坏。

(2)计算机病毒及它的防范措施:

计算机病毒是一组通过复制自身来感染其它软件的程序。当程序运行时,嵌入的病毒也随之运行并感染其它程序。一些病毒不带有恶意攻击性编码,但更多的病毒携带毒码,一旦被事先设定好的环境激发,即可感染和破坏。

<一>、病毒的入侵方式

1.无线电方式。主要是通过无线电把病毒码发射到对方电子系统中。此方式是计算机病毒注入的最佳方式,同时技术难度也最大。可能的途径有:①直接向对方电子系统的无线电接收器或设备发射,使接收器对其进行处理并把病毒传染到目标机上。②冒充合法无线传输数据。根据得到的或使用标准的无线电传输协议和数据格式,发射病毒码,使之能够混在合法传输信号中,进入接收器,进而进人信息网络。③寻找对方信息系统保护最差的地方进行病毒注放。通过对方未保护的数据链路,将病毒传染到被保护的链路或目标中。

2.“固化”式方法。即把病毒事先存放在硬件(如芯片)和软件中,然后把此硬件和软件直接或间接交付给对方,使病毒直接传染给对方电子系统,在需要时将其激活,达到攻击目的。这种攻击方法十分隐蔽,即使芯片或组件被彻底检查,也很难保证其没有其他特殊功能。目前,我国很多计算机组件依赖进口,困此,很容易受到芯片的攻击。

3.后门攻击方式。后门,是计算机安全系统中的一个小洞,由软件设计师或维护人发明,允许知道其存在的人绕过正常安全防护措施进入系统。攻击后门的形式有许多种,如控制电磁脉冲可将病毒注入目标系统。计算机入侵者就常通过后门进行攻击,如目前普遍使用的WINDOWS98,就存在这样的后门。

4.数据控制链侵入方式。随着因特网技术的广泛应用,使计算机病毒通过计算机系统的数据控制链侵入成为可能。使用远程修改技术,可以很容易地改变数据控制链的正常路径。

<二>病毒攻击的防范的对策

1.建立有效的计算机病毒防护体系。有效的计算机病毒防护体系应包括多个防护层。一是访问控制层;二是病毒检测层;三是病毒遏制层;四是病毒清除层;五是系统恢复层;六是应急计划层。上述六层计算机防护体系,须有有效的硬件和软件技术的支持,如安全设计及规范操作。

2.严把收硬件安全关。国家的机密信息系统所用设备和系列产品,应建立自己的生产企业,实现计算机的国产化、系列化;对引进的计算机系统要在进行安全性检查后才能启用,以预防和限制计算机病毒伺机入侵。

3.防止电磁辐射和电磁泄露。采取电磁屏蔽的方法,阻断电磁波辐射,这样,不仅可以达到防止计算机信息泄露的目的,而且可以防止“电磁辐射式”病毒的攻击。

4.加强计算机应急反应分队建设。应成立自动化系统安全支援分队,以解决计算机防御性的有关问题。

很多公司都有因为电脑被入侵而遭受严重经济损失的惨痛经历,不少普通用户也未能避免电脑被破坏的厄运,造成如此大损失的并不一定都是技术高超的入侵者所为,小小的字符串带给我们的损失已经太多。因此,如果你是数据库程序开发人员、如果你是系统级应用程序开发人员、如果你是高级计算机用户、如果你是论坛管理人员......请密切注意有关字符漏洞以及其他各类漏洞的最新消息及其补丁,及时在你的程序中写入防范最新字符漏洞攻击的安全检查代码并为你的系统安装最新的补丁会让你远离字符带来的危险。经常杀毒,注意外来设备在计算机上的使用和计算机对外网的链接。也可以大大有效的避免计算机被攻击。

<五>总结

在学了计算科学导论之后,让我更深入的了解了我将来要从事的学科。计算科学导论指导着我们该怎么学习计算机。让我更清楚的知道我们信息安全专业的方向。正如计算科学这座大楼一样,在不断的成长。信息安全也必将随着网络的进一步发展而更多的被人们重视。总之学习了这门课之后让我受益匪浅,也知道自己应该好好努力,争取在自己的专业领域上有所成就。

参考文献:

1、《计算科学导论》(第三版),赵志琢著,科学出版社2004版

2、《计算机病毒分析与对抗》傅建明彭国军张焕国编著武汉大学出版社2004版

软件开发论文范文篇9

计算机软件开发过程的质量问题原因分析

计算机软件开发过程中总是存在着各种问题,导致了软件开发质量较低,所以才需要进行开发质量的项目管理。造成计算机软件开发质量的原因有很多中,大致如下所述。对用户需求了解不足用户的软件需求直接决定了软件的质量,是关系到软件质量的一个重要因素。如果在软件开发过程中对于用户的要求掌握不足,就会导致开发出的软件达不到原有的效果,也就不能够实现软件的正确性,无法满足客户的要求。但是,对于软件的要求并不是能够轻易的显现出来的,它需要一个长期沟通了解的过程,要保证在软件开发开始之前就掌握了客户的相关需求,方便在开发过程中逐步渗透进去,在开发的过程中也需要及时的了解客户反馈过来的意见,并及时改正,做到开发前、开发中、开发后都充分地掌握客户的需求。开发工作的规范性较差由于计算机软件开发过程中可能会出现质量指标无法量化的现象,所以,如果开发的质量不过关也无法直接追究开发人员的责任,所以,计算机软件开发者在开发软件过程中就不会注意开发工作的规范性,把关心的重点放在了速度和成本上,忽视了质量。更严重的是有些开发人员为了追求速度,很多开发工序并没有按照计划或者规范进行,这种跨越式的软件开发工作就无法保证开发的系统性和科学性,也就无法保证开发质量。开发技术人员和管理人员问题软件开发过程中,为了保证开发质量,需要技术人员和管理人员时常进行沟通交流,如果沟通受到阻碍,那么,软件开发中出现的各种问题就无法得到统一的认识和理解,也就会影响计算机软件开发质量。除此之外,如果在软件开发中出现了人员的流动,也会给计算机软件的开发带来不利的影响。

计算机软件质量的项目管理对策

软件开发论文范文篇10

关键词:网络处理器软件开发模型微引擎微模块核心组件

引言

随着当今网络规模和性能迅速增长,Internet主干网络流量的指数性增长及新业务接连的出现,这就要求网络设备具有线速和智能的处理能力。网络处理器NP(NetworkProcessor)便是一种新兴、有效的统一解决方案。它适用于各层网络处理,具有ASIC高速处理性能和可编程特性,既能保证系统灵活性,又能完成线速处理数据包所要求的高性能硬件功能。目前,网络处理器已经涌现出了一些成功的应用范例。这些应用主要包括:基于网络处理器的路由交换设备、智能安全设备和入侵检测设备等。比如,北京联想使用IBM的PowerNP构成了电信级的防火墙设备。与此同时,围绕着网络处理器应用展开的相关研究也得到了飞速发展,一些企业和科研机构也给予了足够重视。例如,Intel专门投资支持全球100所大学进行网络处理器及其相关应用的研究。

由于网络处理器特殊的体系结构,它的软件编程模型与传统网络应用/嵌入式应用开发有较大不同,更为复杂。本文将以IntelIXP2400网络处理器为例,对网络处理器软件开发模型进行较为详细地探讨。

1网络处理器硬件架构

在一般程序设计中,可以不考虑操作系统和编译程序、线程调度的细节、寄存器的数量和容量,而在网络处理器的程序设计中,忽略这些因素就不能编写出优化的程序。在对网络处理器,尤其是微引擎编程之前,需要仔细了解网络处理器的系统结构和硬件平台。下面以Intel的IXP2400为例来说明。

IXP2400网络处理器是Intel在2002年推出的第二代互联网交换架构(IXA)网络处理器。其中,IXP2400是面向中高端应用的网络处理器,可用于实现OC-48的网络路由交换设备。

Intel的IXP2400网络处理器结构允分体现了SoC(SystemonChip)的思想。如图1所示,它的内部主要包括8个完全可编程的4线程微引擎(Mev2)和1个XScale核。此外,还有用于连接外部MAC设备的MSF单元、连接各种存储器和总线的接口单元等。这些单元通过内部的高速数据总线和控制总线彼些协作。

XScale核(core)是ARM系列处理器的一种,它在IXP2400中起控制和管理作用。具体包括:对系统初始化;提供系统的时钟;建立并管理路由表;提供一个对应于IXP2400各寄存器、存储器和外部存储器的地址映射表等。XScale核在系统启动时,从BootROM开始执行引导程序,对整个IXP2400系统进行初始化。

IXP2400中的每一个微引擎其它就是一个32位RISC处理器,可以由4个并行硬件线程共享。数据包的接收、处理和发送等任务,均由微引擎中的各线程并行执行微引擎指令存储区中的微代码程序来完成。网络处理器数据的高速转发正是因为充分利用了硬件的并行性,来弥补线速转发中的内存访问的延迟。

IXP2400嵌在开发板的中心,周围通过数据线连接着各种设备,如SRAM,SDRAM等。SDRMA主要用来存放需要处理和转发的数据包等,也作为XScale核的内存;SRAM主要存放对数据包包头进行处理所需的重要信息和数据包的队列描述等内容。通过IXP2400的数据单元是一个64字节的MAC包(MPKT),在每收到一个包的时候,MAC将一个数据分成若干个MPKT,MPKT就是网络处理器处理数据的单位。

综上所述,IXP2400拥有网络处理的一般特点,从系统角度看,IXP2400属于一个并行式的多算是器共享总线的计算机系统。对于网络处理器的程序设计和一般计算机的程序设计有很大不同。

2网络处理器软件开发模型

网络设备性能和可编程能力最终由运行在网络处理器平台上的软件决定,其中,选择何种编程模式是关键。评价网络处理器编程模式有两个基本准则:一个是编程模式所能涉及的层,即哪些功能能够编程以及编程能达到的层;另一个重要方面就是处理器衬淫的编程模型。由于网络处理器平台服务于软件功能需要,所以编程方法的关键是在不牺牲设备性能的前提下,使用成熟技术和现有软件模式,保证产品的可靠性,加快开发速度。

基于运行在核心处理器和协处理器的不同硬件之上,网络处理器可分成数据平面与控制平台。

数据平面主要运行在微引擎处理之上,是实现输入端口和输出端口间高速转发数据包的处理功能,具有线速执行特点,并充分利用数据包的无关性,采取并行处理方式。控制平面一般运行在网络处理器核上,处理路由表更新、管理数据平面任务与状态、完成高层的QoS控制等。这些操作的性能要求低于数据层面,因此通常采用高性能通用处理器硬件平台。为了有效支持网络处理功能,控制平面与数据平面之间存在复杂的信息交互与依赖关系。

IXP2400的软件开发也分为内核程序和微代码两部分。XScale内核的开发通常可以使用基于ARM平台嵌入式操作系统开发工具链,如WindRiver公司的Tornado或基于GNU的Linux工具链等;另一部分是对微引擎的编程,这部分使用Intel公司提供的DeveloperWorkbench开发环境,主要使用微代码来进行编程。DeveloperWorkbench提供了完善的编译、链接、仿真和调试功能。为了方便开发人员开发,消除平面之间通信等一些细节,Intel提供了它的网络处理器开发模型,称为IXA可移植框架(portabilityframework)如图2所示。

IntelIXA可移植框架中最重要的组成部分就是在微引擎上和XScale核上开发的代码模型。基于不同硬件上开发的代码模块分别为微模块(microblock)和核心组件(corecomponent)。每一个模块都代表了一个进行包处理的代码单元。这里实际上引入了构件的思想,开发人员将各种模块以一定的顺序组织在一起,组成一个特定的应用。下面分别对框架中的各个层次进行讨论。

(1)微模块

数据平面的微引擎在逻辑上分成一个或多个微模块(microblock)。每一个微模块都是一个宏或者一个微引擎或由Intel提供的一些底层库写成的函数。微模块之间彼此独立,这些就提高了代码的可重用性,同时也简化了微引擎手代码的编写。微引擎与IntelXScale核共享一部分内存,大部分网络包的处理都通过微引擎来进行,一些例外的包将传递给IntelXScale核心组件来处理。微模块从功能上一般包括与一些高层协议相关包的处理微模块和与硬件紧密相关的微模块。前者包括IPv4转发、网桥、网络地址转换(NAT)等;后者包括包的接收和发送模块及分组队列管理模块等。

(2)核心组件

核心组件(CoreComponent)运行在XScale核上,实现了相关微模块的配置、管理和例外处理等工作。一个核心组件可能管理着多于一个微模块。具体来讲,核心组件主要完成以下一些功能:配置微模块(通过引入变量的静态配置和控制模块的动态配置);初始化维护一些可能被其它应用程序修改的数据结构;提供了一个例外处理和控制消息处理机制来处理微模块发送过来的包和消息。

(3)微引擎数据平面优化库

微引擎数据平面优化库(optimizedmicroenginedataplanelibrary)包括一些底层的微引擎宏指令和用微引擎的特殊C语言写的函数库,用来编写微模块和一些微引擎的代码。这些为是经过Intel优化的,非常高效,代码的占用小,同时也是非常底层的。库主要包含三信方面:对处理器硬件单元的操作,比如对微引擎内部的本地内存(localmemory)、临界区(criticalsections)操作等;协议头的解析函数,如IPv4、IPv6协议等;哈希单元的查找,CRC等。

(4)微模块基本设施库

微模块基本设施库(microblocksinfrastructurelibrary)提供了访问暂存包描述符的API,DispatchLoop的实现是通过它来完成的。一个DispatchLoop将运行在一个微引擎内部线程之间的多个微模块组成一个microblock组。关键的地方是,DispatchLoop提供了一种多个微模块之间高效共享包的描述符、包头信息等重要数据结构的方式,实现了多个微模块间的数据传递。DispatchLoop也提供了向其它DispatchLoop也提供了向其它DispatchLoop和XScale核之间发送和接收包的接口。

(5)资源管理库

资源管理库(resourcemanagementlibrary)是XScale核的一个软件组件,它向内核提供了微引擎的API,比如硬件的资源管理接口,大大简化了硬件初始化的任务,配置和资源的共享;微模块与核心组件之间的通信API,开发者屏蔽了微引擎与XScale核之间通道的一些细节。

(6)核心组件基本设施库

核心组件基本设施库(corecomponentsinfrastructurelibrary)为XScale核心组件设计和构造提供了一些底层的API,同时也提供了组件之间传递包和消息的机制。其于核心组件基本设施库的一个核心组件一般都要包含以下函数:1个初始化函数;1个结束函数;1个或多个包的处理名句柄;1个或多个消息处理句柄。

(7)操作系统服务层

操作系统服务层(operatingsystemserviceslayer)对运行在XScale核上的代码提供了一个抽象层。开发人员编写的XScale核心运行代码包括资源管理库。应该利用这一层,而不是直接去利用操作系统提供的API,从而提高系统的可移植性。OSSL主要提供了以下几类接口:线程管理、同步原语、互斥操作、定时器、内存管理和消息日志。

(8)控制平面平台开发工具包

控制平面的PDK(PlatformDevelopmentKit)为XScale核心组件与运行控制平面的软件之间提供了接口。它所提供的API编程接口现在是符合国际网络处理器论坛(NPF)提出的标准的,各种控制平面的网络协议栈和用它可以很方便的集成进来。

3网络处理器应用实例

利用IntelIXA可移植框架来实现IntelIXP2400的一个简单路由转发系统。数据分组在IXP2400中的流动过程如下:以太网MAC器件接收数据,放入MSD单元的接收缓存当中,向微引擎发出信号,表示数据已经收到,微引擎将接收缓存中数据传输到SDRAM,微引擎通过对MSF总线单元的访问命令将前几个字节(分组头)传送到传输寄存器中,微引擎对分组的以太网头进行修改,而将数据分组写入发送队列,然后通知MSF单元将数据分组传送给适当的MAC器件。图3所示为典型路由器应用系统中的数据流。

在图3所示的处理转发结构中,每一个模块代表一个微模块。发送和接收模块和MSF硬件紧密相关。处理器芯片的MSF总线接口单元中有一对BUFFER,即输入BUFFER和输出BUFFER,分别用作接收和发送的缓冲区。开发者通过用这些相应的硬件寄存器,硬件设备可自动进行相应的转发处理。

图3

接收线程将自己的信息写入MSF的FREELIST单元控制豁口,其中包括了线程号、微引擎号与存放接收控制字(RSW)的寄存器地址,等待MSF的信号将数据从RBUFFER中移入SDRAM。发送微模块要选择并等待一个有效的TBUFFER,再将数据从SDRAM中移入TBUFFER,并写入相应的控制寄存器,标识分组要发送的端口,分组的发送由TSM硬件自动完成。

在中间处理包的各个模块中,代码首先从便存储器(SCRATCHPADMEMORY)中将接收线程放入的包信息取出,进行以太网头的有效性验证,根据IP头的信息查找路由表,将以太网头更新。其中每一个处理都是由一个微模块来实现的。各个模块合在一起构成了一个DispatchLoop,各个模块在便存储器中共享包描述符信息,其中dlNextBlock全局变量为下一个处理微模块的标识。DispatchLoop的部分代码如下(简略)。

while(1){

dl_source();//从接收线程取下包描述符

if(dlBufHandle==0){//dlBufHandle是Dispatch

//Loop维护的一个全局变量

continue;

}

Ethernet_validate();//验证这个包是一个有效的以太网头

Ethernet_strip_header();//去掉以太网头

Ipv4_five_tuple_class();//进行IPv4classifier的转发

If(dlNextBlock==IX_DROP){//clNextBlock也是全局变量,表示下一个

Gotodrop;//跳转到丢弃包的处理模块

}

Ethernet_add_header();//添加新的以太网头

D1_sink();//将处理后的包描述符放入发送缓冲区中

Drop:

Dl_BufDrop(dlBufHandle);//丢弃包的处理

}

IntelIXP2400开发平台中,微代码的源文件是*.uc格式的,经过预处理生成*.ucp的中间文件,进而进行汇编生成*.list汇编文件。微引擎程序的连接器将汇编程序的多个输出文件转变成一个可下载的微程序映像(image)。缺省情况下,连接器生成的微代码映像文件的扩展名为uof。连接器也可以生成C结构的程序格式,这样的输出文件与内核程序一起进行编译和连接。

Intel提供的资源管理库中,对微引擎部分的函数提供了接口,可以将uof文件当作Flash文件系统的一个普通文件进行处理。在内核代码初始化时,将uof文件读入内存,然后加载。但是如果要作成最终产品时,Intel推荐采用.c格式的文件,并直接链入到所开发的内核工程中。

4网络处理器软件开发的关键环节

基于网络处理器开发工作的重点是对数据平面代码的开发,开发者要在以下三个方面进行设计和代码优化:多线程的任务分配和调度策略;数据结构的定义和存储分配;分组队列的管理和调度。

(1)多线程的分配和调度策略

对微引擎和线程分配任务是否合理,是影响系统性能的一个很重要因素。开发人员需要根据具体的网络应用和硬件平台的特点来科学合理的分配任务。比如,对一个一般的网络应用来说,可以分为包的接收、处理、发送几个阶段。对于包的处理阶段来说,又可以分成多个阶段来执行,每一个阶段可以由一个微模块来执行。这多个微模块是如何在每个微引擎中分配,就是一个任务分配的问题。如果分配才能使负载尽可能的达到平衡,处理器的资源得到最大效率的利用,这些都要进行研究、分析和实验。

网络处理器微引擎基于硬件的静态多线程调度基础上,即在一个微引擎内部中的线程调度是由硬件来实现的,通常采用轮询的策略。不同策引擎的线程间存在多种通信方法,线程之间在数据包处理过程中的同步方式也有多种。因此,开发者根据具体不同应用功能特点,不同数据处理相关功能需求,对围绕处理器的多个微引擎的并行调度算法进行选择,以尽可能达到系统负载的平衡。

IntelIXP2400提出了三种网络处理器数据平面的多线程编程模型:流水模型(contextpipeline)、并行处理模型的顺序模式(orderedmode)和乱序的模式(unorderedmode)。在任务的分配方面,Intel正在考虑对现有的微引擎编程语言进行扩展,提出了新的微引擎自动分配任务的编程模型,以加快网络处理器软件开发的效率。

(2)数据结构的这义和存储分配

影响网络处理器线速转发的一个最关键问题是存储器的访问延迟。网络处理器中往往有多层不同的存储体(在IXP2400中,就存在寄存器、LocalMemory、ScratchpadMemory、SRAM、SDRAM等不同级别的存储器,它们的速度差别很大),不同层次的内存用于满足不同数据结构的需要。另一方面,定义在网络处理器中的数据结构是非常精密的,比如,一个包头的描述符(packetdescriptormetadata)。但同时也是非常庞大和复杂,比如包体的信息、路由表和队列管理的数据结构。举例来说,开发者在微引擎中定义多个线程共享的变量时,应最先考虑使用全局寄存器,但有时全局寄存器的容量有限,可以考虑LocalMemory。多微引擎共享的变量存放在SRAM中,而DispatchLoop变量存放在便(Scartchpad)中。不同数据结构定义和分配的不同策略都会对系统性能产生较大的影响。

(3)分组调度

网络处理器是典型的RISC内核的并行实时处理结构,同时存在着大量共享资源,比如内存、总线、SHAC等一些特殊硬件单元,这就必然需要系统对这些共享资源进行调度和仲裁。未来计算机网络的趋势是能够提供多种不同服务,支持多种不同应用需求。提高网络集成服务支持能力的一个很重要问题就是分组调度算法问题,分组队列的管理还是实现QoS的基础。

分组调度及处理算法的核心是链路层调度器的算法设计。在一般分组处理的存储-转发过程中,设计调度器必然要对分组处理时间进行预测,但处理器在调度器中要精确的获取并更新这些虚拟时间是十分困难的。这就要根据具体的应用,通过研究数据包的长度、数据类型、处理方式与处理时间之间的关系,提出合理的数据包处理时间预测方案,选择适当的分组调度算法,达到比较好的系统性能。

5网络处理器面临的挑战

当今的网络处理咕嘟仍面临着许多挑战,例如采用什么技术扩展,如何简化编程模式等问题都需要进一步研究。数据平面上运行的软件开发通常仅提供微代码汇编和低通读C语言技术,这大大限制了网络处理器技术的发展和应用。因为缺乏高效的软件开发支持,软件问题已经成为网络处理器应用的一大障碍,必须研究面向网络处理器系统的高效系统软件平台。

网络处理器微引擎指令的提供非常有限,仅有不足40条,这远远不能满足开发人员的需求,仅用它去构造一些复杂的网络处理任务不太现实。在Intel提出的网络处理器开发框架中,给出了一些非常底层的数据平面的函数库,还给开发者提供了一些面向特定应用的更优化的接口和宏指令集。

目前,开发环境主要由各NP生产厂商提供,微引擎上运行的数据平面只提供微代码汇编和C语言编译器支持,有代表性的产品是IntelWorkbench。控制平面上的处理器内核,普遍采用Linux或VxWorks作为操作系统。两个平面的开发相对独立,没有一种统一的开发手段,这给开发者带来了很大的不便。目前,也没有特别针对网络处理特点的操作系统,常见的RTOS由于并不是特别针对网络处理器的操作系统,因此并不能充分发挥网络处理器的潜能。

为了满足下一代Internet服务需求,网络处理器除了要满足局域网和广域网对带宽的需求增长外,还要能够以线速对数据、语音以及视频信号进行排序和处理。网络处理器官方论坛(NetworkProcessingForum)的成立,加快了网络处理器接口标准的制定和软件发展的步伐。