质量和快速决定了软件架构
作者:网络转载 发布时间:[ 2013/6/24 11:17:39 ] 推荐标签:
软件架构的选择和设计并不是很容易做出的,一个成功的软件架构取决于N多的因素,软件架构这个词向来是为模糊的一个词,个人认为软件架构实在是个很大的话题。
业界一直采用的形象比喻是建设房子时的房屋结构图,以软件的角度来说,软件架构应至少包括软件开发时使用什么语言、形成软件开发时可运行的核心基础框架、软件应用模块的设计(包括模块内聚的功能、对外提供的服务等)、软件测试的方法、软件部署的方法以及团队开发的方法,那么怎么来选择和设计软件架构呢,其衡量的因素是什么呢,个人认为其中质量和快速是衡量软件架构的选择和设计是否成功的两个重要的因素。
为什么说质量和快速是两个重要的因素呢?首先来看看这里的质量和快速分别包含了什么内容:
质量
软件的质量是软件能否成功的非常非常重要的因素,个人看来,软件质量应包括软件功能性需求的实现、软件非功能性需求的实现。
软件功能性需求中重要的是要确定对于客户而言商业价值高的部分是什么,这一项对于软件架构而言的影响是软件应用模块的设计上,而软件应用模块的设计呢,通常要取决于可运行的核心基础框架的设计和实现上;
软件非功能性需求则通常会包含很多要素,像软件灵活性、可扩展性、高响应等,在这些众多的要素中同样要选择出对于目前软件重要的要素是什么,这会影响到软件架构中的软件开发语言的选择、可运行的核心基础框架。
软件的质量还有需要考虑的要素是软件测试的方法了(这也会影响到选择什么语言来开发软件),这点对于软件质量而已,无疑是非常重要的一点。
快速
软件能否快速开发完成也已经成为了软件能否成功的重要因素,快速开发完成的意思非常容易理解,但它其实很大的程度影响到了软件架构的选择和设计,很明显的它将影响到软件开发使用什么语言、软件开发时可运行的核心基础框架、软件部署的方法以及团队开发的方法等等,团队中的人很大程度上决定了软件开发时使用什么语言(这个时候也要注意,其实什么语言会影响到开发的速度、开发的质量等,例如erLang的设计目标是为了可构建容错的系统、c则更适合从底层控制整个系统的交互、java具备丰富的基础库、业界资源和更适合复杂业务的需求),至于核心基础框架、部署的方法、团队开发的方法的设计都是为了快速这个目标的。
从上面的两个因素我们可以看到,要使得软件高质量且快速的完成,软件架构在选择和设计上时非常重要的是寻找到一种平衡,所以软件架构要做到模式化其实并不容易。
在这里多说下别的话,其实从上面所述能看出,去评论哪种语言会死是没有什么意义的,并不会有一种语言放在任何环境下都适合,像在互联网网站的建设上。我想可能很多人都会选择php+c或类似的语言体系,但大家其实可以仔细去想想,是不是网站的建设上一定要这样的两种语言才能承担互联网的高并发等需求呢,或许你更应该做的是从该网站重要的非功能性需求、团队等等因素来考虑,像如果你的团队是java性质的团队,而网站重要的非功能性需求又是支持业务的灵活性的话,那么我会觉得c这样的过程化语言不是这种情况下的佳选择,而java却是这种情况下的佳选择。
可能很多人会说java太慢呀,什么的,其实并不尽然,很多时候靠硬件以及的架构完全可以弥补掉java比c这样的程序运行相对更慢的毛病,这也算是给java的一个平反吧,呵呵,毕竟java相对c而言还有更大的好处那是java程序的开发无论从质量还是快速开发上肯定强于c,我这样说并不是说一定要选择java,我只是想说明应该根据什么样的情况来选择和设计什么样的架构,那才是合理的,所以架构永远都没有好的,只有合适的,而这也是架构师难做的原因,架构师在做架构的设计和选择时遵循的出发点是保证软件高质量且快速的完成。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11