"约束驱动的软件分析&设计新技术"开篇

简介:
 基于“约束驱动的进化理论”的“约束驱动的软件分析&设计新技术”消除了软件分析、设计、开发中的任意性、神秘性、不确定性和经验性,而重新赋予软件分析、设计、开发过程必然性、内在逻辑推演性、确定性、可控性。
   软件开发过程的每一步都是约束驱动的,输入+约束=输出。
  对于软件系统而言,输入是用户需求,输出是可执行代码。不同层次的开发人员因为有不同的约束,导致最后开发出来的软件系统的质量不同。但是最基本的输出就是可执行,并能实现目前的功能。
   开发人员的进化过程就是不断的提高约束等级、加码的过程,这个过程可能是经验的、可能是有意识的、可能是客观必须的。
   开发人员针对约束的认识不同、对约束的解决方案的不同,而产生不同层次的开发人员,如架构师、分析员、设计师、高级程序员、程序员...
   “约束驱动的软件分析&设计新技术”将提炼出软件分析和设计中的内在驱动力,即约束,并消除软件开发过程中的任意性和不确定性。
   软件开发过程中表面的任意性和不确定性来自于施加于软件系统的约束各不相同。而由于编译器对约束的低要求,导致五花八门的软件实现出现。
   约束的多少决定软件系统的品质,而编译器只负责可执行,不负责品质。
   有聊胜于无,但有不等于好,现在好不等于将来好。
   浅显点说,吃饱不等于吃好,吃好不等于吃健康。而编译器只检查是否吃饱。
   最低层次的程序员还处于“有聊胜于无”的初级阶段。
   另外,一个程序员如何可以晋级为高级程序员、甚至设计师、系统分析员、架构设计师?不同角色之间的内在区别和联系是什么?有没有捷径或者可控的路径来持续进阶?可能大多数都是个糊涂账。“约束驱动的软件分析&设计新技术”会明白的告诉你,不同角色的区别在于各自对软件系统施加的约束不同。当然,这也不排除知识积累、技术积累的局限,对于某种约束的解决方案也有高下之分。

   举个例子,为什么有些系统划分为2层、有些是3层、有些确实4层、5层、6层...?很多人并不了解各种分层适用的约束,而仅仅生搬硬套,盲目应用。



本文转自 trufun 51CTO博客,原文链接:http://blog.51cto.com/trufun/15326,如需转载请自行联系原作者

相关文章
|
2月前
|
设计模式 监控 算法
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
54 2
|
2月前
|
缓存 算法 测试技术
【软件设计师备考 专题 】如何定义软件需求:系统化的目标、配置、功能、性能和约束
【软件设计师备考 专题 】如何定义软件需求:系统化的目标、配置、功能、性能和约束
198 0
|
3月前
|
NoSQL 关系型数据库 Java
常见技术类缺陷及解决方案
常见技术类缺陷及解决方案
44 0
|
7月前
|
传感器 XML 定位技术
《移动互联网技术》第九章 感知与多媒体: 了解质感设计的基本原则和设计方法
《移动互联网技术》第九章 感知与多媒体: 了解质感设计的基本原则和设计方法
41 0
|
10月前
|
搜索推荐 数据库 Nacos
项目实战典型案例8——让软件的使用者成为软件的设计者
项目实战典型案例8——让软件的使用者成为软件的设计者
79 0
|
前端开发 JavaScript NoSQL
第一次提供技术服务涉及的技术点和思考过程
一年前的今天,我肯定还不敢做前后端联动的工程,没有这个视野。如今有了些许,不敢自傲,还需学习。今天我站在稍上一点的角度,谈一谈我的思考过程及技术点。
63 0
|
设计模式 程序员 开发者
重构·改善既有代码的设计.01之入门基础
近期在看Martin Fowler著作的《重构.改善既有代码的设计》这本书,这是一本经典著作。书本封面誉为软件开发的不朽经典。书中从一个简单的案例揭示了重构的过程以及最佳实践。同时给出了重构原则,何时重构,以及重构的手法。用来改善既有代码的设计,提升软件的可维护性。
583 1
重构·改善既有代码的设计.01之入门基础
|
项目管理
研发思维10----嵌入式智能产品工作过程启发
研发思维10----嵌入式智能产品工作过程启发
92 1
研发思维10----嵌入式智能产品工作过程启发
|
运维 NoSQL 安全
软件分析与设计:分析什么?如何设计?
分析与设计这两个词我们平时经常听到,也经常讲,那么分析与设计的本质究竟是什么呢?到底要分析什么?又到底要怎样去设计?这3个问题如果平时没有一些积累,突然被问到这些,一时也会显得不知所措。接下面在第一部分中回答分析与设计的本质,只有清楚了本质,那就知道要怎么分析与设计,因此在第二、第三部分具体讲软件的分析与设计方法,最后一部分讲述个人的一些思考。
软件分析与设计:分析什么?如何设计?