项目管理者联盟 | 中国工程管理网 | 中国研发管理网   会员中心 资料库 博客 圈子

PMI-ACP®认证

适合敏捷开发项目
敏捷项目管理最佳实践

网络课程

PMI-PBA®认证

重视项目商业分析
商业价值与需求分析能力

网络课程

NPDP®认证

产品管理国际认证
全球产品管理最佳实践

网络课

PMP®认证

单项目管理经典指南
年轻项目经理首选

北京 | 直播 | 录播

PgMP®认证

大型复杂项目全球标准
定位高级项目管理层

网络班

PfMP®认证

链接战略与项目
实现组织资源投资回报

全球直播

软考项目管理

信息系统项目管理师
系统集成项目管理工程师

计划 | 报名 | 经验

论坛
价值源于交流与分享
会员区:
登陆ID 密  码
功能区: 公告建议 | 帖子搜索 | 管理团队 | 荣誉版主 | 帮助手册






 项目型组织  项目管理  工程项目  科技项目  项目化管理  管理软件  资格认证  职业休闲
EPM体系与流程 综合集成管理 总承包管理 IT软件开发 项目型制造 P3E/P6 PMP | PgMP 职业发展探讨
组织与人力资源 进度,范围,成本 国际工程 生物制药 专业服务 微软PROJECT IPMP | PRINCE2 管理学堂
项目管理信息化 团队建设与沟通 房地产 汽车设计开发 生活项目 PowerOn专版 软考项目管理 英语角|读书版
多项目与大项目 质量与风险 监理与咨询 手机数码 文体娱乐 注册建造师 房车吃游
PMO建设与管理 采购与合同 工程设计 项目管理硕士 闲聊版|商务版
俱乐部北京 | 大连 | 福州 | 广州 | 杭州 | 南京 | 山东 | 上海 | 深圳 | 四川 | 天津 | 武汉 | 西安 | 郑州 | 申请成立 TOP榜精华 | 最新 | 最热 | 会员

版面信息

说明:失败的IT项目比比皆是,进度延迟,预算超支,客户需求多变,成员加班抱怨...IT项目(软件开发.,信息系统实施等)寻求新生

本版版主

camer
登录:2013/7/2
次数:867
注册:2003/3/3
发帖:2745
dorothy
登录:2016/12/15
次数:804
注册:2004/9/6
发帖:993
steveli2008
登录:2009/5/26
次数:464
注册:2003/5/12
发帖:1026
zhf_karen
登录:2015/6/2
次数:346
注册:2005/6/13
发帖:469

俱乐部导航

北京大连福州广州杭州
南京山东上海深圳四川
天津武汉西安郑州 

联盟·近期活动

社区热点

华师大CTO学院:科创生态建设与创.
宏发电声江玫瑰谈PgMP:“下好一盘.
PgMP:交付能力与创造未来的项目管.
开放讲座|《项目组合管理与PfMP认证
开放讲座|项目组合管理与PfMP认证
开放讲座|PgMP:项目管理思维与方法
开放讲座|《项目组合管理与PfMP认证
网络讲座|《项目组合管理与个人职业
开放讲座|《项目组合管理与PfMP认证
网络直播|产品经理的四大核心技能提

精彩专题

如何做好项目沟通计划

软件项目质量管理

国际工程索赔与反索赔

更多:

推荐信息

·项目经理沙龙俱乐部
·推荐项目管理公开课程
·联盟VIP会员服务
·联盟99元大课堂
·建造师课程辅导免费试听

社区圈子

HG信用盘0出租
圈主:de123
行业:综合应用

集团企业生态体.
圈主:ETPPM
行业:综合应用

生态系统体系下.
圈主:ETPPM
行业:综合应用

西安IT项目管理
圈主:muzud
行业:IT软件

房地产项目管理
圈主:13935823
行业:房地产

联系社区管理员

咨询电话 010-82273401/11
斑竹申请 admin@mypm.net


