从定义上看,重构意味着改变程序的内部结构,而不改变外部的功能行为。这样做大多是为了提高程序的非功能性属性,从而提高代码的质量。然而,即便是经验丰富的敏捷开发者,在进行大规模的重构时也是如履薄冰。社区中的成员对掌控大规模重构的几种方式进行了讨论。 在最近的讨论中,Andreas想要知道三种可能完成大规模重构的方法中哪种最好。他的方式包括,一次完成——定义最终状态
从定义上看,重构意味着改变程序的内部结构,而不改变外部的功能行为。这样做大多是为了提高程序的非功能性属性,从而提高代码的质量。然而,即便是经验丰富的敏捷开发者,在进行大规模的重构时也是如履薄冰。社区中的成员对掌控大规模重构的几种方式进行了讨论。 在最近的讨论中,Andreas想要知道三种可能完成大规模重构的方法中哪种最好。他的方式包括,一次完成——定义最终状态
结对软件编程(Pair-Programming)可能是近年来最为流行的编程方式。所谓结对编程,也就是两个人写一个程序,其中,一个人叫Driver,另一个人叫Observer,Driver在编程代码,而Observer在旁边实时查看Driver的代码,并帮助Driver编程。并且,Driver和Observer在一起时可以相互讨论,有效地避免了闭门造车,并可以减少后期的code revi
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。 public interface Observer { void Response(); //观察者的响应,如是老鼠见到猫的反映 } public interface Subject
数据仓库的产生和发展----计算机系统的功能从数值计算扩展到数据管理距今已有三十多年了。最初的数据管理形式主要是文件系统,少量的以数据片段之间增加一些关联和语义而构成层次型或网状数据库,但数据的访问必须依赖于特定的程序,数据的存取方式是固定的、死板的。到了1969年,E.F.Codd博士发表了他著名的关系数据模型的论文。此后,关系数据库的出现开创了数据管理的一个新时代。----二十多年
一、JTEST1、简介jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(Design by Contract)规范开发的代码的正
"净室软件规范"描述了对系统或程序的两个功能性的观点。第一个基于外部行为(黑盒),第二个基于状态机(状态盒)。以下将描述第三个观点--用于实现状态盒并展示特定的外部行为的过程或算法(明盒)。 自顶向下的循环过程必须做出许多设计决定。通过此过程,一个复杂系统的最高层规范转变为在计算机上执行的代码体。盒式结构方法本身不做出设计决定,但设计者最好考虑整个解空间。解空间包
如今,软件开发越来越复杂,软件功能也越来越丰富。而几乎所有成熟的商业软件,都是靠一个开发团队齐心协力的血汗结晶。“罗马不是一天建成的!”,当我们震撼于Microsoft Windows的惊世巨著的同时,也道听途说了微软公司软件工程是如何的完善规范。的确,集数百名员工几年的共同努力之大成,软件项目管理的成败是控制开发成本的关键环节。这里面,少不了贯穿其中的重要步骤
一个企业的管理,大公司有大公司的方式,小公司也有小公司的方式,如果把别人的经验生搬硬套到自己身上,可能会适得其反。同样,管理一个软件项目也一样,大项目和小项目的方式不完全一样。但从另一个角度来看,项目的大与小并没有本质的区别,很多方法是共通的。本文的目的是从作者的经验来谈谈小项目开发的管理。一、小项目的特点大家知道,“软件危机”的出现起源于一些大型项目的不断延迟
标准的软件开发过程软件开发的标准过程包括六个阶段,而六个阶段需要编写的各类文件达14种之多,在每个阶段需要编写哪些文件,以及这些文件的主要内容见下:1.可行性与计划研究阶段可行性研究报告:在可行性研究与计划阶段内,要确定该软件的开发目标和总的要求,要进行可行性分析、投资一收益分析、制订开发计划,并完成应编制的文件。项目开发计划:编制项目开发计划的目的是用文件的形式,把对于在开发过程中各