软件架构:每个开发者都应知道的五件事
当前软件开发行业要么正飞跃式地前进,要么正陷入深层动荡之中。一方面,我们正在向前推进,在每一转折处重塑我们构建软件和追求工艺的方式。另一方面,我们却不断忘记过去的好,软件团队也一直失败于一个惊人的定期。
软件架构在成功的软件交付中起着举足轻重的作用,但是许多团队却令人沮丧地忽视这一点。无论是一个人完成或者团队之间共享,架构的角色必定存在,即便是在最敏捷的团队。然而前期和进化思想的平衡常常反映的是愿望,而不是现实。最大的问题是,在过去的十年左右的时间里,软件架构已经失宠。究其原因,是人们对其理解与重视程度的问题。以下是五件每个软件开发人员应该了解的事情。
1、软件架构不是大的前期设计
人们历来将软件架构和大的前期设计及瀑布式项目(团队在编写任何代码之前,确保每个软件设计中的最后一个元素都应是考虑周到的)相联系。软件架构基本上是关于软件系统的高级结构以及如何得到一个对软件系统高级结构的理解。这个技巧的目的是针对影响软件系统形状的因素做出显著地决定,而不是理解数据库的每一列应该有多长。
2、每个软件项目都需要考虑软件架构
无论规模和完整性,每个软件项目都需要有软件架构。为什么呢?简单来说,如果你不这样做,坏的事情往往会发生。如果软件架构是关于结构和愿景,而不是想着它会导致的结构不良和软件系统的内部不一致。造成软件系统难于理解、难以维持,也有可能出现不符合一个或多个重要的非功能性要求的情况。如性能、可扩展性和安全性。明确地考虑软件架构所提供的介绍技术领导的方式,大量成功交付的几率,都能对你起到很大的帮助。
3、软件架构中的角色是关于编码、指导、合作
形象地说,许多人关于软件架构的理解相对传统,他们仍是象牙塔里软件架构师口述指示而其被动接受的软件开发者。尽管要求他们并不是这样的,现代的软件架构师更倾向一种利于编码、指导、合作设计的方法。软件架构中的角色并不一定需要由一个人来承担,加上编码,是一种很好的方式来理解由此产生的体系结构是否真正地工作。
4、不需要使用UML(标准建模语言)
同样,软件架构的传统构架试图往往是由标准建模语言(UML)模型组成,试图补捕获每一滴细节。而创造和交流得出一个共同的愿景是非常重要的,你不需要使用UML。事实上,你可能会说,对于软件架构的交流,UML无论如何都不是一种极好的方法。如果你记住一些简单的指导方针,轻量级的“方框和线条”草图会是一种交流软件架构行之有效的方法。
5、一个好的软件架构具有敏捷性
存在一个普遍的误解,架构和敏捷是竞争力,他们之间相互冲突。但是,完全不是这种情况。相反,一个好的软件架构应具有敏捷性,能够帮助你拥抱和实现变革。良好的软件架构不是由它们自己创造的,这还需要一些有意识的努力。