如果只要求排序(功能需求),没有任何非功能约束,那么10个程序员会写出10个算法。但如果加一个要求在没有输入集假设的前提下平均时间复杂度最小(非功能需求),那么10个程序员只能有一个算法。呵呵。
程序员的经验、看法等应被作为“约束”,这是影响系统设计的另一个因素。
那么你似乎应该说,如果两个人的脑细胞一样,那么他们解决问题的方法也肯定一样。
但是实际工作中我们的需求调研和需求分析往往是以功能为中心,很多非功能性需求甚至是在测试过程中被逐步加入。我在设想是否今后应反其道而行之。功能性需求仅仅作为某种设计方法的输入。这个想法目前是一种感觉。我还需要进一步琢磨琢磨。