Welcome 微信登录

首页 / 软件开发 / 数据结构与算法

从底层设计开始探讨插件式GIS框架的实现

从底层设计开始探讨插件式GIS框架的实现

从底层设计开始探讨插件式GIS框架的实现2016-03-06三年前,听当时的师兄推荐,买了蒋波涛的一本关于GIS插件框架的书。当时一边看书一边将其中的例子完整的实现了一遍,收益匪浅。后来由于项目需要,也做过一个插件的C/S系统,用的是微软提供的MEF框架。在这个系统中,把蒋波涛在他的书中没有涉及到的插件和插件的通信完成了。不过,蒋波涛的那本书,涉及到了插件系统的很多底层内容,其中关于插件引擎的设计尤其值得学习。近来,我将自己当年实现的那个例子进行了一个总结...
关于架构与敏捷

关于架构与敏捷

关于架构与敏捷2016-03-08 infoq 译:刘君这篇文章由IEEE Software杂志首发,并由InfoQ & IEEE Computer Society转载于此.敏捷开发离不开架构?架构离不开敏捷开发?难道得出这些问题答案非要经由一场讽刺漫画般、基于根深蒂固价值观的针锋相对,而不能在二者清晰定义之上、基于开放的、推理式的对话?也许,更通俗地描述问题是回答它的良好开始:除了专注于敏捷方法之外,我们还需要广泛考虑各种开发过程?而且,与提出假...
驱动方法不能改变任何事情

驱动方法不能改变任何事情

驱动方法不能改变任何事情2016-03-08 infoq 译:梅雪松你曾听说过一名专业软件开发人员应该掌握一种驱动方法吗?这些驱动方法可能是:领域驱动设计(Domain-Driven Design)、测试驱动开发(Test-Driven Development)、行为驱动开发(Behavior-Driven Development)、数据驱动设计(Data-Driven Design)、数据驱动开发(Data-Driven Development)、用例驱...
浅谈游戏化在保险项目中的实践

浅谈游戏化在保险项目中的实践

浅谈游戏化在保险项目中的实践2016-03-08 infoq 黄勇引子虽说是关于Gamification游戏化的实践分享,其实也是两年前做过的项目了。之所以现在才写出这篇实践分享,也是源于最近看《MacTalk人生元编程》中提到的使用智能手环对思想和行为的改变:“用这玩意的另一个好处就是,如果需要徒步去做点什么,以前的反映是‘我了个擦,怎么这么远’。现在的反映是‘好,又可以增加几千步了’&rdqu...
社交BPM概述

社交BPM概述

社交BPM概述2016-03-08 infoq 译:王振峰最近几年,企事业单位对企业信息技术的考虑方式发生了全新的改变,业务流程管理只是简单工作流的时期已经一去不复返。而随着移动技术和社交媒体的兴起,企业单位对它们的期望也有了质的提升。社交媒体的性质促使企业建立一套流程,通过流程企业能够与个人进行实质上的交流,并帮助他们解决问题和需求。这篇关于“社交BPM”的文章,涵盖了具体的问题,以及解决相应场景问题的方法,并举例说明社交媒体和业...
浅谈一种有效的测试策略

浅谈一种有效的测试策略

浅谈一种有效的测试策略2016-03-10 infoq Jimmy Bogard在最近的一个大型项目中,我们在早期就定下了一个目标:不会在软件中使用大量QA人员专注于手工测试。通过手工测试发现bug极其耗时且成本高昂,这促使团队尝试尽可能的将质量内嵌到产品内部。但这并不意味着手工测试毫无价值,因为人们总能在怎样使用软件上给你一些特别的惊喜。这是一个为期18个月左右,周期很长的项目,并且后续也会持续更新。 在项目初期,团队就意识到项目成功的重中之重在于一个优...
微服务——分解应用以实现可部署性和可扩展性

微服务——分解应用以实现可部署性和可扩展性

微服务——分解应用以实现可部署性和可扩展性2016-03-10 infoq 译:张卫本文描述了日渐流行的微服务架构模式。微服务背后大的理念是将大型、复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化。微服务这个术语强烈建议服务应该是很小的。社区中有些人甚至建议构建10-100代码行(LOC)的服务。但是,尽管很小的服务是我们想要的,但这不应该是主要的目标。你应该致力于将系统分解为服务,以解决下面所讨论的开发和部署问题。一些服务可...
J.P.摩根如何运用LeSS框架实施大规模敏捷

