
软件设计
文章平均质量分 91
高效、易用、高扩展性等设计标准是大话、套话,没有实质性用途!优秀软件设计应具备这些特点:需求驱动;开发团队能理解能实现;能平衡各种限制条件,能帮助实现项目目标;能降低项目整体工作量!软件设计有无尽的可能性,引爆你的小宇宙吧!
张传波
软件研发及管理分享大师,《火球-UML大战需求分析》作者,创新工场敏捷课程讲师,豆芽儿-软件研发人才成长社区(www.douya2.com)创始人,豆芽儿公众号原创作者
展开
-
软件设计是怎样炼成的(8)——用户感觉好才是真的好(用户体验设计)
软件的UI是客户直接体验软件的地方,好的用户体验可能比追求新技术和追求漂亮设计更加重要,优秀的软件应该是既有外在美也有内在美的。但大部分用户是“外貌协会”的,你和用户说你的软件如何OO,用了多少种设计模式,客户是不鸟你的,客户关注的是用户体验!原创 2014-03-06 23:12:44 · 4259 阅读 · 2 评论 -
软件设计是怎样炼成的(7)——细节决定成败(详细设计)
当我们需要考虑类、类的内部细节、类之间的关系时,这时我们已经开始做详细设计了。详细设计不一定是一份文档,也不一定是Word文档,详细设计也不一定叫“详细设计”,有时候“编码就是设计”也是未尝不可的。对于MIS类型系统来说,架构设计和数据库设计做好的前提下,详细设计的难度其实是比较小的了,但MIS系统会有一些特殊的需求点,我们需要识别出来并想清楚应对办法。如果你做的软件是高技术含量的非MIS系统,情况将会更加复杂。原创 2014-03-04 01:13:58 · 14345 阅读 · 11 评论 -
软件设计是怎样炼成的(6)——打造系统的底蕴(数据库设计)(下篇)
数据库是系统的根基,如果需求变更导致你要经常修改数据库的字段,甚至需要修改表及表关系,相信多折腾几次谁都受不了!因为数据库结构的变化,不仅仅是数据库本身的变更,实体类、数据操作层、逻辑层和表现层的代码都需要改。更麻烦的是数据库中如果已经存在大量的旧数据时,这些旧数据是不会“自动”适应新的数据库结构的,你需要想办法来“升级”这些旧数据。本文为你分享如何打造好系统的根基——做好数据库设计!文章太长,分成上下两篇了,此乃下篇。原创 2014-02-25 22:10:25 · 4227 阅读 · 1 评论 -
软件设计是怎样炼成的(6)——打造系统的底蕴(数据库设计)(上篇)
数据库是系统的根基,如果需求变更导致你要经常修改数据库的字段,甚至需要修改表及表关系,相信多折腾几次谁都受不了!因为数据库结构的变化,不仅仅是数据库本身的变更,实体类、数据操作层、逻辑层和表现层的代码都需要改。更麻烦的是数据库中如果已经存在大量的旧数据时,这些旧数据是不会“自动”适应新的数据库结构的,你需要想办法来“升级”这些旧数据。本文为你分享如何打造好系统的根基——做好数据库设计!文章太长,分成上下两篇了,此乃上篇。原创 2014-02-25 21:06:53 · 4085 阅读 · 2 评论 -
软件设计是怎样炼成的(5)——规划系统的骨架(架构设计)(下篇)
概要设计和详细设计,可能是最开始听说的设计,但后来发现如果局限在这两个设计的框架下,可能会有诸多不顺,我们需要架构设计、数据库设计、模块设计和用户体验设计,本文主要分享架构设计,此文有点长,所以分拆为上下两篇,下篇为你分享:在”需求驱动“如何做出初步架构设计、如何逐步细化这个设计、分布式与单机系统架构的设计区别等。原创 2014-02-18 18:24:25 · 4531 阅读 · 0 评论 -
软件设计是怎样炼成的(5)——规划系统的骨架(架构设计)(上篇)
概要设计和详细设计,可能是最开始听说的设计,但后来发现如果局限在这两个设计的框架下,可能会有诸多不顺,我们需要架构设计、数据库设计、模块设计和用户体验设计,本文主要分享架构设计,此文有点长,所以分拆为上下两篇,上篇为你分享:如何避免架构设计“放之四海而皆准”的问题,如何做到“需求驱动架构设计”?原创 2014-02-13 16:18:27 · 12602 阅读 · 14 评论 -
软件设计是怎样炼成的(4)——软件设计的“大道理”
十几年前刚毕业不久,我从事第一份软件开发的工作,要完成一个项目,但没有任何软件设计的思路,于是请教我的老板。我的老板给了我两种思路:1)先假设软件已经做出来了,想好软件的外在表现,由此倒推软件的实现方法;2)思考程序的数据结构,先设计数据库,然后再搭建软件的上层建筑。老板给了我很大的启发,随着工作的开展,后来我又发现了第3种设计的思路。本文将为你分享三种软件设计的思路:1)由顶而下;2)由底而上;3)由中间到上下。原创 2014-01-27 17:56:57 · 4671 阅读 · 2 评论 -
软件设计是怎样炼成的(3)——软件系统不是木桶型的
前文提到我们应该需求驱动设计,那就直接来一个更干脆的做法,我们将需求表示为一个一个的用户故事,软件设计分别针对用户故事来做就行了,只要将用户故事逐个实现了,系统也就完成了。果然能这样做吗?原创 2014-01-25 16:01:04 · 4478 阅读 · 5 评论 -
软件设计是怎样炼成的(2)——优秀设计从分析需求开始
设计应该针对需求来做,这个大道理似乎人人都懂,但实际操作时往往就不是这样。所以我们也不说大道理,直接通过一个“很简单”的案例来体验一下优秀设计应该如何从分析需求开始,体验架构设计是如何全面考虑各种需求、项目的工期限制预算限制,还有项目组人员水平后做出来的原创 2014-01-25 13:29:12 · 6310 阅读 · 6 评论 -
软件设计是怎样炼成的(1)——什么是优秀的设计?
某项目的设计文档评审会上,各路技术大牛进行了“热烈”的讨论,讨论的焦点是怎样的设计才漂亮!大家围绕着如何OO,如何高内聚低耦合,如何反转控制等话题进行了“热烈”的争论。照这样开下去,这个评审会岂不是变成了“神仙大会”!怎样的设计才叫优秀的设计呢?原创 2014-01-23 15:43:23 · 6960 阅读 · 1 评论 -
大话人工智能
人工智能英文简称为AI,英文全写Artificial Intelligence,中文直译就是人工智能。人工智能是让人很感兴趣的话题,也是让人很神往的东西,可惜就是人工智能的资料往往是枯涩难懂,希望这里能让大家轻轻松松地了解人工智能的基本知识,为进一步学习打好基础。这是科普文章,老鸟请无视!原创 2013-10-11 14:32:35 · 2763 阅读 · 0 评论 -
神奇的数据挖掘
谈到BI,就会谈到数据挖掘(Data mining)。数据挖掘是指用某些方法和工具,对数据进行分析,发现隐藏规律并利的一种方法。本文我们将通过具体的例子来学习什么是数据挖掘,为大家分享决策树、分类、类聚、关联、回归、神经网络等数据挖掘方法,当然这些都是一些粗浅的介绍,老鸟请无视!原创 2013-10-10 10:42:38 · 3818 阅读 · 2 评论 -
大话商业智能
商业智能,英文名字叫Business Intelligence,英文简称BI。BI这词看上去很神秘,给人很高科技的感觉,但真正了解的人不多,又加上某些厂商乱用BI来胡弄人,将好好的BI搞得不成人样。本文将会为大家分享我的粗浅理解,当然如果你是老鸟,请无视此文!原创 2013-10-08 15:58:27 · 2503 阅读 · 0 评论 -
一切皆可复用
人类文明不断地进步,并不是现在的人比古代的人要聪明,而是我们能不断地“复用”前人的知识、经验。你能不能成为优秀的软件人才,也视乎你能不能不断地“复制”你的成功。一流的软件公司,关注的不止是在技术方面的复用,实际上软件开发过程中几乎所有的东西都可以复用!原创 2013-09-15 17:55:59 · 3093 阅读 · 1 评论 -
超越竞争对手的秘密武器-技术重用
软件重用的好处不言而喻,但似乎很多公司都会陷入这样的怪圈:因为项目进度压力大,就不讲究什么重用设计了,太花时间了,完成项目再说。因为一直都是项目进度压力大,故周而复始的循环这个怪圈。如何摆脱这样的怪圈?如何在激烈的竞争中立于不败之地?如何利用好“软件重用”这个厉害的武器?本文阐述了我的大量工作体会,将给你一个有益的启发。原创 2013-09-02 22:23:57 · 6293 阅读 · 12 评论 -
挨踢项目求生法则(4)——设计篇
软件设计是为软件服务的,要服从项目的商业目标。一味追求所谓的优雅设计,项目可能会死的很惨。客户购买的是软件而不是你的设计。如果你在客户面前介绍你的设计如何精妙、如何OO、如何依赖注入?那客户只能当你是火星人看了,客户并不会因为你的设计如何精妙而原谅你的推迟交付和增加费用。如果为了节省时间,忽略设计或者粗略设计,项目同样很可能会死得很惨!没有想清楚就动手,就相当于冒着大雾往前走,可能走错方向,可能跌入悬崖……原创 2013-07-15 16:06:20 · 4413 阅读 · 1 评论