西门子S7-200模块CPU224XPCN中央控制器
函数)来实现多态性。
综上可知,在面向对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是适应人们一般思维方式的描述范式,方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。
面向对象思想强调以对象为中心,迭代式进行问题的求解(或项目的开发)。面向对象的封装、继承、多态特征能够很好地支持迭代式开发。在编程时,直观上看程序员编码时主要是一些类,但为什么不能称为“面向类”而称为“面向对象”开发技术?这是因为编码的各种类,假如不实例化,是不能参与到主程序中,无法提供实际的功能的。同样可以把这个思想推广到设计、分析阶段。
在面向对象的业务分析过程中,使用业务用例模型来进行业务分析,每个业务用例就是“业务用例类”的一个对象;在面向对象的分析过程中,重点是找到和描述问题领域的对象或概念,并以用例模型来描述需求模型,每个用例就是“用例类”的一个对象。在面向对象的设计过程中,重点是定义软件对象,以及它们如何协作来满足需求,用以类图为主的设计模型来表达拟开发软件,每个类就是“类”这种类的一个对象。*后在编程的时候,用面向对象的**语言来描述细节,这些设计的类会有具体的实现——对象。
由于面向对象的方法恰好可以使得人们按照世界本来
目来建立问题域的模型,设计出尽可能自然地表现求解方法的软件,能直接表现人求解问题的思维路径(即求解问题的方法),从而使得整个软件的开发过程中都保持完全一致的思维方式。因此开发的软件不仅容易被人理解,而且易于维护和修改,从而会保证软件的可靠性和可维护性,并能提高公共问题域中的软件模块和模块重用的可靠性。
1.5.3 组件技术为了提高组件的管理和应用,各种各样的“容器”被开发出来以实现组件的统一管理。比如在Windwos平台上,可以用“组件服务”(“控制面板-〉管理工具-〉组件服务”)来集中管理计算机系统内或网络中其他计算机上的组件;在Java平台上,应用服务器(Application Server,例如Jboss、Weblogic、Websphere等等)用Servlet容器、EJB容器等等来对Servlet组件和EJB组件进行集中管理。当组件没有放置在容器中时,每个组件必须自己负责解决安全、共享、完整性等等普遍性问题,因此能够不放置在容器中的组件必定比较复杂、庞大;当组件放置在容器中时,每个组件只要按照容器的规范进行设计开发,就可以方便地放置在容器内,由容器提供统一的安全、共享、事务等服务。这就像文件系统下的文件和数据库管理系统中的表数据一样,文件系统下的每个文件必须自己负责安全、共享、完整性等问题,而数据库中的表数据,由数据库管理系统集中解决数据的安全、共享、完整性等问题。
与一般软件不同,组件具有自包容性、平台/语言独立性、重用性、可定制性和互操作性等特点。
(1)自包容性。每个组件是模块相对独立,功能相对完整的程序单元;组件通过一些标准或自定义的应用接口将自身功能暴露出来,供使用者使用。
(2)平台/语言独立性。只要遵循组件技术的规范,开发人员就可
浔之漫智控技术(上海)有限公司(w)是中国西门子的合作伙伴,公司主要从事工业自动化产品的集成,销售和维修,是全国的自动化设备公司。公司坐落于中国城市上海市,我们真诚的希望在器件的销售和工程项目承接、系统开发上能和贵司开展多方面合作。以下是我司主要代理西门子产品,欢迎您来电来函咨询,我们将为您提供优惠的价格及快捷细致的服务!
用任何方便的语言去实现组件,客户程序或其他组件也可以按照其标准使用组件提供的服务,且客户和组件任何一方的版本更新都不会导致兼容性问题。
(3)重用性。用户也可以很方便地在对组件进行功能扩充。由于组件已经二进制化,复用代码可以选择任意编程语言。
(4)可定制性。通过某些给是一个数据和经验的知识库,由NSF资助,用于与其他研究者共享并重新分析。我们利用了SEL的经验任意扭曲。想象一个蚂蚁正在搜寻这块地毯的高峰和低谷,试图找到*低点,比如在这个点上,软件开发的工作量和缺陷的数量*少。
如果问题足够复杂(软件设计和软件流程的决定也确实非常复杂),就不存在找到**解决方案的**途径。也就是说,蚂蚁可能被困在错误的低谷中,自认为是*低其实却不是(比如,一些山脊阻碍了它的视线,使之看不见相邻的更低谷)。
优化算法和人工智能算法使用各种试探性方法来搜索这个选择空间。一种方法是根据特定观众的目标对问题的上下文建模,然后把搜索引导至一个特定的方向。想象那只蚂蚁在一根皮带上,而这根皮带向着目标方法被轻轻地拉动。在第二层中,我们把不同项目和不同背景的结论抽象出来。现在可能必须满足于只在一个领域中抽象出重要因素或基本原则,而不是提供"唯一"的解决方法对所有不同背景的子集都适用。
比如,Hall等人试图回答什么能激励软件开发者。[16]他们查看了92个实验过此问题的研究,每个都有不同的背景。在试着弄清楚这些研究和它们的不同研究结果时,研究者在寻找看似能激励开发人员的因素,即使不太可能量化这些因素的贡献。于是,伴随着一定的可信度,在多个研究中所找到的有作用的激励因素被包含在这个模式中。
*终结果不是一个预言性的模型,如X因素是Y因素重要性的两倍。相反,它是一个重要因素的列表,管理者可以因此,定性研究应该在定量研究之前开展,查看那些更复杂的情况。当只涉及少数不同因素时(如物理学),就可以快速推进至定量研究了;当涉及许多不同因素时(如人类社会互动),这种转换要么需要更长的时间
么需要利用尚不成熟的简化。软件工程证据中许多可信度的问题都来自于这种不成熟的简化。这不是二分法,这是连续体。
定性和定量研究不像简化中的那样独立。定性研究可能需要收集定性的数据(如言论或行动的记录),然后把数据进行系统化编码(如数据分类),*终量化编码数据(就是计算每个分类中的实例)并进行统计分析。定量研究反过来也可能有定性的因素存在。例如,当比较两种方法A和B的功效时,可能会比较两种方法的产品,把它们评估为“好”、“不错”和“差”。这些回答是定性的,它们落在顺序量表上。然而,可以继续使用统计方法(如Wilcoxon秩和检验)来确定A的输出是否显著地比B的输出好。研究结构是实验性的,而分析是定量的,和度量单位是厘米或秒用的是同样的技巧。(即使在使用性能指标的研究中,对指标的选择以及指标和质量的联系也可能是基于定性评估的。)
软件系统中*有力的研究结合了定量证据(如性能度量)和定性证据(如流程描述)来记录现象,识别关键因素,软件工程还没有证据的合并体。然而,已经有很多人在努力合并证据。Barbara Kitchenham及其同事们一直在支持系统性文献评审的运动,使用有明确标准的评估框架来检验并集合关于特定话题的已发表的证据。比如,Jø