J.P.摩根如何运用LeSS框架实施大规模敏捷

J.P.摩根如何运用LeSS框架实施大规模敏捷2016-03-10 infoq Craig Larman and Mat顶尖金融服务企业中的大型组织是如何采用大规模Scrum框架(LeSS)的?背景J.P.摩根的全球核心处理技术集团由Simon Cooper领导,是一个遍布全球的3000多人的组织。2013年集团决定要改变为(真正的)Scrum,并采用Large-Scale Scrum(LeSS)框架,这意味着在组织设计要做出相应改变。之前他们曾零散地采用...
如何在大型开发组织的敏捷团队中实施CMMI

如何在大型开发组织的敏捷团队中实施CMMI

如何在大型开发组织的敏捷团队中实施CMMI2016-03-10 infoq Nicolás Afonso Alon近年来,敏捷开发方法能够更好地适应现代软件开发,逐渐发展成为一种主流开发方法,也正在改变着软件开发过程。然而,敏捷开发方法常常被认为同CMMI过程无法共存,因为CMMI被看做是以规格化方法控制软件开发过程。2008年,Hillel Glazer, Jeff Dalton, David Anderson, Mike Konrad 和 Sandra...
由面向接口思想想到的“泛接口(非泛型接口)”思想

由面向接口思想想到的“泛接口(非泛型接口)”思想

由面向接口思想想到的“泛接口(非泛型接口)”思想2016-03-12 cnblogs 眼神与背影面向接口思想自从我们开始接触面向对象编程,随着不断的学习,都会逐渐了解接口的含义,面向接口编程强调“定义”与“实现”的分离,我认为其本质就是“解耦两个对象的依赖关系”,最常听别人说起的想必就是“依赖倒置原则”的那两句经典的话: 高层模块不应该依赖于底层模块,两者都应...
如何实现领域驱动设计

如何实现领域驱动设计

如何实现领域驱动设计2016-03-12 infoq 张逸从Eric Evans写下经典名著Domain-Driven Design: Tackling Complexity in the Heart of Software至今,DDD刚好发展了十年的时间。它几乎成了开发复杂软件系统主要的领域设计方法,既是面向对象(组件)设计的补充,又超越了面向对象(组件)设计。DDD中提出的诸多概念如实体、值对象、聚合等,已经成为了耳熟能详的设计术语。DDD社区的发展也...
遗留系统:软件工业时代的痛

遗留系统:软件工业时代的痛

遗留系统:软件工业时代的痛2016-03-12 未知 我常常感到幸运,我们现在所处的是一个令人振奋的时代,我们进入了软件工业时代。在这个时代里,我们进行软件开发已经不再是一个一个的小作坊,我们在进行着集团化的大规模开发。我们开发的软件不再是为某个车间、某个工序设计的辅助工具,它从某个单位走向整个集团,走向整个行业,甚至整个社会,发挥着越来越重要的作用。一套软件所起到的作用与影响有多大,已经远远超越了所有人的想象,成为一个地区、一个社会,乃至整个国家不可或缺...
什么是系统重构

什么是系统重构

什么是系统重构2016-03-12前面我们提到了,面对软件工业时代的到来,我们的软件企业陷入了一种更深的迷茫之中,一种“后有追兵,前有悬崖,进退两难”的境地。后有追兵:面对维护了数十年之久的大型遗留系统,我们到底改还是不改?不改,面对越来越多的需求变更,我们维护的成本越来越高,变更变得越来越困难;面对不断涌现的新技术,使我们的系统显得越来越丑陋与落后;面对越来越多的竞争者,使我们面临着被市场淘汰的风险。前有悬崖:原本运行得好好的软件...
重构连载之在保险索上走钢丝

重构连载之在保险索上走钢丝

