天天看点

漫谈软件设计

      软件设计师的价值

      一个软件设计师必须提供足够分量的价值和服务,才能为这项工作带来荣耀。

       一个软件设计师的职责应该包括以下几点:

            1.  编程开发: 专注于 软件框架、 API 的设计、实现和改进,提供问题的优雅解决方案;

            2.  项目重构: 能够提出中肯的意见,作出重要的改进;

            3.  项目启动: 与软件架构师、需求方等多方协作,参与项目的总体规划和设计,确保项目的长远发展。

        一位真正的软件设计师, 他需要通过编程来实践自己的理念,否则就没有什么事例来说服别人。软件设计与程序开发应该是一脉相承的,而不是交集很少的事情的两端。软件设计师与开发者的根本差异在于关注角度和思考维度的不同,而不在于是否编程的形式。

        一个软件设计师的心应该是足够自由的,宁可暂时性失业,也不受外界的影响和逼迫, 唯有如此, 才能汲取各种灵感, 创作出真正杰出的设计。   

       软件设计的作用

       软件设计是代码组织的学问和艺术,将应用逻辑组织为一系列一致性强的、可读性好的、易维护的、容易扩展的、小型的逻辑工作单元。软件架构则是数据组织的学问和艺术,从更全局的角度来思考数据的最大化利用,探索业务需求、实现产品功能的系统总体结构,

        软件架构的作用是使基于其上构建的应用系统能够很好地适应业务需求和拓展, 以尽可能小的成本(时间、人力、资源、管理等)实现系统后续的改进、修复和扩展。在系统构建初期,主要作用在于确保系统的性能满足需求以及稳定可靠地运行; 确立一个系统发展的长远目标,增强系统的可维护性和可扩展性。最首要的一条设计原则是开闭原则: 对修改关闭,对扩展开放。

        由于软件架构是必须适应业务需求和扩展的,因此,不存在万能的软件架构; 不过,幸运的是,对于各种类型的应用系统, 都有一些成功的实践案例可供借鉴,有一些通用的设计思想和方法可以学习汲取,一些通用的基础设施可以重用。 

         小设计与大设计

         小设计是指,对于任意一个问题,从设计的角度进行思考和解决,从而获得一个整体上的优雅的思路和解决方案(而不是权宜之计);

          大设计是指,针对复杂的软件(子)系统或组件,从整体宏观兼顾微观的角度进行考量,获得一个整体的系统构架图以及一系列重要决策,作为具体开发实现时的关键指导。

         软件设计的基本问题

         如何保证系统的健壮性、可靠性和稳定运行?

             1.  保证业务逻辑严谨可靠:  ---->     编写短小函数、短小类;  充分单元测试;

             2.  所有的错误和异常都得到处理 ---->  考虑所有可能的错误情形和异常情形,给出合理的提示或跳转行为;

             3.  深入理解框架和组件,洞悉应用框架、组件之间的交互 ---->  配置要正确; 参数调优;

             4.  避免内存泄漏, CPU 压力负载测试良好;

             5.  适应动态变化。

继续阅读