什么是软件架构?

版权声明:本文为博主原创文章,未经同意不允许转载! https://blog.csdn.net/wb175208/article/details/84501015

做了这么长时间的软件开发,到底什么才是真正的软件架构呢?

程序员说:软件架构就是有哪些C++类,使用了那些Lib库或者框架;
项目经理说:软件架构就是定了哪些模块或者接口;
数据库管理员说:软件架构就是定义了那些表和这些表之间的关系,以及对这些表的操作;
用户说:软件架构就是这个系统可以划分那些功能。

这些人说的都对也都不对,是因为他们都是站在自己的角度上来看待这个问题,那么架构师就要从不同的方面来描述架构。

  • 为用户而设计

从广义上来说是这套软件系统为用户带来什么样的价值;帮助用户解决了什么问题;给用户带来什么娱乐价值。

用户除了要功能外,还需要软件的可靠的质量。

例如:一个查询功能,如果需要几分钟的时间才能得到结果,对用户来说是不能接受的。虽然这个系统具备这样的功能,但是没有达到用户期望的质量。

系统不仅能完成用户的要求还能达到用户的期望的质量。

  • 为客户而设计

很多时候,客户≠客户。

比如超市的销售系统,客户是超市老板但是用户是收银员。

为客户设计:考虑预算成本、上线时间、业务目标以及后期的扩展等问题。

比如小超市就不能采用大超市的大型的服务器和比较复杂的设计等。

  • 为开发人员而设计

任何系统必须由开发人员来实现其功能,软件开发的难度以及软件系统的分层结构、程序员的跟人素质等都直接影响开发项目的进度。

好的软件架构应该是可扩展的、可移植的、可复用的、易于修改和测试的。

  • 为管理人员而设计

现在的软件的系统越来越复杂,不是一个程序开发人员可以完成的,必须一个团队协作才能完成,在合作开发过程中,开发人员面临的不仅仅是技术性的问题,还有管理型的问题:开发人员之间的依赖关系。而软件的架构就是开发管理的基础。

总之,架构师要为客户负责,实现他们的业务需求和功能目标;架构师要为用户负责,简洁方便的操作和稳定可靠的运行质量;架构师要为程序开发人员负责,使他们各自独立有相互依赖;架构师要为管理人员负责,为他们进行分工管理、协调和评估提供依据。

猜你喜欢

转载自blog.csdn.net/wb175208/article/details/84501015