初识软件架构
今天看了几篇关于软件体系架构的文章,有了初步的认识。
其实软件体系架构是一种很抽象的思想,不像是技术,我们学了就能实打实的把它写出来,但是他却站在软件开发的最前端,没有一个好的体系架构,我们的软件(小型软件,单人在一台电脑上短时间内能完成的除外)可能就需要消耗大量的人力物力财力,却达不到我们想要的效果,甚至完不成。
From Wikipedia:https://en.wikipedia.org/wiki/Software_architecture
Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. These structures are needed to reason about the software system. Each structure comprises software elements, relations among them, and properties of both elements and relations.[1] The architecture of a software system is a metaphor, analogous to the architecture of a building.[2]
百度百科给的定义是:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。
不过似乎不是很够。
我们完成一个软件项目其实就跟我们盖房子差不多,我们得清楚我们要干什么,解决的是什么问题;设计,到底是要建成什么样的,使用什么样的材料;分工,谁在什么时间内能完成什么;沟通,各部分之间要怎样良好的拼接起来;盖好之后,将房子美化装修;后期,维护拓展。对应到我们软件就是:跟客户沟通需要解决的问题;使用什么样的框架,什么语言;谁负责编程,谁负责调试,谁又负责代码的哪一部分;各部门之间出现问题的沟通解决;将软件格式模式等修整好;并且在将软件交给客户后后期维护和功能拓展等容易实现。
我们为什么要发现问题?没有明确的知道问题我们怎么解决!人家客户要的是在花园里的树上建秋千,分工到你这成了建一个秋千,别人建树,而你偏偏就做了一个在钢管上的秋千,这要让用户怎么满意。这里还体现了沟通的重要性!
为什么要设计?没有良好的设计怎么分工,连想 建成什么样都不知道,连用什么语言都不知道,怎么分配 谁要做什么,简直就是无头苍蝇。
为什么要分工?你总不能一个人做完整个 大项目吧,这样很累。总不能让擅长做前台的去做后台,让擅长后台的去做测试吧。合理的分工不仅可以提高工作效率,缩短工期,还可以提高工作质量。
为什么要调整好软件使用的构架模式?一个好的模式可以帮助功能的实现,可以打好软件的基础,对于日后的拓展及维护提供了坚实的后盾。
总的来说,它有以下作用:
软件构架对新产品开发的作用:从面向业务的需求,到最终的面向技术的软件系统,要跨越很大的鸿沟。软件构架就是架在这个鸿沟上得一座桥梁。具体而言,软件构架对新产品开发的作用有以下几方面:上承业务目标,下接技术决策控制复杂性,组织开发,利于迭代开发和增量交付,提高质量。
软件构架对软件产品线开发的作用:固化核心知识;提供可重用资产;缩短产品周期;降低开发和维护成本;提高产品质量;支持批量生产。