软件构建中的设计
来源:互联网 发布:java 组合算法 n选m 编辑:程序博客网 时间:2024/06/10 06:13
看了这章已经由一段时间了,总觉得自己对于这章的把握不够到位,对于一个软件产品如何进行更好的设计,这是每一个软件工程师必须面对的难题
设计中存在很多的挑战。设计是一个险恶的问题,就像Tacoma Narrows大桥,因为没有考虑到大风给它带来的横向谐波,最早大桥中狂风中坍塌,对于编程中,我们需要一遍遍的修改代码中存在的问题,因为我们专业,所以我们需要一次次的完善自我,完善代码;设计是个了无章法的过程,因为在设计的过程中我们犯很多错误,我们很难判断自己设计设计到什么细节才算够,总是没有确切的终点,只有起点;当然设计还有很多的面临的挑战,比如:设计就是确定取舍和调整顺序的过程、设计受到诸多限制、设计是不确定的、设计是一个启发式过程、设计是自然而然形成的,在这些挑战中,我比较赞成“设计是一个启发式过程”这个观点,因为设计过程中存在很多的不确定性,因此设计技术也存在着探索性,即“经验法则”,我们没有一套完整的流程去解决这些问题,只能去减少,在试验中总会犯错误,这是在所难免的。
在这里我们需要理解一点,那就是管理复杂度是软件的首要技术使命,在软件开发的过程,总是存在着偶然的难题和本质的难题,对于偶然性的难题,通过Brooks观察发现,软件开发中的偶然性难题在很久以前就已得到解决,但是对本质性难题,在解决方面相对比较缓慢。因为现在软件的复杂度跟以前不可同日而语,并非一两个人所能解决的,是一个浩大的工程。
对于软件复杂度,我们该如何解决?首先我们需要去了解其根源:1.用复杂的方法解决简单的问题;2.用简单但错误的方法解决复杂的问题;3.用不恰当的复杂方法解决复杂的问题。
设计中存在很多的挑战。设计是一个险恶的问题,就像Tacoma Narrows大桥,因为没有考虑到大风给它带来的横向谐波,最早大桥中狂风中坍塌,对于编程中,我们需要一遍遍的修改代码中存在的问题,因为我们专业,所以我们需要一次次的完善自我,完善代码;设计是个了无章法的过程,因为在设计的过程中我们犯很多错误,我们很难判断自己设计设计到什么细节才算够,总是没有确切的终点,只有起点;当然设计还有很多的面临的挑战,比如:设计就是确定取舍和调整顺序的过程、设计受到诸多限制、设计是不确定的、设计是一个启发式过程、设计是自然而然形成的,在这些挑战中,我比较赞成“设计是一个启发式过程”这个观点,因为设计过程中存在很多的不确定性,因此设计技术也存在着探索性,即“经验法则”,我们没有一套完整的流程去解决这些问题,只能去减少,在试验中总会犯错误,这是在所难免的。
在这里我们需要理解一点,那就是管理复杂度是软件的首要技术使命,在软件开发的过程,总是存在着偶然的难题和本质的难题,对于偶然性的难题,通过Brooks观察发现,软件开发中的偶然性难题在很久以前就已得到解决,但是对本质性难题,在解决方面相对比较缓慢。因为现在软件的复杂度跟以前不可同日而语,并非一两个人所能解决的,是一个浩大的工程。
对于软件复杂度,我们该如何解决?首先我们需要去了解其根源:1.用复杂的方法解决简单的问题;2.用简单但错误的方法解决复杂的问题;3.用不恰当的复杂方法解决复杂的问题。
- 软件构建中的设计
- 软件构建中的设计
- 软件构建中的设计
- 软件构建中的设计
- 软件构建中的设计
- 软件构建中的设计
- (5)软件构建中的设计
- 第五章 软件构建中的设计
- 第五章--软件构建中的设计
- 代码大全2-软件构建中的设计
- 代码大全2-软件构建中的设计
- 代码大全(五)-- 软件构建中的设计
- 【代码大全】第5章 软件构建中的设计
- 代码大全 读书笔记(3)软件构建中的设计
- 《代码大全》学习笔记一:第五章 软件构建中的设计
- 《代码大全》学习笔记一:第五章 软件构建中的设计
- 《代码大全》学习摘要(五)软件构建中的设计(上)
- 《代码大全》学习摘要(五)软件构建中的设计(下)
- 关于毕业到现在这段时间的生活和工作随想
- The beauty of mathematics
- 关键的“构建”决策
- 欧拉函数
- what you like most in the city,why?
- 软件构建中的设计
- {{JS}}function语句
- linux下防DDOS工具
- 数学之美-关于概率
- poj 1458 求公共子串长度
- Jquery JQ AJAX 的使用
- 从纽约创业公司的崛起观察科技产业变革规律
- 实现输入框自动补全功能,类似于google suggest
- WinCE线程同步