西门子TP1200面板
容易发表),我们才能继续应用、观察、学习这**程。我们也触及到现成构到目标明确的、可修改的技术包的重要性,比如通用代码组件或者可针对具体项目修改的技术。我们的实验结果需要在环境中使用,并且需要不断地根据我们的经验改变环境。技术转移包括一个新的组织构架、实验和循序渐进的文化改缺陷类型,甚至是随着时间的代码增长。这些变量向我们提供关于环境的见解,启发我们应该着重改进哪些方面,并且让我们更好地理解项目之间的相同与不同之处。我们使用实验范式来分析软件开发研究,即实验的设计、评估、反馈对于学习都至关重要。分析方法的变迁用一致性和支持工具的缺乏迫使我们不得不手动采集数据。我们与开发人员分享中间结果,以便他们提出反馈,修正错误的理解,并且提出更好的方法采集数据。随着时间的推移,我们使用GQM手动采集的数据越来越少,我们把数据采集直接嵌入到开发流程中,这样数据更加准确,开销更少,并且使我们能够评估流程的一致性。通过开发人员与实验工作人员的互动,我们获取了开发人员经验的详细信息,为局部需求和目标提供有效反馈。然后,通过普遍的信息反馈流程合并对照试验与案例研究,对特定方法技术提供更正规的分析。简而言之我们从事的是探索性研究,我们比很多科学都更多地依赖于方法和技巧的实证应用。在1976年,几乎没有关于软件工程的实证研究,而建立一个研究软件开发的实验室更是前所未有的。该实验室的建立提供们首先对新技术进行实验,以研究流程应用与相应产品特征之间的关系。这些技术的选择是基于我们在SEL中观察到的各类问题,同时以特定的目标为对象,比如*小化缺陷
浔之漫智控技术(上海)有限公司(w)是中国西门子的合作伙伴,公司主要从事工业自动化产品的集成,销售和维修,是全国的自动化设备公司。公司坐落于中国城市上海市,我们真诚的希望在器件的销售和工程项目承接、系统开发上能和贵司开展多方面合作。以下是我司主要代理西门子产品,欢迎您来电来函咨询,我们将为您提供优惠的价格及快捷细致的服务!
起初,我们试图使用已经存在的一些模型来帮助我们理解环境(比如雷利波曲线或是MTTF模型)。结果我们发现它们并不合适,要么因为它们的定义是服务于相对更大型的项目(以100KLOC为单位),要么就是使用它们的时间点并不符合我们的需要。所以我们开始用自己的数据设计适合于自身环境的模型。我们需要更好地理解和表征环境、项目、流程等,因为我们无法使用别人从其他环境中提取的模型特质使其成为进行实证研究的沃土。实验室各方面的平衡创造了一个理想的学习环境,大家通过彼此合作及反馈可以相互学习。
从1976年到2001年,我们在不断犯错中学到了很多。所犯下的错误包括:在全面认识环境之前就妄下断言;是数据主导,而非目标主导或是模型主导;用其他环境下得出的模型解释我们的环境。
学习的进化流程是渐进的而非跃进的。利用每次学习的经历,我们试图把学习到的知识运用到流程模型,产品与组织机构上。开始就是如此。随着对执行流程的观察,我们久而久之用所得到的知识改进了每个步骤之后*终形成了这个方法。之后我将会讨论步骤的改进以及得到的启发,在这里,正式实验对主要理念的证明只起到支持的作用。
整个学习流程跨越25个年头,本章中我将集中介绍前20年的研究所得。虽然它们之间存在角色重叠,我的讨论将覆盖QIP中的6个步骤。对于每一个案例,我会介绍我们在应用科学方法时得到的经验教训,以及我们在NASA/GSFC的飞行动力学部门中改进软件开发时得到的经验。
行了如下一些活动,对应于质量改进范式的6个步骤:表征、设立目标、选择流程、执行流程、分析、封装。
SEL请大学研究人员验证高风险的方案。我们建立模型并测试假设。同时我们开发技术、模型和理论来解决问题,从而了解哪些方案是有用的。我们在应用中借鉴他人的方案,也研究出一些自己的方案。实验室的研究就是如此进行的。
我们重要的发现是如何把科学方法运用于软件领域,即如何从概念运用、案例研究、以及对照实验的反馈信息中得到启发从而改进特定环境中的软件开发流程。非正式的反馈指导我们应该关注案例研究与实验中的哪些部分,同时我们也出乎意料地从非正式的反馈中得到了关键的启发。解决方案。实验室活动只限于一个特定领域,由专业的开发人员参与,同时得到当地机构的鼎力支持。研究团队与实际开发人
多样性是我们在软件工程中运用科学方法时的一个重要方面。对于一种流程,我们需要验证它在不同的环境下的表现,才能更好地理解流程背后的理念以及它们之间的相互作用。随着时间的推移,我们还需要考虑所有的环境变量。如果没有在不同地点、由不同人对流程进行应用的话,很多环境变量的影响根本无法体现出来。
仅靠一个团队绝不足以建立这样的理论体系。作为一门庞大的科学,它需要依靠团队之间的合作。研究结果也需要被高效地共享,比如可以建立一个存放不断完善中的模型以及经验教训的知识库,研究人员可以使用和更新其中的内容。
5.3 NASA软件工程实验室:
,我将总结我们在NASA(National Aeronautics and Space Administration,美国宇航局)软件工程实验室(SEL)25年的经验。在SEL,我们不仅通过实验来学习,而且通过分析问题、应用可行的解决方法、并找出其不足之处来不断学习经验。我们也进行了对照实验与案例研究,但是是在一个不断改进的更大型的学习流程中执行的。
SEL建立于1976年,旨在为卫星系统的软件开发提供地面支持,并且在可能的情况下用观察、实验、学习和建立模型的方法为位于Goddard1的飞行动力学部门优化流程和提高产品质量[3]。实验室的研究团队由NASA与CSC电脑科技集团(CSC)的开发人员,以及马里兰大学的一个研究团队组成,三者组成了一个联盟。SEL决定支持我们的实证研究,并且将其并入组织的整体工作中。实验支出来自项目自身的经费,而非来自NASA的研究经费。
环境差异并不单纯指软件开发人员的不同。软件的每一部分都不尽相同,软件开发环境亦是如此。这也就意味着,流程是变量,目标是变量等。我们需要为所研究的环境选择合适的目标和合适的流程。所以,在决定如何研究某种技术之前,我们需要对其环境和特性做一些了解。
软件工程的第二点与众不同之处在于软件的无形性,也就是构架、组件、开发形式的不可见。这一点和软件工程的第三个特性,即该领域的不成熟性密切相关,因为仍没有完善的模型能帮助我们推导流程、产品和它们之间的关系。这些困难促使以下两种需求变得尤为迫切:从不同情境下的理念应用中学习,并且从中归纳理论或者