首页 理论教育 完美软件开发方法:构成与逻辑

完美软件开发方法:构成与逻辑

时间:2023-11-21 理论教育 版权反馈
【摘要】:既然软件的世界如此多元,那么进行完美软件开发的讨论时,就必须忽略一些细节,才可能在限定的篇幅下,取得有价值的结论。如果说软件是一种固化的思维,那么软件开发无疑是思维固化的过程。图1-2 软件开发中各项活动的归类图1-3 软件开发中各项活动的关联关系本质与细节这世上同时存在着两种对立的声音:本质决定成败和细节决定成败。

完美软件开发方法:构成与逻辑

自其异者视之,肝胆楚越也;自其同者视之,万物皆一也

庄子,《德充符》

软件是一种固化的思维,这一点决定了许多的事情。

从特质上来看,既然软件是固化的思维,那就必然同时具备思维以及思维所承载之物的特质。

●思维的特质是指思维的澄清通常是渐进的,思维自身是不可度量的,思维的主体一定是人,思维通常由概念和逻辑组成,思维的无边界化(灵活易变)这样的特质。这部分特质是共通部分,同时属于所有软件。

●思维承载之物的特质是指当思维的对象是数学的时候,思维本身也就具备了数学的特质;当思维的对象是商业逻辑的时候,思维自身也就具备了商业逻辑的特质。

既然思维自身的特质是复合的,那么作为固化思维的软件,其特质必然也是复合的:既有属于所有软件的共同特质,也有特属于某类软件,甚至同其他类软件完全相反的独有特质。也就是说,在软件这一范畴里,两种矛盾的说法同时成立,并不是什么值得惊讶的事情。

既然软件的世界如此多元,那么进行完美软件开发的讨论时,就必须忽略一些细节,才可能在限定的篇幅下,取得有价值的结论。

因此,在本书后续讨论中,将更多的基于思维的特质,而非思维承载之物的特质,来探讨软件。这样得出的结论才更有普适性。

如果说软件是一种固化的思维,那么软件开发无疑是思维固化的过程。在思维固化的过程中有两个层面的问题需要同时解决。

●思维的主体必然是人,当多个人在一起协作的时候,彼此间的关系如何处理?在这背后隐含的两个分支是管理和流程。

●在软件开发过程中,从本质来看,事实上只有两个根本步骤:一是弄清楚要做什么(需求开发);二是对思维进行固化(设计,编码)。对这两个步骤的时序进行各种安排,则产生各种开发模型。为支持这两个步骤能够平滑进行,需要预先进行估算。

上述分解总结起来如图1-2所示。

在做出上述分解后,我们可以进一步推断完美软件开发必然包含着两个根本命题:一是上述各个分解步骤自身的最优化;二是上述各个步骤彼此间搭配的最优化。

也就是说现存的大多方法论(CMMI、敏捷等),由于其过度强调某单一维度,同时漠视方法与软件本质间的关联,一定程度上讲其本质是苍白的。(www.xing528.com)

图1-3用于说明这种关联的复杂性。

978-7-111-42626-4-Chapter01-2.jpg

图1-2 软件开发中各项活动的归类

978-7-111-42626-4-Chapter01-3.jpg

图1-3 软件开发中各项活动的关联关系

本质与细节

这世上同时存在着两种对立的声音:本质决定成败和细节决定成败。

偏好本质的人喜欢说本质论。

偏好细节的人则喜欢说精细化管理。

但如果在较长的时间轴上考量这两种观点,就会发现它们之间并不真的对立。

本质决定大尺度时间上的走势和必然性,而细节则决定差异(包括短期成败)。

比如说:人的本质特征是能思考,有感情,会衰老,寿命有限等,但区别不同人的却不是这些,而是性格,肤色,发色等细节。

具体来看:软件本质上是只有人才能处理的东西,因此公司中程序员群体的衰落一定会导致软件的衰落,只有优秀的程序员群体,才能保证软件的持久成功,这是必然的。但优秀的程序员却不一定确保当前项目成功,任何细节上的小疏忽,都可能导致软件在市场上崩溃,死锁,进而导致灾难性后果,这就是细节决定成败。

成败自身虽然万众瞩目,对个体而言却只是一种偶然和机遇。当事人可以很努力地平衡本质上的追求(长期视点)和细节上的追求(短期视点),但变更的始终是一种成败可能性。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