一辈子两件事,关于计算机编程的两件事

“两件事情”这篇文章里的内容可以用下面的引用做最好的概括:几年前,我在一个酒吧里和一个陌生人聊天。当我告诉他我是个经济学家时,他说,“哦,那么 … 什么是经济学里的’两件事‘呢?”“嗯?”我狡诘的回答道。“你知道的,两件事呀。对任何一个学科,都只有两件事情你需要真正的去了解。任... [阅读全文]

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

文章来源 – Martin Fowler 和 Neal Ford 在 Paris – USI 2010 的演讲  有很多的书籍讨论敏捷方法是怎样工作的(How it works?),在这个主题演讲中,Martin Fowler 和他的同事 Neal Ford 讨论了敏捷方法能够在软件开发项目中行之有效的原因(Why it works?)。作为敏捷方法的发起人和传道者,Mar... [阅读全文]

软件工程文档,拒绝形式化的软件工程文档

最近在一个软件公司实习,这是一个小型的公司,承接政府和事业单位的一些工程项目。 我在这个企业所遇到的所有事情相信在中国绝大多数地方和绝大多数软件企业中尤为重要。   我已经在很多次的公开场合批评过形式化的软件工程,就是将书本上所要求的软件工程实践内容不经过任何具体化的措施和方法直接形式化套用。 这个做法的后果是极大的浪费了时间和资源,打击了开发者的积极性。   文档的本质是什么?为什么要写文档?什... [阅读全文]

uml建模,基于OPN和UML的导航装备维修建模方法研究

  引言   地面导航装备维修保障系统是一个包含装备、人员、备件、信息和管理等因素的离散事件复杂大系统,由于导航装备维修保障系统的离散性、随机性和复杂性决定了在对它进行建模描述和分析时的困难性,  使用仿真技术开展导航装备维修保障研究,可以全面地考虑可能发生的问题,准确反映动态与随机的系统特性,节约研究时间与费用,是进行维修保障研究的最佳方法。作为战场保障装备的重要组成部分,  导航装备... [阅读全文]

讨论: TDD in HTML JavaScript 之可行性和最佳实践

TDD的背景  自从03年Beck正式提出(事实上在00年,Beck提出eXtreme Programming时,就已经提出了这个词)Test-driven design/development这样一个基于测试优先、重构和迭代的革命性的开发方法以来,无数的实践已经证明,对于适合进行TDD的领域,TDD能够极大地提高代码的可维护性和开发效率。  在这样一个迭代的流程中,在写任何的production... [阅读全文]

自定义工作流,一套完整自定义工作流的实现

概述:本工作流以一套金融软件业务处理流程为例,实现功能包括:流程自定义、步骤自定义、步骤重复次数、步骤类型(顺序/并行)、定义排序功能,完全使用数据库实现,本文将详细分析业务流程、系统设计及实现细节。术语:工作流(Workflow)[1],是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施... [阅读全文]

蔡学镛:架构师最重视的文档

文/蔡学镛  技术文档很多,每种文档都有各自的目的。其中和架构师关系最密切的、甚至架构师应该亲自写的文档是技术白皮书与技术路线图,这两份文档是本次文章的重点。  技术白皮书   White Paper衍生自White Book(白皮书),一般也称为白皮书,但是内容更浓缩、更精华。White Paper通常合起来写为Whitepaper。   技术白皮书(Technical White Paper)... [阅读全文]

网站重构,如何进行大规模重构

从定义上看,重构意味着改变程序的内部结构,而不改变外部的功能行为。这样做大多是为了提高程序的非功能性属性,从而提高代码的质量。然而,即便是经验丰富的敏捷开发者,在进行大规模的重构时也是如履薄冰。社区中的成员对掌控大规模重构的几种方式进行了讨论。  在最近的讨论中,Andreas想要知道三种可能完成大规模重构的方法中哪种最好。他的方式包括,一次完成——定义最终状态的结构,然后... [阅读全文]

需求分析阶段的工作(二):用例描述和逻辑模型