重构连载之在保险索上走钢丝2016-03-14当我们开始系统重构的时候,不是着手去修改代码,而是首先建立测试机制。不论什么程序,只要是被我们修改了,理论上就可能引入BUG,因此我们就必须要进行测试。既然是测试就必须要有一个正确与否的评判标准。以往的测试,其评判的标准就是是否满足业务需求。因此,测试人员往往总是拿着需求文档测试系统。与以往的代码修改不同,重构没有引入任何新的需求,系统原来什么功能,重构以后还是这些功能。因此,重构的测试标准就只有一个,就是与之...
重构连载之大布局与小步快跑

重构连载之大布局与小步快跑

重构连载之大布局与小步快跑2016-03-14 cnblogs 充满诗意的联盟以往我们在重新设计一个系统时,总是喜欢大布局。全面地整理系统需求,全面地分析系统功能,再全面地设计系统、开发、测试。这样一个过程往往会持续数月,花费大量的工作量。但是,不到最后设计出来,谁都不知道会不会存在问题。这就是“大布局”的弊病。正因为如此,软件大师在讲述系统重构时总是强调,系统重构应当避免大设计,而应当尽量采用一个一个连续不断的小设计。这就是我们所...
重构连载之软件修改的四种动机

重构连载之软件修改的四种动机

重构连载之软件修改的四种动机2016-03-14 充满诗意的联盟 软件,自从被我们开发出来并交付使用以后,如果它运行得好好的,我们是不会去修改它的。我们要修改软件,万变不离其宗,无非就是四种动机:1.增加新功能;2.原有功能有BUG;3.改善原有程序的结构;4.优化原有系统的性能[1]。第一种和第二种动机,都是源于客户的功能需求,而第四种是源于客户的非功能需求。软件的外部质量,其衡量的标准就是客户对软件功能需求与非功能需求的满意度。它涉及到一个企业、一个软...
重构连载之一个真实的谎言

重构连载之一个真实的谎言

重构连载之一个真实的谎言2016-03-14 cnblogs 充满诗意的联盟经过前面的一番讲解,相信你已经对系统重构有了一些初步的认识了。一切的一切仿佛在告诉我们,系统重构总是与需求变更无关。但此时,我不得不告诉你这是真实的谎言。我们的软件系统总是处于一种变化之中,并且往往是一种由浅入深、由易到难的过程。但是,当系统复杂程度发生变化时,我们应当及时调整我们的设计,来适应新的变化。然而我们没有做到这一点,所以我们的系统维护变得越来越困难。要解决我们的问题必须...
重构是一系列的等量变换

重构是一系列的等量变换

重构是一系列的等量变换2016-03-17系统重构要求我们对代码的每一步修改,都不能改变软件的外部行为,因此在系统重构中的所有方法,都是一种代码的等量变换。重构的过程,就好像在做数学题,一步一步地进行算式的等量变换。经过一系列等量变换,最终的结果虽然在形式上与原式不一样,但通过计算可以得到与原式完全相同的结果。这种等量变换对于重构来说非常重要,它使得我们进行重构以后,程序还是那些程序,代码还是那些代码。但是,等量变换不等于原地踏步。正如矩阵通过等量变换可以...
盘点我们的重构工具箱

盘点我们的重构工具箱

盘点我们的重构工具箱2016-03-17 cnblogs 充满诗意的联盟下面我们来盘点一下系统重构工具箱里都有什么,也就是看一看系统重构到底都有哪些方法。系统重构总是在不同层次上调整我们的代码,因此重构方法也就分为了多个层次。从总体上看,重构方法分为以下几个层次:方法的重构、对象的重构、对象间的重构、继承体系间的重构、组织数据的重构与体系架构的重构。前面那个例子我们可以清楚地看到方法的重构过程。方法的重构往往发生在一个对象的内部,是对一个对象内部的优化。从...
重构的大布局

重构的大布局

重构的大布局2016-03-17作为优秀开发人员,重构应当成为一种习惯,自然而然地运用重构的开发模式,自然而然地在优化和调整我们的代码。它首先要求我们掌握重构的开发模式,就是“小步快跑”的开发模式,运用“两顶帽子”的设计顺序,去开发我们的程序。但作为重构初学者来说,这并不容易,即使你已经从业很多年。所谓改变一种习惯,就好像习惯了左手吃饭的人,突然被要求改成右手,你必然会感到许多的不适。首先的不适是一种心理上的...
<< 51 52 53 54 55 56 57 58 59 60 >>