西门子PLC模块CPU224XPCN继电器
人吃惊的来了。这些试探性搜索方法虽然有用,但却对研究结果施加了一个偏差。如果你改变上下文,也改变了偏差,那这些算法就会找到不同的"**"方案。例如,在对软件过程模型的人工智能搜索实验中,Green等人使用了两种不同的目标函数[15]。一个目标代表了安全性至关重要的政府项目,试图同时减少开发工作量和软件交付的缺陷数。另一个目标代表了更标准的商业情况,急于发布软件至市场,并一直努力不要插入过多缺陷。此研究用人工智能优化器搜索了4个不同项目。每次搜索在每个目标下重复。一个惊人的结果是,一个目标产出的建议通常在另一个目标下会被否决。比如,使用一个目标的人工智能搜索推荐增加交付前的时间,而另一个则建议减少时间。
对任何试图找到证据来说服人们改变现有软件开发流程和工具的人来说,这个结果都有重要意义。我们需要根据观众调整证据,而不是假设所有证据都能说服所有人。站在台上像变戏法似的拿出看似动人的证据并不足够。即使是从**研究中取得的有统计强度的、可复制的证据,如果证据与观众问题不相关,那也不能激发任何改变。换句话说,观众可能会自问:"这到底有什么好处?"而我们需要尊重他们的"业务偏差"。
1.5 展望未来
虽然软件工程研究已经进行了几十年,但是至今我们只看到了极少的有力证据,能引导软件项目运行方式的改变。我们推测这是由于背景的问题:研究者制造了关于A的证据,而观众却关注B、C、D等。我们推荐研究者在搜寻软件工程证据时多一点谦卑,至少和现在持平,并愿意结识并倾听软件从业者,他们可以帮助我们更好地领会B、C、D究竟是什么。我觉得我们的领域需要在至少一段时间内,停止搜,探索把数据用较少的开
同背景的方法,如用一套丰富的元数据标记所有的数据集,元数据描述了数据的出处。这些数据经验回过头来成为另一个"经验教训"知识库的支柱,这个知识库由美国国防部的国防采办大学维护,可以让*终用户指定他们自己的背景参数,比如项目的大小、重要性或者领域,以此找到在相似环境中被证实的实践。定的标准接口,允许用户设置和调整组件的参数和属性。
(5)互操作性。组件之间的严格统一的连接标准,实现组件之间、组件与用户程序之间的互操作。这种互操作是在目标代码级上的,与具体的开发语言无关。
组件技术将面向对象特征和分布式(物理或逻辑的)结合起来,是分布式计算和Web服务的基础。由于组件技术的出现,软件开发的方式有了很大变化,可以把软件开发的内容分成若干个层次,将每个层次封装成一个个的组件。在构建应用系统时,把这些单个的组件组装起来就成为一个系统,就像用零件组装机器一样。可以事先按照需求设计出不同组件,在构建应用系统时根据自己的应用需要选择需要的组件。可以看出,组件技术能够极大地提高软件的可维护性和可重用性,并且更具有工程特性,更能适应软件按工业流程生产的需求。目前主要的组件技术有OGM组织的CORBA,Microsoft平台上的COM/DCOM/COM+/.net,Java平台上的J2EE/JavaBeans/SOA。1. CORBA
公共对象请求代理体系结构(Common Object Request Broker Architecture,C
)是一种紧密耦合的跨平台分布式组件技术,支持运行在Windows、LINUX、Unix等操作系统上。CORBA是*早而且***的组件标准,它由对象管理组(Object Management Group,OMG)所制定,1991年10月推出1.0版,1996年8月推出2.0,2002年7月推出3.0,2004年3月推出CORBA 3.0.3版。CORBA是一种独立于语言的分布式对象模型,其
从软件开发工程化以来,软件复用就是开发人员考虑的大问题,并产生了一些比较常用的软件复用方法。结构化开发方法下,软件复用方法是建立实现基本通用功能的“源程序”的函数库或“二进制”的API库,不同的软件可以调用它们。在面向对象方法下,软件复用则可以通过建立类模块来实现。由于类的继承性特征,因此,基于类的复用效果比结构化方法要好。面向对象技术可以视为一种“源语言”级别的面向对象复用技术,即在进行复用时,必须能够访问到基类的源代码,这意味着被复用的代码和扩充代码必须采用同一开发语言。
组件技术是近年才发展起来的一种“二进制”(在Java平台上是字节码)面向对象复用技术。组件可以被看作为一个盒子,它里面封装了多个称为组件类的类模块。组件比类更大、更抽象,其中包含了更多的功能,更具有通用性,更加有利于复用。由于组件对象和调用者通常不在同一个进程空间,甚至不在同一台计算设备上(*简单的情况下,组件对