Browsed by
分类: 技术读物

Waterfall 软件工程

Waterfall 软件工程

《Royce, Winston (1970), “Managing the Development of Large Software Systems”Proceedings of IEEE WESCON 26 (August): 1–9. 》,这篇文章向你说明了软件工程鼻祖“Waterfall”的工程模型,这是40年前的论文,其中的十张插图很有强大,抽出来,让我们来看看什么叫Waterfall软件工程。

首先,让我先看一下小的程序是怎么做的,呵呵,很简单,两步。

接下来,就是我们最经典的Waterfall软件工程模型了,用户需求,软件需求,需求分析,设计,编码,测试,运维。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (14 人打了分,平均分: 3.14 )
Loading...
实用Android开发工具和资源精选

实用Android开发工具和资源精选

出处A Useful Selection of Android Developer Tools and Resources

在google、开源平台,和来自移动电话制造商HTC,Samsung和Sony Ericsson的支持下,Android平台在市场占有率上相比去年取得的886%增长!如果我只看增长率,IPhone据统计才有61%的增长。这些数据可以给你关于两个平台流行度的印像,但是事实上,这些数据告诉了智能机开发员的谁才是真正的赢家。在时下,智能机越来越流行,因此成为一个快速增长的Android平台的智能机开发人员将会是一个不错的选择。

相比较其他的平台,Android不依赖于任何约束第三方应用程序的私有的操作系统(题外话:美国最近宣布对于IPhone的破解和越狱是合法行为),Android本身就是开源的。由于开源,Android有巨大的开发社区支持。各种个样的例子和教程,GUI素材,和开发工具下载。几乎所有的都是免费提供的。我们选出接近20个可以免费或开源的,工具,资源,开发指南。希望这些资源能给你的Android应用带来帮助。
相关文章参看:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (16 人打了分,平均分: 3.75 )
Loading...
两个教程:Socket和HTML5

两个教程:Socket和HTML5

给大家介绍两个教程,一个是关于Socket编程的,一个是关于HTML5的。

关于Socket,相信大家都知道这个是用来做TCP/IP网络编程的,其由FreeBSD引入,现在,只要你相做网络编程,你必然会使用到它。这里有一个叫Beej’s Guide to Network Programming 的网站,非常不错的一个教程。在其主页上显示有中译版,不过很可惜,打不开。好像网络有很多转载,你可以Google一下

另一个是关于HTML5的众多标签,大家可以访问这个叫做“HTML5 Peeks, Pokes and Pointers”的网站,其就像一个速查手册一样,你可要查阅HTML5的那些BT的tag,比如:多媒体,画布,地理,表单,等等。

希望大家喜欢,不妨你也说说你知道的相关的一些教程。

好烂啊有点差凑合看看还不错很精彩 (11 人打了分,平均分: 2.45 )
Loading...
免费电子书列表

免费电子书列表

在StackOverflow上,有人要打算收集个免费电子书的列表,结果很快就有人分享了一个列表。很不错,我就转过来了。原帖的地址在http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books (注意:有些连接可能会被墙掉)

List of Free Programming books (compiled): Meta-List

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (19 人打了分,平均分: 3.79 )
Loading...
最佳编程语录

最佳编程语录

以前本站发布过《22条经典的编程引言》、《编程引言补充》、《Linus Torvalds 语录》还有《十条不错的编程观点》。今天向大家介绍“最佳编程语录”,条条都是很不错的语录,如同我们的太阳,照亮了我们的方向(所以我们选用了一个红色的图片,希望能够通过五毛们的网络审查)。其中只有一两条在以前本站发布过的文章中出现过。这篇文章的出处在这里,下面是“Neo”和“陈皓”的翻译,我们的翻译水平有限,所以,我们提供了中英文对照,有不当之处,还请各位指正。

A good programmer is someone who looks both ways before crossing a one-way street. — Doug Linder, systems administrator

好的程序员这样一类人,这类人在横穿一条单行道前都要先看一下路两边。– Doug Linder, 系统管理员

A most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits. — Edsger Dijkstra, computer scientist

关于工具,一个最重要的,也是最不易察觉的方面是,工具对使用此工具的人的习惯的潜移默化的影响。如果这个工具是一门程序语言,不管我们是否喜欢它,它都会影响我们的思维惯式。 –Edsger Dijkstra, 著名的计算机科学家。

Being abstract is something profoundly different from being vague… The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. — Edsger Dijkstra

抽象和模糊完全地不同,抽象的目的并不是把事情变模糊,而去创建一个新的语义层,在那里是绝对精确的描述。 — Edsger Dijkstra

Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer. — Edsger Dijkstra