从任何一个环节我们都会看到用例,但是仅仅依靠用例本身的图来描述用例是不够的,为什么呢?因为用例它所要描述的是一个场景,换句话说,就是用例是描述了某件详细的事情。如果作为一个场景的话必然要考虑这么几个问题:谁在这个场景中做事?什么时候进入这个场景?这个场景在做什么?这个场景有没有特殊规则?这个场景结束后会有什么情况?这个场景和别的场景会有什么联系?  考虑这几个问题的话,那我们就可以开始描述我们的用... [阅读全文]

需求分析阶段的工作(一):业务用例和系统用例

在这里要申明的是逻辑模型并不能完全算需求分析阶段的工作,因为它包含了设计模型的概念,但是我又把它归纳了一块到需求分析阶段,原因在于逻辑模型中存在了业务对象模型和分析模型的概念。言归正传,先来看用例模型。用例模型  用例模型包含了两部分:业务用例模型和系统用例模型。从字面的意义来看,确实很难分清两者究竟在做些什么工作。因此我们要重点解释一下。业务用例模型的目的在于:1. 描述企业的内部组织结构2. ... [阅读全文]

网站常用工具分析,常用 Java Profiling 工具的分析与比较

相对于静态代码分析,Profiling 是通过收集程序运行时的信息来研究程序行为的动态分析方法。其目的在于定位程序需要被优化的部分,从而提高程序的运行速度或是内存使用效率。收集程序运行时信息的方法主要有以下三种:事件方法:对于 Java,可以采用 JVMTI(JVM Tools Interface)API 来捕捉诸如方法调用、类载入、类卸载、进入/离开线程等事件,然后基于这些事件进行程序行为的分析... [阅读全文]

SSH中JQuery+Ajax实现批量选择和删除

通常见到的一个数据列表,前面有很多复选框,咱们可以选择多个,或者全选,进行全部删除,例如咱们经常用的邮件列表。这两天做实验室的项目,也用到了一些,以前用的纯的js,近年来jquery非常热,所以将一些老技术替换了一下,下面就举例子吧。项目的开发框架是J2EE的Struts+Hibernate+Spring。  首先看看视图层的列表数据,咱们要对复选框进行初始化。在迭代器中,每一条数据都有一个复选框... [阅读全文]

网站负载均衡,网站架构之负载均衡

动态内容按照存在形态可以分为三类。  第一类:内容长时间不需变化,这类内容一般是通过网页静化技术,实现动态内容转换成静态内容,从而达到cdn部署,典型的就是内容类网站,比如新浪、搜狐、网易等等的内容发布系统cms,内容的增删改等管理工作被准实时同步到各个节点。  第二类:内容可能会短时间内发生变动,但是最终会稳定。比如论坛、博客等应用,这类服务提供的内容按照一定的时间间隔,实现批量静化,当然也有实... [阅读全文]

走出困境,如何走出海量数据及访问量压力困境

随着中国大型IT企业信息化速度的加快,大部分应用的数据量和访问量都急剧增加,大型企业网站正面临性能和高数据访问量的压力,而且对存储、安全以及信息检索等等方面都提出了更高的要求…… 本文中,我想通过几个国外大型IT企业及网站的成功案例,从Web技术人员角度探讨如何积极地应对国内大型网站即将面临的扩展(主要是技术方面,而较少涉及管理及营销等方面)矛盾。   ... [阅读全文]

中文乱码,中文乱码的总结

在开发中,总会碰到各种中文乱码问题,下面稍作总结。  1、数据库的乱码出现乱码问题,我们第一反应应该是:是否数据库字符编码设置有问题。以mysql为例,装好mysql后进入安装目录,打开my.ini配置文件查看mysql设置的编码。在my.ini中有两处设置字符编码的地方,分别是[mysql]下的default-character-set及[mysqld]下的default-character-s... [阅读全文]

什么叫团队精神,什么是团队精神?

