搜档网
当前位置:搜档网 › 面向对象软件开发教程11

面向对象软件开发教程11

面向对象软件开发教程11
面向对象软件开发教程11

软件是在代码之外发生的一切事情。

第11章

如何继续学习过程

你将从本章学到什么?

●两千年后(P2K)的软件环境是什么样的?

●P2K软件环境中的技术和技能是什么?

●有关P2K技能和技术有哪些概述性的资源?

●软件专家在面向对象项目中充当什么角色/职位?

●如何继续面向对象的学习过程?

为什么需要阅读本章?

你的技能,以及如何使用它们,是能否成为成功的软件专家的重要决定性因素。通过阅读本书,你会获得学习对象技术和技巧所需的基本知识,本章也给你提供了继续进一步学习过程的建议。

至此,你已经了解了面向对象的全部内容,现在你已经是一名准备开发大型、关键性任务软件的对象专家。好吧,现在你还不全是。实际上,你已经掌握了一些有用的概念和技能,也明白了它们如何一起使用,在浏览复习题以及案例学习的过程中,你已经使用了它们。目前你正处在有利地位,可以继续你的学习过程,这个过程将很可能贯穿你的整个职业生涯。本章给出了对软件业目前的状况以及将来的发展方向的见解,在接下来的几年中将会需要什么样的技能,要如何才能获得这些技能。

336

第11章

11.1 P2K环境

在你的整个职业生涯中一直要学习新的技能。

软件业在20世纪90年代后半期被Y2K危机严重影响了,新的开发被耽搁下来或者干脆取消,以转移资源解决Y2K危机,结果,许多企业都推迟了对采用新的技术和技能的投资。现在Y2K危机已经过去了,我们正面对着两千年后(P2K)的软件环境,一个使用本书中描述的技术支配的环境。

在P2K环境中,你将会应用新的方法,例如面向对象的和基于组件的方法,采用迭代和增量方法的新的开发过程,像Java和CORBA这样新的技术,以及像用况建模这样新的技术。本书概述了对象开发技术,本节也总结了用于P2K环境的关键技术和技能。要理解P2K环境,必需考虑下面几项内容:

●新的软件策略。

●使能技术。

●领先的开发技术。

●现代软件过程。

●对象编程语言。

●如何获得P2K技能。

定义

两千年后(P2K)环境(post-2000 environment):机构在IT部门内部部署的一系列技术和技能(大部分是基于面向对象和组件技术的)。

2000年(Y2K)危机(year 2000 crisis):软件组织在20世纪90年代未期要更新或替代那些使用两位数而不是四位数来存储年份的软件。

11.1.1 新的软件策略

21世纪初期将会由两项关键的软件策略来统治:企业应用集成(EAI)和电子商务。EAI 把全异的软件应用集成为一个整体以支持新的和复杂的业务过程。中间件和组件技术,例如下面这节里描述的CORBA和兼容COM+的工具也用于支持EAI。了解EAI的一个好去处是https://www.sodocs.net/doc/a714910832.html,,也可以参考《Enterprise Application Integration》(Linthicum,2000)一书。包装技术是《Building Object Applications That Work》(Ambler,1998a)一书详细讲述的主题,对于EAI的开发者来说它也是一项重要的技能。

