• 软件设计和设计的问题


    先感概一句, 软件设计是一个不太容易的事情,尤其历史需要兼容新需求的问题。

    软件设计

    软件设计包括很多,软件架构,软件结构,数据库设计。

    软件不是从0开始的,一般都会有一些支撑组件,尤其现在的web程序,会有开源的程序提供给你。而选择什么样的支撑组件,就要看你真正的需求了。速度(选择高性能算法,语言支持,增加缓存),安全性(https,ssh),计算规模(分布式),高并发(mp模型),语言环境限制等等。这些都是实际存在约束,从而在软件上有所侧重,数据库,缓存工具,提供的加密通道,VPN,基础LIB等等。

    例如我们最近的项目,交互的游戏服务器实在移动的微机上,IP地址,网段都是不确定的,而且有时常搬运到各地的需求,就要有跨越网段的需求。就要使用VPN和反向代理软件。对于VPN软件,也有很多OpenVPN等。反向代理软件,用的比较多的Nginx,这个软件太火了,而且资料非常的全面。

    数据库,还有一些其他的一些软件依赖。

    软件结构,这个有很多课程来讲述牛人们的思想,数据结构、设计模式等等。这些数据和课程讲述了抽象的内容,比较少的描述他们的应用场景。但实际上,我们大量的学习是在这儿层面上的。有很多的东西,不是我们不会,不去理解,实在是使用的场景。而在进行设计的时候,尽量尝试一下。尝试对需求带入我们的设计模式,挑选更加合适的处理方式。

     数据库设计,不用说,在很多场景中,它是最核心的内容,数据作为展示,抉择的依据,而为了更加友好的处理,分析数据。现在数据仓库也是再兴起。。

    需求增加

    原始的开发方式,瀑布模型。这个情况比较少,但是在实际的实施过程,一期二期三期的推进。需求也是在增加的。

    现在互联网的开发选择是敏捷,迭代开发。要求开发周期短,每个周期有新的需求,但是如果遇到大的需求,跟原始设计有冲突地方,就要更改早期设计。比如我们曾经遇到PC端从服务器下载资源,资源存储方式都是md5值存放,而后期增加了模板文件的概念,文件在服务器上不能以md5方式存放,而文件有可能会发生改变。这样的话,原始设计的优化方案,同名不下载,就需要更改。

    需求更改

    针对需求更改,不改设计和更新代码是根本不可能的,现有理论都是在尽量少的更改设计。

    历史兼容新需求

    怎么办重构部分代码。重新梳理需求,对于数据库设计,最好还是尽量少的进行更改,对于它的变化基本上算的上伤筋动骨。

  • 相关阅读:
    如何将 Web 框架迁移到 Serverless
    Serverless + CVM 实战
    Serverless Registry 设计解读与实战
    使用 ServerLess 实现云原生
    腾讯云 Serverless 技术在「老司机汽车 app」的落地实践
    LeetCode 树 103. 二叉树的锯齿形层次遍历(双端队列 DFS的空间复杂度)
    LeetCode 树 116. 填充每个节点的下一个右侧节点指针(层序遍历 分层)
    LeetCode 树 230. 二叉搜索树中第K小的元素(二叉搜索树 中序遍历 剪枝)
    LeetCode 树 236. 二叉树的最近公共祖先(递归 深度优先搜索)
    LeetCode 树 102. 二叉树的层序遍历(广度优先搜索 深度优先搜索 队列)
  • 原文地址:https://www.cnblogs.com/tom-zhao/p/3894890.html
Copyright © 2020-2023  润新知