百度百科对团队精神的解释是:所谓团队精神,简单来说就是大局意识、协作精神和服务精神的集中体现。团队精神的基础是尊重个人的兴趣和成就;核心是协同合作;最高境界是全体成员的向心力、凝聚力,反映的是个体利益和整体利益的统一,并进而保证组织的高效率运转。  不知道大家有没有在上党课的时候听过这样一句话:对党忠诚,积极工作,为共产主义奋斗终身,随时准备为党和人民牺牲一切。  再看看上面这段话,如果你只看了前... [阅读全文]

中介经营模式,C#面向对象设计模式纵横谈:Mediator 中介者模式

  依赖关系的转化   动机(Motivation)  在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断地变化。  在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。  例说Mediator引用  菜单中... [阅读全文]

模板工程计算方法,C#面向对象设计模式纵横谈:Template Method 模板方法

  无处不在的Template Method  如果你只想掌握一种设计模式,那么它就是          -----Template Method!  变与不变  变化——是软件设计的永恒主题,如何管理变化带来的复杂性?设计模式的艺术性和复杂度就在于如何分析,并发现系统中的变化点和稳定点,并使用特定的设计方法来应对这种变化。   动机(Motivation)  在软件构建... [阅读全文]

测试驱动开发,我们的测试驱动开发经验

你应该听过或读过不少关于测试驱动开发的讨论,测试驱动开发往往被比喻为神奇的独角兽,它能帮你照看你的软件,让大家乐得其所。于是,在写了18.000行“神奇独角兽”代码后,我想把我们的体验从整体的角度阐述一下。  真相其实是,测试驱动开发真TMD太痛苦了。写那些没完没了的测试需要很强的自律,远不是你想象的那么简单容易。  但你知道什么更让人讨厌吗?是缺少这些测试而出现的麻烦。 ... [阅读全文]

敏捷测试,敏捷测试工程师的十条法则

对于初涉敏捷的测试工程师来说,如果定位自己的角色和职责、如何从传统开发模式成功迁移到敏捷模式、如何跟上短迭代的节奏等等问题都迫切地想要找到答案。 资深敏捷实践者Lisa Crispin和Janet Gregory在《敏捷软件测试:测试人员与敏捷团队的实践指南》一书中,列举了敏捷测试工程师的十条法则,对读者或许有借鉴意义。提供持续反馈(Provide Continuous Feedback)既然是测... [阅读全文]

通用连接框架,通用异常处理框架

异常捕捉、处理是每个项目中必不可少的一部分,利用反射和XML配置技术实现一个通用的、灵活的、可配置的、高度可自扩展的异常处理框架对项目的整体健壮性以及异常处理效率都是非常重要的。通用异常处理框架中需要提供配置信息的支持以及统一的异常处理类和异常日志记录类管理,并允许用户以插件形式扩展自定义的异常处理或日志记录方式。  一、问题的提出  由于异常处理在项目中的普遍性,我们会很自然的想到是否可以对异常... [阅读全文]

敏捷开发,敏捷开发的常见问题

