论极简主义嵌入式软件设计

笔者几年前的一篇文章,拿出来和诸位码农们分享。

作为一种形式多样、高度灵活、专用定制的电子产品,嵌入式产品的设计理念是贯穿于整个设计过程、对产品设计起着决定性作用的一个重要因素,它决定了所设计产品的呈现方式、使用方式、便利性、稳定性、质量等一系列要素。近日苹果高管变动,据业内人士分析,主要原因是管理者在设计理念上的冲突,前主管因为模拟现实的设计理念,而与极简主义的设计理念产生了冲突,在反复强调要做“世界上最好的产品”的苹果公司内部,设计概念的一致性是保证产品“最好”的基本前提。做为嵌入式行业设计人员,我们同样也要在嵌入式产品的设计中,贯彻正确的设计理念来指导我们的设计工作。

嵌入式行业经过多年发展,硬件设计有章可循,条条框框有板有眼,软件设计亦逐渐规范,标准林立。但相较而言,由于软件设计是一种非常个性化的东西,其灵活性、可变性极强且仅限于设计者的想象力,软件设计者的编码习惯、工作态度、思维方式、创造能力甚至人生观价值观等看似与软件设计无关的要素都会对软件最终的实现起到或多或少的影响,在这种极强的灵活性下,软件质量问题凸显,成为业界最为关注的因素,正基于此,软件工程的研究与发展如火如荼。目前在软件质量的控制上,有管理制度的支撑、工具的支持、过程控制的约束,都对改进软件质量起到了一定的作用,但软件设计更多的时候是一项技能,而不是一种科学,所以任何外在的支持,其作用都无法代替软件设计者自身的技能和专业素养。从技术需求规格出发,到代码的最终呈现,不同专业水准的设计人员,其设计过程及最终代码层面的实现有着显著的差别,且对后续的维护、升级产生深远的影响。在软件设计的整个过程中,秉持正确的设计理念对软件设计起着决定性的作用,不仅对当前设计过程的推进和控制起到正向作用,还会简化产品在整个生命周期内的维护与升级工作。

1 极简主义设计理念

极简主义是建筑设计领域的一种设计理念和美学概念,强调摒弃一切无用的细节,追求最纯粹最本真的呈现,已经应用到建筑设计、工业品设计、服装设计、家居设计等领域中,而在软件设计领域,贯彻极简主义的设计理念同样会对软件开发过程起到巨大的推动作用。

2 极简主义的应用

2.1 需求分析

需求分析是软件设计的重头戏,在审视所设计产品的功能性能需求时,在繁杂多样的需求规格说明中,迅速把握和区分产品核心功能和细枝末节对于产品的深入理解及设计方案的选择制定有着至关重要的指导意义。把简单变复杂很容易,把复杂变简单很困难,在需求分析过程中坚持极简主义的设计理念,会让我们厘清思路,迅速把握产品基本架构、功能的基本剖面,避免陷入纷繁条目的泥淖犯下不识庐山真面目的错误。通过化繁为简,把主要精力牢牢关注在核心要素上,在有限的人力物力资源下为必要的核心要素建立严格的性能指标和测试标准,极力保持性能,避免为了一些细枝末节的小功能,而在主要功能、基本要素上做出设计上的妥协。

2.2 方案设计

条条大路通罗马,在多种设计方案的权衡和选择上坚持极简主义,便是以结果为导向,始终追求最高效最简洁的方法,体现在软件设计中,便是贯彻最简原则,寻求最简单的实现方式。实际上,对所实现功能理解越深刻,实现方式越简单,反之亦然,最简单的实现方式,也更容易贴近功能的本质。舍繁就简,不仅考验设计者的专业功底,更能考验设计者的发散思维和创造能力,要求我们深入理解功能的含义、条件、内部细节、上下文,在初次设计的基础上反复斟酌,花心思考虑怎样以比当前简单的方式实现。

2.3 具体实现

两点之间,直线最短,这个基本公理放之四海而皆准,在软件设计实现中坚持走直线的极简主义,原因是实现方式越简单,与所实现功能的逻辑距离越短,也更能体现功能的内在逻辑。

在软件设计中,秉持“若无必要,勿增实体”的奥卡姆剃刀原则,挥舞锋利的奥卡姆剃刀,化繁为简,从极简中寻求可控,寻求对软件的掌控感。随意的通常也是复杂的实现会占用我们过多的精力,把眼界限制在与功能逻辑有相当距离的设计实现上,从而把问题的本质拉远、掩盖,把本来简单清晰的东西搞得复杂,使人迷失。

在业界关注最多的软件质量问题上,极简主义的现实意义便是,实现得越简单,便越可以实现掌控,复杂的东西会把风险扩展导致很难控制。同样的功能,简单的设计比复杂的设计更好维护,更好控制也更好优化,要知道,软件设计从来就不是一蹴而就的,在迈向其最终实现的路途中,充满了设计迭代、重构和优化,在这样的过程中,最简的功能实现以清晰的软件结构、与逻辑相近的设计语言描述,对设计优化过程起到巨大的推动作用,反之,复杂的实现会让我们陷入复杂而模糊的代码泥淖,举步维艰。

结语

极简主义不是片面追求简单、偷工减料,相反,它要求在特定的需求下、具体的设计中,将性能做到极致、实现做到最简,这种对性能的追求、对最简实现方式的苛求对设计工作提出了更高的要求。极简主义在设计实践中的体现及应用不是宽泛的,而是非常具体而微的,它体现在你的软件结构设计、模块划分和接口的定义、每个函数的实现、每条语句的权衡甚至每个变量的选择上。在孜孜不倦得对代码进行优化再优化、重构再重构的过程中,极简主义帮助设计者更加洞察产品,更加快速得由必然王国迈向软件设计的自由王国。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年1月17日
下一篇 2018年1月17日

相关推荐