美文网首页软件产品设计
关于软件架构的思考

关于软件架构的思考

作者: 苏星河 | 来源:发表于2016-03-13 05:15 被阅读68次

    我承认自己因为想这个话题,今晚失眠了。反正也睡不着,手机码字把思考的东西分享出来。


    项目前期

    软件工程也像建筑工程等传统意义上的工程项目一样,有甲方和乙方。甲方通常就是需求方,他们往往只有想法和资本,不懂设计,更不懂技术(至少大多数甲方是这样)。而开发团队就是乙方。甲方在找乙方谈项目的时候,通常带着一些需求,而这些需求只是他们脑中的一些初级想法。作为乙方,拿到这个项目之后,第一步要做的事就是整理需求。将需求进行细分,注意这时候的需求将不再仅仅是甲方提出的那些需求,而是加上了我们自己对于这个项目的理解之后得出的需求。然后将需求按重要程度进行分级,最终整理出一份完整的需求文档交给甲方看。甲方看后没有问题,方可进入下一步的实际开发。


    敏捷开发

    敏捷开发是近年很火的一种软件开发思想。按照我的理解,敏捷开发之所以“敏捷”,在于两方面。

    1.快

    为了能够快速实现需求,敏捷开发要求团队必须足够的精简。每个团队成员独立负责自己的工作,对自己的代码拥有完全的控制权。在我的上一个项目团队中,我们每个人按照职能在git下开辟了自己的分支,每个人只需要维护自己的分支,并在必要的时候进行分支合并。

    构建合适的软件架构是实现快速开发的另一大要诀。拿web开发为例。web分为前端和后台,在传统的web开发中,前端负责书写静态模板,然后交由后台渲染。这种开发模式的效率其实不高。因为后台拿到静态模板后,数据渲染过程中必须要对HTML进行修改,而这也意味着自后台渲染开始,前端和后台的HTML就不再是保持同步了,这也就涉及到一个前后端的“联调”。一旦前端修改了代码,后台必须也要跟着进行修改,这样就降低了开发效率。

    然而近年来层出不穷的前端MVC框架正在拯救这一切,比如Angular。这类框架让前端也具备数据渲染能力,甚至也能处理一些业务逻辑。前后端之间通过JSON进行数据交换,通过一系列HTTP方法做数据交互。只需要设计好API,前后端从此按照API文档独立工作。当然,Restful API在倡导前后端解耦的潮流下开始大行其道。关于restful api,以后有时间再单独讲吧。

    前面讲的前端渲染在SEO上有着天然的劣势,因此不大可能单独出现在大型项目中。大公司(比如阿里)更多的是在前端和后台之间加入了一个中间层。比如支付宝是在前端和Java之间加入了一个node中间层……


    还是先睡了………明天起来再写……

    相关文章

      网友评论

        本文标题:关于软件架构的思考

        本文链接:https://www.haomeiwen.com/subject/pvnxlttx.html