
软件设计和管理
terryzero
这个作者很懒,什么都没留下…
展开
-
5 个常用的软件质量指标
在软件开发中,软件质量是衡量软件是否符合需求、标准的重要体现。除了代码质量外,影响软件整体质量的因素还有很多。因此,要确保软件的整体质量,就需要在各个环节严格控制。 本文列出了衡量软件质量的5个最常用的指标。 1. SLOC(Source Lines of Code,源代码行) 计算代码行数可能是最简单的衡量指标,主要体现了软件的规模,并为项目增长和规划提供了相关数据。例转载 2012-10-13 23:26:23 · 4737 阅读 · 2 评论 -
软件项目开发应写的13类文档
在软件项目开发过程中,应该按软件开发要求撰写十三类文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性!需求阶段 1、可行性分析报告 说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。 2、项目开发计划 为软件项目实施方案制订原创 2009-06-16 22:48:00 · 1093 阅读 · 0 评论 -
软件敏捷架构师
一直以来,无论是在软件开发组织之内,或是行业广大人士之中,对于敏捷团队是否需要架构师一直存在争论。大家的质疑集中在:既然软件的架构是随着每个迭代而演进的,那一个架构师还能给敏捷项目带来哪些价值呢?这让许多传统的架构师都感受到了威胁,并力图寻找掩护,也为一种新类型的架构师——敏捷架构师——打开了机会的大门。在敏捷项目中,传统架构师的象牙塔已经逐渐成为最薄弱的一环,而他们的许多工作职责也已经被整个敏捷转载 2009-06-05 17:33:00 · 806 阅读 · 0 评论 -
Web架构师必备能力
最近和几个朋友在谈到时下流行的Web 2.0,也提到了其中最重要的角色——架构师。多方各有争执,不外乎是因为背景和视角的缘故,包括架构一词,本身就从建筑学借鉴而来,至于架构师,则可以简单地从建筑学的设计师来引申,不外乎就是设计结构,设计一个大楼的结构。回到软件本身,那就可以简单地理解为负责设计软件框架的人了。我们没有讨论清楚架构师、软件架构师、系统架构师及其Web 架构师这些看似相同却有所区别转载 2009-06-06 22:28:00 · 1041 阅读 · 1 评论 -
软件需求分析--三步走
软件项目如何进行需求分析,要解决这个问题,我们要分三步走 第一步:通过什么方式去了解需求了解需求的方式有好几种:(1)直接与客户交谈。如果分析人员生有足球评论员的那张“大嘴”,就非常容易侃出需求。(2)有些需求客户讲不清楚,分析人员又猜不透,这时就要请教行家。有些高手真的很厉害,你还没有开始问,他就能讲出前因后果。让你感到“听君一席言,胜读十年书。”(3)有很多需求可能客户与分析人员想原创 2009-05-29 21:50:00 · 2415 阅读 · 0 评论 -
敏捷开发
简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。 敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立转载 2009-05-31 21:27:00 · 750 阅读 · 0 评论 -
设计模式--访问者模式(Visitor)
访问者模式概述 表示一个作用于某对象结构中的各元素的操作。 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。适用性 1.一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。 2.需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免让这些操作“污染”这些原创 2009-05-27 21:35:00 · 913 阅读 · 0 评论 -
设计模式--模版方法(TemplateMethod)
模板方法概述 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。适用性 1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。原创 2009-05-25 21:55:00 · 557 阅读 · 0 评论 -
设计模式--策略模式(Strategy)
策略模式概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。适用性 1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 2.需要使用一个算法的不同变体。 3.算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、原创 2009-05-24 22:53:00 · 487 阅读 · 0 评论 -
敏捷软件开发模型--SCRUM
软件开发模型,这东西听起来很nice,但真正做起来可是困难重重,特别是在那些需求变化很大的项目。软件开发人员最讨厌的就是需求的大量变化,下面转载介绍下现在比较流行的Scrum模型。 一 什么是Scrum?Scrum (英式橄榄球争球队)软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来。Scrum的基本假设是:开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要转载 2009-08-01 11:02:00 · 844 阅读 · 0 评论 -
CRM与ERP整合的六个切入点
一边是干劲十足的信息化建设,一面是彼此相互隔绝的信息系统,各种软件系统在努力帮助企业提升的同时,却又“老死不相往来”。如何互通有无,相互打通?成为企业在“后信息化时代”所需要攻克的主要难关。笔者在此总结CRM与ERP整合的六个切入点。 如今日益深入的信息化进程,让客户关系管理系统(CRM)与企业资源计划系统(ERP)走入越来越多的企业,一些老的问题随着信息化的实施迎刃而解,但也同时滋生了一些新的原创 2009-06-24 23:48:00 · 905 阅读 · 0 评论 -
CMMI的含义及重点
什么是CMMICMMI 的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。CMMI是CMM模型的最新版本。早期的CMMI(CMMI-SE/SW/IPPD)1.02版本是应用于软件业项目的管理方法,SEI在部分国家和地区开始推广和试用。随着应用的推广与模型本身的发展,演绎成为一种被广泛应用的综合性模型。CMMI的五个台阶 台原创 2009-09-01 20:51:00 · 1920 阅读 · 0 评论 -
CruiseControl持续集成
1. 认识CruiseControl CruiseControl 是 CI 服务器的老者,诞生已是多年,在许多方面, CruiseControl 服务器已经成为持续集成实践的同义词。而现在, CruiseControl 已发展成为一个家族式系统,包括 CruiseControl.java 、 CruiseControl.net 、 CruiseControl.ruby 等适转载 2009-11-07 23:46:00 · 937 阅读 · 0 评论 -
软件开发,维护与支持的困惑
好久没写博客了,主要近一年在公司一直做着维护的工作,在技术方面的长进有限,在为人处世和问题处理方面却学到很多经验,但这不是我喜欢的,还给我带来很多困惑,明明是开发,可写的最多的不是代码,而是每天回答一个个客户的疑难杂症。事情大概是这样的,公司从总部接手一个10年以上的大型目,本来应该是做新版本的开发的,但由于这个项目经过10年的无数人的摧残,代码和功能中的问题一堆。由于公司人手不够(哎~~~说原创 2012-10-13 11:33:23 · 3832 阅读 · 0 评论 -
软件项目管理实践之日计划
<br />如何提高项目的生产率,保证项目按期交付是每个软件开发项目经理都需要面对的难题。关于这方面的研究,在《人月神话》、《人件》等书籍都有很详细的论述。研究表明,不同程序员之间的生产率最高差别在40倍以上。虽然笔者没有亲睹这种样例,但是笔者的开发和管理生涯中所发现的相同技术水平程序员之间的生产率最大差距可达4倍。这个数据就发生在笔者的一个项目中,这让笔者感到非常的震惊。如果说40倍的生产率差距可能会有技术能力、工作经验、熟悉程度诸多因素的影响。那么,笔者所发现的4倍生产率差距却更让笔者感到不可思议。<b转载 2010-08-04 22:44:00 · 865 阅读 · 0 评论 -
工作流简介
<br />前一阶段做的一个系统,类似工作流管理系统,但很不标准,灵活度有限,所以想对工作流进行进一步的了解优化系统的实现。我一直比较喜欢李刚老师的疯狂系列丛书,写的很全面,例子很生动,可等了近一年,疯狂系列的最后一本 《疯狂JBPM讲义》还是不见踪影。<br /> <br />WFMC(工作流管理联盟)定义了在工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准。<br />什么是工作流管理系统(WFMS)<br />工作流系统是以规格化的流程描述作为输入的软件组件,它维护流程的运行状态原创 2010-08-03 22:57:00 · 1573 阅读 · 0 评论 -
Google code上利用SVN托管代码
工作加实习已经2年了,平时空闲之余也研究了很多,写了很多代码。但一直没像在公司那样好好的管理。当回想起以前写过的代码老是找不到。以前上google code都是学习别人的代码,现在感觉自己的代码也要好好管理下了。就到google code去看了下,发现步骤很简单。本来准备写篇简单的流程的,查了下资料,有前人的一篇写的不错,而其我也懒得上传图片了。下面转载下第一步:进入http://code.google.com/原创 2010-07-23 00:12:00 · 2971 阅读 · 0 评论 -
Checkstyle, PMD, Findbugs对比
当人们谈及代码规则引擎时。每个人都喜欢站在自己的位置上说自己较为喜欢的工具,而排斥其他的工具。 For instance, a PMD supporter could say :“Checkstyle is a stupid tool consuming time to search for tab characters when PMD is a smart one that can do翻译 2010-04-22 00:04:00 · 2547 阅读 · 1 评论 -
软件开发管理中的博奕论
软件开发管理中的博奕论吴旻泰岩网络工作室 软件开发人员大多懂得算法的威力,但无数失败的项目却向我们展示了一个又一个教科书解决不了的困境。不断前进软件的管理方式在力争避免项目失败,其实就是在不遗余力的破解这些困境。今天我们从博奕论的角度重谈这些问题,没准你会觉得从此天高云淡! 一、到底谁的BUG:“智猪博奕”,多劳并不多得? 曾经有过一段转载 2010-03-11 22:17:00 · 951 阅读 · 0 评论 -
成长中的十个启发--李开复
“创新工厂”董事长兼首席执行官李开复 也许有些人说开复老师跟4年前相比你胖了,我告诉你一个秘诀,就是跟你喜欢的人在一起做你喜欢的工作。 今天我想讲的题目是成长的十个启发。主要是我在回顾我的成长和我的一生。在我写我的自传的时候,我想到我的一生到底学到了什么事情是我真正想留下的,想传授给中国的学生。就像我的自传一样不想用一些说教的方法,不想用一些如何得到智慧,或者说成长中的七转载 2010-02-22 23:30:00 · 1510 阅读 · 0 评论 -
QTP Flex测试
QTP10对Flex插件支持不是很好,很多高级功能使用都有问题。这主要是这插件是Adobe做的,而HP本身不对flex进行支持。Adobe官方说后续会支持QTP10,由于公司买了QTP10的License,我就只能试用下。 安装及破解步骤: 1.安装qtp,基本一路next,先不要管破解的问题 2.拷贝mgn-mqt90.exe到C:/Program Files/Mer原创 2010-01-20 22:57:00 · 4067 阅读 · 4 评论 -
设计模式--备忘录模式(Memento)
备忘录模式概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。适用性 1.必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。 2.如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。参与者原创 2009-05-19 22:30:00 · 500 阅读 · 0 评论 -
设计模式--状态模式(State)
状态模式概述 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。适用性 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 2.一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。 这个状态通常用一个或多个枚举常量表示。原创 2009-05-23 21:33:00 · 528 阅读 · 0 评论 -
设计模式--适配器(Adapter)
适配器模式概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用性 1.你想使用一个已经存在的类,而它的接口不符合你的需求。 2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口 可能不一定兼容的类)协同工作。原创 2009-05-06 19:57:00 · 547 阅读 · 0 评论 -
设计模式--单态(Singleton)
单态模式概述 保证一个类仅有一个实例,并提供一个访问它的全局访问点。适用性 1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。参与者 Singleton 定义一个Instance原创 2009-05-03 21:59:00 · 840 阅读 · 0 评论 -
设计模式--原型模式(ProtoType)
原型模式概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。适用性 1.当一个系统应该独立于它的产品创建、构成和表示时。 2.当要实例化的类是在运行时刻指定时,例如,通过动态装载。 3.为了避免创建一个与产品类层次平行的工厂类层次时。 4.当一个类的实例只能有几个不同状态组合中的一种时。原创 2009-05-05 22:54:00 · 512 阅读 · 0 评论 -
设计模式--建造者模式(builder)
建造者模式概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。适用性 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被构造的对象有不同的表示时。参与者 1.Builder 为创建一个Product对象的各个部件指原创 2009-05-04 21:13:00 · 561 阅读 · 0 评论 -
设计模式--工厂方法(FactoryMethod)
工厂方法概述 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。适用性 1.当一个类不知道它所必须创建的对象的类的时候。 2.当一个类希望由它的子类来指定它所创建的对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是原创 2009-05-02 23:22:00 · 599 阅读 · 0 评论 -
设计模式--抽象工厂(AbstractFactory)
抽象工厂概述 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用性 1.一个系统要独立于它的产品的创建、组合和表示时。 2.一个系统要由多个产品系列中的一个来配置时。 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 4.当你提供一个产品类库,而只想显示它们的接口而不是实原创 2009-05-01 22:43:00 · 604 阅读 · 0 评论 -
软件性能测试
以前做过一些“山寨版”的性能测试,我都说了,是山寨么,当然不正规,不过,现在有多少企业的测试流程是正规的能,何况性能测试的流程呢。这是现状,也是机遇。这次因为项目需要,要做一个比较正规的,而且有一定难度的性能测试了。B/S, C/S,接口性能,都涉及到,对自己也是个挑战和提高。这一个星期主要做需求理解和性能需求分析,然后写性能测试计划和测试用例。发现了很多问题,总结如下:需求分析问题:转载 2009-03-20 23:13:00 · 954 阅读 · 0 评论 -
uml类图定义的关系
uml定义的关系主要有六种:依赖、类属、关联、实现、聚合和组合。下面对其定义和表示方法逐一说明。 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。 类属(Generalizati转载 2009-02-25 23:25:00 · 2242 阅读 · 1 评论 -
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical)。我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。这里我们来看四种最常用的开源协议及它们的适用范围,转载 2009-02-23 22:21:00 · 763 阅读 · 0 评论 -
设计模式--享元模式(Flyweight)
享元模式概述 运用共享技术有效地支持大量细粒度的对象。适用性 当都具备下列情况时,使用Flyweight模式: 1.一个应用程序使用了大量的对象。 2.完全由于使用大量的对象,造成很大的存储开销。 3.对象的大多数状态都可变为外部状态。 4.如果删除对象的外部状态,那么可以用相对较少的共享对原创 2009-05-11 23:10:00 · 686 阅读 · 0 评论 -
设计模式--桥接模式(Bridge)
桥接模式概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。适用性 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。 2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。 这时Bridge模式使你可以对不同原创 2009-05-07 21:21:00 · 597 阅读 · 0 评论 -
设计模式--组合模式(composite)
组合模式概述 将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。"适用性 1.你想表示对象的部分-整体层次结构。 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。参与者 1.Component原创 2009-05-08 23:11:00 · 558 阅读 · 0 评论 -
软件项目管理的圣经--人月神话(上)
软件项目管理领域很少能有著作能像《人月神话》一样具有影响力和畅销不衰。Brooks为任何人管理复杂项目提供了颇具洞察力的见解,既有很多发人深醒的观点,也有大量的软件工程现实。可由于年代久远,书中的例子就显得有点久远,该书出自论文出自Brooks的IBM System/360家族和OS/360项目管理经验(听名字就知道年代很长了~~囧),但其中的很多思想还是值得我们学习的,下面我就列出每章的精髓。原创 2009-07-28 21:26:00 · 1042 阅读 · 0 评论 -
软件项目管理的圣经--人月神话(下)
第11章未雨绸缪11.1 化学工程师已经认识到无法一步将实验室工作台上的反应过程移到工厂中,需要一个实验性工厂(pilot planet)来为提高产量和在缺乏保护的环境下运作提供宝贵经验。11.2 对于编程产品而言,这样的中间步骤是同样必要的,但是软件工程师在着手发布产品之前,却并不会常规地进行试验性系统的现场测试。[现在,这已经成为了一项普遍的实践,beta版本。它不同于有限功能的原型,alph原创 2009-07-30 20:57:00 · 1225 阅读 · 0 评论 -
软件项目管理的圣经--人月神话(中)
第6章贯彻执行6.1 即使是大型的设计团队,设计结果也必须由一个或两个人来完成,以确保这些决定是一致的。6.2 必须明确定义体系结构中与先前定义不同的地方,重新定义的详细程度应该与原先的说明一致。6.3 出于精确性的考虑,我们需要形式化的设计定义,同样,我们需要记叙性定义来加深理解。6.4 必须采用形式化定义和记叙性定义中的一种作为标准,另一种作为辅助措施;它们都可以作为表达的标准。6.5 设计实原创 2009-07-29 20:31:00 · 1151 阅读 · 0 评论 -
设计模式--观察者模式(Observer)
观察者模式概述 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。适用性 1.当一个抽象模型有两个方面,其中一个方面依赖于另一方面。 将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。 2.当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待原创 2009-05-21 22:28:00 · 528 阅读 · 0 评论 -
设计模式--解释器模式(Interpreter)
解释器模式概述 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用性 当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使 用解释器模式。而当存在以下情况时该模式效果最好: 1.该文法简单对于复杂的文法,文法的类层次变得庞大而无法管理。原创 2009-05-15 20:07:00 · 1488 阅读 · 1 评论