除了数学爱好,对于一个有能力的程序员来说,出色地掌握自己的母语是最宝贵的财富。– Edsger Dijkstra

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (27 人打了分,平均分: 3.78 )
Loading...
HTML5 和 Flash 之争

HTML5 和 Flash 之争

文章来源

二者之间的竞争会演变成为一场“战争”吗?(现在甚至出现了可以把Flash转成Javascript/HTML5的工具)

首先需要弄清楚二者之间最主要的区别,HTML 是一种语言(超文本标记语言 – HyperText Markup Language),而 Flash 是 Adobe(其收购了Macromedia)公司的一个浏览器插件(Plugin)。HTML5 目前还是 W3.org 规范中一个草案,这意味着其还没有最终定案,希望到 2012 年这项工作能够完成。

以下是二者各自的一些特点:

HTML5

这个新的技术更为易学和易用,比较 .FLA 和 .SWF 文件更容易编辑。并且基本上过去所有由 Flash 才能制作的动画效果都能够使用 JS + HTML5 + CSS 3 来完成,不过工作量可能会更大一些,不仅文件尺寸会增大,性能方面也会有影响。

以前为 Web 表单设定风格我们一定需要使用到 JavaScript, 但是 HTML5 中的 contenteditable 属性让我们可以做得更多。一些新的输入类型(Types of Inputs)也被加入到 HTML5 中,如:电子邮件,数字,值范围等等。

用户不仅仅需要一个支持 HTML5 的浏览器,还需要 CCS 3 和新的 JavaScript 引擎的支持。

免费(不包括第三方字体和音频视频等等)

更好地移动设备支持(HTML5 正在被运用于 iPhone,iPod,iPad 和 Android 应用的开发)

拖拽,事实上这不是 HTML5 的一部分,但是在新版本的 GMail 中,从桌面拖拽文件到浏览器能够用 HTML5 很好地实现。对于 Flash 我不知道这是否可以实现?

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (12 人打了分,平均分: 3.50 )
Loading...
计算机编程简史图

计算机编程简史图

这个图片太经典了,本来想翻译的,后来觉得这么经典的图片可能早已被人翻译了,简单的Google一下,果然有人翻译了。那我就把英文版和中文版都转过来吧。我们可以看到,其中很大一部分人都和Unix有着不解之缘(参见《Unix传奇上篇Unix传奇下篇》)

什么也不说了,直接上图(图片比较大,单击图片看大图)


计算机编程简史图(英文版)

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (20 人打了分,平均分: 3.75 )
Loading...
Kent Beck 谈单元测试和持续部署

Kent Beck 谈单元测试和持续部署

文章来源

2010年7月2日,Roy Osherove 和 Kent Beck 在 blog.typemock.com 进行了一次对话,话题涉及单元测试(Unit Testing),JUnit Max(Kent 开发的一个单元测试的 Eclipse Plugin,不免费),和面向初创企业的精益方法(Lean Startups)。

单元测试和 JUnit Max
作为软件开发方法学的大师、极限编程XP的创始人、敏捷宣言的创始人之一,Kent Beck 一直在努力最大化地利用单元测试的价值,他说一些程序员仍然认为单元测试并不是他们的工作,但是单元测试确实能够提高软件的质量。目前他正在开发 JUnit Max,这是一个 Eclipse plugin,每当程序员保存一个 Java 源文件的时候,JUnit Max 就会运行测试并报告反馈信息。测试中的错误将会如同编译错误一样被报告给程序员。JUnit Max 的核心思想是测试错误应该和编译错误一样被 IDE 报告给程序员,程序员不需要额外的菜单选项或者运行其他的工具来运行测试。特别是那些经常失败的测试,对于程序员来说是非常有价值的反馈信息。在测试驱动开发(Test Driven Development – TDD)中,我们重复着这样一个循环:“编写一个‘失败’的测试(Failing Test)” – “编码实现功能以便让测试通过”,随着开发的深入,测试越来越丰富,测试能够反馈给程序员的信息也越来越多,它们可以帮助程序员找出那些需要改进的代码。JUnit Max 能够缩短这个循环的周期,因为它更为频繁地运行测试和提供反馈。Roy 问道:“当你一个人编码的时候,你是否严格地遵循 TDD,即一定要先写测试,然后写实现代码。我个人发现这并不是一件容易做到的事情,特别是当一个人编码的时候。” Kent 回答:“视情况而定,有时候并不需要死板地遵循 TDD,比如当我在做一些探索性或者说实验性的编码时,并不需要写测试,因为我只是想尝试一下某些功能和特性。”

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (12 人打了分,平均分: 3.50 )
Loading...
为什么敏捷方法能在软件开发中行之有效?

