随笔分类 - 模式/分析/管理
摘要:注:下面的内容是来自于网上的一个IT人员给老板的一封信,里面的情节都不是我本人的,本来我已经注明是转帖的了,但是还是有相当一部分人把下面的情节当做我的个人经历,在此特别注明一下。转载这篇文章的目的是想让自己反思一下自己的管理方式,同时也让路过的公司管理层了解一下底层IT人员的心声,只要为他们着想,他们才有可能为公司着想,公司才有可能做大做强。================================================================================== 这是我两年前写的。老板看过之后告诉我:一夜没睡,刺激很大! 两年间,我跳槽九次,从作...
阅读全文
摘要:前几天跟朋友聊天时,朋友说他刚刚从一家知名软件公司面试出来,朋友去面试的是一家公司的技术管理岗位,所以在面试的时候被问及的问题也偏重于技术管理方面的问题,在与朋友的聊天中将这几个问题归纳了一下,大致归为如下几个问题。在日常中你是如何行使管理职能的 这个问题以我的经验来及参考常见的一些开发方法,在实际中我都是早询问及晚反馈的方法。也就是早上上班后的半个小时内主动询问开发人员是否有不能及时解决的问题,如果有组内组员讨论解决方法;下班的时候组员可以以邮件或者其它方式汇报自己的进度,并评估当前进度与预计进度相比是否有滞后。为防止有些内向的组员不能用口头的方式反馈自己在开发中所遇到的问题,可以允许他在.
阅读全文
摘要:设计模式在某种程度上确实能够改善我们的程序结构,使设计具有更好的弹性。也正是由于这个原因,会导致我们可能过度的使用它。程序结构具有过度的、不必要的灵活性和程序结构没有灵活性一样都是有害的。本文将分析过度的灵活性可能造成的危害,并且结合一些实例来阐述使用设计模式改善程序结构应遵循的原则。1、 介绍本系列文章的前两篇主要讲述了如何使用设计模式来改善我们的程序结构,大家可以看到经过调整的代码具有了更大的弹性,更容易适应变化。读者朋友可能也具有类似的经验,通过使用设计模式使得自己的软件系统更加具有可扩展性和健壮性。但是,这样就可能会造成一个结果:无论遇到任何问题,我们首先做的就是设法找到一个解决它的设
阅读全文
摘要:1、 回顾在上一篇文章中,我们给出了一个使用设计模式来改善程序结构的例子,着重介绍了设计模式的意图、动机在我们程序重构过程中的指导作用。现在,我们将关注设计模式的另一个重要方面:设计模式的适用性。解决同一个问题一般会有多种方案或者模式,但是这些模式所关注的是同一个问题的不同方面,解决不同的需求,有各自的优点和限制,各有各的解决之道。这就要求我们在选择设计模式时,对我们自己的问题有很好的理解:我们的需求是什么,我们要克服什么样的限制,我们要获得什么样的特性等等。然后,可以看看我们想使用的解决问题的设计模式是否适用于我们的问题,如果不适用,是否可以使用其他的模式来弥补,是否可以对这个设计模式进行改
阅读全文
摘要:设计模式是对特定问题经过无数次经验总结后提出的能够解决它的优雅的方案。但是,如果想要真正使设计模式发挥最大作用,仅仅知道设计模式是什么,以及它是如何实现的是很不够的,因为那样就不能使你对于设计模式有真正的理解,也就不能够在自己的设计中正确、恰当的使用设计模式。本文试图从另一个角度(设计模式的意图、动机)来看待设计模式,通过这种新的思路,设计模式会变得非常贴近你的设计过程,并且能够指导、简化你的设计,最终将会导出一个优秀的解决方案。1、介绍在进行项目的开发活动中,有一些设计在项目刚刚开始工作的很好,但是随着项目的进展,发现需要对已有的代码进行修改或者扩展,导致这样做的原因主要有:新的功能需求的需
阅读全文
摘要:有了前面诸多设计模式的基础,这儿可以提出一个比较特殊的模式MVC。MVC并不属于GOF的23个设计模式之列,但是它在GOF的书中作为一个重要的例子被提出来,并给予了很高的评价。一般的来讲,我们认为GOF的23个模式是一些中级的模式,在它下面还可以抽象出一些更为一般的低层的模式,在其上也可以通过组合来得到一些高级的模式。MVC就可以看作是一些模式进行组合之后的结果(实际上,MVC的出现要早于设计模式的提出,这而只是对它在设计模式的基础上进行在分析)。如果没有前面的基础,理解MVC或许会有一些困难。MVC模式MVC模式比较的特别,它含义比较的广,涉及的层面也不仅仅是设计这一块,不好简单的把它归为设
阅读全文
摘要:在上一部分中,介绍了两个结构型的模式:Bridge和Decorator。这一部分的内容,将会接着上面的讲解,继续我们的设计模式之旅。这一部分,除了还会介绍一个结构型的Composite模式之外,还会有两个行为模式登场。实际上在前面的内容中,我们已经接触到行为模式了:Observer和Command就是两个典型的行为模式。行为模式更多的注重于算法和对象建间职责的分配,也就是说,它会更多的关注于这个模式系统之类的各对象协作间的语义,以及在对象间进行通讯的流控制。Composite模式毫无疑问的,AWT中的Component-Container体系就是一个很好的Composite模式的例子。Cont
阅读全文
摘要:上一次主要介绍了几个创建型的设计模式AbstractFactroy,FactoryMethod和Singliton。它们的共同的特点,都是用来创建对象的。这次接下来的内容,涉及到的是几个结构型的模式。所谓结构型模式,就是用来解决在创建系统结构的过程中,通过对类或者对象进行合理有效的组合,以获得更大的结构的方法。这儿主要讲到了Bridge模式和Decorator模式。对于Bridge模式可能需要更多的理解,因为它在很大程度上说,例示了设计模式的基本的设计思路和原则。Bridge模式当初Java刚刚推出来的时候,AWT可是一个比较热的话题,虽然现在有被Swing取代的趋势。但是我一直都觉得AWT也
阅读全文
摘要:在上一部分的内容中,我们讲到什么是模式,什么是设计模式,以及对一个设计模式Observer的详细阐叙。相信大家对于模式的概念应该是比较的理解了。这部分及以后的内容,将会步入正题,从Java类库的分析入手,来阐叙设计模式是如何应用到一个完美的设计中的。实际上,Java类库非常的庞杂,这儿不可能把所有能够找到的设计模式的例子一一列举,只是找了一些容易发现的例子。实际上也没有必要,因为只要对一个设计模式有足够的理解,对于它的具体应用而言,倒是一件不是很困难的事情。Command模式在设计一般用途的软件的时候,在C或者C++语言中,用的很多的一个技巧就是回调函数(Callback),所谓的回调函数,意
阅读全文
摘要:很多时候,对于一个设计来说(软件上的,建筑上的,或者它他工业上的),经验是至关重要的。好的经验给我们以指导,并节约我们的时间;坏的经验则给我们以借鉴,可以减少失败的风险。然而,从知识层面上来讲,经验只是作为一种工作的积累而存在于个人的大脑中的,很难被传授或者记录。为了解决这样的问题,人们提出了所谓的模式的概念。所谓模式,是指在一个特定背景下,反复出现的问题解决方案。模式是经验的文档化。软件模式的概念现在比较的广泛,涉及到分析,设计,体系结构,编码,测试,重构等软件构造生命期中的各个部分。这儿主要讨论的是设计模式,指的是在软件设计过程中反复出现的一些问题的解决方法了。不过我们一般在提到设计模式的
阅读全文
摘要:基本概念FactoryMethod是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类.当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定创建的对象时我们就需要用到Factory Method 模式了.简单说来,Factory Method可以根据不同的条件产生不同的实例,当然这些不同的实例通常是属于相同的类型,具有共同的父类.Factory Method把创建这些实例的具体过程封装起来了,简化了客户端的应用,也改善了程序的扩展性,使得将来可以做最小的改动就可以加入新的待创建的类. 通常我们将Factory Method作为一种标准的创建对象的方法,当发
阅读全文
摘要:一、起因 公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信测试。过去她们都是用MC4J直接调用公司服务器的MBean服务来模拟进行测试,以验证我们整个系统平台。这种测试主要是检查收发短信是否正常,而我的要做的工作就是,让她们在测试的时候更方便更直观。二、需求 我和测试员陈MM(也就是软件的使用者)约定了一个时间,大家一起来讨论这个软件的需求。 1、首先,我大概了解了一下她们的测试工作,知道我要做个什么东东。 2、然后我回去思考了一下,再次找她详细了解其测试的具体步骤,并在一张白纸上以UML用例图的方式,记录下需求的功能。用例是什么?用例就是需求,就是你的软件应该具有...
阅读全文
摘要:可行性分析是要决定“做还是不做”。 需求分析是要决定“做什么,不做什么”。 即使可行性分析是客观的、科学的,但决策仍有可能是错误的。因为决策者是人,人会冲动,有赌博心态。如果可行性分析表明做某件事的成功率是10%,失败率是90%,倘若该事情的意义非常大,决策者也许会一拍脑袋:“豁出去,干!”于是这世界就多了一份极喜与极悲。一、可行性分析的四大要素:经济、技术、社会环境和人 目前国内很多软件公司做系统集成项目,如果谈谈系统集成项目的可行性分析将很有意思。可是那些系统集成项目大多是政府机构的,由于软件行业尚不规范并且客户方存在腐败现象,所以业内流传“没有做不了的系统集成项目”。软件公司的注意...
阅读全文
摘要:软件设计最大的敌人,就是应付需求不断的变化。变化有时候是无穷尽的,于是项目开发就在反复的修改和更新中无限期地延迟交付的日期。变化如悬在头顶的达摩克斯之剑,令许多软件工程专家一筹莫展。正如无法找到解决软件开发的“银弹”,要彻底将变化扼杀在摇篮之中,看来也是不可能完成的任务。那么,积极地面对“变化”,方才是可取的态度。于是,极限编程(XP)的倡导者与布道者Kent Beck提出要“拥抱变化”,从软件工程方法的角度,提出了应对“变化”的解决方案。而本文则试图从软件设计方法的角度,来探讨如何在软件设计过程中,解决未来可能的变化,其方法就是——封装变化。 设计模式是“封装变化”方法的最佳阐释。无论是创.
阅读全文
摘要:什么是架构软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。ANSI/IEEE 610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构以及知道上述内容设计与演化的原理(principle)”。Mary Shaw和David Garlan认为软件体系结构是软件设计过程中,超越计算中的算法设计和数据结构设计的一个层次。体系结构问题包括各个方面的组织和全局控制结构,通
阅读全文
摘要:一.概念 网站项目管理就是根据特定的规范、在预算范围内、按时完成的网站开发任务。二.需求分析项目立项 我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项。较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员。项目实行项目经理制。客户的需求说明书 第一步是需要客户提供一个完整的需求说明。很多客户对自己的需求并不是很清楚,需要您不断引导和帮助分析。曾经有一次,我问客户:“您做网站的目的是什么?”他回答:“没有目的,只是因为别人都有,我没有!”。这样的客户就需要耐心说明,仔细分...
阅读全文
摘要:歪说软件工程1-科学沦为艺术 话说某大学生美眉在妓院找了一个操作电脑的工作,以后她要不沦为妓女,要不总被认为是妓女。 当软件工程作为科学遭遇实践,它要不沦为艺术,要不总被认为是艺术。 科学与艺术的相同在于都是人生产的;科学与艺术的区别在于,科学操纵人,而人操纵艺术。 当软件工程不是去操纵人,而是由人来操纵,结果就是软件工程还是管理的艺术。 当科学沦为艺术或被认为是艺术,要不该怎么样就怎么样,要不原来怎么样以后还怎么样。 歪说软件工程2-“SoSo”主义 话说小两口A婚后财务由老婆打理,老婆每天给老公10元零花钱,并且经常询问老公花钱的情况。这种叫“精细管理”; 小两口B,老婆每...
阅读全文