随笔分类 -  软件工程与项目管理

关于软件工程和项目管理方面的想法。需求(分析)、架构(设计)、构建、测试、部署、维护......
摘要:本文为大家介绍软件设计中的一些原则,都是经过长期经验总结出来的知识,每一个程序员都应该了解,相信对大家在进行软件设计的过程中会有很大帮助。Don’t Repeat Yourself (DRY)DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个新的方法。参考:http://en.wikipedia.org/wiki/KISS_princ 阅读全文
posted @ 2011-04-26 11:44 Colin_Ye
摘要:我们首先来看看(企业应用系统)集成的基本概念和技术概念、术语,除了基本概念,我们会说一说类似SOA这样的集成模式的类型,如点对式、中心辐射、管道,明白EAI、EII的区别,也会提到未来集成技术——XTP。一、基本概念首先我们明确一些基本概念(我自己的理解): A2A:两个应用之间的集成 B2B:两个商业团体之间的集成 B2C:商业团体与最终用户之间的集成,比如internet上的技术 集成类型:比如界面层的集成、数据层的集成、功能层的集成 语义集成 EAI:两个应用之间数据和商业过程的集成 消息、发布与订阅、消息中介、消息基础架构:基于消息的异步集成升级到的概念 ESB:是实现EAI的一种基础 阅读全文
posted @ 2011-04-05 16:53 Colin_Ye
摘要:软件的设计是有原力在推动的,原力包括下表左侧第一列部分表1:影响的不同程度 全球行业 企业 系统 应用 功能管理 不重要的 边际的 重要的 关键的 性能管理 重要的 重要的 关键的 关键的 复杂性管理 重要的 关键的 重要的 边际的 变化管理 不重要的 关键的 关键的 重要的 IT资源管理 不重要的 关键的 重要的 边际的 技术转移管理 关键的 重要的 重要的 边际的 表2:在各层次上起作用的角色 全球行业 企业 系统 应用 功能管理 架构师 开发人员 性能管理 架构师 开发人员 复杂性管理 项目经理 架构师 开发人员 变化管理 项目经理 架构师 IT资源管理 CTO 项目经理 开发人员 技术 阅读全文
posted @ 2011-03-31 15:00 Colin_Ye
摘要:这段时间工作需要重新复习了一下设计原则(另外随笔总结)和模式,重新整理了一下自己的思绪,做个总结:首先,模式语言是对应不同的软件设计层次的 ,我觉得如下的这个层次划分比较合理软件设计层次及相关模式: (后面是本人的理解)对象和类:实现模式、惯用法、各个语言(Java 、.NET、C++)的类库微架构:设计模式框架:基础框架,如spring、hibernate...应用层:企业应用架构模式系统层:各个应用间的交互,企业集成架构模式企业层:开发机构的技术策略、指导原则和过程。如SOA应该算是企业模式,层次在应用和集成之上,相似的还有EDA。全球/行业层:建立不同企业间的标准除此之外,还有一些其他的 阅读全文
posted @ 2011-03-31 13:24 Colin_Ye
摘要:早就想写这个总结了,因为SCRUM很好, 工具却难找,但一直没有出台,是想等自己都试用过后,这样才更有发言权。可有些工具真的是很难搭起一个环境,这样只好摘录一些网友们的评论了! ---敏捷精灵白板最直接的方式,用于每天的tracking,还是非常不错的,但是对Product Backlog支持明显不够Excel我们最初也用过,主要是成员多的情况下,修改时会相互冲突,不好同步。。可以参考我写的这个文章[scrum工具]用excel表格工具实现ScrumScrumWiki这个也用过,一开始感觉还不错。但当你的需求变多变复杂的情况下,就不容易用了。后台脚本使用Perl写的,我们的一个外国同事还对他专 阅读全文
posted @ 2011-03-09 12:11 Colin_Ye
摘要:关于pom.xml最近看源代码比较多,经常看到POM.XML的文件,不知道有什么用,在网上搜罗了一下,顺便paste下:什么是pom?pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。快速察看:<project><modelVersion>4.0.0</modelVersion><!--TheBasics--> 阅读全文
posted @ 2011-02-10 18:38 Colin_Ye
摘要:缺陷管理工具JIRA和TD的对比分析报告一、 前言对JIRA工具进行调研和试用,并且与TD进行详细的对比分析。具体情况如下所述。二、 介绍1. JIRA介绍JIRA是集项目计划、任务分配、需求管理、错误跟踪于一体的商业软件。JIRA创建的问题类型包括New Feature、Bug、Task和Improvement四种,还可以自己定义,所以它也一是过程管理系统。Jira融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA。JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产 品 阅读全文
posted @ 2011-02-10 16:55 Colin_Ye
摘要:「工 欲善其事,必先利其器」,學習UML沒有好的工具幫忙,往往會讓開發人員半途而廢,尤有甚者,開發人員有時會因為使用了不容易使用的開發工具而誤認為 UML是一個非常困難學習的「技術」。殊不知UML只是一種「語言」,就和學習中文、美語一樣,學習UML根本不困難,只要瞭解UML的語法以及知道 UML的適用時機,UML自然手到擒來。當然,如果有一套上手的UML開發工具,UML的困難度更是大幅降低,這也是本次專欄我們會討論UML工具評比的 原因。在這次專欄中,我們將評比三個不同的UML工具 – IBM公司的 Rational Software Architect(以下簡稱RSA)、Borland公司的 阅读全文
posted @ 2010-12-22 13:28 Colin_Ye
摘要:正如你所知道的,RUP(Rational Unified Process,Rational 统一过程),是一种被广泛使用的软件过程框架。它可以很好地迎合你的软件开发过程的需要,还可以容纳其他技术。Scrum是一系列有趣的,用来包装灵活软件项目的项目管理模式。本文介绍了Scrum的一些重要特性,并阐述了可以让你在已有RUP环境中加入Scrum理念的技术。我在工具条内提供了关于Scrum和“灵活”的术语的词汇表,并且在下文中这些术语首次出现的地方用星号作了标记。什么是Scrum?Scrum是一种灵活的软件管理过程,它可以帮助你驾驭迭代,递增的软件开发过程。Scrum于1995年由Advanced 阅读全文
posted @ 2010-12-15 16:19 Colin_Ye
摘要:百科名片RUP管理办法RUP(Rational Unified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。目录简介一、六大经验二、统一软件开发过程RUP的二维开发模型三、统一软件开发过程RUP核心概念四、统一软件开发过程RUP裁剪五、开发过程中的各个阶段和里程碑六、统一软件开发过程RUP的核心工作流七、RUP的迭代开发模式展开简介  根据Rational(Rational Rose和统一建模语言的开发者)的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。 RUP和类似的产品--例如面向对象的软件过程(O 阅读全文
posted @ 2010-12-15 15:36 Colin_Ye
摘要:复习一下特别说明:1、本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识;2、本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库;3、本文未深入数据库优化中最核心的执行计划分析技术。读者对像:开发人员:如果你是做数据库开发,那本文的内容非常适合,因为本文是从程序员的角度来谈数据库性能优化。架构师:如果你已经是数据库应用的架构师,那本文的知识你应该清楚90%,否则你可能是一个喜欢折腾的架构师。DBA(数据库管理员):大型数据库优化的知识非常复杂,本文只 阅读全文
posted @ 2010-12-09 09:56 Colin_Ye
摘要:一、软件性能的关注点对一个软件做性能测试时需要关注那些性能呢?我们想想在软件设计、部署、使用、维护中一共有哪些角色的参与,然后再考虑这些角色各自关注的性能点是什么,作为一个软件性能测试工程师,我们又该关注什么?首先,开发软件的目的是为了让用户使用,我们先站在用户的角度分析一下,用户需要关注哪些性能,对于用户来说,当点击一个按钮、链接或发出一条指令开始,到系统把结果已用户感知的形式展现出来为止,这个过程所消耗的时间是用户对这个软件性能的直观印象。也就是我们所说的响应时间,当相应时间较小时,用户体验是很好的,当然用户体验的响应时间包括个人主观因素和客观响应时间,在设计软件时,我们就需要考虑到如何更 阅读全文
posted @ 2010-12-08 18:08 Colin_Ye
摘要:Session详解 作者:郎云鹏软件工程2009-01-13 10:59:45阅读1408评论0目录:一、术语session二、HTTP协议与状态保持三、理解cookie机制四、理解session机制五、理解javax.servlet.http.HttpSession六、HttpSession常见问题七、跨应用程序的session共享八、总结参考文档一、术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。session,中文经常翻译为会话,其本来的含义是指有始有终的一系列 阅读全文
posted @ 2010-12-06 13:05 Colin_Ye
摘要:下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList()javax.swing.JTable... 阅读全文
posted @ 2010-11-29 11:08 Colin_Ye
摘要:[转帖]敏捷开发,Use Case 还是 User Story2009-9-24敏捷开发,Use Case 还是 User StoryMurali Krishna告诉我们:未能彻底明白用户故事的性质往往都是未能有效地转变到敏捷开发的重大问题。用户故事最重要的特点在於每一 个用户故事都是一个“可独立分配”的需求(特徵)单位。要达到“可独立分配”,就要从... 阅读全文
posted @ 2010-09-28 13:56 Colin_Ye
摘要:linux svn命令大全1、将文件checkout到本地目录svncheckoutpath(path是服务器上的目录)例如:svncheckoutsvn://192.168.1.1/pro/domain简写:svnco2、往版本库中添加新的文件svnaddfile例如:svnadd test.php(添加test.php)svnadd *.php(添加当前目录下所有的php文件)3、将改动的文件提交到版本库svncommit-m “LogMessage“[-N][--no-unlock]PATH(如果选择了保持锁,就使用–no-un 阅读全文
posted @ 2010-06-22 11:41 Colin_Ye
摘要:maven maven-war-plugin 的配置文章分类:综合技术 在公司使用ANTX作为构建工具,一直以来感觉ANTX的auto-config功能很实用,它很好的将不同环境的打包方式通过properties文件分离了开来,且ANTX的这部分功能的实现应该是采用Velocity实现,故可以实现非简单的变量填充的功能,在配置中还可以写简单VM的语法。后来构建工具转型到MAVEN之后一直在寻找一种... 阅读全文
posted @ 2010-06-22 10:36 Colin_Ye
摘要:Sonar安装1.下载sonar安装版,解压;2.bin\windows-x86-32\StartSonar.bat3.mvn clean install sonar:sonar4.Browse to http://localhost:9000, default login/password is admin/admin.5.mvn org.codehaus.sonar:sonar-maven-p... 阅读全文
posted @ 2010-06-08 15:48 Colin_Ye
摘要:continuum 邮件通知配置2009-09-15 09:17这里是配置jetty的邮件服务设置,continuum利用Spring mail发邮件,但配置的是使用容器的mail服务,所以改变jetty配置。有些文章介绍的怀疑还是continuum使用其他框架的配置,没有仔细看。修改 conf/jetty.xml实例如下:<New class="org.mortbay.naming.fac... 阅读全文
posted @ 2010-06-03 19:14 Colin_Ye