为什么敏捷方法能在软件开发中行之有效?

文章来源 – Martin Fowler 和 Neal Ford 在 Paris – USI 2010 的演讲

有很多的书籍讨论敏捷方法是怎样工作的(How it works?),在这个主题演讲中,Martin Fowler 和他的同事 Neal Ford 讨论了敏捷方法能够在软件开发项目中行之有效的原因(Why it works?)。作为敏捷方法的发起人和传道者,Martin Fowler 和 ThoughtWorks 一直试图从理论层面证明敏捷方法的可行性,同时不厌其烦地解答着客户们的各种困惑,正如他们所说,敏捷方法中的很多概念不是特别的直观,除非人们真正实践过一段时间,否则有些概念很难从字面上去完全理解。

Martin Fowler 谈到一个有意思的现象,那就是今天许多人们口中谈论的敏捷方法,和最初的敏捷方法大相径庭,他把这种现象称为“语义扩散(Semantic Diffusion)”,大意是某种思想在传播的过程中,在逐渐扩散的同时,其语义也渐渐变得模糊。在敏捷开发领域里,“语义扩散”导致的一个问题是,在一些使用敏捷方法的项目或者公司中,我们甚至无法辨别出敏捷方法的影子,原因是很多人没有真正地理解敏捷方法,也就不能够正确地运用和实践,从而也就无法真正了解自己是否能够从敏捷方法中获益。

以下是为什么敏捷方法行之有效的原因:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (18 人打了分,平均分: 3.89 )
Loading...
参透软件开发的本质 – Uncle Bob Martin 推荐的经典书籍

参透软件开发的本质 – Uncle Bob Martin 推荐的经典书籍

数量级25(10^25)是 Uncle Bob 在 RailsConf 演讲的主题。如果你用一台 PDP 8( 1960年代的计算机)和 Mac PowerBook 做比较的话,你会发现 Mac PowerBook 比 PDP 8 快8000倍,有6百万倍大的内存,11000倍的耗能,1500倍的容量等等。如果将这些0累加起来,很容易达到10^25。在过去40年里,我们的硬件计算能力获得了10^25倍的提升,而作为软件开发人员的我们并没有利用这些计算能力来提升多少我们的软件开发能力。没错,我们是写了不少的代码,但是它们基本上都是一些顺序语句,if 语句,和 while 循环等,没有什么新鲜的东西。你可能会说面向对象是新东西呀,但是那只是另外一种组织顺序、选择和迭代等语句的方法而已。除我们现有的编程语言之外,如果有新的编程语言能够产生并创造新的“微积分学”,从而将软件开发提高到一个新的高度,将会是一件非常令人期待的事情,因为顺序语句,选择语句和迭代等最终将成为历史。

Uncle Bob 认为以下四本书是软件开发人员必须阅读的,并由他自己来排名。

1. The Structure & Interpretation of Computer Programs 计算机程序的构造和解释 (By Harold Abelson & Gerald Sussman)

书中使用的是 Scheme 语言(Lisp 的一个变种),此书的内容曾经是 MIT 计算机系的一门课程,当然现在已经不是了。

2. Structured Programming 结构化程序设计 (By Edsger W. Dijkstra)

相信软件专业的同学们都上过此课程,我们的启蒙书籍。这本书讨论了 go to 是怎样的邪恶,同时也讨论了面向对象。对比一下今天我们视为 best practice 的测试驱动开发(TDD),go to 在过去也曾经是 Fortran,Cobol 等语言的核心。

3. The Annotated TURING (By Charles Petzold)

Uncle Bob 令人尴尬地忘记了这本书的名字,他自嘲说自己从来记不住这本书名。但是此书在他的推荐列表中列第三位。

4. Clean Code (By Robert C. Martin)

Uncle Bob 本人的大作。

我的一位同事将这位 Uncle Bob 视为软件开发领域中的上帝,Uncle Bob 这位大师在当下各类编程语言和平台层出不穷的时候,在我们为该学什么语言买什么书举棋不定的时候,推荐给读者这几本经典,也许是煞费苦心地想让我们参透软件开发的本质吧。不过会不会也是因为我们都在慢慢变老,许多旧的东西如今又变成了新鲜有趣的事情啦?(出自采访记者之口)

文章来源

好烂啊有点差凑合看看还不错很精彩 (10 人打了分,平均分: 3.60 )
Loading...