Chris Tyler在个人博客中针对这些问题做出了回答:1. 技术负债在敏捷团队中会快速的膨胀。 是事实,但这并不是敏捷本身的问题,只不过是在敏捷导入和实施过程中没有引起足够的重视。经验丰富的敏捷教练往往十分重视工程类实践,会强调重构在迭代中的重要性。很多的敏捷实践(比如TDD,持续集成,重构)及很多敏捷开发者提倡的原则(比如S.O.L.I.D原则,Clean Code,Implementati... [阅读全文]

敏捷开发,腾讯与敏捷开发

在这风起云涌的年代,最为人们津津乐道的国内互联网三巨头无疑是腾讯、百度和阿里巴巴,比较凑巧,鄙人曾在其中两家的研发部门任职。因为已离开Tencent,所以现在可以站在另一个角度冷静思考,梳理回忆当年的所见所感,让众人一睹Tencent研发的峥嵘。  Tencent的产业布局主要在IM即时通讯、互联网增值业务、网络游戏、无线应用、网络媒体、电子商务和广告业务,QQ注册用户超过7亿、活跃用户超过3亿,... [阅读全文]

敏捷开发,敏捷开发中对进度的把握

如何做effort的estimate?本文给出了敏捷开发模式中的一个方法。  ---  项目经理被问到最多的问题就是,“这个项目什么时候才能完成?”   被问的时候,可能项目才定下来,仅仅知道大概的功能模块,非功能性需求还模糊不清,甚至团队成员都没到位。但是上级、销售、客户急切地要知道,这个项目什么时候才能完成?   被问的时候,也可能项目已临近结束,或者说临近当初计划的交... [阅读全文]

敏捷开发,敏捷开发思想之自我组织

最佳的架构、需求和设计出自于自组织的团队。蜂巢中的工蜂们看似忙碌,但其工作却是有序而有效,归根结底就是它们的组织架构其实是自我组织的。在自我组织的团队中,团队是一个整体,没有角色之分、职位之分、也没有高下之分。团队成员的任务不是项目经理强加于身,而是根据自己的愿望和能力对任务进行合理评估,并主动进行领取。被动与主动所产生的驱动力显然不可同日而语。 自我组织的团队是一个平行的组织,由于没有管理与被管... [阅读全文]

方法论,从IT方法论来谈RUP

在《从IT方法论来谈Scrum》中我谈到了6Ways方法框架,本篇仍用6Ways方法框架来概括的谈谈RUP方法。  软件开发过程描述了软件构造、部署和维护的一种方法。统一过程(Unified Process)是一种流行的构造面向对象系统的软件开发过程。RUP(Rational Unified Process)是对UP的详细精化,并且已经被广泛采纳。有些人可能一看到RUP提供这么多流程和工件,觉得不... [阅读全文]

free用法,destroy, free, freeAndNil, release用法和区别

最近在集成ZJ的模块的时候,发现当窗体关闭的时候,频繁的弹出内存访问错误,实在是烦躁啊,看了下代码,虽然很惨,但也没发现创建对象需要释放的问题,最后看到窗体关闭的时候,执行了一大段代码,考虑可能是窗体关闭的时候,其中的事件没有执行完成。考虑到这点,在Close事件中加入了Release方法,调试,问题解决。顺便查了下destroy, free, freeAndNil, release用法和区别,如... [阅读全文]

漂亮的留言代码,要写漂亮的代码

从个人的角度来看,漂亮的代码首先得满足这么一点,可读性强。  如何让自己写的代码变得可读性强呢? 从最简单也是最难的做起,有意义的名称 + 减少方法的长度。  我看过很多遗留系统的代码,里面大都充斥着大方法,多层缩进。如果不是逼不得已,个人是不愿意去读的。就像读文章一样,写的狗屁不通的文章你愿意去看吗? 而看文笔优雅的文章却是一种享受。所以我们写代码要漂亮、要优雅。  这种代码维护成本相当高,要改... [阅读全文]

胡思乱想,乱想乱写之闲话编译

  从毕业到现在,我已经编译过很多系统了。其中大部分为C++程序,部分为JAVA程序,还有一些网站的程序sample,另外还有些插件程序。当然,说是编译其实并不全面,编译是对C++来说的,其他可能还有部署啊啥的。  现在的时代已经不是重复制造轮子的时代,而是怎么利用轮子的时代,闭上眼睛,你可以听到open source的呼唤,噢,当然,如果你是开发商业应用的话,请注意许可证污染问题,最好是使用ap... [阅读全文]

细说前龙,细说业务逻辑(前篇)

  前言 记得几个月前,在一次北京博客园俱乐部的活动上,最后一个环节是话题自由讨论。就是提几个话题,然后大家各自加入感兴趣的话题小组,进行自由讨论。当时金色海洋同学提出了一个话题——“什么是业务逻辑”。当时我和大家讨论ASP.NET MVC的相关话题去了,就没能加入“业务逻辑”组的讨论,比较遗憾。 其实,一... [阅读全文]
< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 > >> 共1228条 分41页