电子商务也称为基于Internet的商务,它关注于使用电子技术支持产品销售和服务。电子商务成功的机构有,戴尔公司(https://www.sodocs.net/doc/a714910832.html,)—一个计算机软硬件零售商;亚马逊(https://www.sodocs.net/doc/a714910832.html,)—一个销售书、录像带、音乐CD的零售商;Ebay网(https://www.sodocs.net/doc/a714910832.html,)—一

如何继续学习过程337

个在线拍卖网站。电子商务最好的资源是杂志《The Industry Standard》(https://www.sodocs.net/doc/a714910832.html,),它以报纸和在线两种形式出版发行。

11.1.2 使能技术

除了11.1.5节描述的对象编程语言外,还有好几个使能技术也是P2K环境中占主导地位的技术。这些技术有:

● CORBA

● COM+

● EJB(企业Java组件模型)

● XML

●持久层/框架

1.CORBA(公共对象请求代理体系结构)。CORBA是一种由对象管理组(OMG)制定的支持和维护分布式对象的一种标准结构,在20世纪80年代晚期引入。在20世纪90年代早期,CORBA承诺要成为最好的面向对象开发的标准环境,实际上,业已证明CORBA是21世纪初中间件竞技中的一支重要力量。学习CORBA的一个好地方是https://www.sodocs.net/doc/a714910832.html,/corba/ beginners.html。

2.COM+。这是微软组件对象模型(COM)的最新体现。COM是微软的对象链接和嵌入(OLE)以及ActiveX技术的演化,后来COM变成分布式COM(DCOM),现在变成了COM+。COM+是一项专有方法,用于微软平台的分布式组件开发。访问https://www.sodocs.net/doc/a714910832.html,/ com可以得到一系列基于COM技术的白皮书、演示文稿以及案例学习的链接。

3.EJB。EJB是一种组件结构,用于开发和部署基于组件的分布式业务应用。遵照EJB 结构编写的应用程序是可升级的、可进行事务处理的并且是多用户安全的。这些应用程序可以编写一次,然后就部署到任意支持EJB标准的服务器平台上。EJB让开发人员获得并使用企业类服务来创建关键任务应用。开始学习EJB最好的地方是在线https://www.sodocs.net/doc/a714910832.html,/products/ejb以及《Mastering Enterprise JavaBeans》(Roman,1999)一书。

4.可扩展标记语言(XML)。进行数据共享的一种工业标准方法,对于EAI和电子商务来说这是一种重要的使能技术。网站https://www.sodocs.net/doc/a714910832.html,是开始学习XML最好的地方。

5.持久层。持久层(也称做持久框架),通过映射元数据使得从永久存储(例如关系数据

库)中存储、检索和删除对象得以自动化。如果关系数据库用来存储对象,那么映射元数据会把对象的一条属性与存储对象的数据库表列联系起来。持久层向对象隐藏了数据模式,这会大量减少持久对象所需编写的代码数量,从而增强软件的健壮性并增加开发生产力。在《Building Object Applications That Work》(Ambler,1998a)一书中我详细讨论了持久层,这本书是本系列的第二本书。你可能想下载描述持久层设计的白皮书,我已经把它放在网站https://www.sodocs.net/doc/a714910832.html, /persistenceLayer.html上了。

338

第11章

定义

中间件(middleware):使得软件可以部署到各不相同的硬件系统中,从而互相通信的一种技术。

对象管理组(Object Management Group,OMG):一个工业认可的标准化实体,负责像统一建模语言(UML)和公共对象请求代理体系结构(CORBA)这样的标准。

11.1.3 领先的开发技术

作为工作在P2K环境中的开发人员,你很可能会用到下面大多数或所有的开发技术:

●基于组件的开发(CBD)。

●增量开发。

●迭代开发。

●面向对象。

●模式。

●统一建模语言(UML)。

●以应用为中心的设计。

●用况建模。

1.基于组件的开发(CBD)。一种开发方法,其中软件可以作为系列交互组件来部署,每个组件都封装一套预定义的行为。包括面向对象和结构化语言在内的任何一种技术都可能用来实现组件。常见的组件方法包括OMG的CORBA组件模型(CCM),Sun公司的EJB和微软的COM+。开始学习CBD的最好的地方是《Component Software:Beyond Object-Oriented Programming》(Szyperski,1998)一书和网站https://www.sodocs.net/doc/a714910832.html,。

2.增量开发。一种软件开发方法,它把项目组织成几个小的发布版本,而不是以一次“大爆炸”版本发行。这使你能较早地把软件交付给用户,并通过用户对最初版本的反馈来减小项目风险。增量开发已经在第10章中详细讨论过了。

3.迭代开发。这是软件开发中的一种非顺序方法。换句话说,可以做一点儿需求工程,一点建模,一点实现,一点测试,再一点建模,再一点实现,再一点需求工程,等等。使用迭代开发方法,执行活动的顺序并不是一成不变的。通过把技术用到项目当中它们最起作用的地方,迭代开发减少了项目风险和开发时间。迭代开发已经在第10章中详细讨论过了。

4.面向对象。软件范型基于下面的概念:软件应该从表示状态(数据)和行为(过程)的对象上创建。面向对象的概念在20世纪60年代后期引入;在20世纪80年代,使用Smalltalk 和C++这样的语言后面向对象开始流行;到20世纪90年代,C++和Java已经变成了事实上的开发标准。对于对象开发人员来说,网上最有价值的资源是Cetus中对象和组件的链接,https://www.sodocs.net/doc/a714910832.html,。下一步,我推荐阅读《Applying UML and Patterns》(Larman,1998),它关注于面向对象分析和设计,这些内容分别是本书第6章和第7章的内容,如果想要了解得更详细一点,请参考《Building Object Applications That Work》(Ambler,1998a)一书,这本书从对象开发人员的角度详细讲述了一系列面向对象的专题。

5.模式。模式是考虑到相关因素的通用问题的解决方案,支持复用经过验证的其他开发人员

如何继续学习过程339

的技术和方法。模式有许多不同的类型,包括设计模式、分析模式、过程模式、结构模式、组织模式、编程习语甚至还有反模式(经过验证不能起作用的那些方法)。分析模式在第6章中已经讨论过,设计和结构模式在第7章中也讨论过,编程习语在第8章中讨论过,过程模式在第10章中讨论过了。在对象建模世界中,模式组成了建模人员间通用语言的基础。例如,听到“那是Singleton”或“这是一种策略实现”这样的话,你要明白他们所说的Singleton和“策略”设计模式是很常见的。你可以在网站https://www.sodocs.net/doc/a714910832.html,/oo_patterns.html中找到一系列有用的并与模式相关的资源,包括概述和高级主题。

6.统一建模语言(UML)。UML是一种工业标准建模语言,它定义了面向对象建模的符号和语义。《UML Distilled》(Fowler和Scott,1997)是一本极好的对UML技术进行介绍的书,如果对UML有兴趣的话,它也是你在读完本书之后需要阅读的一本书。在《Building Object Applications That Work》(Ambler,1998a)和《Process Patterns》(Ambler,1998b)这两本书里,我概述了这些技术以及它们如何配合使用,这与本书中每一个建模章节(第3、6、7章)中我给出的概述概念上相似。如果需要更详细的信息,请访问https://www.sodocs.net/doc/a714910832.html,。我也维护着一个网页https://www.sodocs.net/doc/a714910832.html,/umlAndBeyond.html,在它上面有一些重要资源的网络链接。

7.以应用为中心的设计。一种流线型的系统化的方法,用于设计真正紧密适应用户需求的软件,这些软件不仅更有用也更易使用,并且也更简单更容易创建。本质用况和本质用户界面原型(实物模型)在第3章中讲述过,它们是以应用为中心的设计技术的一些例子,学习这些技术最好的开始是《Software for Use》(Constantine和Lockwood,1999)一书。

8.用况建模。用况建模是一种需求工程技术,在20世纪90年代早期开始在面向对象开发团体内部流行。正如在第三章中所见,用况模型由用况图和一系列用况组成,用以归档系统需求行为。我所读过的关于用况的最好的书籍是《Applying Use Cases》(Schneider和Winters,1998);我强烈推荐阅读本书。

11.1.4 现代软件过程

P2K环境的技术和技能很复杂,正如在第10章中所见,要想有效地使用它们,开发人员就需要能够反映这种复杂性的现代软件过程。这些过程包括:

●极限编程(XP)。

●面向对象软件过程(OOSP)。

● OPEN过程。

●统一过程。

1.极限编程。一种周密计划的软件开发方法,强调沟通、简化、反馈和自信。XP关注于与用户一起工作、简单但一流的开发以及测试等。学习XP,最好从《Extreme Programming Explained》(Beck,2000)一书以及网站https://www.sodocs.net/doc/a714910832.html,开始。

2.面向对象软件过程。第10章中详细讨论过的OOSP是一系列过程模式,它们一起描述用于开发、维护和支持软件的完整过程。OOSP基于下面的概念,大型、关键性任务的软件在整体上是顺序的,局部是迭代的,在Internet时代要交付增量发布版本。OOSP是我的《Process Patterns》

340

第11章

(Ambler,1998b)和《More Process Patterns》(Ambler,1999)两本书的主题。我维护着“过程模式资源网页”(https://www.sodocs.net/doc/a714910832.html,/processPatterns Page.html),它对过程模式及其相关资源建立了索引。

3.OPEN过程。一种复杂而综合的软件过程,由OPEN协会(https://www.sodocs.net/doc/a714910832.html,.au)支持,用于进行有效的软件开发。如果想了解OPEN过程,我建议从《The OPEN Process Specification》(Graham、Henderson-Sellers和Younessi,1997)一书开始。

4.统一过程。统一过程是一种基于迭代和增量软件开发方法的过程。统一过程的增强生命周期在第10章中已经详细讲过了,它把统一过程技术扩展成一种完整的软件过程,适用于大型、关键性任务的软件。要了解更多关于统一过程的内容,从《The Rational Unified Process》(Krutchten,1999)一书开始,然后接着看《The Unified Software Development Process》(Jacobson、Booch和Rumbaugh,1999)以及我编写的关于增强生命周期的系列书(Ambler 2000a;Ambler 2000b;Ambler 2000c)。

11.1.5 对象编程语言

对象编程语言,包括面向对象和基于对象的语言,到目前为止是P2K开发当中用得最多的语言。这些语言包括:

● C++

● Eiffel

● Java

● Object COBOL

● Object Pascal

● Smalltalk

● Visual Basic

1.C++。一种混合面向对象编程语言,它在C语言中增加了面向对象的特性。C++用于处理密集型软件应用程序,尤其是系统编程和电子商务开发。C++是P2K开发的一个主要的语言。你可以参阅一系列介绍C++的书,它们当中大部分都贴在https://www.sodocs.net/doc/a714910832.html,/oo_c_plus_plus.html上面。对于高级C++,我建议阅读《Advanced C++》(Coplien,1992)、《Effective C++》(Meyers,1992)及《More Effective C++》(Meyers,1996)等书,因为它们可以教你如何使用C++编写程序。

2.Eiffel。一种“纯粹的”面向对象编程语言。Eiffel是一种在小范围内流行语言,它只占很小一部分市场份额,常被慎重思考软件工程的机构使用。在https://www.sodocs.net/doc/a714910832.html,/oo_ eiffel.html可以找到多种Eiffel资源。《Eiffel: The Language》(Meyer,1992)一书是有关Eiffel 语言定义的书。

3.Java。基于概念“WORA”(一次编写,随处运行)的一种面向对象语言。Java软件运行于标准Java 虚拟机(JVM)上,这使得不同平台上的移植变为可能。因为Java有着很好的可移植性和多样性(Java代码可以部署在浏览器、应用服务器甚至数据库中),它很可能会成为

如何继续学习过程341

P2K开发的主要语言。你可以在https://www.sodocs.net/doc/a714910832.html,/oo_java.html找到许多有关Java的资源,这些资源包括介绍性的和高级话题。一个很好的在线教程也贴在https://www.sodocs.net/doc/a714910832.html,/docs/books/ tutorial/index.html上,我强烈推荐《The Elements of Java Style》(Vermeulen等,2000)一书,这本书也是本系列丛书中的第五本。

4.Object COBOL。一种混合面向对象编程语言,用面向对象的概念扩展了COBOL。Object COBOL在20世纪90年代一直都不是很稳定,因为COBOL团体过分关注于Y2K危机,而没有关注于先进的技术发展。Object COBOL可能会在供应商引入新的P2K开发工具后重新流行起来。时间会告诉我们一切的。你可以在https://www.sodocs.net/doc/a714910832.html,/oo_cobol.html上找到Object COBOL 资源的分类。尤其在你还不是一个有经验的COBOL开发人员时,我觉得《Object-Oriented COBOL》(Arranga和Coyle,1996)和《Standard Object-Oriented COBOL》(Chapin,1997)这两本书会是开始学习COBOL的好地方。(我在20世纪80年代后期用COBOL语言写程序。嘘……千万不要告诉其他人哟!)

5.Object Pascal。一种混合面向对象编程语言,用面向对象的概念扩展了Pascal。虽然Object Pascal用得稍微多一点儿,在两千年后发展也可能会继续走好,但它仍是一种小范围使用的语言,不可能在P2K语言市场中成为一个强劲的对手。Object Pascal的资源可以在https://www.sodocs.net/doc/a714910832.html,/oo_delphi.html找到。

6.Smalltalk。一种纯粹的面向对象编程语言。Smalltalk在20世纪70年代由Xerox Parc (Xerox公司的一个研发部门)开发,在20世纪80年代后期开始流行,20世纪90年代开始用于商业软件的开发。Smalltalk由于C++和Java而黯然失色,由于市场而不是技术的关系,在20世纪90年代后期直到现在也只是一种小范围语言。Smalltalk会不会东山再起,这一点是值得怀疑的。你可以在https://www.sodocs.net/doc/a714910832.html,/oo_smalltalk.html上找到许多与Smalltalk相关的资源。在20世纪90年代中期和早期,我也是一名Smalltalk开发人员,我觉得《Discovering Smalltalk》(Lalonde,1994)和《Smalltalk Best Practice Patterns》(Beck,1997)两书也是很不错的选择。

7.Visual Basic。由微软公司开发的一种面向对象编程语言,它使用好几个面向对象的概念扩展了Basic语言。Visual Basic是微软应用程序开发环境的主力军,有些版本可以作为宏语言用于一系列微软自己的产品当中。Visual Basic是P2K环境中一门重要的语言,至少对于编写微软平台的应用程序来说确是如此。开始学习Visual Basic最好的地方在微软的“Visual Basic Start Page”网页上:https://www.sodocs.net/doc/a714910832.html,/vbasic。如果你是一名VB开发人员的话,那么你会发现在那之后《Developing Applications with Visual Basic and UML》(Reed,1999)一书也很不错。

定义

Java虚拟机(Java Virtual Machine,JVM):支持一套已定义指令的抽象计算机器。JVM使得Java 可以移植;Java代码被编译成可以在拥有JVM的任意平台上运行的标准字节码。

对象编程语言(object programming language):面向对象或基于对象的任意一种编程语言。

基于对象的编程语言(object-based programming language):本质上支持一些但并不支持全部面向对

342

第11章

象语言特性的任意一种编程语言。例如:Visual Basic。

面向对象的编程语言(object-oriented programming language):本质上支持继承、类、对象、多态和消息传递等面向对象概念的任意一种编程语言。例如:Java和C++。

编写一次,随处运行(Write Once,Run Anywhere,WORA):关于Java语言的一种市场推销方式,指出Java语言跨平台的本质。

11.1.6 Internet开发语言

要进行基于Web和电子商务开发,你很可能会用到下面的语言:

● HTML

● Perl

● CGI脚本

1.HTML(超文本标记语言)。一种独立于平台的、有着工业标准定义的文件格式,用于共享信息,HTML页是WWW网事实上的标准用户接口方法。NCSA有一个极好的HTML初学者指南贴在网上,它的网址是https://www.sodocs.net/doc/a714910832.html,/General/Internet/HTMLPrimer.html。

2.Perl(practical extraction and report language,实用信息提取与报告语言)。Perl是一种脚本语言,最初开发目的是用于UNIX系统管理任务的自动化,现在一般用于基于Web的软件开发。Perl包含报表创建设施、编辑和数据操作功能、图形用户界面(GUI)功能、语言功能以及调用其他程序的能力。网页https://www.sodocs.net/doc/a714910832.html,/PickingUpPerl/是关于Perl编程语言的一个在线教程,它是开始学习Perl的一个极好的地方。

3.CGI(公共网关接口)。CGI是一种用于在Web表单与程序之间通信的一种简单的协议。网页https://www.sodocs.net/doc/a714910832.html,/easy/cgi提供了关于CGI的一个特别好的综述以及使用CGI的方法。

定义

图形用户界面(Graphical User Interface,GUI):由图形组件组成的一种用户界面风格,例如窗口和按钮。

11.2 适于特定职位的技能

在第10章中看到,软件过程复杂性给开发人员提供了一系列的机会。在本节中,我讨论了某天你可能会充当的角色以及为了成为这种角色所需要必备的技能。这些角色如下所示:

●业务分析员(Business analyst)

● IT高级经理(IT senior manager)

●对象建模员(Object modeler)

●持久管理员(Persistence administrator)

如何继续学习过程343

●持久建模员(Persistence modeler)

●程序员(Programmer)

●项目经理(Project manager)

●质保工程师(Quality assurance engineer)

●软件架构师(Software architect)

●测试工程师(Test engineer)

11.2.1 业务分析员

业务分析员需要需求收集和确认技能,也需要面向对象分析的技能。

一名业务分析员要与系统的未来用户一起工作,确定他们的基本业务问题,系统需求,他们可能会怎样使用系统,他们可能需要系统随着时间如何进行演化等。第3章、第4章和第6章(分别讨论了需求收集、需求确认和面向对象分析),描述了业务分析员每天要用到的技术。

11.2.2 IT高级经理

IT(信息技术)高级经理监督机构内部的工作。他们需要对机构内部使用的技术有一个基本的了解,尤其要对技术蕴含的业务要有所了解,他们必须牢固地掌握机构内部选用的软件过程。IT高级经理必须在可交付品、过程、所需资源、新旧做法之间的区别以及转变到P2K软件开发环境时遇到的风险等方面得到训练。首先,许多IT高级经理实行迭代开发时都遇到了困难,因为大部分开发制品,例如需求模型和软件设计等,是整个项目过程演化出来的,而不是以顺序方式在定义里程碑处交付的。IT高级经理需要训练P2K软件环境中的基本技术和技能,这在11.1节中已经讲述过。理解电子商务对于IT高级经理来说也很关键,因为它很可能就是机构内部关键业务的驱动器。

11.2.3 对象建模员

对象建模员需要大量建模技能,包括UML和以应用为中心的设计技术以及底层的实现技术。

对象建模员负责面向对象软件的分析和设计;这样,他们必须具备熟练的、本书中介绍过的一系列建模技能。过去,看到软件专家专注于某种建模,例如数据建模或过程建模等,这是很常见的现象,但经验表明这种策略不再有效,甚至会产生功能紊乱。统一建模语言定义了许多种模型,因为没有哪个模型单独一个就足够完成所有的需求。只关注于一种类型的模型而不管其他模型,会忽略掉许多关键的建模问题,做出来的软件运行起来也很差或者难以维护。对象建模员必须理解一系列建模技能以及如何综合使用它们。除此之外,他们也需要学会如何有效地应用设计模式、分析模式、结构模式。建模人员必须学会像CORBA、EJB和/或微软的COM+这样的分布式开发技术。建模人员也需要了解以应用为中心的设计技能或至少初步掌握用户界面设计技能。

344

第11章

11.2.4 持久建模员

持久建模员,在结构化世界里通常称为数据建模人员(data modeler),负责物理持久模型的开发和维护。对于新的应用,如在第7章中见到的那样,持久建模员需要基于面向对象模型为软件开发物理持久模型。对于与遗留数据模式相关的开发来说,大多数软件项目的准则都是,开发数据模式的模型可能会需要持久建模员(如果他们还没有存在)帮助在对象中做好所需的数据存储映射。持久建模员需要理解UML面向对象模型,如何开发基于面向对象模型的持久模型,如何把对象映射到关系数据库,以及了解用于持久对象的永久存储机制的细微差别。如何把对象映射到关系数据库上在本系列丛书第二本书《Building Object Applications That Work》(Ambler,1998a)中有描述。

11.2.5 持久管理员

持久管理员,在结构化世界中也称做数据库管理员(DBA),负责管理支持永久存储机制,因此他们就需要这些产品中的专业知识。持久管理员这个角色的功能,经常扩展到包含由持久层使用的对象-关系映射的管理。由于对象世界中持久建模员责任在逐步减少,持久管理员与持久建模员的角色之间的界限,常常比较模糊。

11.2.6 程序员

软件程序员的工作是实现及启动测试基于系统模型的源代码。程序员多多少少会要紧密地与建模人员和测试工程师一起工作,这意味着他们至少需要理解面向对象和基于组件建模和测试的基本知识。除此之外,程序员需要在所使用的设计模式、编程习惯用语、编程语言、软件工程基础(例如耦合和内聚这样的概念)等方面接受培训和教育。

11.2.7 项目经理

项目经理需要对大量技能拥有相关知识。

项目经理负责软件项目的机构和管理。他们在工作中面对着复杂的环境:迭代和增量开发技术应用中出现了许多复杂现象。除此之外,更糟糕的是,由于缺乏熟练的软件专家,项目经理发现,组建小组以及人员管理的技能(而不仅仅是进度与估测技能—这些是大多数软件项目管理书籍中的焦点)对于项目的成功来说变得越来越重要了。项目经理需要广泛了解一系列技能,尤其是软件过程中以及人员管理方面的技能。学习项目管理要阅读的一本比较好的书是《Software Project Management》(Royce,1998)。

如何继续学习过程345

定义

永久存储(permanent storage):一种物理介质,其中的数据可以被保存、检索并删除。对象永久存储机制有可能包括关系数据库、文件和对象数据库。

物理存储模型(physical persistence model):一种模型,也称做物理数据模型(physical data model),描述你在永久存储机制中要实现的物理数据模式。

11.2.8 质保工程师

质保工程师需要有开放的思想,以有效遵循迭代和增量开发实践。

质保工程师负责保证开发人员根据机构内部公认的标准和过程创建软件。质保工程师要在他们评审的交付品使用的技术方面以及通用软件过程方面接受培训。通用模式的培训也很重要,这样质保工程师就可以检测出模型或文档是否与公认的开发方法相符。

11.2.9 软件架构师

存在两种类型的软件架构师:项目软件架构师和企业软件架构师。项目软件架构师关注于基于初始需求的系统软件体系结构的确认和验证,以及机构内部业已存在的企业结构。企业软件体系结构关注机构的软件体系结构,它考虑诸如下面的这类问题:企业应用集成(EAI)、可复用框架以及通用软件基础结构。软件架构师需要在下列方面接受培训和教育:P2K环境中的技术和技能,人员的技能(他们将会支持项目小组及影响高级业务管理),机构的业务基础。要接受与模式(明显的是结构模式)相关的培训,设计、分析、过程模式方面的培训也很重要。你会遇到的一本好书是《Software Architecture in Practice》(Bass、Clements和Kazman,1998)。

11.2.10 测试工程师

测试工程师需要传统的和面向对象的测试技能,并要具备编写代码使用的开发语言的技能。

测试工程师检验软件是否按照需求来构建。测试工程师需要学习大量测试技术,例如第9章给出的全生命周期面向对象测试(FLOOT)方法学等。由于软件变得越来越复杂,机构内部用来验证软件的测试工具和技术变得也越来越复杂。测试工程师需要接受面向对象测试和传统测试技术的培训。他们也需要进行相关编程语言的培训,以使他们可以开发测试套件(并可以看出开发人员的错误,他们常常宣称可以对对象和组件少做一些测试)。需要阅读的一本书是《Testing Object-Oriented Systems》(Binder,1999),从这本书中你可以得到关于对象测试技术基础的详细介绍。

定义

设计模式(design pattern):描述通用设计问题解决方案的一种模式。

346

第11章

习语(idiom):习语描述如何实现模式中某个部件、该部件的功能或在设计中与其他部件的关系。

习语常常特定于某种编程语言。

模式(pattern):模式是考虑到相关因素时通用问题的解决方案,它可以有效支持复用其他开发者已经过验证的技术及方法。

11.3 继续整个学习过程

在软件工业中,准则之一就是软件专家要在工作中学习,这对于你来说也是一种很重要的暗示。尽管一些软件专家足够幸运,可以在愿意为人员培训和教育投资的机构工作,但许多人却没有这样的机会。在本节中,我讨论了可用来继续学习过程的一系列技术方法:

●参加介绍性培训。

●获得第一手经验。

●获得指导。

●阅读、阅读、再阅读。

●参加高级培训。

定义

软件体系结构(software architecture):包括关于软件系统组织、选择系统结构化元素及其接口的一套重要决策;以及这些元素的结构和行为的定义,元素间关联和交互的定义;元素组合进日益增大的子系统内;引导软件架构师形成结构风格的定义。

11.3.1 参加介绍性培训

如果可能的话,应该参加一些面向对象技术介绍性质的培训课程。表11-1指定了几门课程及它们的描述,以及按照你考虑参加的顺序进行排列的平均时间长度(假定按一天八小时计算)。考虑到你在机构内部充当的角色,你也可以选择不参加其中的某些课程(例如,业务分析员可以不参加程序课程)。

表11-1 我推荐的简介性面向对象培训课程

课程描述时间

介绍面向对象的概念概述第5章中讨论的概念以及本书中给出的技术1~2天

介绍ABC过程概述先进的软件过程(也就是OOSP、统一过程或XP)的基础知识1天

3~5天

介绍面向对象需求和分析应用像用况、建模、用户界面原型、顺序图和类图(在第3章、第4

章、第6章中给出)这样技术的面对面培训课程

3~5天

介绍面向对象设计应用第7章中讲述的像类建模、状态图建模、协作图建模及持久性建

模这样技术的面对面培训课程

5~10天

介绍XYZ语言覆盖与你的环境相适应的编程语言(即,Java或C++)基本知识的

面对面培训课程

介绍面向对象测试描述面向对象测试基本知识的面对面培训课程2~5天

如何继续学习过程347 11.3.2 获得第一手经验

应用在课堂和书中学到的技能。

你可以读想读的或者应该读的东西,参加大量培训课程,但只有在尝试它们时你才会真正学到一些东西。如果现在你并没有在使用面向对象技术的项目中工作,那么要么你要转到机构内部别的项目中去,或者找到另一个公司的工作,要么干脆呆在自己家里用对象技术工作。

11.3.3 获得指导

对象导师是对面向对象很有经验的一部分人,他们可以在学习过程中指导新手,给新手们展示如何使用对象技术和技能。最好的导师有着好多年使用对象技术与技能工作的经验,以及指导经验和良好的沟通技巧。如果你的机构并没有正式的指导过程,实际上很少有机构是这样做的,那么考虑一下自己找个专家,与他们一起紧密工作或寻求他们帮助,学习你所需要的新技能。多数人会很高兴你问他们问题,帮助他人会让他们更加高兴。

定义

教育(education):教授一般适用于整个学生生涯的技能和知识。

指导(mentoring):让有经验的专家直接传授其专业知识给新手的过程。

培训(training):给人们(这些人一般都会马上适应充当学生)教授特定的、相对集中的一些技能。

提示:理解供应商与客户的工作我的经验是你应该对人们(向你提供输入的和你提供输入的)的工作有一个基本认识。因此,面向对象的设计人员应该理解面向对象分析和面向对象设计的基本知识。

提示:参加培训前先阅读你是否曾经注意过,参加课程前做出准备的人(他在参加课程前知道材料的一部分内容)会比不太主动的人学的东西要多呢?我的意见是利用这种观察,在参加任何课程前都要先进行准备。因为培训和教育过程是迭代的,这意味着你将会很快进入“读一些书”、“参加一些培训”、“再读一些书”这样的循环。我在https://www.sodocs.net/doc/a714910832.html,/books.html上维护了一个阅读列表,其中包含了支持面向对象入门级、中级、高级课程的图书。在你开始接受培训前,你应该先问一下培训指导教师他们推荐的书籍。

11.3.4 以学习小组进行工作

学习小组是这样一小组人,他们被指定学习特定的主题。

掌握新技能的一种有效方法是以学习小组进行工作,分配好工作的一小组人一起学习某个

348

第11章

主题。学习小组常常也会被公司,也可能是人力资源或市场部门请来制作小的应用程序。他们通常花费20%~50%的工作时间在小项目上,把剩余的时间投入到当前的职责工作中去。最好的学习小组由不同技能的人组成,他们可能分散在不同地域的系统部门。其中某个人有可能是个经理,另一个人是系统程序员,下一个是分析员,等等。不同领域的技能和背景使得小组可以从几个不同的方向入手来完成学习过程,这样就增加了学习的机会。

提示:以前你肯定没做过让他们从一开始就相信自己一直都在从事这些新事情,这对于有经验的程序员,尤其是那些真正做得好的程序员来说很常见。这是因为面向对象软件技术包含了以前你可能已经用到过的非常重要的结构化软件工程原则。熟悉背后的一些原则,这些原则通常会在介绍性的课堂和像本书一样的介绍性书籍中讲授,会使你很容易相信自己一直都在做这件事情,尽管可能事实并不是那样的。

11.3.5 阅读、阅读、再阅读

每个月内至少要读上一本书和几本杂志。

我不能强调说为学习付出努力就一定会成功,你必须阅读、阅读、再阅读。应该广泛地阅读书籍。我建议一个月内读完一本书以跟上不断变化的IT工业。我建议阅读一些杂志,例如《Software Development》(我为SD对象专栏撰写文章)和《Journal of Object-Oriented Programming》以及《Java Developer’s Journal》。最后,像“Cetus对象和组件链接”(https://www.sodocs.net/doc/a714910832.html,)这样的网站也提供了面向对象相关信息的大量链接。

提示:养成学习的习惯IT工业的变化速度实在是太快了,这使你再也不能仅接受一次培训就坐享其成。应该不断地阅读、参加课程以更新你的技能和经验。

11.3.6 参加高级培训

经过有实际经验的导师几个月的亲自指导后,在你有了第一手经验的时候,下一步要做的就是回到培训班中参加特定技能的更高级的培训。这些课程或者是表11-1中列出课程的高级版本,或者是专业技术或技能的课程。例如,一门高级建模课程可能关注于设计和分析模式,高级编程课程也会讲述一系列编程技巧。你获得的经验让你了解到,要理解和吸收高级课程中提供的资料。

11.4 你学到了些什么

P2K软件环境很复杂,其中会用到一系列技术和技能。本章介绍了主要的P2K技术和技能,提供了一些很好的信息资源索引,你可以从中了解更多的技术。我也介绍了软件专家在今天的

面向对象软件开发教程

软件是在代码之外发生的一切事情。 如何继续学习过程 你将从本章学到什么? 两千年后(P2K)的软件环境是什么样的? P2K软件环境中的技术和技能是什么?有关P2K技能和技术有哪些概述性的资源?软件专家在面向对象项目中充当什么角色/职位? 如何继续面向对象的学习过程? 为什么需要阅读本章? 你的技能,以及如何使用它们,是能否成为成功的软件专家的重要决定性因素。通过阅读本书,你会获得学习对象技术和技巧所需的基本知识,本章也给你提供了继续进一步学习过程的建议。 至此,你已经了解了面向对象的全部内容,现在你已经是一名准备开发大型、关键性任务软件的对象专家。好吧,现在你还不全是。实际上,你已经掌握了一些有用的概念和技能,也明白了它们如何一起使用,在浏览复习题以及案例学习的过程中,你已经使用了它们。目前你正处在有利地位,可以继续你的学习过程,这个过程将很可能贯穿你的整个职业生涯。本章给出了对软件业目前的状况以及将来的发展方向的见解,在接下来的几年中将会需要什么样的技能,要如何才能获得这些技能。 11.1 P2K 环境 在你的整个职业生涯中一直要学习新的技能。 软件业在20世纪90年代后半期被Y2K危机严重影响了,新的开发被耽搁下来或者干脆取消,以转移资源解决Y2K危机,结果,许多企业都推迟了对采用新的技术和技能的投资。现在 Y2K危机已经过去了,我们正面对着两千年后(P2K)的软件环境,一个使用本书中描述的技术支配的环境。 在P2K环境中,你将会应用新的方法,例如面向对象的和基于组件的方法,采用迭代和增 量方法的新的开发过程,像Java和CORBA这样新的技术,以及像用况建模这样新的技术。本 书概述了对象开发技术,本节也总结了用于P2K环境的关键技术和技能。要理解P2K环境, 必需考虑下面几项内容:

软件开发流程管理制度

软件开发流程管理制度 (讨论稿) 为加强对定制软件开发工作管理,缩短开发周期,提高软件开发质量,降低开发成本,提高定开发效率和效益,特制定软件开发流程管理制度。 第一章、总则 为保证日常工作正常有序的进行,让开发中各个环境更紧凑,更可控,需要尽可能实现项目管理的正规化,工作过程的流程化,以便提高软件质量,按期交付。 1、软件开发总体遵循项目管理和软件工程的基本原则。 2、项目管理涉及项目立项、项目计划和监控、配置管理。 3、软件工程涉及需求分析、系统设计、软件实现、系统测试、用户测试、试运行、系统验收、系统上线和数据迁移、产品维护。 第二章、阶段成果 根据软件工程的过程,制定以下工作流程,并规定了各个重要环节需要提交的交付物。各阶段需提交的文档: 1、立项:项目申请表,软件需求报告或设计方案。 2、需求分析:项目研发主计划、需求规格说明书 3、总体设计:概要设计说明书或功能模块描述 4、详细设计:详细设计说明书,包括软件接口说明、单元测试计

划。 5、软件实现:软件功能说明、源代码说明或者注释 6、产品测试:测试报告 7、产品发布:产品说明书、使用手册 8、产品维护:问题反馈记录 9、项目总结:提交客户方的项目总结和公司项目汇报的PPT。软件过程成果表:

第三章、岗位设置 根据公司目前的开发过程主要分为分析、开发、测试三个阶段。分析阶段完成用户需求文档的编写,系统总体设计的编写;开发阶段完成设计文档的编写,代码的编写、代码的维护。测试阶段完成系统的测试,测试文档及其他材料。通过逐渐的调整岗位,明确工作职责,逐步实现项目经理,软件设计师,程序员,测试工程师的岗位设置。

软件开发流程 论文

毕业设计(论文)题目:软件开发流程管理 班级:11工升 学号:1000303071 姓名: 指导教师: 2014年11月

摘要 从软件开发最初至今,不断地有新的软件开发技术产生,但是在软件开发能力和质量方面却始终存在达不到预计目标这一问题。每一个软件开发的最大目标,就是最大限度提高质量与生产率。而影响质量与生产率的三个关键因素:过程、人和技术,因此,我们除了提高技术能力,培养更多优质人才之外,还需要制定一套软件开发过程管理标准,并在软件开发过程中对这一标准不断地完善,以达到提高软件质量与生产率的目标。 本文结合CMM(软件过程成熟度模型),对软件开发、维护全过程进行标准化、规范化管理,制定出软件开发管理标准。 关键词:软件开发过程,管理标准

目录 第一章软件开发的概念及目的 (4) 第二章软件开发流程划分及开发环境 (4) 2.1.软件开发阶段划分 (4) 2.2.软件开发环境需求...........................................................错误!未定义书签。第三章软件开发过程中存在的问题............................................错误!未定义书签。 3.1.对用户方需求的掌握不全面...........................................错误!未定义书签。 3.2.对软件的价值认识不清晰...............................................错误!未定义书签。 3.3.跟用户方的合作不顺利...................................................错误!未定义书签。 3.4.开发队伍的结构不合理...................................................错误!未定义书签。 3.5.软件开发管理制度不健全...............................................错误!未定义书签。 3.6.开发团队人员不稳定.......................................................错误!未定义书签。第四章软件开发流程管理规范.. (10) 4.1.什么是CMM (10) 4.2.结合CMM制定开发流程管理方案 (11) 4.2.1软件项目生命周期模型...........................................错误!未定义书签。 4.2.2需求分析流程图及描述...........................................错误!未定义书签。 4.2.3设计流程图及描述...................................................错误!未定义书签。 4.2.4编码流程图及描述...................................................错误!未定义书签。 4.2.5测试流程图及描述...................................................错误!未定义书签。 4.2.6验收流程图及描述 (22) 第四章软件开发行业前景 (23) 参考文献..........................................................................................错误!未定义书签。

面向对象方法题库1-0-5

面向对象方法题库1- 0-5

问题: [单选]当()时,用例是捕获系统需求最好的选择。 A.系统具有很少的用户 B.系统具有很少的接口 C.系统算法复杂,功能单一 D.系统有很多参与者 用例描述的是系统的执行者(参与者)与系统的交互,同时也是开发人员与用户进行交流的工具,可用来很好地定义系统的边界。所以,当执行者较多的时候,用例是捕获系统需求最好的选择。

问题: [单选]对OO系统的技术度量的识别特征,Berard定义了导致特殊度量的特征。其中()抑制程序构件的操作细节,只有对访问构件必需的信息被提供给其他希望访问的构件。 A.局部化 B.封装 C.信息隐藏 D.继承 面向对象的软件和用传统方法开发的软件有本质的不同,为此,对OO系统的技术度量必须调整以适应那些区别OO和传统软件的特征。Berard定义了5个导致特殊度量的特征,分别是局部化、封装、信息隐蔽、继承和对象抽象技术。 (1)局部化。局部化是软件的一个特征,它指明信息在程序中被集中的方式,例如,针对功能分解的传统方法围绕功能局部化信息,它们典型地以过程模块来实现。数据驱动方法围绕特定的数据结构局部化信息。在OO语境中,信息是通过封装数据和处理在类或对象的边界内而集中的。因为传统软件强调函数为局部化机制,软件度量着重于函数的内部结构或复杂性(例如,模块长度、内聚性或环路复杂性等)或函数间相互连接的方式(例如,模块耦合)。因为类是OO系统的基本单位,所以,局部化是基于对象的,因此,度量应该应用于作为一个完全实体的类(对象)。此外,在操作(函数、方法)和类间的关系不必要是一对一的。因此,反应类协作方式的度量必须能够适应一对多和多对一的关系。

面向对象的软件开发方法简介

1面向对象的软件开发方法简介 面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。面向对象的开发方法具有以下优点。 ●把软件系统看成是各种对象的集合,这更接近人类的思维方式。 ●软件需求的变动往往是功能的变动,而功能的执行者——对象一般不会有大的变 换。这使得按照对象设计出来的系统结构比较稳定。 ●对象包括属性(数据)和行为(方法),对象把数据和方法的具体实现方式一起封 装起来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性, 从而提高了软件的可维护性。 ●支持封装,抽象,继承和多态,提高了软件的可重用性,可维护性和可扩展性。 1.1 对象模型 在面向对象的分析和设计阶段,致力于建立模拟问题领域的对象模型。建立对象模型既包括自底向上的抽象过程,也包括自顶向下的分解过程。 1.自底向上的抽象 建立对象模型的第一步是从问题领域的陈述入手。分析需求的过程与对象模型的形成过程一致,开发人员与用户交谈是从用户熟悉的问题领域中的事物(具体实例)开始的,这就使用户和开发人员之间有了共同语言,使得开发人员能够彻底搞清用户需求,然后再建立正确的对象模型。开发人员需要进行以下自底向上的抽象思维。 ●把问题领域中的事物抽象为具有特定属性和行为的对象。 ●把具有相同属性和行为的对象抽象为类。 ●若多个类之间存在一些共性(具有相同属性和行为),把这些共性抽象到父类中。 再自底向上的抽象过程中,为了使子类能更好的继承父类的属性和行为,可能需要自顶向下的修改,从而使整个类体系更加合理。由于这类体系的构造是从具体到抽象,再从抽象到具体,符合人们的思维规律,因此能够更快,更方便的完成任务。 2.自顶向下的分解 再建立对象模型的过程中,也包括自顶向下的分解。例如对于计算机系统,首先识别出主机对象,显示器对象,键盘对象和打印机对象等。接着对这些对象再进一步分解,例如主机对象有处理器对象,内存对象,硬盘对象和主板对象组成。系统的进一步分解因有具体的对象为依据,所以分解过程比较明确,而且也相对容易。因此面向对象建模也具有自顶向下开发方法的优点,既能有效的控制系统的复杂性,又能同时避免结构化开发方法中功能分解的困难和不确定性。 1.1.2UML:可视化建模语言 面向对象的分析与设计方法,在20世纪80年代末至90年代中发展到一个高潮。但是,诸多流派在思想和术语上有很多不同的提法,对术语和概念的运用也各不相同,统一是继续发展的必然趋势。需要有一种统一的符号来描述在软件分析和设计阶段勾画出来的对象模型,UML(Unified Modeling Language,统一建模语言)应运而生。UML是一种定义良好,易于表达,功能强大且普遍适用的可视化建模语言。而采用UML语言的可视化建模工具是Rational 公司开发的Rational Rose。 1.2 面向对象开发中的核心思想和概念 在面向对象的软件开发过程中,开发者的主要任务就是先建立模拟问题领域的对象模型,然后通过程序代码来实现对象模型,如何用程序代码来实现对象模型,并且保证软件系统的可重用性,可扩展性和可维护性呢?本节节主要阐述面向对象开发的核心思想和概念,这些核心思想为从事面向对象的软件开发实践提供理论武器。

第八章 面向对象的系统开发方法

面向对象的系统开发方法 一、单项选择题 1. 面向对象技术中,对已有实例稍作修改生成新实例的机制被称为(c )。 a. 委托 b. 代理 c. 继承 d. 封装 2. UML是一种面向对象的统一建模语言。它包含若干种图,其中,用例图展示了外部actor与系统所提供的用例之间的连接,UML中的外部actor是指( d)。 a. 人员 b. 单位 c. 人员或单位 d. 人员或外部系统 3. UML中用例可以用( c)图来描述。 a. 类 b. 状态 c. 活动 d. 协作 4. 协作图描述了协作的(a )之间的交互和链接,它画成对象图的形式。 a. 对象 b. 类 c. 用例 d. 状态 5. 在使用UML建模时,若需要描述跨越多个用例的单个对象行为,用( d)最合适。 a. 协作图 b. 序列图 c.活动图 d. 状态图 二、名词解释 1 对象 2 消息 3 类 4 面向对象

5 统一建模语言(UML) 三、问答题 1 与传统开发方法相比,面向对象的系统开发方法主要解决了哪些问题? 2 试述消息的目的及消息的运作原理。 3 试简述UML的主要内容 4 为什么面向对象系统开发过程需要如此多的图形工具来支持? 第九章答案 一、单项选择题答案 1. c 2. d 3.c 4.a 5. d 二、名词解释 1 对象是由一组数据合适驾驭这些数据上的一组操作封装而成的基本实体。 2 类是由内部状态和外部行为相似的对象构成的集合。 3 消息是对象之间的通信载体,用来请求对象执行某个处理或回答某些消息的要求。 4 面向对象=数据抽象+数据抽象类型+继承机制,既是一种认识世界的认知方法,又是一种解决问题的思维方式。

面向对象的软件开发过程

面向对象的软件开发过程 【摘要】本文介绍了面向对象技术的基本思想,阐述了面向对象软件开发的分析与设计实现过程,说明了面向对象技术在软件开发中的应用,总结出面向对象技术在程序开发中的优势。 【关键词】面向对象;软件开发 1面向对象技术的基本思想 随着计算机应用领域的不断扩大,软件的规模和复杂性也在不断增加,我们需要按照更科学、有效的方法组织软件的生产与管理。面向对象技术首先在编程领域兴起,并逐渐发展成熟,并随着面向对象的测试、集成等技术的出现而发展为一套贯穿整个软件生命周期的方法体系。 面向对象技术首先在编程领域兴起,并逐渐发展成熟,并随着面向对象的测试、集成等技术的出现而发展为一套贯穿整个软件生命周期的方法体系。面向对象方法的基本思想是:从客观存在的事物(即对象) 出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。 具体地讲,面向对象技术是从问题域中客观存在的事物出发构造软件系统,用对象作为这些事物的抽象表示,并以此作为系统的基本构成单位。每个对象都有其属性和方法,属性表示事物的静态特征, 方法表示事物的动态特征。对象的属性和方法结合为一体,对外屏蔽其内部细节,称作封装。把具有相同属性和相同方法的对象归为一类,类是对象的抽象描述,每个对象是它所属类的一个实例。通过在不同程度上运用抽象的原则,可以得到基类和子类,子类继承基类的属性和方法。 面向对象的三个基本特征: 封装——是把客观事物封装成抽象的类,可以隐藏实现细节,使得代码模块化; 继承——使用现有类的所有功能,并在无需重写原来类的情况下对这些功能进行扩展; 多态——指同一消息作用于不同的对象时,具有不同的处理方案和处理结果,即所谓的“同一接口, 多种方法”,增强了程序的灵活性。 2面向对象的分析与设计实现 面向对象的程序设计以解决的问题中所涉及的各种对象为主要矛盾,力图从实际问题中抽象出封装了数据和操作的对象,通过定义属性和操作来表述他们的特征和功能,定义接口来描述他们的地位及与其他对象的关系,最终形成一个可理解、可扩充、可维护的动态对象模型。面向对象的软件开发过程可以大体划分为面向对象的分析,面向对象的设计,面向对象的实现三个阶段。 2.1面向对象的分析 面向对象的分析主要作用是明确用户的需求,并用标准化的面向对象的模型规范来表述这一需求,最后形成面向对象的分析模型。图1展示的是面向对象系统分析示意图。 图1面向对象系统分析示意图 面向对象的分析分为如下几步: 2.1.1确定需求 明确用户的需求,包括对用户需求的全面理解和分析;明确所要开发的软件系统的职责界限;进行可行性研究和制订方案,交给用户确认。

面向对象的分析过程

面向对象的分析过程 摘要 分析了面向对象技术应用于仿真领域的种种优点,亦即我们选择采用面向对 象的方法进行改造的原因。一些面向对象方法存在的不足。 关键词:仿真,面向对象,岸边集装箱起重机,训练器 面向对象的开发方法是以对象作为最基本的元素,它是分析问题、解决问题的核心。 面向对象=对象(Object) +分类(classification) +继承(inheritance) +通过消息的通信(communication with messages) 从下图中我们可以看出,面向对象的开发方法明显不同。 面向对象的仿真为仿真人员提供了开发模块化可重用的仿真模型的工具,它把系统看成由相互作用的对象所组成,而对象则往往表示现实系统中的真实实体。从而提高了仿真模型的可理解性、可扩充性和模块性,并且便于实现仿真与计算机图形和人工智能的结合。采用面向对象的方法,原因如下: 1.可理解性 面向对象仿真对设计者、实现者,以及最终用户来说都改进了仿真的可理解性。因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真系统中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像来直接建立仿真模型,这对于熟悉实际系统的用户来说是很容易理解的。 2.可重用性和可扩充性 在面向对象的仿真中,可以建立起一个模型库用以保存以前建立的模型,模型库中的模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地和系统地修改现有的对象(类)以创建新的对象。并且可以加入现有的类库中。类库提供了仿真建模所需要的一般设施。通过修改现有的类,可以建立各种应用中所需要的特殊对象。 3.模块性 面向对象的仿真是模块化,特殊的过程来寻找相应的信息,不会影响其它的对象。 4.图形用户界面

面向对象系统分析与设计——超星试题及答案

第一章面向对象方法概论 1.1传统开发方法及存在的问题 1 【单选题】下面关于功能分解法的优点描述错误的是() A、以系统需要提供的功能为中心组织系统 B、与模块化编程结合使用后,使开发效率有很大提高 C、删除了 GoTo语句,使软件能得到有效维护 D、具有较强的应对需求变化的能力 我的答案:D 2 【单选题】下面的开发方法能够兼顾功能和数据的是() A、功能分解法 B、结构化方法 C、信息建模法 D、面向对象方法 我的答案:D 3 【填空题】_______开发方法强调对数据的组织,忽略系统功能。 我的答案: 第一空:信息建模法 4 【填空题】 功能分解法是以系统需要提供的_______为中心组织系统。 我的答案: 第一空:功能 5 【判断题】结构化方法采用数据流、加工进行建模,需求变化极易引起两者的变动,进而 引起其他数据流和加工的变化。 我的答案:√ 6 【判断题】功能分解法以功能作为系统的构造块,数据组织能力强。 我的答案:× 1.2面向对象方法的基本思想 1 【单选题】面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过 程。因此面向对象方法有许多特征,如软件系统是由对象组成的;();对象彼此之间仅能通过传递消息互相联系;层次结构的继承。 A、开发过程基于功能分析和功能分解 B、强调需求分析重要性

C、把对象划分成类,每个对象类都定义一组数据和方法 D、对既存类进行调整 我的答案:C 2 【单选题】一个设计良好的信息系统应具有()的特征 A、低内聚、低耦合 B、高内聚、低耦合 C、高内聚、高耦合 D、低内聚、高耦合 我的答案:B 3 【填空题】面向对象方法通 过 我的答案: 第一空:关联 _______关系表达类之间的静态关系。 4 【填空题】对象 的 细节。 我的答案: 第一空:属性 _______与操作结为一体,成为一个独立不可分的实体,对外屏蔽其内部 5 【判断题】面向对象方法比以往的方法更接近人类的日常思维方式,强调运用人类 在日常的逻辑思维中经常采用的思想方法与原则。()我的答案:√ 6 【判断题】面向对象方法中,对象是用操作描述事物的数据特征,用属性描述事物 的行为特征。() 我的答案:× 1.3面向对象方法的基本概念(上) 1 【单选题】下面那个不是面向对象的基本原则() A、抽象 B、多态性 C、封装 D、关联 我的答案:D 2 【单选题】以下关于超类、子类、基类的叙述中,正确的是() A、子类是超类的特化 B、基类是超类的特化 C、基类是子类的特化 D、超类是基类的特化 我的答案:A

【项目管理知识】面向对象软件开发和过程

面向对象软件开发和过程 代码是核心 面向对象发展到今天,已经出现了许许多多的实践、方法和技术。很多的技术都能够有效的提高软件质量,而要用好这些技术,我们需要从过程和管理的角度来看待它们,而不是为了使用技术而使用技术。此系列文章包括:代码是核心、案例实战(上)、案例实战(下)、重用、优化代码的组织、针对契约设计、业务建模。 在一个有效的组织中,必定拥有杰出的一线人才。软件设计也是一样的,一线人才的素质决定了软件的质量。从敏捷的观点来看,代码是检验软件过程是否有效的终标准。目前为止,以及在短时间的未来,我们都不太可能完全脱 离代码进行软件设计。所以,软件过程中的任何一个活动都是为了能够产出的代码。所以,代码才是核心。 1.代码是软件开发的基础 编码是软件开发过程中基本、底层的技艺,然而也是重要的技艺。任何一个领域的专家都需要花费大量的时间来进行基本技艺的锻炼,木匠需要花费大量的时间来锻炼他们对各种工具的掌握,厨师则需要练习刀工和火候。程序员也是一样的,对我们来说,语言的各种特性必须要了然于胸。而对软件的管理也需要从代码做起。 从____ 年到现在,国内兴起了一股软件工程热,需求管理、配置管理、甚 至CMM。面对纷至沓来的各种方法学、UML、00A大家似乎已经热衷于这些概念本身了,却往往忽略了软件开发中基本的元素-代码。在和很多软件组织的接触过程中,我们认为大多数组织急切需要的并不是这些工程理论,不是说这些理论不重要,而是这些组织的症结不在于此。很多的组织连代码的质量都管理不好,又何谈其它呢?代码管理是基础的基础,从管理的角度上来看,任何一个组织的管理都需要一个从上至下的管理过程,有基层的管理人员,也有 高层的管理人员。对代码的管理就是软件开发中的基层管理,它起到的作用就是能够把需求、设计的思路贯彻到终的代码中。 "管理无大事"。对软件的管理也是一样,大部分的问题都是由于很小的原因 引起的。例如,一个产品如果后期在debug上花费了大量的时间,那么,这种现象是由于什么原因引起的?一种可能的原因是前期的代码设计中对代码质量的把握不严。每一次代码功能的演化并不会产生太多的问题,但是当代码累积

第3章 面向对象得软件开发技术汇总

第3章面向对象得软件开发技术 一、选择题 1.对象是面向对象开发方法的基本成分,每个对象可用它的一组( 和它可以执行的一组操作来定义。 A.服务 B.参数 C.属性 D.调用 2.我们把具有共同属性、共同操作性质的对象的集合定义为()。 A.类 B.属性 C.对象 D.消息 3.面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有多层,可以有子类,这种层次结构系统的一个重要性质是一个类可以获得其父类的全部描述(数据和操作),即()。 A.传递性 B.继承性 C.复用性 D.并行性 4.软件的内部实现与外部可访问性分离,这是指软件的() A.继承性 B.共享性 C.封装性 D.抽象性 5.面向对象程序设计语言不同于其他语言的最主要特点是()。 A.模块性 B.抽象性 C.共享性 D.继承性 6.不属于消息的性质的是()。 A.同一对象可接收不同形式的多个消息,产生不同的响应 B.相同形式的消息可以送给不同对象,所做出的响应可以是截然不同的 C.消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的 D.可以做一些特定的操作,改变系统状态的消息 7.通过执行对象的操作改变该对象的属性,但它必须通过()的传递。 A.接口 B.消息 C.信息 D.操作 8.在确定类时,候选的类是所有的()。 A.名词 B.形容词 C.动词 D.代词

9.同一类中有相同的数据结构,这种共享方式是()。 A.不同应用的共享 B.同一应用的共享 C.不同类的共享 D.同一类的共享 10.类库这种机制的共享方式是()。 A.不同应用的共享 B.同一应用的共享 C.不同类的共享 D.同一类的共享 11.在面向对象方法中,信息隐藏的实现是通过对象的()。 A.分类性 B.继承性 C.封装性 D.共享性 12.在只有单重继承的类层次结构中,类层次结构是()。 A.星形层次结构 B.环形层次结构 C.树形层次结构 D.网状形层次结构 13.在有多重继承的类层次结构中,类层次结构是()。 A.树形层次结构 B.网状形层次结构 C.星形层次结构 D.环形层次结构 14.在一般类中定义的属性或服务被特殊类继承后,可以具有不同的数据类型或表现出现出不同的行为的特性为()。 A.多态性 B.继承性 C.封装性 D.抽象性 15.汽车有一个发动机,汽车和发动机之间的关系是()。 A.一般具体关系 B.整体部分关系 C.分类关系关系 D.is a 关系 16.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是()。 A.组装关系 B.整体部分关系 C.has a 关系 D.一般具体关系

面向对象方法与结构化方法的比较

课程名称:系统分析与设计 结构化方法和面向对象方法的比较结构化方法是结构化分析,结构化设计和结构化编程的总称,是最早最传统的软件开发方法,也是迄今为止信息系统中应用最普遍、最成熟的一种,它引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。 面向对象方法它不仅仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行软件系统构造的软件方法学。人们普遍认为面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息和多态性等概念和原则来构造系统的软件开发方法。 结构化方法和面向对象方法二者的比较如下。 一、基本思想的比较 结构化方法的基本思想主要体现在三个方面。一、自顶向下,逐步求精:把程序看成是一个逐步演化的过程。把一个系统与程序看成是一层一层的。例如:户籍管理系统可以划分为:户籍迁入迁出,人员迁入迁出,户籍注销,人员注销等几个子系统,而每个子系统又划分为接收用户信息,实施处理,提供返回信息等等部分。二、模块化:即将几个系统分成几个模块,每个模块实现特定的功能,最终整个系统由这些模块组成。模块跟模块之间通过接口传递信息,模块最重要的特点就是独立性,模块之间还有上下层的关系,上层模块调用下层模块来实现一些功能。三、语句结构化:顺序结构、分支结构、循环结构,都是常用的语句结构。 面向对象方法的基本思想主要有:一、客观世界中的事物都是对象,对象之间存在一定的关系,并且复杂对象由简单对象构成。二、具有相同属性和操作的对象属于一个类,对象是类的一个实例。三、类之间可以有层次结构,即类可以有子类,其中,子类继承父类的全部属性和操作,而且子类有自己的属性和操作。四、类具有封装性,把类内部的属性和一些操作隐藏起来,只有公共的操作对外是可见的,对象只可通过消息来请求其他对象的操作或自己的操作。五、强调充分运用人在日常逻辑思维中经常采用的思想方法与原则。例如:抽象,分类,继承,聚合,封装,关联等。 二、基本原则的比较 结构化方法遵循基本原则有:一、抽象原则:是一切系统科学方法都必须遵循的基本原则,它注重把握系统的本质内容,而忽略与系统当前目标无关的内容,它是一种基本的认知过程和思维方式。二、分解原则:是结构化方法中最基本的原则,它是一种先总体后局部的思想原则,在构造信息系统模型时,它采用自顶向下、分层解决的方法。三、模块化原则:结构化方法最基本的分解原则的具体应用,它主要出现在结构化设计阶段中,其目标是将系统分解成具有特定功能的若干模块,从而完成系统指定的各项功能。 面向对象方法遵循基本原则有:一、抽象:是处理现实世界复杂性的最基本方式,在OO方法中它强调一个对象和其他对象相区别的本质特性,对于一个给定的域确定合理的抽象集是面向对象建模的关键问题之一。二、封装:是对抽象元素的划分过程抽象,由结构和行为组成,封装用来分离抽象的原始接口和它的执行。封装也称为信息隐藏,它将一个对象的外部特征和内部的执行细节分割开来,并将后者对其他对象隐藏起来。三、模块化:是已经被分为一系列聚集的和耦合的模块的系统特性,对于一个给定的问题,确定正确的模块

面向对象软件开发教程

软件是在代码之外发生的一切事情。 第11章 如何继续学习过程 你将从本章学到什么? ●两千年后(P2K)的软件环境是什么样的? ●P2K软件环境中的技术和技能是什么? ●有关P2K技能和技术有哪些概述性的资源? ●软件专家在面向对象项目中充当什么角色/职位? ●如何继续面向对象的学习过程? 为什么需要阅读本章? 你的技能,以及如何使用它们,是能否成为成功的软件专家的重要决定性因素。通过阅读本书,你会获得学习对象技术和技巧所需的基本知识,本章也给你提供了继续进一步学习过程的建议。 至此,你已经了解了面向对象的全部内容,现在你已经是一名准备开发大型、关键性任务软件的对象专家。好吧,现在你还不全是。实际上,你已经掌握了一些有用的概念和技能,也明白了它们如何一起使用,在浏览复习题以及案例学习的过程中,你已经使用了它们。目前你正处在有利地位,可以继续你的学习过程,这个过程将很可能贯穿你的整个职业生涯。本章给出了对软件业目前的状况以及将来的发展方向的见解,在接下来的几年中将会需要什么样的技能,要如何才能获得这些技能。 11.1 P2K环境 在你的整个职业生涯中一直要学习新的技能。 软件业在20世纪90年代后半期被Y2K危机严重影响了,新的开发被耽搁下来或者干脆取消,以转移资源解决Y2K危机,结果,许多企业都推迟了对采用新的技术和技能的投资。现在Y2K危机已经过去了,我们正面对着两千年后(P2K)的软件环境,一个使用本书中描述的技术支配的环境。 在P2K环境中,你将会应用新的方法,例如面向对象的和基于组件的方法,采用迭代和增

量方法的新的开发过程,像Java和CORBA这样新的技术,以及像用况建模这样新的技术。本书概述了对象开发技术,本节也总结了用于P2K环境的关键技术和技能。要理解P2K环境,必需考虑下面几项内容: ●新的软件策略。 ●使能技术。 ●领先的开发技术。 ●现代软件过程。 ●对象编程语言。 ●如何获得P2K技能。 定义 两千年后(P2K)环境(post-2000 environment):机构在IT部门内部部署的一系列技术和技能(大部分是基于面向对象和组件技术的)。 2000年(Y2K)危机(year 2000 crisis):软件组织在20世纪90年代未期要更新或替代那些使用两位数而不是四位数来存储年份的软件。 11.1.1 新的软件策略 21世纪初期将会由两项关键的软件策略来统治:企业应用集成(EAI)和电子商务。EAI 把全异的软件应用集成为一个整体以支持新的和复杂的业务过程。中间件和组件技术,例如下面这节里描述的CORBA和兼容COM+的工具也用于支持EAI。了解EAI的一个好去处是,也可以参考《Enterprise Application Integration》(Linthicum,2000)一书。包装技术是《Building Object Applications That Work》(Ambler,1998a)一书详细讲述的主题,对于EAI的开发者来说它也是一项重要的技能。 电子商务也称为基于Internet的商务,它关注于使用电子技术支持产品销售和服务。电子商务成功的机构有,戴尔公司()—一个计算机软硬件零售商;亚马逊()—一个销售书、录像带、音乐CD的零售商;Ebay网()—一个在线拍卖网站。电子商务最好的资源是杂志《The Industry Standard》(),它以报纸和在线两种形式出版发行。 11.1.2 使能技术 除了11.1.5节描述的对象编程语言外,还有好几个使能技术也是P2K环境中占主导地位的技术。这些技术有: ● CORBA ● COM+ ● EJB(企业Java组件模型) ● XML ●持久层/框架

面向对象软件开发技术试题

面向对象软件编程技术试题 (工程硕士) 年级:姓名:成绩: 一、选择填空题(答案写在每题后面的括号内)(每题5分,共50分) 1.在面向对象方法中,对象可看成是属性(数据)以及这些属性上专用操作的封装体。封装是一种 A 技术,封装的目的是使对象的 B 分离。类是一组具有相同属性和相同操作的对象的集合,类中的每个对象都是这个类的一个 C 。类之间共享属性和操作的机制成为 D 。一个对象通过发送 E 来请求另一对象为其服务。 A:①组装②产品化③固化④信息隐蔽() B:①定义和实现②设计和测试③设计和实现④分析和定义() C:①例证②用例③实例④例外() D:①多态性②动态绑定③静态绑定④继承() E:①调用语句②消息③命令④口令() 2.软件设计的常用方法有SADT方法、Jackson方法、快速原形方法和 OO设计方法等。其中,Jackson方法是一种面向数据结构的设计方法,其数据结构一般有 A 、 B 、 C 三类,并根据 D 来导出程序结构。OO方法的核心是 E ,这是提高可维护性的重要措施。 A: ①记录结构②顺序结构③指针④树() B: ①表结构②选择结构③数组④线性表() C: ①链表结构②列表③重复结构④队列结构() D:①数据结构②数据间的控制结构③数据流图④图() E:①结构化②继承性③信息隐藏④对象() 3.面向对象建模通常定义了三种模型,它们分别是对象模型、动态模型和功能模型。其中, A 模型描述系统中与时间和操作顺序有关的系统特征,表示瞬时的行为上的系统的“控制”特征; B 模型描述了系统中对象的静态结构,以及对象之间的联系; C 模型描述了系统的功能“性质”,它指出了系统应该做什么。在建立动态模型中,通常先画出 D ,然后再画出 E 。

基于面向对象框架的软件开发方法

基于面向对象框架的软件开发方法 随着电子信息、计算机网络技术的快速发展,一些计算机软件需要软件工程师去开发,软件开发的方法至关重要。面向对象框架软件随着市场的需求量的增大,类型越来越多,给其开发技术方法提出了更高的要求,所以掌握面向对象框架的软件开发方法至关重要。本文根据个人的经验首先对框架的特征进行了教育分析,然后重点研究了基于面向对象框架的软件开发过程。 标签:面向对象框架软件开发方法 前言 在近些年,基于面向对象框架的软件开发方法随着市场需求量在不断增大,软件复用成为软件开发的重点项目之一。现在市场上的面向对象框架已经有不少了,但都是小型的模块组件,本文根据个人的经验来研究能复用的大型组件就是基于面向对象框架软件的开发方法。 一、框架的特征分析 1.模块化 为了让组件更具有模块性(化),要对框架多变封装,然后在利用固定接口来完成。框架模块化后,方便已有的软件维护和理解,也可以对应用程序的质量进行局部的改变。 2.可复用性 类属组件指的是框架的固定接口,新的应用程序的开发要依赖于类属组件,类属组件可以让框架软件的复用性在很大程度上加强。框架软件可复用性可以聘请专业知识强、经验丰富的开发工程师来避免软件的后续开发做重复工作,这样不仅可以把软件开发的效果提高,而且还能提升框架软件的功能性、可靠性及质量。 3.扩展性 框架软件应用程序固定接口的扩展性需要利用显示的钩子方法来实现,这样一来就可以大大提高框架本身的扩展性。框架根据需要要想制定新的应用程序服务必须要依靠框架的这种扩展特性。 4.反向控制 框架在运动体系中被称为“反向控制”,框架派发机制激活的事件处理对象可利用反向控制来一步步制定标准化的应用程序。框架(非应用程序)的外部事件

软件工程第二章软件过程

第二章:软件过程 目标: 软件工程和软件过程模型的概念; 了解3个一般的软件过程模型及何时使用它们; 了解软件需求工程,软件开发,测试和进化中所涉及的基本过程活动; 理解为什么软件过程要有效地组织以应对软件需求和设计上的变更; 了解Rational统一过程是如何集成好的软件过程实践来产生一个可适应的软件过程。 所有的软件过程都必须具有4种对软件工程来说是基本的活动。它们是: 1.软件描述:必须定义软件的功能以及软件操作上的约束。 2.软件设计和实现:必须生产符合描述的软件。 3.软件有效性验证:软件必须得到有效性验证,即确保软件是客户所想要的。 4.软件进化:软件必须进化以满足不断变化的客户需要。 2.1软件过程模型 一软件过程模型一般有 1.瀑布模型:该模型将基本的过程活动,描述,开发,有效性验证和进化,看成是一些界限分明的独立的过程阶段,例如,需求描述阶段,软件设计阶段,实现阶段,测试阶段,等等。 2.增量式开发:该方法使得描述活动,开发活动和有效性验证活动交织在一起。系统的开发是建立一系列的版本(增量),每个版本添加部分功能到先前的版本中。 3.面向复用的软件工程:该方法使得描述活动,开发活动和有效性验证活动交织在一起。系统开发过程着重于集成这些组件到新系统中,而非从头开发。 2.1.1瀑布模型 一瀑布模型中的主要阶段直接映射基本的开发活动: 1.需求分析和定义 2.系统和软件设计 3.实现和单元测试 4.集成和系统测试 5.运行和维护 二适合采用瀑布模型的时候 瀑布模型是与其他工程过程模型相一致的,在它的每个阶段都要生成文档。这使得过程是可见的,项目经理能够根据项目计划监控项目的过程。它的主要问题在于它将项目生硬地分解成这些清晰的阶段。关于需求的责任和义务一定要在过程的早期阶段清晰界定,而这又意味它对用户需求变更的响应较困难。 所以只有在对需求了解的好,而且在系统开发过程中不太可能发生重大改变的时候,适合采用瀑布模型。 瀑布模型的一个重要变形是形式化系统开发。针对系统描述创建其数学模型。然后采用能保持一致性的数学变换对该数学模型进行加工,知道产生可执行代码。 形式化的开发过程,如基于B方法特别适用于有严格安全性,可靠性或信息安全性需求的系统的开发。形式化方法简化了安全用例和信息安全性的需求。 基于形式变换的过程通常只用于开发安全性或信息安全性要求极高的一类系统。这需要非常专业的知识和技能。对于大多数系统,在系统开发中应用这一过程不会比其他方法带来明显

软件设计师-面向对象技术(二)

软件设计师-面向对象技术(二) (总分:29.00,做题时间:90分钟) 一、 (总题数:22,分数:29.00) 1.面向对象程序设计语言中提供的继承机制可将类组织成一个______结构,以支持可重用性和可扩充性。 (分数:1.00) A.栈 B.星形 C.层次√ D.总线 解析:面向对象程序设计语言中提供的继承机制可将类组织成一个层次结构,以支持可重用性和可扩充性。父类和子类便是一种层次关系,子类继承了父类的方法和属性以达到代码重用的目的,另一方面,子类可以有自己的不同于父类的属性和方法便于扩充。 2.在C++语言中,若类C中定义了一个方法intf(int a,int b),那么方法不能与该方法同时存在于类C 中。 (分数:1.00) A.int f(int x,int y) √ B.int f(float a,int b) C.float f(int x,float y) D.int f(int x,float y) 解析:该题其实考查的是形参和函数重载。 编译器视函数“int f(int a,int b)”和“int f(int x,int y)”为同一个函数,尽管两者的形参名称不一样,编译器只管形参的类型是不是一样。在VC 6.0中,若在同一个类中定义这两个函数,编译错误信息中会提示“member function already defined or declared”,即成员函数已定义或声明了。 对于在同一可访问区内(如同一个类中)被声明的几个具有不同参数列(参数的类型、个数、顺序不同)的同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载,重载不关心函数的返回值类型。这里,“重载”的“重”的意思不同于“轻重”的“重”,它是“重复”、“重叠”的意思。可见,B、C、D均与“int f(int a,int b)”构成重载。 另外,值得特别强调的是,重载不关心函数的返回值类型,在同一个类中,也不允许“int f(int a,int b)”、“float f(int a,int b)”两者同时存在,这两者不构成重载,编译器无法识别。 3.下面关于面向对象的描述正确的是______。 (分数:1.00) A.针对接口编程,而不是针对实现编程√ B.针对实现编程,而不是针对接口编程 C.接口与实现不可分割 D.优先使用继承而非组合 解析:“针对接口编程,而不是针对实现编程”这是面向对象程序设计的一条重要准则,遵循此原则有以下好处: ①使用者不必知道其使用对象的具体所属类;

第二章软件开发工具知识点

一、选择填空知识点 1、软件开发中所遇到的困难来源于大系统的(复杂性),来源于人们知识的(不足),来源于迅速变化的(客观世界)。 2、为克服软件危机,人们先后提出了(结构化程序设计方法)(软件工程方法)(面向对象的程序设计方法)(即插即用的程序设计方法),直到最近的(面向开源软件)和(互联网平台的程序设计)。 3、在克服软件危机的过程中,有两个领域的问题需要特别注意,一个是(软件质量的评价与改善),一个是(项目管理的任务与方法)。 4、软件开发过程中主要完成两个转换,首先是从(用户)的理解到(程序员)的理解,其次是从(程序员的理解)到(程序的实现)。 5、两个转换中,第一个转换是(工作方式上)的区别,第二个转换是(人与机器之间思维方式上)的区别。 6、从程序员的理解到程序的实现的关键在于程序员的(知识水平)与(实际经验)。 7、如果单个程序员独自编写程序相当于手工作坊的工作方式,真正的大型软件的研制必须采用(现代化的大生产的方式)才能完成。 8、当人们修改程序的某一处时,由于没有考虑到这一修改对相关部分带来的影响,结果出现了新的错误,这就是所谓的(水波效应)。 9、在软件测试时,通过输入一些信息,观察是否能得到预期结果,这就是所谓的(黑箱)检验方法。 10、软件开发过程中,文档包括(功能说明书)(总体设计)(各模块的设计任务书)和(测试报告)。 11、软件版本更新中大量工作往往在于(审核)与(回顾)。 12、大型软件开发中,作为用户来说,应该承担的责任有(提出需求)(验收)(使用)(要求修改)。 13、大型软件开发中,作为项目负责任来说,应该承担的责任有(分析需求)(分配任务)(验收模块)(联调)(交付使用)(验收修改成果)(分析修改需求)。 14、大型软件开发中,作为程序员来说,应该承担的责任有(编写软件)(模块调试)(交付检验)(交付检验)(修改)。 15、软件开发中,涉及到的四个角色是(用户)(项目负责人)(程序员)(硬件)。 16、结构化程序设计的思想是在20世纪(60年代)产生的。 17、结构化程序设计方法中,把程序的结构分解成三种基本模块(处理单元)(循环机制)(二分决策机制)。 18、模块划分中,模块的功能在逻辑上尽可能地(单一化)(明确化),最好做到一一对应。 19、每一个模块实现一项明确的任务,反之每一项任务仅由一个模块来完成,这称之为模块的(凝聚性)。 20、模块划分中,模块之间的联系尽量避免(逻辑)耦合,而仅限于(数据)耦合。 21、模块的规模应当足够小,以便于本身的(调试)易于进行。 22、为更好的划分软件的结构,采用(自上而下、逐步分解)的办法,分成若干部分。

相关主题