如何成为架构师系列:框架演进1

    在近一年半的工作中,我的一项职责是设计一个技术平台,我们部门依托这个平台可以定制出大量项目,并逐步往平台对接一些高级功能。后面会有平台V1的产品设计文档,但事实上,平台框架已经在过往项目中历经了3个版本。本系类框架演进部分便来分享这3个版本演进过程中的一些经历。

    首先看一下平台的产品设计文档,这可以看做我们设计平台的短期目标。

    之所以花大篇幅描述产品设计文档,是因为脱离产品(或项目)谈架构都是耍流氓。另外,正式的框架设计就是从产品设计文档开始的。所以分享架构师经验,也可以从产品设计文档开始。

    下列是缩减版本的产品设计文档:

一、     产品定义

WinNet平台(保密需要取的别名),基于某某公司在视音频领域十数年的行业积累,旨在解决视音频领域信号调度、设备操作、设备管理、数据可视化展示、图形图像处理综合需求,面向功能全面化、操作流畅化、决策智能化的软件产品线平台。

二、     设计目标

WinNet平台的核心设计目标包括:

(1)提供现在及将来各WinNet项目所需软件的基础开发框架,并逐步集成设备状态反馈、细粒度权限分配、物理设备变更自适应、开窗漫游、可视化展示、图形图像处理及更多功能,实现功能全面化。

(2)不断积累、深入挖掘某某行业及其他行业的用户需求,不断优化产品设计,不断贴近用户需求,实现操作流畅化。

(3)在视音频信号调度、设备联动、设备操作、设备状态反馈、数据可视化展示、图形图像处理等各方面的逻辑及展现设计上,精雕细琢、精益求精,并适当引入人工智能理念,实现决策智能化。

扫描二维码关注公众号,回复: 3042869 查看本文章

(4)支持快速的定制化开发:提高定制化软件的质量和稳定性,并大幅缩减开发时间。

(5)提供标准化版本:无需开发或仅需少量开发,通过简单配置满足小型项目需求。

三、     版本定义

本文档后续部分所描述的WinNet平台,特指WinNet V1。

四、     系统概要

WinNet V1的子系统划分如下:


WinNet平台分成客户端、服务器、数据库三个子系统。

1、客户端

客户端分成UI界面、框架及库、界面编程、业务逻辑四个部分:

(1)UI界面。定制化项目需提供UI界面,所需UI资源视用户界面需求而定。标准项目不需UI界面。

(2)客户端框架及库。所有项目中框架及库都是固定不变的。WinNet平台研发的目的之一,便是尽可能完善框架及库,尽可能缩小其他部分所占工作比重。框架及库是不断完善及升级的过程。

(3)界面编程。WinNet平台有一套或多套界面满足标准化项目需求,只需配置无需编程。但对于定制化项目,界面编程是必不可少工作量,其难度视用户界面需求而定。

(4)客户端业务逻辑。WinNet平台的框架及库中,有一套标准的客户端逻辑,将尽可能涵盖大部分客户端业务逻辑需求。但对于定制化项目,重写客户端业务逻辑是预期之内的工作。

2、服务器

服务器分为框架及库、业务逻辑两部分:

(1)服务器端的框架及库是WinNet平台研发的重点,将承载WinNet平台控制及逻辑部分的主要工作量,并逐步对接新的功能。这部分也是不断完善和升级的过程。

(2)服务器的业务逻辑在大部分项目上变化应不大。但不排除需要重写的可能,重写难度取决于用户的功能需求。

3、数据库

数据库是所有项目中必不可少的重要一环。数据库只有简单和不简单的区别,没有需不需要的区别。

数据库分为简单业务数据、数据录入工具、复杂业务数据、配置端四部分:

(1)简单业务数据,包括编码器数据、解码器数据、Tcp设备数据、Udp设备数据、串口设备数据、设备控制驱动数据、信号源数据、信号输出数据、设备连接关系及低级房间信息。这部分数据是线性数据,可通过Excel表的方式人工收集。简单业务数据的收集和配置及编程均无关,WinNet平台将提供标准的Excel表格式,供硬件系统设计及部署人员填写。

(2)数据录入工具将Excel表里的简单业务数据录入到数据库当中,并对数据的正确性、关联关系做出初步校验。数据录入工具在所有项目中变化都不应太大,可理解为固定不变的。

(3)复杂业务数据,包括输入标签数据、输出标签数据、独立屏数据、大屏数据、Grid数据、模式数据及高级房间信息。复杂业务数据可通过配置工具的方式录入到数据库,与编程无关。

(4)配置端。配置端将提供复杂业务数据录入的平台。配置端将根据需要不断升级,但在一段时期内可视为固定不变的。

五、     技术概要

技术概要描述实现WinNet各模块的技术手段。

客户端部分:

(1)UI界面,将通过软件原型制作及UI设计的方式完成。责任人为特定项目的软件产品经理,参与人为软件部产品组其他成员(至少包括一名UI人员)。

(2)客户端框架及库,将利用编程IDE:Qt5.7完成,大体上采用c++11技术,分为Android版和Window版。责任人为软件部经理,参与人为客户端组同事(包括产品人员)。

(3)界面编程,将利用编程IDE:Qt5.7完成,大体上采用c++11技术。责任人为特定项目的开发经理,参与人为开发组其他同事。

(4)客户端业务逻辑,将利用编程IDE:Qt5.7完成。责任人为特定项目的开发经理,参与人为开发组其他同事。

服务器部分:

(1)服务器框架及库,将利用编程IDE:Eclipse完成,将采用Java8技术。责任人为软件部经理,参与人为服务器开发组同事。

(2)服务器业务逻辑,将利用编程IDE:Eclipse完成,将采用Java8技术。责任人为特定项目的开发经理,参与人为开发组其他同事。

数据库部分:

(1)简单业务数据,将通过Excel的方式实现。建议责任人为驻场项目经理,对接人为特定项目开发经理。

(2)数据录入工具,将利用编程IDE:Eclipse完成,将采用Java8技术。责任人为软件部经理,参与人为服务器开发组同事。

(3)复杂业务数据,将通过配置工具的方式实现。责任人为特定项目开发经理。

(4)配置端,将通过Web的方式实现,具体而言,采用SpringMVC+ Java8+Themeleaf+BootStrap+Html5的技术组合实现,将使用工具Eclipse、Tomcat、Gradle及Html5编辑工具。责任人为软件部经理,参与人为Web组同事(包括产品、前端及服务器成员)。


    有了产品设计文档,后续就可以开始框架设计,以及框架演进。

    

猜你喜欢

转载自blog.csdn.net/LaggedThreeYears/article/details/77447429