还剩24页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
软件工程(B)教案田萱2008-8・30目录课程说明1一软件工程概述(理论3学时)11软件工程的起源和作用1附录
(一)常用CASE工具介绍4附录
(二)CASE工具的种类及应用特点10附件
(三)软件、软件危机、软件工程16附录
(四)软件工程的七条基本原理20课程说明学时教总学时40(理论30实验10习题0讲座0讨论0实习0周)一软件工程概述(理论3学时)1软件工程的起源和作用1)软件开发的发展历史分为三个阶段程序设计阶段20世纪的50—60年代),手工作坊软件设计阶段(20世纪的60—70年代),小组合作生产软件工程阶段(20世纪的70年代一至今),工程化的生产2)软件危机软件危机的突出代表-IBM360操作系统的开发软件危机(softwarecrisis)指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题附录
(2)CASE工具的种类及应用特点.引言CASE工具是什么CASE即ComputerAidedSoftwareEngineering中文意思是计算机辅助软件工程CASE是一套方法和工具,可使系统开发商规定的应用规则,并由计算机自动生成合适的计算机程序
1.2我们为什么要使用CASE工具今天,系统的构建变得越来越复杂,UML建模CASE工具为项目相关人员(如项目经理,分析员,设计者,构架师,开发者等)提供了许多的好处UML建模CASE工具允许我们应用规范的面向对象分析和设计的方法与理论,远离纠缠不清的源代码,达到构建和设计变得更直观,更容易地理解与修改的层次在大型项目中,通过使用CASE工具可以获得以下方便1)通过用例模型,业务/系统分析可以捕获到业务/系统需求2)设计者/构架师所作的设计模型能在不同层次的同一层内清晰表达对象或子系统之间的交互(典型的UML图如类图和交互图)3)开发者能快速地将模型转变为一个可运行的应用程序,寻找类和方法的子集,以及理解它们如何交互出于这些动机,UMLCASE工具以及对应的方法论为我们提供了一种因系统太复杂而不能理解下层源代码的描述系统的方法,同时允许我们更快更便宜地开发正确的软件解决方案当然,要考虑CASE工具在UML建模能力,项目生命周期支持,双向工程,数据建模,性能价格,可支持性,易使用性等方面的不同.CASE工具的种类及各自特点.RationalRose目前市面上最流行的UMLCase工具绘制的图形简洁美观它支持JavaJ2EEC++MCF等语言和框架的建模.在加上他的Rational系列RUP的方法论是当之无愧的巨无霸.IBMRationalRose是一个完整的可视建模方案,开发人员、项目经理、工程师和分析人员可以在提交编码之前对需求和构架进行可视化、理解和改进利用模型驱动的方法进行软件开发,可以保证系统的可扩展性、灵活性和可靠性,使您更快更好地创建软件借助Rose您可以创建一个强大可靠的、基于构件的构架,它可以帮助您将发生变更的地方隔离开来在您进行变更的时候,这个构架将软件的其它部分隔离,避免这些部分受到负面影响RationalRose帮助您以一种可预测的、受到良好控制的方式来实施变更,使您可以迅速地开发可靠的代码UML模型为软件提供了可视化的表示方法,Rose正是利用UML模型来统一您的开发团队模型驱动的开发有助于整合您的设计和实施环境,使所有员工协同工作借助RationalRose开发人员可以用一个建模工具开发所有项目Rose提供了与所有主导的IDE、编程语言、数据库系统和配套技术的无缝集成一旦熟悉了RationalRose员工们就可以轻松自如地在项目间转换,工作更加有效,高效迅速地完成所有的开发任务如ROSEDataModeler软件它通过一个公共的工具和UML(统一建模语言)将数据库设计人员与开发团队的其他人员联系起来,帮助加速开发过程使用RationalRose软件,数据库设计人员可以直观地了解应用程序访问数据库的方式,从而可以在部署之前发现并解决问题其功能包括1)支持对象模型、数据模型和数据存储模型的创建2)映射逻辑和物理模型,从而灵活地将数据库设计演变为应用程序逻辑3)支持数据模型、对象模型和已定义数据语言(DDL)文件/数据库管理系统(DBMS)之间的双向工程4)变换同步选项(在变换期间对数据模型和对象模型进行同步)5)数据模型-对象模型比较向导6)支持一次性对整个数据库进行正向工程7)集成了其他IBMRationalS代wareDevelopment生命周期工具8)能集成任何兼容SCC的版本控制系统,包括IBMRationalClearCase软件9)能够以Web页面的方式发布模型和报告,以此来提高整个团队的沟通效率其最突出特点就是通过使所有的团队成员独立开发、协作沟通和交付更好的软件来统一开发团队,建立稳定、有弹性、基于构件的系统构架,以可控、可管理、可确认的方式进行开发从而降低成本,加快面市的速度一个无缝集成所有领先的IDE与最新技术的工具可满足您的所有技术需要,最大化开发工作的速度和简便性使用RationalRose对VC工程进行反向图,及其对JAVA反向工程创建使用界面如下图所示:图
2.
1.1VC反向图图
2.
1.2JAVA反向图ModelMaker一个非常强大的软件工具,其功能与所有强大且具有多面性的产品一样但ModelMaker的复杂性却会让一个新手望而却步ModelMaker常被认为是一个UML图形工具或是DelphiCase工具然而,它比一般的图形工具和Case工具要快得多,有时,它可为你写一些人工智能式的代码它是可扩展的,支持UML图,设计模式,逆向生成与分解的双向代码管理工具等它的核心则为,它支持本地代码模型,你所有的类及其关联元素(单元,图,文档及事件类型等等)都是模型内部的对象ModelMaker为活动模型提供了多种视图,允许你在类列表元素列表或图集中进行操作,如果你已有准备,你即可从模型中生成源代码单元,并可由Delphi来进行编译,以后生成的单元每次也可重新生成你可对各种不同的设置进行修改(例如代码注释选项,代码次序,方法使用等等),并且可为多种需求重新生成单元(调试代码,自动生成的大量注释代码等)ModelMaker还是一个两路的面向类树的高效的、重构的以及UML方式的CASE工具它有两个版本一个Pascal版本,一个C#版两个版本都包含了ModelMaker认证Pascal版专门用于生成本地的Delphi代码完全支持Delphi的ObjectPascal语言,且包括了大部分的Delphi组件.ModelMakerPascalEdition具有完全反转工程的能力,并且可以导入现存的Delphi代码DelphiIDEIntegrationexperts考虑了同步ModelMaker以及DelphiIDE编辑器C#版用于专门生成本地的C#代码对于.NET框架语法,它完全支持C#l.l.
2.0和
3.0三个版本.ModelMakerC#Edition具有完全反转工程的能力,并且可以导入现存的C#代码VisualStudioIDEIntegrationexperts和Delphi一样也考虑了同步ModelMakerDelphi以及VisualStudioIDE编辑器都包含ModelMaker的许可对于软件开发的整个过程,用户都可以使用ModelMaker实时、技术的开发包括数据库类型在内的应用程序并把它们导入到源代码中可以使用自带的HelpFileGenerator生成HelpFiles.通过ModelMakerToolsAPI生成自己的报告包括了XMLreporter范例其使用效果图如下所示图
2.2界面图PowerDesigner由Sybase公司开发的一套商业建模工具,它与ROSE、ERWin类似,主要是为数据库的建模设计的,但与它们相比,具有更加突出的功能PD可以方便地对管理信息系统(MIS)进行分析设计,几乎包括了数据库模型模型设计的全过程利用PD可以制作数据流程图、概念数据模型、物理数据模型,,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制它可与许多流行的数据库设计软件,例如PowerBuilderDelphiVB等相配合使用来缩短开发时间和使系统设计更优化PowerDesigner包括以下六个模块ProcessAnalyst是数据流程图(DFD)逻辑设计工具DataArchitect是概念数据模型与物理数据模型设计工具WarehouseArchitect是数据仓库设计工具AppModeler是客户端应用程序生成工具MetaWorks是团队开发控制工具Viewer是模型观察工具PD同时还提供完整的UML建模支持,以及面向对象设计和代码的生成工具,可以满足复杂的技术环境需求所以可以说PD在数据库设计建模方面是做的最好的了当然,除此之外其在企业级建模上它的功能也很强大很多公司现在在用三个不同的产品,一个是做需求分析,企业流程;另外一个是数据库设计;另外一个是UML数据设计,三个部分可能连不到一起造成问题是比如需求改了,数据改了,对哪个类有关系,跟哪个流程有关系看不出来,最后还得手工改powerDesigner工具确可以把这些所有的建模工具连一起,需求改了,数据模型改了都没关系另外PowerDesigner对新的技术支持的也比较好它支持了所有的最新的数据库,不光支持Sybase本身的数据库,也支持IBM、微软、ORACLE的数据库其软件界面及UML建模图如下所示图
2.
3.1UML编辑器图
2.
3.2UML图EnterpriseArchitect以目标为导向的软件系统它覆盖了系统开发的整个周期,除了开发类模型之外,还包括事务进程分析,使用案例需求,动态模型,组件和布局,系统管理,非功能需求,用户界面设计,测试和维护等其主要特点包括1为整个团队提供高级的UML
2.0建模工具EA为用户提供一个高性能、直观的工作界面,联合UML
2.0最新规范,为桌面电脑工作人员、开发和应用团队打造先进的软件建模方案该产品不仅特性丰富,而且性价比极高,可以用来配备您的整个工作团队,包括分析人员、测试人员、项目经理、品质控制和部署人员等2特性丰富系统设计EnterpriseArchitect是一个完全的UML分析和设计工具,它能完成从需求收集经步骤分析、模型设计到测试和维护的整个软件开发过程它基于多用户Windows平台的图形工具可以帮助您设计健全可维护的软件除此,它还包含特性灵活的高品质文档输出用户指南可以在线获取3端到端跟踪EnterpriseArchitect提供了从需求分析、软件设计一直到执行和部署整个过程的全面可跟踪性结合内置的任务和资源分配,项目管理人员和QA团队能够及时获取他们需要的信息,以便使项目按计划进行EA提供使用工具,能够跟踪依赖关系、支持大型模型,帮助您管理大型复杂的工程;含有CVS或SCC提供工具,以时间快照为基线,通过比较来跟踪模型变动,从而实现版本控制;含有类似explorer的项目视窗,为您提供直观高性能的工作界面EA还含有一个所见即所得形式的模板编辑器,提供强大的文档生成和报告工具,能够生成复杂详细的报告,报告可以按照公司或客户要求的格式提供所需信息EA具备源代码的前向和反向工程能力,支持多种通用语言,包括C++C#JavaDelphiVB.NetVisualBasic和PHP除此还可以获取免费的CORBA和Python附加组件EA提供一个内置的源代码编辑器,含语法突出功能,确保能够在一致的工作环境中快速导航和查找您的模型源代码对于Eclipse或VisualStudio.Net工作人员,SparxSystems还提供到这些IDE的轻量链接工具,您可以在EA中进行建模,而后直接跳转到自己偏爱的编辑器中进行源代码的进一步开发代码生成模板还允许您对生成的源代码进行定制,使之同公司规范相符EA还提供对大多数软件开发语言和数据库架构的逆向工程支持,令您的应用程序可视化,从源代码、Java.jar文件甚至是.Net二进制汇编语言中获取完整框架通过导入框架和库代码,实现对您已有投资重复利用的最大化EA还提供变换模板,编辑和开发均非常简单,支持先进的模型驱动结构体系(MDA)通过内置的DDLC#JavaEJB和XSD变换,您可以从简单的“平台独立模型”开始来构建复杂的解决方案,并定位于“平台专门模型(PSM)一个PIM可以用来生成并同步多个PSM使工作效率得到显著提高利用该工具进行建模的界面如下所示图
2.4工作界面MicrosoftVisualVisio目前国内用得最多的case工具之一它提供了日常使用中的绝大多数框图的绘画功能(包括信息领域的各种原理图,设计图),同时提供了部分信息领域的实物图它是最通用的硬件、网络平台等图表设计软件好处是易用性高,特别是对不善于自己构造图的人但是正因为很全,所以某个方面上会造成专业程度较低visio的精华在于其使用方便,安装后的visio2000既可以单独运行,也可以在word中作为对象插入,与word集成良好其图生成后在没有安装visio的word上仍可查看使用过其他绘图工具的朋友肯定会感受到visi在处理框和文字上的流畅,同时在文件管理上,visi提供了分页、分组的管理方式visi支持UML的静态和动态建模,对UML的建模提供了单独的组织管理从2000版本后visio被Micros代收购正式成为Office大家庭的一员目前最新版是2002纳入名门的visio2002被微软的风格所同化,样子出现了一些华而不实的东西,但是功能上visio不减从前,各种器件模版有了许多增进而且还实现了与其他CASE工具的集成如下图所示图
2.5VISIO图形转换为VP图VisualParadigm是由一家香港公司开发的UML工具功能的强大不次于rose等case工具可以和其他工具整合,包括Eclipse/IBMWebSphere等并且支持多平台,所以在linux工作的朋友,要以选用它来取代rose等在windows下的设计工具VisualParadigm的开发公司不限制此软件的非商业用途在网站上提供了各组件企业和专业版本的KeyFile附件3软件、软件危机、软件工程
1、软件及其特性第一个写软件的人是AdaAugustaAdaLovelace在1860年代他尝试为BabbageCharlesBabbage的机械式计算机写软件尽管他们的努力失败了,但他们的名字永远载入了计算机发展的史册在1950年代,软件伴随着第一台电子计算机的问世诞生了以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师I960年代美国大学里开始出现授予计算机专业的学位,教人们写软件本世纪中叶软件产业从零开始起步,在短短的50年的时间里迅速发展成为推动人类社会发展的龙头产业,并造就了一批百万、亿万富翁随着信息产业的发展,软件对人类社会性越来越重要那么,如何给软件定义哪?软件是什么?首先要说明的是,软件对于人类而言是一个全新的东西,其发展历史不过
四、五十年人们对软件的认识经历了一个由浅到深的过程在计算机系统发展的初期,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的早期当通用硬件成为平常事情的时候,软件的通用性却是很有限的大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩早期的软件开发也没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成的一个隐藏的过程而且,除了源代码往往没有软件说明书等文档从60年代中期到70年代中期是计算机系统发展的第二个时期,在这一时期软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求写软件这一软件开发的方法基本上仍然沿用早期的个体化软件开发方式,但软件的数量急剧膨胀软件需求日趋复杂维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜“软件危机”就这样开始了!“软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充现在,被普遍接受的软件的定义是软件software是计算机系统中与硬件hardware相互依存的另一部分,它包括程序program、相关数据data及其说明文档document其中程序是按照事先设计的功能和性能要求执行的指令序列;数据是是程序能正常操纵信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料软件同传统的工业产品相比,有其独特的特性1)软件是一种逻辑实体,具有抽象性这个特点使它与其它工程对象有着明显的差异人们可以把它记录在纸上、内存、和磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特性2)软件没有明显的制造过程一旦研制开发成功,就可以大量拷贝同一内容的副本所以对软件的质量控制,必须着重在软件开发方面下工夫3)软件在使用过程中,没有磨损、老化的问题软件在生存周期后期不会因为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修改有不可避免的引入错误,导致软件失效率升高,从而似的软件退化当修改的成本变得难以接受时,软件就被抛弃4)软件对硬件和环境有着不同程度的依赖性这导致了软件移植的问题5)软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低6)软件是复杂的,而且以后会更加复杂软件是人类有史以来生产的复杂度最高的工业产品软件涉及人类社会的各行各业、方方面面,软件开发常常涉及其它领域的专门知识这对软件工程师提出了很高的要求7)软件的成本相当昂贵软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大现在软件的开销已大大超过了硬件的开销8)软件工作牵涉到很多社会因素许多软件的开发和运行涉及机构、体制和管理方式等问题,还会设计到人们的观念和心理这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败
2、软件危机及其原因软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(softwarecrisis)这个名词概括来说,软件危机包含两方面问题
一、如何开发软件,以满足不断增长,日趋复杂的需求;
二、如何维护数量不断膨胀的软件产品具体地说,软件危机主要有以下表现
(1)对软件开发成本和进度的估计常常不准确开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见
(2)用户对“已完成”系统不满意的现象经常发生
(3)软件产品的质量往往靠不住Bug一大堆,Patch一个接一个
(4)软件的可维护程度非常之低
(5)软件通常没有适当的文档资料
(6)软件的成本不断提高
(7)软件开发生产率的提高赶不上硬件的发展和人们需求的增长软件危机的原因,一方面是与软件本身的特点有关;另一方面是由软件开发和维护的方法不正确有关软件的特点前面已经有一个简单介绍软件开发和维护的不正确方法主要表现为忽视软件开发前期的需求分析;开发过程没有统一的、规范的方法论的指导,文档资料不齐全,忽视人与人的交流;忽视测试阶段的工作,提交用户的软件质量差;轻视软件的维护这些大多数都是软件开发过程管理上的原因
3、软件工程1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策在那次会议上第一次提出了软件工程(softwareengineering)这个概念到今年
(1998)软件工程整整走过了30年的历程在这30年的发展中,人们针对软件危机的表现和原因,经过不断的实践和总结,越来越认识到按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路今天,尽管“软件危机”并未被彻底解决,但软件工程30年的发展仍可以说是硕果累累下面我们给出一个软件工程的定义,然后简单讨论一下软件工程所包括的内容软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科软件工程包括两方面内容软件开发技术和软件项目管理软件开发技术包括软件开发方法学、软件工具和软件工程环境软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等统计数据表明,大多数软件开发项目的失败,并不是由于软件开发技术方面的原因它们的失败是由于不适当的管理造成的遗憾的是,尽管人们对软件项目管理重要性的认识有所提高,但在软件管理方面的进步远比在设计方法学和实现方法学上的进步小,至今还提不出一套管理软件开发的通用指导原则1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(softwarecrisis)这个名词概括来说,软件危机包含两方面问题
一、如何开发软件,以满足不断增长,日趋复杂的需求;
二、如何维护数量不断膨胀的软件产品具体来说,软件危机主要有以下表现
(1)对软件开发成本和进度的估计常常不准确开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见
(2)用户对“已完成”系统不满意的现象经常发生
(3)软件产品的质量往往靠不住Bug一大堆,Patch一个接一个
(4)软件的可维护程度非常之低
(5)软件通常没有适当的文档资料
(6)软件的成本不断提高
(7)软件开发生产率的提高赶不上硬件的发展和人们需求的增长软件危机的原因,一方面是与软件本身的特点有关;另一方面是由软件开发和维护的方法不正确有关软件开发和维护的不正确方法主要表现为忽视软件开发前期的需求分析;开发过程没有统一的、规范的方法论的指导,文档资料不齐全,忽视人与人的交流;忽视测试阶段的工作提交用户的软件质量差;轻视软件的维护这些大多数都是软件开发过程管理上的原因3)软件工程的作用1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策在那次会议上第一次提出了软件工程(softwareengineering)这个概念到今年
(2008)软件工程整整走过了40年的历程软件工程用来解决在开发大型的复杂软件系统过程中遇到的问题之所以称为软件工程,是因为软件开发是一个工程化的过程软件工程的目标就是找到一种能指导大型复杂的软件系统的开发原则,能指导软件开发过程,从而生产出高效可靠的软件产品在开发大型系统时,涉及到使用大量人工、时间,涉及到项目管理、人员管理等,因而有许多内容与业务管理相关,而不只是和计算机科学有关为了理解软件工程中涉及的问题,可以先想象其它的大型复杂设施的构建(机械行业和建筑行业等)例如,汽车,办公大楼,水立方等自然会想到以下几个问题,这个项目需要的人力、时间、资源、技术等;如何把项目分割成几个便于管理的模块?如何保证模块间的协调?如何便于同一模块内外人员的沟通?如何检查进度?如何处理广泛存在的细节?软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科是不是软件工程完全可以借鉴这些已经成熟的工程项目中工程技术呢附录
(4)软件工程的七条基本原理自从1968年提出“软件工程”这一术语以来,研究软件工程的专家学者们陆续提出了100多条关于软件工程的准则或信条美国著名的软件工程专家Boehm综合这些专家的意见,并总结了TRW公司多年的开发软件的经验,于1983年提出了软件工程的七条基本原理Boehm认为,这七条原理是确保软件产品质量和开发效率的原理的最小集合它们是相互独立的,是缺一不可的最小集合;同时,它们又是相当完备的人们当然不能用数学方法严格证明它们是一个完备的集合,但是可以证明,在此之前已经提出的100多条软件工程准则都可以有这七条原理的任意组合蕴含或派生下面简要介绍软件工程的七条原理1用分阶段的生命周期计划严格管理这一条是吸取前人的教训而提出来的统计表明,50%以上的失败项目是由于计划不周而造成的在软件开发与维护的漫长生命周期中,需耍完成许多性质各异的工作这条原理意味着,应该把软件生命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理Boehm认为,在整个软件生命周期中应指定并严格执行6类计划项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计戈I」、运行维护计划2坚持进行阶段评审统计结果显示大部分错误是在编码之前造成的,大约占63%;2错误发现的越晚,改正它要付出的代价就越大,要差2到3个数量级因此,软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格的阶段评审,以便尽早发现错误3实行严格的产品控制开发人员最痛恨的事情之一就是改动需求但是实践告诉我们,需求的改动往往是不可避免的这就要求我们要采用科学的产品控制技术来顺应这种要求也就是要采用变动控制,又叫基准配置管理当需求变动时,其它各个阶段的文档或代码随之相应变动,以保证软件的一致性4采纳现代程序设计技术从
六、七时年代的结构化软件开发技术,到最近的面向对象技术,从第
一、第二代语言,到第四代语言,人们已经充分认识到方法大似气力采用先进的技术即可以提高软件开发的效率,又可以减少软件维护的成本5结果应能清楚地审查软件是一种看不见、摸不着的逻辑产品软件开发小组的工作进展情况可见性差难于评价和管理为更好地进行管理,应根据软件开发的总目标及完成期限,尽量明确地规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查6开发小组的人员应少而精开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精这一条基于两点原因高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少的多;当开发小组为N人时,可能的通讯信道为NN-12可见随着人数N的增大,通讯开销将急剧增大7承认不断改进软件工程实践的必要性遵从上述六条基本原理,就能够较好地实现软件的工程化生产但是,它们只是对现有的经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐因此,Boehm提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条原理根据这条原理,不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计这些数据既可以用来评估新的软件技术的效果,也可以用来指明必须着重注意的问题和应该优先进行研究的工具和技术附录
(5)软件模型设计基础
(1)—.UML简史面向对象的分析与设计(OOAD)方法的发展在80年代末至90年代中出现了一个高潮UML是这个高潮的产物它不仅统一了Booch、Rumbaugh和Jacobson(UML之父三人)的表示方法而且对其作了进一步的发展,并最终统一为业界所接受的标准建模语言统一建模语言(UML)的出现公认的面向对象建模语言出现于70年代中期从1989年到1994年,其数量从不到十种增加到了五十多种,哎,百家争鸣在众多的建模语言中,语言的创造者努力推崇自己的产品,并在实践中不断完善但是,面向对象
(00)方法的用户并不了解不同建模语言的优缺点及其差异,因而很难根据自身应用特点选择合适的建模语言90年代中,一批新方法出现了,其中最引人注目的是Booch
1993、OOSE和0MT-2等(看下图)Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念1991年,他将以前面向Ada的工作扩展到整个面向对象设计领域Booch1993比较适合于系统的设计和构造Rumbaugh等人提出了面向对象的建模技术(0MT)方法,采用了面向对象的概念并引入各种独立于语言的表示符这种方法用对象模型、动态模型、功能模型和用例模型共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换0MT-2特别适用于分析和描述以数据为中心的信息系统Jacobson于1994年提出了OOSE方法淇最大特点是面向用例(Use-Case)并在用例的描述中引入了外部角色的概念用例的概念是精确描述需求的重要武器,但用例贯穿于整个开发过程包括对系统的测试和验证OOSE比较适合支持商业工程和需求分析此外,还有Coad/Yourdon方法,即著名的OOAD它是最早的面向对象的分析和设计方法之一该方法简单、易学适合于面向对象技术的初学者使用,但由于该方法在处理能力方面的局限,目前已很少使用概括起来,首先,面对众多的建模语言,用户由于没有能力区别不同语言之间的差别因此很难找到一种比较适合其应用特点的语言;其次众多的建模语言实际上各有千秋;第三虽然不同的建模语言大多雷同,但仍存在某些细微的差别,极大地妨碍了用户之间的交流因此在客观上,极有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言1994年10月GradyBooch和JimRumbaugh开始致力于这一工作他们首先将Booch93和0MT-2统一起来,并于1995年10月发布了第一个公开版本,称之为统一方法UM
0.8(UnitiedMethod)o1995年秋OOSE的创始人IvarJacobson加盟到这一工作经过BoochRumbaugh和Jacobson三人的共同努力于1996年6月和10月分别发布了两个新的版本即UML
0.9和UML
0.91并将UM重新命名为UML(UnifiedModelingLanguage)o1996年一些机构将UML作为其商业策略已日趋明显UML的开发者得到了来自公众的正面反应,并倡议成立了UML成员协会,以完善、加强和促进UML的定义工作当时的成员有DEC、HP、l-Logix、ltellicorpIBMICONComputingsMCISystemhouseMierosoftOracleRationalSoftwareTI以及Unisyso这一机构对UML
1.0(1997年1月)及UML
1.1(1997年11月17日)的定义和发布起了重要的促进作用UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言它溶入了软件工程领域的新思想、新方法和新技术它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程图1UML的发展历程注该UML的发展历程从标准的文档上抄下的,具体的内容可以参见UML
1.1标准面向对象技术和UML的发展过程可用上图来表示,标准建模语言的出现是其重要成果在美国,截止1996年10月UML获得了工业界、科技界和应用界的广泛支持,已有700多个公司表示支持采用UML作为建模语言1996年底UML已稳占面向对象技术市场的85%成为可视化建模语言事实上的工业标准1997年11月17日QMG采纳UML
1.1作为基于面向对象技术的标准建模语言UML代表了面向对象方法的软件开发技术的发展方向,同时也提供软件工程化的思想和方法二.UML简单结构图2UML结构图根据UML的结构,UML也相关对其操作、运用和表述提供一系列的规则,该规则的表述见下面简述:附录6增量迭代Refactoring不仅仅是一种编码的方法他同时是一种设计方法本文从软件工程学的演变来透视Refactoring的重要作用同时,你也可以在这里看到Refactoring和最近出现的XP开发方法学的紧密关系增量迭代自从有软件工程一说开始,大大小小出现了许多方法,其中一些还常常被我们挂在嘴边.这些软件方法中最著名的生命周期模型包括WaterFall它是由Royce于1970年首先提出来的.一般来说WaterFall方法把软件开发的过程严格地分为儿个阶段包括RequirementphaseSpecificationphaseDesignphaseImplementationphaseIntegrationphase要注意测试并非一个独立的阶段,几乎在每个阶段都需要检查和测试应当说,WaterFall模型由它自己的很多优点WaterFall强制每一阶段都必须产生所有的产品,只有当这些产品通过相关的审核后才能开始下一阶段的工作,而这些产品中相当重要的一部分就是每一阶段的详细文档Specification文档、design文档、code文档和其他相关的文档,如数据库手册、用户指南等等是维护产品基本工具有研究指出,大约70%的软件预算用于维护阶段而WaterFall模型强制每一阶段必须有详细文档,所以,看起来WaterFall能使用这些文档大大削减这方面的开销但是,Waterfall模型受文档驱使的方式也可能成为一个缺点WaterFall起始于需求阶段,一旦需求报告被用户承认,你就开始起草Specification文档,它指出了软件需要做什么东西Specification文档通常很长、很详细、很直白,因此很容易让人看着生厌用户通常都很难完全看懂软件的Specification文档,他几乎不可能判断你讲得是否正确,但通常他还是会签字的这里的问题是人和人之间的交流是否能够完全使用文档来实现,即使你能够使用更加高级的图形如UML图对于这个问题,生物学家Maturana和Varela在生物系统中进行了研究下面是他们在《TheTreeofLife》一书中的答案oooo交流的现象不依赖于被传递的内容,而是依赖于在接收者身上发生了什么并且这是一件和“传递信息”极不相同的事情AlistairCockburn在他2001年的新书《AgileSoftwareDevelopment^解释说,你可以想象人被一层薄膜所包围,在接受到外部刺激,被重构翻译成内部信号,从而引发内部活动所以人真正所接受的信息取决于内部而不是外部更浅显的例子也有cockburn给出,他说:考虑一个具体的例子,某人冲进一个房子,用日文大叫“着火了!一个能讲日语的人接收到许多信息,并且立刻冲向出口他身旁的另一个日本人,正好在睡觉,因此根本没有接收到任何信息外部刺激没有转化成内部信号一个不懂日语的人注意到有个人进来大叫,但是却没有从他的话语中接收到任何特别的信息、每一个人从大叫接收到的东西端依赖于他的内部条件在对这一声大喊的翻译过程中,一个日本人能够接受到大量信息而非日本人却不知所云的重要原因是大喊的人和那个在房间里的日本人有一个共同的经验日语软件需求获取者、Specification撰写者和用户之间往往不可能有这样的共同经验同样,如果光光依靠设计文档想使得设计者和开发人员之间能够达到很好的交流也是不可能的文档有助于增进理解,但是它不可能达到完整的理解Waterfall试图依赖非常详细的文档来接近交流的完美事实上,对文档的理解并不依赖于文档的详细程度而是依赖于文档的编写者和文档阅读者之间的共同经验如果我和你之间都具有设计模式的背景,那么我说一句“使用visitor模式“,可能比两个没有设计模式经验的人画上100个UML类图,写上1000句的详细文档更能说明问题这种共同经验的积累显然不可能一趋而就当然,在一个软件公司内部,长期的合作可能使用设计者和开发者之间能够达到更高层的交流,譬如,在进行设计的时候,你说”就像上次那个多语中问题一样处理“那么程序员就根本不需要再多的设计信息也能够完全实现对于用户的需求而言,这种长期的合作关系是很少见的因此,除非你对该用户的领域非常熟悉,熟悉到你早已了解用户的一举一动否则,你不可能一次就完成设计,你对用户的理解和用户对你的理解,也就是用户和你之间的交流需要多次的反复才能达到比较完善的程度交流的问题不仅仅出现在人和人之间,一个人需要和所实现的目标进行交流这就是我们所说的理解不管是在需求阶段、标书阶段、设计阶段或是实现阶段,问题的解决要依赖于你对这个问题的理解程度理解越深刻,问题的解决就与完美而这样的理解是不可能一次达到的因此,对软件开发的任何一个阶段,你都需要进行迭代,从而能够更好地解决问题Waterfall的另外一个问题就是用户在最终产品交付之前不能看到任何用户的东西而用户对提交产品的看法最后既有可能是:IknowthisiswhatIaskedforbutitisntreallywhatIwantedoH产生这种结果的原因是,因为用户通过纸上的文档理解到的东西远远不及真正能够使用的软件产品那么多Waterfall对需求和Specification如此的依赖,直接就可能产生并非用户真正需要的产品为了解决这个问题,我们需要使用增量模型不同于waterfall和快速原型模型,增量模型并不试图一次性地发布完全符合用户需求的软件相反,最终的产品被划分为几个build设计、开发、发布甚至是需求都按照一个一个build进行任何一个阶段,用户都可以获得一个满足部分需求的实际可操作的软件而不是象前面的模型一般需要等待几个月、一年或几年才能等到一个它并不需要的产品增量模型同时能够适应用户的变化变化是每一个成长中的用户组织固有的特点,改变的要求同时也是软件开发的一部分这也是我们说”软件是软的”所包含的意义从客户的财务观点来看,增量模型也使得他们不需要一次性花费大量的资金如果在开发的过程中发现问题,用户也可以及时地测回资金增量模型同时也会出现问题其中的一个难点就是每一个新发布的build必须能够平滑地集成到已经存在的系统中而不会破坏已经存在的东西从这个角度来讲,一个增量模型下的设计可能需要比Waterfall更加复杂的设计因为Waterfall一次性地考虑所有问题,它能够提前看到设计、实现中的所有问题(在他自己的范围之内),既然问题已经全部摆出,你就能够相对容易地解决问题而增量模型则不同,在构建当前的build时,你不会去考虑以后的build所以,以后的build可能需要当前build不可预料的支持,它也可能以不可预料的方式集成到当前的系统之中面向对象的方法在这一点上助益甚多面向对象的基本原则之一就是Open.Closed原则一个模块可以在发布之后被close这样即使增加build也不会破坏原来的系统同时,它通过各种面向对象特有的机制,多态和继承,使得系统能够以增量的方式平滑地集成但是要close你必须保证你的设计有足够的能力对以后的模块pen而正象我们在最开始所说的一样,一次性的设计是不可能达到这样的目标显然,你需要一种方法,能够在一个模块外部行为不变的情况下改变内部的结构,使得增量能够顺利地进行下去Refactoring是增量迭代模型的自然解决方案和核心技术附录
(7)SCRUM方法[IT168技术文章】SCRUM方法由KenSchwaber和JeffSutherland提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进,名称来自英式橄榄球(在比赛中每个队员都应时刻保持对场上全局的判断,然后通过集体行动,奋力实现同一目标——胜利)SCRUM方法最初实践于Easel公司(1993年),现已被数十家公司数百个项目开发中应用,适用于需求难以预测的复杂商务应用产品的开发SCRUM提出的SCRUMMeetingsSprintBacklogSCRUMMasterSCRUMTeamDemo等模式已被PLOP作为组织和过程模式(OrganizationalandProcessPattern)的标准SCRUM将工业过程控制中的概念应用到软件开发中来,认为软件开发过程更多是经验性过程(EmpiricalProcess)而不是确定性过程(DefinedProcess)o确定性过程是可明确描述的、可预测的过程,因而可重复(Repeatable)执行并能产生预期的结果,并能通过科学理论对其最优化经验性过程与之相反,应作为一个黑箱(Blackbox)来处理,通过对黑箱的输入输出不断进行度量,在此基础上,结合经验判断对黑箱进行调控,使其不越出设定的边界,从而产生满意的输出SCRUM方法将传统开发中的分析,设计、实施视为一个黑箱,认为应加强黑箱内部的混沌性,使项目组工作在混沌的边沿,充分发挥人的创造力如将经验性过程按确定性过程来处理(如瀑布模型),必将使过程缺乏适应力SCRUM方法的开发过程SCRUM方法包括三个过程计划和体系结构设计(确定性过程)将Backlog(急待完成的一系列任务,包括未细化的产品功能要求、Bugs、缺陷、用户提出的改进、具竞争力的功能及技术升级等)按优先级排序形成Backlog列表,根据该表和风险评估制订产品交付基线建立系统体系结构(如为已有系统改进,则只作有限分析、调整),将Backlog项按高内聚低耦合的原则分解为一系列问题包(Packets每个Packet是一组对象或构件的集合),依据同样原则相应划分若干个开发小组(SCRUM小组),分配各小组合适的Backlog项或问题包建立开发运行环境Sprint(经验性过程)该过程由若干个迭代的冲刺(Sprint)活动组成,直至风险评估认为产品可交付为止一个Sprint是在限定时间段内(Sprint周期,通常为1〜6周,可在前一个Sprint结束时调整)的一系列开发活动(包括分析、设计、编码、测试等),每个SCRUM小组并行开发且必须步调一致(在一个Sprint结束后,均须完成所分配的Backlog项并有可执行的产出)每个Sprint包含以下活动
(1)开发对分配的Backlog工作进行分析,将所需改动(changes)映射到各packets打开packets进行领域分析,然后设计、开发、实施、测试、文档化这些改动
(2)打包(Wrap)封装packets产生一个满足Backlog需求的可执行版本
(3)评审(Review)o所有的SCRUM小组一起开会,提交各自的工作并演示(Demo)然后提出和解决问题(Issue)及难点(problem)增加新的Backlog项;发布、审查或调整产品的标准规范;进行风险评估并提出合适的对策;确定下一个Sprint的工作内容和结束时间
(4)调整(Adjust)根据评审会汇集的信息,对受影响的Packets进行适当调整和巩固
4.交付和巩固(确定性过程)一旦根据风险评估结果认为可交付产品时,即进入该阶段该阶段的活动包括组装,系统测试和回归测试(Regression)准备培训材料,完成最终文档SCRUM过程认为一个产品的开发将一直持续下去,除非经风险评估后认为应停止产品交付后的巩固活动类似于传统方法中的维护和改善,目的在于整理Sprint期压力下忽略的工作,为下一阶段的开发做准备,以便轻装上阵SCRUM对过程的管理.SCRUM的控制手段SCRUM提出了八个控制项(Controls)用于开发过程的调控,其中风险控制是首要的手段Backlogo对象/构件Packetso变动(Changes)o实施一个Backlog项时,对相应Packet的改动难点(Problems)实施一个变动时所必须解决的技术难点问题(Issues)涉及到整个项目或在Backlog项分解到Packet之前须解决的问题措施(Solutions)o对问题或难点的解决,通常会导致变动风险(Risks)影响项目成功的风险,应持续跟踪评估并相应做出调整风险评估的结果将影响其他所有控制项SCRUM定义了六个概念性变量来用于风险评估用户需求,时间压力,竞争,质量,远见(vision)和可用资源在SCRUM的各个阶段都使用这些控制项来评估和权衡,管理人员侧重于以此管理Backlog开发组用以处理变动和难点所有人员一起来管理问题、风险和措施根据对控制项特别是风险的不断度量评估和权衡,一方面,计划和进度在每个Sprint结束时不断相应调整,保证实现产品的商务目标;另一方面,对开发中的工作任务Backlog动态地进行优先级排序,开发组总是先开发优先级最高的Backlog项,这样就保证了资源的最合理使用另外,SCRUM强调度量采用标准功能点度量方法的重要性,通过对每个Sprint中生产率等的度量,计划和进度将越来越趋于准确.项目组织项目组由全职开发人员及与该交付产品有关的市场人员、销售人员、用户等组成设以下小组1项目管理组由产品经理领衔,包括总设计师,各SCRUM小组组长,市场、销售的高级职员及典型用户等2若干个SCRUM小组各小组由组长SCRUMMaster领衔每个小组都是跨专业的通常包括开发人员,文档人员,质量控制人员或用户代表等,通常为3〜7人,以使小组内有充分的交流小组的划分最好是功能导向的按所分配的问题包或Backlog也可是系统层次导向按体系结构中的分层.在项目组人数增大时,可在管理组之上再设管理组SCRUMofSCRUM从而使SCRUM方法的应用到大项目中Sprint期间的调控在Sprint期间,应使各SCRUM小组尽量避免外界的干扰不可将新的Backlog任务加进来,组内产生的Backlog可放到整个项目的Backlog列表中,也可在本次Sprint中解决,使小组成员专心于目前的工作,使他们工作在混沌的边沿为避免项目组在Sprint期间不陷入混乱,SCRUM采取两个措施SCRUM会议SCRUMMeeting对小组行为进行监控和刺激会议在Sprint期间每天在同一地点举行,由SCRUMMaster主持会议上,SCRUMMaster对每个小组成员提三个问题昨天的工作进展如何有否遇到困难和障碍今天的工作打算会后SCRUMMaster集中精力排除障碍,小组成员则进行当天的开发Sprint评审会议评审后根据对每人的工作成绩,进行相应的激励SCRUM方法的实践效果和发展方向SCRUM在实践中大大提高了生产率据软件生产率组织的CapersJones称可提高6倍,在实施中有一个“间断平衡”Punctuatedequilibrium现象类似于自然界中物种的进化,在经过一段相对平衡的各自独立、并行的发展期后,在交汇处发生变异,即在经过紧张、并行的Sprint开发后,在Sprint评审时,软件产品产生较剧烈的变化SCRUM方法的最近动向是设法借鉴XP方法4)软件工程和传统工程项目的区别两个主要区别难以复用现有的软件构件,因为软件往往是个性化的;难以对软件质量进行评价和度量5)计算机辅助软件工程(CASE)CASE(computer-aidedsoftwareengineering)帮助人们尽量使软件开发变得流程化帮助简化软件开发过程CASE工具涉及到软件开发过程中的各个方面,包括项目设计系统(辅助经费预算、项目调配以及人员分配等)项目管理系统(辅助健康项目的开发进度)文档工具(辅助编写和组织文档)原型与仿真系统(辅助开发原型系统)界面设计系统(辅助图形用户界面的开发)编程系统(辅助编写程序和调试程序)Bug系统(辅助测试)
(1)软件工程和软件生命周期
(2)软件开发方法概述,结构化方法,面向对象方法
(3)软件工程过程和开发模型
(4)软件开发工具和环境
(5)软件工程的作用附录
(1)常用CASE工具介乡转载自http://www.cnblogs.com/powerlc/archive/200^01/1^
15959.html一,概述今天,代码变得日益简单,在Model的指导下,思想,设计,分析都变得异常重要企业业务建模工具,产品非常多,特别是在MDA日益流行的今天WorkFlow是典型的业务及流程建模二软件开发CASE工具简介(一*)图稿绘制1visio:这是目前国内用得最多的case工具它提供了日常使用中的绝大多数框图的绘画功能(包括信息领域的各种原理图,设计图),同时提供了部分信息领域的实物图visio的精华在于其使用方便,安装后的visio2000既可以单独运行,也可以在word中作为对象插入,与word集成良好,其图生成后在没有安装visi的word仍然能够查看使用过其他绘图工具的朋友肯定会感受到visi在处理框和文字上的流畅,同时在文件管理上,visi提供了分页、分组的管理方式visio支持UML的静态和动态建模,对UML的建模提供了单独的组织管理从2000版本后visio被Microsoft收购,正式成为Office大家庭的一员,目前最新版是2002纳入名门的visio2002被微软的风格所同化,样子出现了一些华而不实的东西,但是功能上visio不减从前,各种器件模版有了许多增进它是最通用(MS的东西,意味着许多附带的通用的东西)的硬件、网络平台等图表设计软件好处是易用性高,特别是对不善于自己构造图的人但是正因为很全,所以某个方面上会造成专业程度较低有关工程管理类的显然不如PROJECT2000好用;画IDEFO图显然不如BPWIN好用;画IDEF1X图显然无法与ERWIN相比;画组织机构图WORD足够用了,且普遍适用;画网络拓扑结构图只要有相应的图素,用什么画都行;画有关图表类的显然不如EXCEL好用;关键的是,VISIO的图只能以对象的方式插入你的主文档,只有在它本身环境下才能修改2smartdraw:校园里比较流行的绘图软件用惯了visio感觉smartdraw有许多不一样的地方一开始就是提供你大堆模版,以目录树的形式放在左边你的设计都可以纳入模版并且在某个目录组织smartdraw也是大手笔,有许多visio没有的方便功能比如插入表格smartdraw本身是独立提供图稿绘制的工具,因而工具齐全而visio更多是与word集成在一起能够充分利用word的编排功能有心者不妨一试,有了感觉我们再交流
(二)原码浏览的工具Sourcelnsigt:不能不说这个东西是个好东东以工程的方式管理原码提供非常适合再工程的浏览手段.整个面板分成三个部分.左边树提供工程内的所有变量,函数,宏定义,右边提供程序阅读和编辑,下边显示你鼠标在原码触及的函数或者变量定义•最让人佩服的是Sourcelnsigt不仅高亮你的关键字,而且以近乎完美的板面编排让你看程序如果看报纸,好极了Sourcelnsigt提供函数交叉调用的分析,并以树状的形式显示调用关系不过,速度有些问题,我一般不用我用的版本是
3.02000产品SourceNavigator:这个是从RedhatLinux版本移植到Win32下的与Sourcelnsigt相比,样子土多了,处处透着Linux的乡土气息,不过是干实事的家伙提供原码高亮显示和编辑提供头文件的包含关系分析,提供类的层次关系,这个东西最大的特点是把原码始终和文件联系在一起,提供到文件的导航当然不能说它使用很方便,我一般不用它,但是它的分析速度有优势,这是Sourcelnsigt必须低头的Dia(http:〃www.gnome.org/projects/dia/)完全免费的东西目前有Win32Port了6MB左右,画图足够用了.可惜不能生成代码.我在win2000ads上安装却有问题
(三)配置管理工具配置管理的重要意义在于维护文档的统一和可追溯性尽管宏观的配置管理包括很多内容,但是我们最常用到的是对程序代码的版本控制,至于变更的控制、管理和通知这里不多介绍下面将简要介绍国内几种常用的工具VirsualSourceSafe:微软的studio企业版包含的版本管理工具该工具包括一服务器和一通过网络可以连接服务器的客户端VSS提供了基本的认证安全和版本控制机制,包括Checkin(入库)、Checkout(出库)、Branch(分支)、Label(标定)等功能;能够对文本,二进制,图形图象几乎任何类型的文件进行控制;提供历史版本对比;可以集成在studio中VSS的客户端既可以连接服务器运行,也可以在本机运行,非常适合于个人程序开发的版本管理(VSS的详情我以后还会贴出)PVCS:PVCS是世界领先的软件开发管理工具,市场占有率达70%以上,是公认的事实上的工业标准IDC在1996年9月的报告中评述:“PVCS是软件开发管理工业领域遥遥领先的领导者”全球的著名企业、软件机构、银行等诸多行业及政府机构几乎无一例外地应用了PVCS.PVCS包含多种工具PVCSVersionManager会完整、详细地记录开发过程中出现的变更和修改,并使修订版本自动升级,而PVCSTracker、PVCSNotify会自动地对上述变更和修改进行追踪另外,PVCSRequisitePro提供了一个独特的MicrosoftWord界面和需求数据库,从而可以使开发机构实时、直观地对来自于最终用户的项目需求及需求变更进行追踪和管理,可有效地避免重复开发,保证开发项目按期、按质、按原有的资金预算交付用户我比较喜欢的是PVCS基于WEB的应用比较方便,只要设定用户和权限,规划好目录结构,项目组成员通过浏览器完成操作ClearCase:ClearCase是rational公司的主要配置管理工具,可能大家对Rose熟悉一点,不过就我所知,现在绝大多数企业已经从PVCS过渡到ClearCase来了,其原因在于ClearCase是整个rational产品系列中的中枢(repository).ClearCase提供了VOB的概念来进行配置管理,功能极其强大同时ClearCase使用起来也非常复杂,没有经过专门培训,自学还是有一定难度的ClearCase目前国内流行版本是forNT的
4.1需要在NT主域控制器上安装ClearCase的解密和安装比较复杂ClearCase是世界上目前最强大的配置管理工具之一,由于它采用许多新的配置管理思想,使得相对于传统的CVSVSSPVCS等版本管理工具,ClearCase具有许多闪光点,目前正在为世界上各大软件企业所使用(国内目前华为,先驱使用该系统)ClearCase中有大量的新的术语其中比较重要的术语有UCM(统一配置管理)VOB(版本对象基础)View(版本视图)Activity(更新活动)ClearCase实现版本管理的基础是VOB成员要更改受控资料,需要先设置一个自己的View这个View是你感兴趣的受控资料范围,然后可以CheckOut资料到本地资料区,进行修改后再CheckIn提交ClearCase极为有力的支持多版本、并行开发ClearCase不仅可以提供基于文件的版本历史,甚至可以对整个目录系统的演化进行跟踪记录ClearCase目前支持的执行平台有UNIXLINUXWINNToWINNT最新版本是ClearCase2002Solaris上我使用的版本是
4.
3.需要指出的一点是ClearCase十分昂贵,普通企业难以购买,另外由于其功能十分强大,对系统管理员和使用者要求较高,培训费用不匪CVS:在linux和unix下系统自带的版本控制工具,是版本控制中工具的鼻祖,功能十分强大,但是都得通过命令行的形式来操作,不便使用目前,Internet上提供了基于Windows的客户端,名字叫WinCVS而且提供了原码
(四)数据库建模ERWin:CA公司出品的拳头产品强大的老牌数据库建模工具它有一个兄弟是BPWin这个是CASE工具的一个里程碑似的产品目前的我使用的版本是
4.0ERWin界面相当简洁漂亮,也是采用ER模型,如果你是开发中小型数据库,极力推荐ERWin它的Diagram给人的感觉十分清晰在一个实体中,不同的属性类型采用可定制的图标显示,实体与实体的关系也一目了然当然ERWin不仅是花花公子,它提供的功能如PowerDesian一样强大(不支持UML)O从我个人使用的感觉,ERWin不适合非常大的数据库的设计,因为它对Diagram欠缺更多层次的组织,而且不知什么原因,我感觉它对内存要求较高,使用到后期容易出现图标不能显示的情况,一如windows内存紧缺的表现erwin支持ideflx即信息建模,就是我们常说的er图、实体关系图,也就是数据库结构图bpwin支持idefO/idefVdfd是功能与流程建模,主要用来描述企业的业务流程,比uml的usecase/sequence更适合描述复杂逻辑如果要全过程支持,请选择bpwin+PowerDesigner
7.5/8orerwin4+rationalrose2001(建议用于50〜200个table的信息系统)ERWin的不足:对中文支持不好和Er/Studio比较1在权限/版本管理方面ERStudio和RationalRose有些相似,允许分模块进行checkin/checkout并发开发程度高,ERWin这一点就不行了!!2另外一个就是ERWin的逆向工程虽然和ERStudio一样提供一堆过滤条件,但却不能指定的对象(如指定的数据表/视图/触发器)进行逆向工程,但ERStudio却提供了这些功能3此外ERStudio还提供了宏功能,把VB的一些功能以插件方式提供了用户,但ERWin中却没有提供!!虽然这个功能一般的用户根本很少使用!看到ERStudio的宏功能,很容易让人想到Winmap的一堆插件,两者的公司都向用户提供了插件(宏)让用户下载使用!这种做法很值得很多软件公司参考!!当然CA公司也不是个废物,提供了几个重要的功能提供了自家开发的BPWin的接口,以及Oracle这个数据库巨人的Designer的接口另外同样提供了插件功能,只不过这个插件的接口需要使用他的标准,这一点有点象RationalRose的Addinmanager一样(例如delphilink)!!ERStudio提供了针对XML的接口,但ERWin却没有!!MSVisio CaseStudio性价比最高ER/Studio:很不错的数据库建模工具新势力,非常不错.结合Repository可进行VSS式的版本控制erwin能做到的它都能做到..?modelmakeDeZignforDatabases如果你是软件工程师或是软件产品经理等常常需要规划系统的话势必会需要规划数据库的TableSchemao这套软件能够辅助你的规划,将各个Table之间Key的关连性表达出来,也提供有资料库栏位异动时的版本控制纪录与统计报表等功能PowerDesign Sybase推出的主打数据库设计工具PowerDesign致力于采用基于Entiry-Relation的数据模型,分别从概念数据模型ConceptualDataModel和物理数据模型PhysicalDataModel两个层次对数据库进行设计概念数据模型描述的是独立于数据库管理系统DBMS的实体定义和实体关系定义物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化Sybase数据库在国内知名度可能不及Oracle但是Sybase的数据库前端开发工具PowerBuilder却是无可匹敌,再加上PowerDesign的确有过人之处,因而它在国内得到相当广泛的使用我手里使用的是2001的PowerDesign8这个版本我感觉上比早期的PowerDesign
6.0-
7.5都有了很大的改变PowerDesign功能强大,使用非常方便首先它提供了概念模型和物理模型的分组,呈现在使使用区左边的是树状的概念模型和物理模型导航,你可以建立多个概念模型和物理模型,并且以Package的形式任意组织;它几乎能够产生到所有常用数据库管理系统的SQL脚本,当然你完全可以不经过SQL脚本直接在DBMS中生成数据库;它提供增量的数据库开发功发功能,支持局部更新,你可以在概念模型,物理模型,实际数据库三者间完成设计的同步还有逆向工程,再工程支持,目前还支持UML建模.总体感觉PowerDesing发展到
8.0已经非常成熟,许多使用上细微的感觉只有你用过它才好评价,我不多说了RationalRose五UML建模UML不算是个新名词,但是实际中还是用得很少可能是因为都是做小项目的原因吧大项目就用得多了.UML是个好东西,但是过分的依赖于UML也不是一件好事,因为有时候它会把简单的东西复杂化.即使是代码的优良结构和可重用性也不能作为强制使用UML借口,良好的算法完全可以替代部分不必要的设计模块,或者说,其实有更好的UML设计你没有发现.RationalRose大恐龙,小项目中难以使用,虽然是UML设计者做的虽然这是一个推荐使用的高端工具,它使改进和维护设计、从模型生成报表、在平行协作环境中与他人共同进行建模工作变得很方便尽管Rose这个名称跟英文中玫瑰单词一摸一样,但是这里他代表Rational公司的面向对象分析和设计工具的一款力作Rose目前在国内正被越来越多的公司所使用,其原因一方面是随着软件规模的扩大,面向对象分析和设计的优势突现出来,软件企业正在从面向过程向面向对象过渡另一方面,Rose集中体现了统一软件建模UML的先进设计思想,能够通过一套统一的图形符号简洁有效地表达各种设计思想当然,Rose本身在设计上的完善和与RationalCASE家族的完美集成也是作为一款最成功的CASE产品的基础Rose2002功能上可以完成UML的9种标准建模,即静态建模用例图类图对象图组件图配置图和动态建模合作图序列图状态转移图活动图,为了使静态建模可以直接作用于代码,Rose提供了类设计到多种程序语言代码自动产生的插件同时,作为一款优秀的分析和设计工具,Rose具有强大的正向和逆向工程能力正向工程这里指的是由设计产生代码,逆向工程指由代码归纳出设计通过逆向工程Rose可以对历史系统作出分析,然后进行改进,再通过正向工程产生新系统的代码,这样的设计方式我们称之为再工程下载地址Rose2000和破解:http:〃id
49479.my.u2i.net/Rose2003http://www.njl3z.cn/2004/down_view.aspaction=downloadid=14Rose2003破解http://www.vchelp.net/ASP/cdf_pic/200405/reply_l_
529068.rarXDE分别有4vs.net和4wsda的,很不错,值得使用.BorlandTogether有很多版本其中4VS.Net不推荐使用用Jbuilder推荐使用只是实在不喜欢它的界面Java开发的大,慢恐龙,但是各项功能很爽,这也不能怪它,java做的东西慢是正常的但它的功能还是很强大的尤其是逆向工程用起来很方便,只不过当时我们的EJB项目中EJB都非常大,动辄几千行,用它生成的sequence图实在太详细了,只有不停地删掉细节,留下框架建议非不得已不要使用这个庞然大物,对你的机器和你的耐心都是个考验它有foreclipsevs.net等等插件,感觉也不错MSVisio2003forVisualStudio VisioProfessional2000开始提供内建的UML支持Enterprise版更加完整这是一个功能广泛强大的工具和vs.net结合不错,只是仅限于VS.NET的代码生成,没意思,各方面都不舒服PowerDesigner是简练实用的建模工具、
6.0支持数据流图,
8.0支持UML的UseCase/sequence/class视图;VisualParadigm http://www.visual-paradigm.com/vpuml.php目前最合适也是最,〈的软件了从这一年来网站的设计变化就可以看出来好卖,强大,非Java.CommunityEdition可以免费使用,当然有功能限制.是一种UML建模和分析工具,出色的建模功能和代码同步WithClass2000http:〃www.microgold.com/界面不是很好看而且也没有免费版本,不过功能还不错,特别是代码生成的能力.Poseidon海神・・.也是Java的很漂亮,就是太慢Jude一个号称中日xp合作开发出来的小uml工具,只有几m的大小,功能也还不错也是java做的,速度还是很快的如果不需要使用逆向工程之类的高级功能的话,强烈推荐这个uml工具,并且它是免费的MagicDraw一个基于Java的廉价UML建模工具ObjecteeringUML一个免费的个人UML产品SystemArchitect一个很受欢迎的高端UML建模工具,支持双向工程Round-tripEngineeringoRationalRose98教程http://www.zsbs.eom/h/sdm/se_tool/rational/rose/rose
98.htm偶用过的UML工具http://rongsantang.yculblog.com/post-
253978.html又是UMLhttp://www.myie
2.com/sic/blog/blogview.asploglD=27几类常用Case工具介绍1http://www.vchelp.net/cndevforum/subject_view.aspsubject_id=2918forum_id=61MarkoBogerXP、、UML和和Poseiidonwww.gentleware.com/press/200骏0030806_Chat_Umlchina_CHIN.pdfTogether应用之路⑴・我没有前世http://blog.joycode.com/uestc95/archive/2004A7t9Z
27118.aspx。