在学习机械设计时开始知道了“三视图”的概念:三视图是观测者从三个不同位置观察同一个空间几何体所画出的图形。
三视图已是正确反映物体长宽高尺寸正投影的工程图,在工程设计领域十分有用。
因为现实世界本身是三维的,任何现实世界中的立体物体都必然能被“三视图”正确投影到二维的纸面。
工程师们通过物体的三视图就能重新在头脑中抽象想象出实际物体在三维空间的形态,从而开展正确的建模、实施。
“三视图”对设计师的抽象要求更多是偏向形象思维,从三维向二维的互换是一种空间变化的形象思维而非逻辑思维。
如果读过科幻小说《三体》中关于“二向箔”的描述,大概就会对三维向二维转换产生一种直观、模糊的理解,而“三视图”对这种转换的描述是极其精确的。
形象思维抽象能力高低在一定层面上表现了工业设计领域悟性的高低,擅长者和不擅长者差距明显。
但在软件设计领域,和传统的工程设计领域有较大的不同,没有任何精确的视图描述能正确表达软件作品的最终形态。
传统工程设计领域的设计范围总是在三维和二维之间转换,这两个维度都是我们现实生活中能直观感受、触碰到的,相对容易理解。
也没有设计师会去设计一个四维的物体(如何去想象一个四维物体呢?)《三体》中曾细致描述过一个四维的气泡空间,但那只存在与科幻中,现实中我们没法设计出来。
软件设计领域则不然,软件不太容易被直观的感受和触碰,因此无论是软件设计师还是软件最终用户对软件作品的理解都困难的多。
软件作品总是多维的,一般情况也总是大于三维的,事实是软件设计和其他设计属于两种不同的基本思维领域。
形象思维设计领域直观、与现实维度接近易于理解。软件设计属于逻辑思维设计领域,与现实维度无关,它的抽象维度只存在于思想空间中。
不同软件作品拥有不同数量的抽象维度,这是软件设计复杂性的一种体现。
在上世纪90年代,诞生了UML(统一建模语言)一种涵盖软件设计开发所有阶段的模型化和可视化支持的建模语言。
从UML的出现中我们就可以知道,软件先驱们在不懈的努力来使软件设计从不可直观感受触摸的抽象思维空间向现实空间进行投影。
这是一种非常类似于传统工程设计领域“三视图”的尝试,但却又远远没有达到“三视图”的精确度。
无论是用例图、交互图、活动图、状态图、序列图、流程图、架构图,它们都在不同的方面模糊的反映了软件作品的最终形态,却又无法真正清晰的描述,总是雾里看花。
因此,软件工程设计领域中的方法论非常多,无论是早期的瀑布到敏捷、极限、领域驱动设计还是SOA(面向服务架构)都是为了解决软件设计领域实施复杂度的问题。
实施的难度在于目标的模糊,软件设计不像建筑设计,施工前我们有标准的工程图纸、国际标准、样本蓝图、比例缩微模型。
要说和建筑设计貌似唯一有个相似处就是概念图(想象买房子前看到广告上的那个概念图,和实际得到的房子),实际软件成品比之其概念图的差距可能还远远超过房子。
软件工程是一门研究用工程化方法构建和维护有效地、实用的和高质量软件的学科。
其目标是开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。
其研究方向是如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,其目标重点在过程化方法,如何找到一种过程化方法来实现其目标。
在这个领域学习实践近十年之后,突然领悟到也许一开始从其他工程学科借鉴来的方法都是错误的,削足适履,软件工程正是歧路亡羊。
正如前文所述,软件设计的抽象维度只存在于思想空间中,而且维度远远高于现实世界的三维,从传统工程学科借鉴来三维方法学解决不了另一种空间中的高维度问题。
至于,正确的道路在哪里,还不知道,停下来想一想也好过在错误的道路上越走越远。
分享到:
相关推荐
第一单元:软件生命周期与软件架构介绍 2 第二单元:技术架构视图─面向...第四单元:设计模式与软件设计思想 267 设计模式 268 常用的软件架构风格及适用情况分析 391 SOA 及分层架构设计 443 第五单元:架构设计实践
第一单元:软件生命周期与软件架构介绍 2 ...第四单元:设计模式与软件设计思想 267 设计模式 268 常用的软件架构风格及适用情况分析 391 SOA 及分层架构设计 443 第五单元:架构设计实践
执⾏视图中的每⼀个执⾏实体,⼀般称为组件(Component),都是 不同于其他组件的执⾏实体。如果有相同或相似的执⾏实体那么就把它们合并成⼀个。 执⾏实体可以最终分解到软件的基本元素和软件的基 本结构,因⽽与...
用vc++实现的三视图生成软件,默认立体图形为争三棱柱,注意在编程过程中的对话框添加,菜单的生成,如若自己想要实验,请注意修改原程序中的投文件名,累名为自己对应名称。
软件项目模块设计 2 1 引言 2 1.1 编写目的 2 1.2 范围 2 1.3 术语定义 2 1.4 参考资料 2 2 数据库环境说明 2 3 逻辑结构设计 2 4 物理结构设计 3 4.1 数据库对象汇总(表、视图、过程) 3 4.2 中文表名 表名 3 5 ...
Sweet Home 3D是一款免费、开源的家装设计软件。它能帮您通过二维的家居平面图来设计和布置您的家具,还可以用三维的视角...您对平面图所作的任何更改将会实时地显示在 3D 视图中,所以您随时都可以查看逼真的效果图。
Sweet Home 3D 是一款免费、开源的家装辅助设计软件。它能帮您通过二维的家居平面图来...您对平面图所作的任何更改将会实时地显示在 3D 视图中,所以您随时都可以查看逼真的效果图。 此处发布的文件与软件官方发布的
序 前言 第1篇面向过程的软件工程 第1章软件危机、 软件工程 11软件工程的发展史 111程序设计时代 112程序系统时代 113软件工程时代 12软件危机主要表现形式 ... 附录CGOF给出的软件设计模式
本文主要讲了下Altium中3D视图下元器件丝印丢失的解决办法,希望对你的学习有所帮助。
须做三件事:1、在架构设计中重视“开发架构视图”,让开发人员看到他熟悉的“程序模块”、“源码目录结构”等概念。2、架构设计不可“高来高去”,能支持并行的详细设计是“架构设计进行到什么程度”的标志。3、...
然后点击右侧的⼀键⾃动布置即可,这时候可以放开⿏标键盘,让智能设计算法⾃动为你计算上⽂提到的设计 需要考虑的因素:⾯积、体积、风格、颜⾊、⽐例、想象⼒…… 下⾯是设计完成的三视图(2D正交图、3D鸟瞰图、3D...
表名命名规范 模块名_+表名 表字段命名规范 字段名 序列命名规范 字段名_+id 视图命名规范 Vw_+视图名 触发器命名规范 Tig_+触发器名 存储过程命名规范 Proc_+存储过程名 实体关系 基础信息模块 财务软件数据库设计...
需求规格说明书是需求分析阶段需要交付的基本文档,将成为开发者进行软件设计和用户进行软件验证的基本依据,涉及引言、术语定义、用户需求、系统体系结构、系统需求等有关软件需求及其规格的诸多描述与定义。...
软件设计 概要设计 模块分解,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计 系统分析员、高级程序员 设计说明书、数据说明书、模块开发卷宗 详细设计 设计每个模块的实现细节和局部数据结构...
您对平面图所作的任何更改将会实时地显示在 3D 视图中,所以您随时都可以查看逼真的效果图。 Sweet Home 3D 免费开源的家装辅助设计软件 专门用来绘制室内绘制图,内建许多图示模组,官方也有许多图示模组可下载,...
财务软件数据库设计 财务管理软件数据库设计说明书 版本1.0 日期:2009-11-27 1 实体,对象命名规范 5 1.1 表名命名规范 5 1.2 表字段命名规范 5 1.3 序列命名规范 5 1.4 视图命名规范 5 1.5 触发器命名规范 5 1.6 ...
一 软件架构设计概述 典型项目案例介绍 一、架构分析方法 面向服务设计模式(SOAD) 二、架构视图 RUP的4+1视图体系结构 三、软件架构国际标准 二 一、架构流程 1.软件架构流程 二、架构约束 1.软件架构质量约束 2...
<br>您可以通过BDB来简化软件开发和部署过程: <br>1,数据库设计。 通过BDB快速建立数据库模型。支持正向工程和反向工程, 以及数据库模型和实体数据库之间的比对更新和双向同步。 <br>2,数据库...
55. 未列菜单命令【加载配置】(JZPZ),无需关闭软件即可重新加载config.ini中的设置 56.〖config〗新增设置项: ——新建文档的当前层高、加粗填充设置有效了 ——门窗编号字高有效了 ——增加设置关闭阳台、...