西门子S120中国总代理
日记研究也有其局限性。比如说,这种研究有可能会造成海森堡式的问题,即观察的流程可能会强迫写日记的人不断地对记下来的问题进行反省,以至于后连记录的性质也变了。这意味着由于一直在记录各种错误,他可能会认真地思考造成这些错误的原因,后有意识地避免了各种错误,后就无法观察到所有结果。此外,日记研究还有一个难题,就是参与者很难长时间地坚持。比如说,有段时间曾暂停了他的实验,说道:“我没有记录实证研究,即使用广为认可并且经过验证的方法以证明某种断言真实性的正式研究方法,正逐渐在软件工程中取得进展。令人欣慰的是,人们终于承认了实证研究在软件工程科学中的重要地位。我们也在科学文献中看到越来越多的实证研究和相关实验,它们能够证明或者否定某些方法、技术和工具的有效性。软件工程与其他学科有几点不同之处。首先软件是人类智力与创造力的产物,而不是机械地“制造”出来的。软件开发的流程也不同于制造的流程。换而言之,软件流程并不是一种简单的重复劳动。这是该学科不同于其他学科的关键之处,也极大地影响了我们对它的解读。我们时时刻刻都需要关注环境变量所带来的影响。由于软件工程是基于“人”的学科,所以研究的结果总会有差异,我们也无法控制甚至不能确认所有的环境变量。
浔之漫智控技术(上海)有限公司(xzm-wqy-sqw)
是中国西门子的合作伙伴,公司主要从事工业自动化产品的集成,销售和维修,是全国的自动化设备公司。
公司坐落于中国城市上海市,我们真诚的希望在器件的销售和工程项目承接、系统开发上能和贵司开展多方面合作。
以下是我司主要代理西门子产品,欢迎您来电来函咨询,我们将为您提供优惠的价格及快捷细致的服务!
在适当的时候,将这些意见与正式的实证研究相结合来验证我们的理论,这些理论会加入整个理论体系并终使软件工程更加明了。所以我认为软件工程学科的研究是探索并逐步进化的。软件工程研究遵循科学方法,但由于其特性,真实实验并不总是可行而有效的。
在我看来,软件工程研究是一门实验室科学,而且是一门内容广泛的大学科。实验室的规模之大,使得我们必须使用更具探索性的方法来进行研究。只通过分析是无法理解这门学科的。唯有通过在软件工程的实践中研究各种关系的产生和变化,以及各种技术的限制,我们才能知道如何通过配置流程优化软件开发。
同时我们需要利用一切实践机会探索各种理念,比如对可行性进行测试,看看人们是否可以应用这些理念,理解应用它们所需要的技术,并测试它们与其他概念的相互关系。基于这些信息,我们可以调整研究环境中每一个理念,使人们可以在实践中轻松使用。甚至在建立模型之前,我们就需要在实践中试用我们的理念并且改良它们。那么,什么是个性平时我们总是能谈到个性。
这位人力资源经理并不是完全不思考的。她知道智力起一定作用。也许她已经阅读了这章所引用的一些文献。但她或许没有读到智力有益于获取知识,而不是预测已知的技能。智力不仅仅指智商(智商只是智力的一方面)。阅读科技文献时很容易遗失细节,这不会是次。软件工程里有这样一个传说:Royce在他的文章[70]中反对瀑布模型,但业界未能翻到下一页,在那里他说道,前一页的模型是不被推荐。这样一知半解的例子在从业者和研究者中一定还有很多。当在基于证据做出决定时,请先更全面地了解你的证据。
让我们回到本章开始提出的三个问题。个问题有关是否可以定义怎样是的软件开发人员。对于软件开发的某些任务(例如,编程),我们可能很快就会得出一个定义。对于其他任务(例如,软件工作量估算),则很难定义。你也许会反对说,一个的工作量估算者不就是以正确的信心指数准确可靠地做出估算吗。但在这之前,请记住我们这一章所赋予个问题的意义远远不止于此。定义一个出色表现者意味着把任务和任务所需的技能定义到如下的程度:新手怎样才能成为专家,专家怎样才能成为更好的专家。
对第二个问题的回答与个问题类似。对于某些任务,我们能度量技能和任务难度,但对其他任务我们还不能这么说。请注意,我们需要有效的方法来确定一定程度的技能,即:无需观察很长一段时间的表现。因此,这包括预测未来的表现。
本章所涉及的两个主要任务——编程和软件工作量预估本质上很不同:一个涉及规划,另一个涉及执行。而我们对前两个问题的答案似乎扩大了这一鸿沟。但是仅仅因为我们开始对一个任务有了解,而对另一个任务没有了解,并不意味这两个任务无关。相反,人们很自然地会询问,它们之间的表现会不会有相互联系。
当前说来,编程技能、预测的准确度、完成自身任务的可靠度是正相关的,这与人们通常认为的“即使是好的程序员也不能估算自己的工作量”的认识相反。如果正相关性被证明是真实的,你就可以让你好的程序员估算工作量,并根据实际完成这项工作的程序员的水平来校正预估。相对当前使用的与技能无关的补偿因素来说,这是一个巨大的进步。这里使用一个概念替代另一个概念的方法,是一个有趣的前景。例如,你可以通过提高编程技能来间接提高估算的准确度吗第三个问题,如果不能可靠地确定技能,是否应侧重于工具。如果能明白任务和所需的技能,那么我们肯定应该更多地专注于技能。因为大量的研究表明,增加组织机构几个百分点的技能,就能提高它的商业价值。但显然,Glass的观点只有在你知道如何识别程序员的技能时才会起效。当你不了解技能,以及不知道如何发展它时,另一种方法就是依靠环境和发展辅助环境的工具和技术。然后相关技能就变成了对于辅助环境的工具和技术的掌握。可能这是把“定义不明”的任务(比如软件工作量估算)至少转换为“不稳定”任务(如果做不到“稳定”的话)的方法。