版权所有 © 2003-2004
京ICP证070584号 
BBS业务许可2007第353号 
最佳显示模式:1024*768像素
项目管理与PMP认证
软件开发中不可忽视的代码复用问题 [发表于 2014/3/1]
状态 开放帖 浏览量 1422   
该帖子同步发自圈子:IT项目管理圈 (访问该圈子)

  复用可以说是任何一个软件企业都不能漠视的课题,因为复用可能对软件的开发效能产生绝大影响,而开发效能直接影响利润,甚至生存。但复用本身将增加当前项目的成本,是一种以当前投入来换取远期收益的行为。与此同时远非所有代码都可以复用,复用本身也有自己内在的一些规律,让我们来试做一些分析。

  从结论上来说,只有满足下面两条原则的程序,才可能真正的被复用,否则的话只能采用代码级别的复用。

  第一条原则是,程序本身的职能非常独立与业务层面基本无关联,是功能型的模块(包)。

  代码中的逻辑表述的是一种关联性,当这种关联只在确定的方面存在的时候,通常我们可以切割出比较独立的模块,而这种模块可以成为复用的基础之一。这也就是常说的【闭包】。

  这种复用有许多表现形式,但其本质相同。比如JPEG的库,XML的库,比如我们常提到的组件或控件。在这类复用中扮演关键角色的是一组接口,以及这组接口的基本使用规则。

  REP(重用发布等价原则),CRP(共同重用原则)中提到的重用都是这类重用。

  第二条原则是,程序本身所描述的过程足够抽象,同具体实现细节可以切的很开。

  概念在衍化的过程中其内含的细节会逐渐丰富,但又会共享某些共同的基本特征。很多时候逻辑要处理的是这种根本特征,而非细节。在这个时候,就需要抽象。

  好比人可以分为男人和女人,也可以分为老人,青年人和小孩。但因为同属于人这一范畴,所以不管如何分类,必有共通之处。也正因此,某些针对【人】的规则或者价值标准是可以通用于所有人的,即是可以复用的。比如说法律。大多时候,我们不需要指定分别针对于男人,女人的法律。

  这种类型的复用不是很好理解,我们用迭代器的例子来进行进一步的说明。

  当我们想遍历一个容器的时候,从【头到尾的循环】和【逐个遍历】是属于任何容器的,而同具体的容器无关。但如何从第一个元素,遍历到第二个元素则和容器的具体实现有关。把这种和具体实现细节无关的逻辑提取出来的过程,也即抽象的过程。只有能做到这种程度抽象,非独立的功能性的代码才可能真正的做到被重用。

  《设计模式》这本书有个副标题,叫《可复用面向对象软件的基础》。基础这个词的意指与上述说明相同。

  由第二条原则而产生的复用的形式可以是,设计模式与框架。历史上的MFC的文档视图结构就是一个典型代表。

  一个比较典型的是近来很受关注的Map-Reduce的函数式编程方法,据说这种方法在Google被用来支持并行计算。--参见《软件随想录》

  假设说某一功能的主要部分已经实现,比如排序。这时候已经实现的部分是既定算法,可能是选择排序,也可能是插入排序。但对于排序而言,对两个数值进行比较的部分则依赖于被比较的对象,需要被灵活指定。这也就意味着重用排序的实现,等于实现两段代码的对接,实现一部分代码,但另一部分则由用的人在使用的时候指定。

  这种方法可以更好的支持并行计算的原因在于,他可以把实现中的可优化部分分割开来。对于查询而言,如何遍历所有数据是可以并行优化的。

  如果上述两条原则都无法满足,那么为了达到提升效能的目的,就需要做以实现为基础的代码级别的复用,即完全不做抽象,直接复用代码片段---也许这反倒是应用的最为广泛的复用方法。

  很多人恐怕已经习惯了解决某个具体问题前,先到codeproject.com或者codeguru.com上确认一下有没有参考代码。如果不论这种方法的诸多缺点,比如:版权问题,引起代码风格混乱等等,这种方法的现实意义仍是比较巨大。其正面意义可以体现为下面几个方面:

  可执行的代码片段可以清楚的告诉我们类库API等等的具体用法,进而缩短我们掌握领域知识的时间。在具体项目中使用某种语言,完全从零开始来完成某项工作的机会非常稀少,我们更多的时候要依赖于某些通用的领域知识。而通过帮助文档来学习类库等的使用方法效率相对低下,而这种可执行的片段代码则精准,且具体的描述了类库等的某一使用方法,使程序员可以更快上手。

  可执行的代码片段可以是高质量的。如果我们承认代码的质量是要持续提高,那么这类代码片段,无疑的可以拥有比刚刚写成的代码更高的质量。因此这类代码对生产率的贡献还不仅只与提高编码速度。

  如果真的想在组织中使用这种复用方法的话,一个关键点是要控制可执行代码片段的规模。


>>> 由论坛统一发布的广告:
楼主 美女约,不在线,有人找我吗?wcabt


职务 无
军衔 主帅
来自 天津市
发帖 1283篇
注册 2006/12/14
PM币 21982
经验 9785点

Re:软件开发中不可忽视的代码复用问题 [回复于 2014/3/2]
新手报到,前来观摩,请多多指教
1楼 帅哥约,不在线,有人找我吗?luckyforlei


职务 无
军衔 无军衔
来自 黑龙江省
发帖 2篇
注册 2014/3/2
PM币 19
经验 7点

Re:软件开发中不可忽视的代码复用问题 [回复于 2014/3/3]
随便看看而已
2楼 帅哥约,不在线,有人找我吗?brewster


职务 无
军衔 一等兵
来自 云南省
发帖 26篇
注册 2014/3/3
PM币 186
经验 143点

共1页  97 [ 第1页 ] 8:
  
!  您尚未登录,不能回复主题。    现在 登录  注册
关于联盟 | VIP会员 | 培训服务 | PMP认证 | PgMP认证 | 刊物出版 | 沙龙会议 | 人才服务 | 广告投放 | 联系我们 | 友情链接
建设运营:共创时网络
版权所有 京ICP证070584号 BBS业务许可2007第353号