`
djsl6071
  • 浏览: 596340 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

软件工程设计架构中的思想

阅读更多
转自:http://www.blogjava.net/alwayscy/archive/2007/12/05/165610.html 

今天读到一些UNIX下的编程哲学,对自己相当的有冲击力,把我觉得有用并且有道理的,自己组织了一下:

“编程的核心是数据结构,而不是算法”,即使最简单的程序逻辑人类来验证也很困难,但就算复杂的数据,对人类来说也相对容易推导和建模。五十个节点的指针树要比五十行程序的流程图更清楚。

“编程的本质是控制复杂度”,而流程图、过程化、结构化、面向对象以及其它方法论恰好“成功”将复杂度提升到人脑不能处理的地步。所以,降低整体复杂度的方法是用清晰的接口把若干简单模块组合成一个复杂软件。

“简洁最美”,最错综复杂的美妙设计,常常使我们的设计能力超出排错能力,结果是代价高昂的废品。

“接口和引擎分离”,把复杂的GUI界面与后台处理分做两端,中间用简单协议架桥。

“可见才可掌控”,软件系统的透明性就是说,你能一眼看出它在干什么,要能监视到内部状态。

“撑不下去,马上退出”,出现异常,补救措施明明又没成功,还挺在那里,很久才发现是最坏的一种情况。要么“响亮的倒塌,要么为工作链下一环程序输出一个严谨干净的正确数据”。

“过早的优化是万恶之源”,先要求运行,再求正确,最后再求快。还不知道瓶颈就匆忙优化,是唯一一个比乱加功能更损害设计的错误。“最强大的优化工具是DELETE键”。

“善用工具”,教会电脑生成一些简单的代码;一旦有人解决了某个问题,就直接拿过来用,尽可能一切都自动化。

“宁花机器一分,不花程序员一秒”。

综上所述,4个字母:KISS--Keep It Simple, Stupid!


最后,还是把UNIX哲学的17个原则完整列一下:
1、 模块性原则:写简单的,通过干净的接口可被连接的部件。
2、 清楚原则:清楚要比小聪明好。
3、 合并原则:设计能被其它程序连接的程序。
4、 分离原则:从机制分离从策略,从实现分离出接口。
5、 简单原则:设计要简单;只有当你需要的时候,增加复杂性。
6、 节俭原则:只有当被证实是清晰,其它什么也不做的时候,才写大的程序。
7、 透明原则:为使检查和调试明显更容易而设计。
8、 健壮性原则:健壮性是透明和简单的追随者。
9、 表现原则:把知识整理成资料,于是程序逻辑能变得易理解和精力充沛的。
10、最小意外原则:在接口设计中,总是做最小意外事情。
11、沉默原则:当一个程序令人吃惊什么也不说的时候,他应该就是什么也不说。
12、修补补救:当你必须失败的时候,尽可能快的吵闹地失败。
13、经济原则:程序员的时间是宝贵的;优先机器时间节约它。
14、产生原则:避免手工堆砌;当你可能的时候,编写可以写程序的程序。
15、优化原则:在雕琢之前先有原型;在你优化它之前,先让他可以运行。
16、差异原则:怀疑所有声称的“唯一真理“。
17、可扩展原则:为将来做设计,因为它可能比你认为来的要快。

 

转自:http://www.blogjava.net/alwayscy/archive/2007/12/02/164663.html

设计不在乎一开始就非常完备,并且考虑到所有情况和变化;设计的精髓在于当某种变化来临时,能够重新审视,甚至是调整全部的设计,让它能够兼容之后的“同种类”变化,从而使今后再有这样的变化时,带来最少量改动。为此目的,哪怕是推翻重来也在所不惜。

也即,我们不能将就第一次错误,这样才不会被同样的错误击倒第二次!

我想,这就可以指导我们在项目设计时并非要考虑得面面俱到,有些时候限于经验和能力也考虑不了那么周全,变化是无穷的。以自己的能力尽量有个好的开始,之后,关键是掌握一种应变的能力和决心。

就像自助旅游,第一次去陌生的地方,出门前做好N多功课,可能天气突变,车船晚点,所有计划都会改变,关键是遇变不惊,冷静处理。

瞎扯的,只是觉得之前做项目,总是到处比较各种方案,设计来设计去,耽误了大量时间,最后又会发现还是没想周全,这句话让我豁然开朗,我想是有道理的,共享给大家。  

分享到:
评论

相关推荐

    软件工程开发设计思想

    在软件工程领域,开发设计思想是至关重要的,它关乎到项目的成功与否。"软件工程开发设计思想"这一主题深入探讨了如何系统化、规范化的进行软件项目的设计与开发,以确保项目的高效、稳定和可维护性。以下是这个主题...

    软件架构设计的思想与模式.pdf

    软件架构设计的思想与模式.pdf 对软件架构设计的思想和模式进行了些阐述,中科院计算所培训教程

    软件工程思想(软件工程思想)

    在IT领域,软件工程思想是指导我们设计、开发、维护和改进软件系统的核心理念。它是一种系统化的方法,旨在确保软件项目的高效性、可靠性和可维护性。软件工程不仅仅涉及编程,还包括项目管理、需求分析、系统设计、...

    软件工程思想(已谈笑的方式讲述软件工程思想)

    ### 软件工程思想概览 #### 一、引言 《软件工程思想》这本书以其独特的视角和风趣幽默的写作风格,探讨了软件工程领域的核心理念和实践经验。作者林锐拥有丰富的软件开发经验,并在其博士学位论文完成之际,将自己...

    软件工程思想 林博士

    《软件工程思想》是林博士的心血之作,本书以其独特的视角、新颖的构思、风趣的内容为读者揭示了软件开发过程中的诸多奥秘。不同于传统的软件工程教材,本书通过作者亲身经历的故事和案例,将复杂的软件工程原理变得...

    软件设计思想 设计思想

    《软件工程思想》这本书通过独特的视角和生动的实例,引导读者理解和应用这些设计原则,从而成为一名更优秀的软件开发者。阅读这本书,不仅可以学习到理论知识,还能体验到作者对编程艺术的独特见解,让我们的编程之...

    软件工程思想软件开发过程

    - **轻松与深刻**:不同于传统的教科书,《软件工程思想》以轻松幽默的方式讲述了深刻的软件工程原理,使得读者能够在愉悦的阅读体验中获得知识。 #### 软件工程的核心内容 - **软件工程基本观念**:涵盖了软件...

    软件架构设计的思想与模式

    **软件架构(Software Architecture)**是一门综合性的学科,它涉及软件工程中的诸多方面,包括但不限于系统的组织结构、元素之间的交互方式、系统的整体设计风格等。软件架构的设计对于软件产品的成功至关重要,...

    软件工程思想(software think)

    《软件工程思想》一书强调了软件开发过程中整体设计、总体设计、需求设计以及详细设计的重要性。这些核心概念不仅是软件工程的基础,也是保证软件项目顺利进行的关键因素。通过本书的学习,开发者可以更好地理解软件...

    林锐书籍《软件工程思想》

    林锐博士的《软件工程思想》是一本深入浅出的软件工程书籍,它不仅探讨了软件开发的理论和实践,还融入了作者在软件行业中的亲身经历和感悟。林锐在书中不仅解答了软件工程的“是什么”、“为什么”和“怎么办”,还...

    软件工程思想,软件工程思想,软件工程思想

    软件工程思想是现代信息技术领域中的核心概念,它涵盖了软件开发的全过程,包括需求分析、设计、编码、测试、维护等各个阶段。软件工程思想强调的是系统化、规范化的软件开发方法,旨在提高软件质量,降低开发成本,...

    软件工程毕业设计

    在软件工程领域,毕业设计是学生们在学业生涯中的一项重要任务,它通常要求学生独立或团队协作完成一个完整的软件项目,以展示他们在整个学习过程中的技能积累和理论应用能力。这个名为“软件工程毕业设计”的项目,...

    软件毕业设计中英文文献《软件工程-实践者之路》

    《软件工程-实践者之路》是一本在软件学院毕业设计中极为重要的参考资料,它涵盖了软件工程的各个方面,旨在为学生提供全面的理论知识和实践经验。这本书的中英文双语版本,使得学习者不仅可以深入理解中文解释,还...

    软件工程思想(经典)

    《软件工程》是一本在IT领域中具有深远影响力的著作,它深入探讨了软件开发的各个方面,为从业者提供了全面而系统的理论指导。这本书的核心是引入了一种科学的方法来管理和开发软件项目,强调了软件开发的工程化思想...

Global site tag (gtag.js) - Google Analytics