- 浏览: 701922 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (239)
- 系统架构设计 (16)
- java collection framework (2)
- java分布式 (4)
- java多线程 (0)
- 故障处理及调优 (16)
- 软件开发过程及管理 (28)
- OS (5)
- 常用算法 (3)
- design pattern (8)
- transaction (7)
- java apps (48)
- corejava (7)
- java and DB (10)
- cache (0)
- webservice (14)
- web前端 (25)
- 报表 (4)
- 日志系统设计 (3)
- Oracle (4)
- mysql (11)
- xml (11)
- 数据源配置管理 (3)
- 企业数据存储 (4)
- php (2)
- 测试 (1)
最新评论
-
orangebook:
对于初学者来说,这样编写可能会误导,理解更烦锁。
观察者模式(发布-订阅) -
liudajiang:
呵呵 startThreads(rand ...
实践缩小Java synchronized 粒度 -
zengwenbo5566:
谢谢博主,学习了
解决getOutputStream() has already been called for this response -
u011335423:
大神厉害啊 可以了
解决getOutputStream() has already been called for this response -
xiang37:
...
解决getOutputStream() has already been called for this response
对于网站或者平台,大多不可避免的要和第三方合作、或者接入第三方平台,合作的实现多是通过对对方接口的调用实现的。例如:网站用户共享、网银支付的接入、无纸化彩票投注平台的接入等等。
和第三方合作的接口开发工作,我做了没10次大概也有7,8次了吧。在这些合作的开发过程中,遇到过很多这样那样的问题,有些问题觉得还是有必要记录下来,反思一下,另外也由此延伸,想到了关于技术负责人应该担负的责任等问题。
第一:接口开发的流程问题。
接口开发的大致流程:
1.和第三方讨论需要实现哪些接口。
重点是要确定每个接口的具体功能。接口参数在开发过程中常常会有变动,所以讨论中一般不会明确定义。
2.编写详细设计文档。
文档包括接口名,参数名,参数类型,返回消息格式等,并提供给合作方。
3.编码
接口根据实际需要进行调整,同时更新详细设计文档,保持接口详细设计的可追溯性。
4.测试
包括接口内部测试、修改,和第三方的联调。
5.上线
接口正式上线,测试通过则上线成功,失败则回退,并从第4步开始新一轮的测试,直到系统上线成功。
常见问题:
1.详细设计文档应付了事,甚至不写设计文档。
实际的开发过程中,由于时间的原因,或者开发团队对设计文档的不重视,造成有的开发者忽视接口设计文档的作用,甚至不写设计文档。设计文档的缺失,往往会造成:人员流动时,系统无法顺利交接;会给接口的升级,带来重重困难。
2.不按合作双方的接口定义,私下决定不实现某些接口。
这种情况不一定每个人都会遇到,但我确实遇到过这种事情。某一次和一个比较有名的体育社区的合作过程中,由于我们的平台是类电子商务的,所以要给用户建立财务账户,如果我们系统中不保存用户的基本信息,就没法为用户创建账户。
所以我方提供的接口文档中,有一个注册接口,需要用户在体育社区的注册时,同时把信息传递到我们的平台,这样我们就会为这个用户创建财务账户,否则,用户登录时就会有问题。
合作方对接口文档没有提出异议,但双方接口上线一段时间后,一次偶然的聊天过程中,对方开发人员透露,他们根本没有调用注册接口。吓了我一大跳,多亏我们前期的设计和编码中考虑得比较完善,否则,接口上线后,不堪设想。
所以,大家一定要遵守事先的约定,不要违背事先的约定,否则会出大乱子。
第二:接口开发过程中,发现原有功能设计有不合理的地方,应该对系统重构,还是仅仅实现功能了事?
以我的经验而言,总的来说大多因为原有接口缺乏可扩展性,导致添加新功能或者接口更改后代码冗余的问题。究其原因,有下面几种情况的原因:
1.开发周期比较紧张,来不及对原有代码重构。
2.开发人员懒得去重构,或者不具备重构的能力。
个人认为,这些问题归根结底要由开发流程来约束和控制。
开发周期紧张的情况下,技术负责人一方面要争取尽量多的开发时间,另一方面要根据开发任务的难度安排水平尽量高的人员来做;如果高水平的人员有了,时间还是紧张,可以考虑在以后某个合适的时间来重构这部分代码,千万不要让这部分待重构的代码永远的等待下去。应该制定合理的重构时间表,作为正常的开发流程的一部分。
第三:技术负责人在系统构建过程中应该担负哪些责任?
无论系统对外接口,还是系统内部功能,都是整个系统的一部分,都是技术负责人的控制范围。
个人认为技术负责人应该对开发流程的建立、系统质量负主要责任。能否建立合理的开发流程,能否领导开发人员产出高质量的软件系统,是一个技术负责人是否合格的很重要的判断标准。
就算开发团队中,开发人员数量充足,水平够高,但是开发流程不完善,缺乏合理的约束,往往会导致一部分人滋生得过且过的心态,编码完了基本上就算了事。有的人争取尽量多的空闲时间来学习新技术,为将来谋划;有的人刚接了私活,人家催的比较急,需要上班时抽空做呢;这种情况并不少见,怎样在这中恶劣的情况下保证开发工作在规定的时间内、高质量的完成?没有严谨的、合理的开发流程根本不可能领导这些"各怀心腹事"的开发人员研发出高质量的系统。
个人认为,技术负责人一定要抓住软件开发过程中的三个关键点:测试、代码复查、模块重构,一定要重视再重视,程序员和老板讲解它们的重要性,他很可能不明白其重要性,但是技术负责人千万不能不重视这三个环节,如果您都不懂或者不重视,那最终产出的是什么样的系统,大家可想而知了。
评论
对于系统间的接口,关键因素是必须了解不同系统间架构的差别(比如是否异构,是否在不同物理环境),系统级需求上的差别(比如两边的处理能力差异,响应时间的差异等)以及业务应用的差别(是否实时,是否异步,是否需要事务支持等)。只有在充分了解这些因素后,才会做出准确的分析设计。(接口的设计也就是系统集成的设计)
过了这一步,接下来,技术负责人要负责的是接口的协议(这里的协议不仅仅是API的方法等,包括接口内容的元数据信息,数据的表现形式,交互的控制方式等)
至于楼上列出的关于代码审查,测试等,其实和接口开发本身并无太大关系了。
基本上都赞同,尤其是系统间的接口的几个关键因素,很受教。
对“技术负责人要负责的是接口的协议”这点表示疑义,不同的公司,技术负责人的职责定义很可能是不同的。
由此延伸就想到了规范开发流程的问题,大家别忘了开发流程是谁来制定的,由此想到了技术负责人的职责。
个人观点:能否开发出一个好的产品,技术负责人起决定性作用。
因为他能否制定出合理的开发流程,很大程度上决定了产品的质量。
没有的功能都能买出去,真是牛
上次接某ERP公司的一个接口,钱交了才知道根本不符合要求
最后是交了好几w,还得自己做该服务!
感觉最重要的几点是:
1、文档描述清晰,无歧义,错误代码完整
2、相关的资料齐全
3、最好要有技术支持的联系方式,而不是业务员;
对于系统间的接口,关键因素是必须了解不同系统间架构的差别(比如是否异构,是否在不同物理环境),系统级需求上的差别(比如两边的处理能力差异,响应时间的差异等)以及业务应用的差别(是否实时,是否异步,是否需要事务支持等)。只有在充分了解这些因素后,才会做出准确的分析设计。(接口的设计也就是系统集成的设计)
过了这一步,接下来,技术负责人要负责的是接口的协议(这里的协议不仅仅是API的方法等,包括接口内容的元数据信息,数据的表现形式,交互的控制方式等)
至于楼上列出的关于代码审查,测试等,其实和接口开发本身并无太大关系了。
如果是两家公司同时为甲方做接口,还是比较痛苦的。
所以我总结:
1、接口定义清晰。设计方面。
2、双方责任人即时沟通。
3、通过甲方督促确保deadline能完成。
1.直接开放url地址给接入商,链接中传递参数。
适用于参数较少的情况。
2.直接使用web服务引擎,例如:axis,CXF等,工作量会小一些,但数据传输效率可能不是特别好。
3.自己定义传输的数据格式,如自定义的xml格式,需要自己开发客户端jar包给接入商使用。
4.JSON格式的数据格式。
具体选择哪个,还得根据自己的实际情况来选择。
我也不了解Shindig,问问前辈一般采用什么技术
---------------------------------------------------------------------
如果说你们自己做的个别界面不测试也许说的过去,难道对于接口的实现你们也不测试吗?
接口是给对方调用的,你从哪里看到我们的接口实现没有测试?
至少自己测试过该接口没有问题
我方接口被调用一次可以记录日志的啊.系统上线后一直没有日志你都不怀疑啊!
自测试当然是必须的,好像没人不做测试直接上新功能的吧。
生产环境的日志监控是必须的,这点你说的没错。但我们这边没有做详细的监控,具体原因不好一一说明,和我们系统的特殊性有关系。
---------------------------------------------------------------------
如果说你们自己做的个别界面不测试也许说的过去,难道对于接口的实现你们也不测试吗?
接口是给对方调用的,你从哪里看到我们的接口实现没有测试?
至少自己测试过该接口没有问题
我方接口被调用一次可以记录日志的啊.系统上线后一直没有日志你都不怀疑啊!
---------------------------------------------------------------------
如果说你们自己做的个别界面不测试也许说的过去,难道对于接口的实现你们也不测试吗?
确实没听说过没必要重构时进行重构的。
有人说在没有必要重构的时候要进行重构了吗?好像没人这么说吧。
重构关键在其合理性,合理地重构可提高功能的可扩展性,减少代码冗余,有利于后期维护和扩展。
发表评论
-
开发管理工作教训总结
2012-08-20 15:57 1208今年参与了一个在线教育网站的项目,规划承载1000W用户, ... -
项目时间管理要点
2011-11-20 23:15 1247PMP定义: 1.定义活动 识别为完成项目可交付成果而需采 ... -
项目成本管理要点
2011-11-08 17:18 9841.估算成本 对项目活动所需资金进行类似估算的过程。 ... -
项目质量管理要点
2011-10-16 18:05 10291.规划质量管理 识别项目及其产品的质量要求和/或标准,并书 ... -
项目风险管理要点
2011-10-14 11:50 12271.规划风险管理 定义如何实施项目风险管理活动的过程。 ... -
项目一期的遗留问题
2011-09-03 18:11 1062前不久项目中遇到了一 ... -
项目、项目集、项目组合、PMO
2011-08-22 22:32 17791.项目、项目集和项目组合定义: 项目:为了创造独特的 ... -
项目阶段总结
2011-07-28 15:30 1205项目从去年底启动,目前已经完成近半的工作量,期间经历了一些事 ... -
拒绝分派的任务-项目日记
2011-01-17 10:19 2819分配编码任务遭到拒绝,理由:认为功能实现不了,可变的东西太多。 ... -
配置管理
2010-03-23 13:49 1918一、概述配置管理(Config ... -
项目管理过程之变更控制
2010-03-10 17:55 1153变更控制的目的并不是 ... -
需求跟踪矩阵的问题及模板下载
2010-03-10 17:41 4001需求跟踪矩阵(RTM)有什么作用? (1) 在需求变更、设 ... -
我的项目血泪史之频繁需求变更
2010-03-10 17:36 1914前段时间,我出任项目 ... -
缺陷等级的划分方法
2009-12-24 13:48 2268缺陷严重级别定义:o 最高级--导致运行中断(应用程序崩溃), ... -
项目管理中的三个重要概念:检查点、里程碑、基线
2009-12-24 11:12 1475项目生命周期中有三个 ... -
黑盒测试、白盒测试和灰盒测试的基本概念
2009-12-24 11:07 22011. 黑盒测试 黑盒测试 ... -
静态、动态测试及测试分类
2009-12-24 10:50 1667所谓静态测试(static tes ... -
软件质量之路之三:测试驱动开发
2009-12-23 16:26 1029测试不能够证明错误不 ... -
软件质量之路之五:面向组件的大规模软件架构
2009-12-23 16:17 1019在中小规模的软件中,对象和对象之间的协作关系就能够满足需要。但 ... -
软件质量之路之四:建立核心框架
2009-12-23 16:12 967框架是一种特殊的软件 ...
相关推荐
信息技术作为一门与科技发展密切相关的学科,其教学内容与方法需要与时俱进,不断地与信息时代的步伐同步。在实际教学过程中,我们不可避免地会遇到教材更新滞后的问题。如何利用有限的资源,进行有效的教学创新,...
### Civil 3D .NET 二次开发随笔 #### 一、引言 随着三维建模技术的进步,Civil 3D 成为了土木工程、测绘、设计与施工领域的重要工具。Civil 3D 是一款由 Autodesk 公司开发的专业三维建模软件,广泛应用于土木...
本项目是一款基于Java和跨平台技术的crostitch涂鸦随笔设计与实现源码,包含65个文件,其中包括30个Java源文件、16个PNG图片文件、7个JavaScript文件、2个XML文件、1个Git忽略文件、1个Markdown文件、1个Maven项目...
《品味蓝色II__IBM人价值随笔》一书汇集了IBM大中华区员工的心得与感悟,通过一系列个人故事和职业经历,展现了IBM的企业文化和价值观。以下是从标题、描述、部分目录内容中提炼的关键知识点: ### 1. IBM的企业...
压缩包子文件的文件名称列表仅包含一个"网恋随笔散文随笔散文.pdf",同样不涉及任何IT技术或知识内容。 如果您的目的是寻找关于IT教育或者与技术相关的知识,我建议提供更具体的信息,例如具体的IT主题、编程语言、...
在Java编程语言中,AWT(Abstract Window Toolkit)和Swing是用于构建图形用户界面(GUI)的基础组件。本文将探讨在Java学习过程中涉及到的...在实际编程中,理解并熟练运用这些技术,将极大地提高开发效率和代码质量。
### 科学与技术教学随笔 #### 一、引言 随着科技的快速发展和社会对创新能力的日益重视,科学教育已成为培养未来人才的关键。本文基于《科学与技术教学随笔》文档,从中提取并深入探讨了两个核心知识点:**小船浮沉...
12. **Java开发工具**:如Eclipse、IntelliJ IDEA的使用技巧,以及Maven或Gradle构建工具的配置和应用。 13. **单元测试**:JUnit或其他测试框架的使用,如何编写和执行单元测试,以及断言和测试最佳实践。 14. **...
Android开发实战经典_020704_随笔提示文本:AutoCompleteTextView源代码和视频教程.zip
WPF开发随笔收录-心电图曲线绘制是一个关于WPF开发的心电图曲线绘制技术的记录,涵盖了心电图曲线绘制的实现方式、数据接收和绘制功能的实现、自动缩放功能的实现等知识点。 一、心电图曲线绘制的实现方式 心电图...
Java 记录随笔是关于 Java 软件架构设计的笔记,涵盖了软件架构的基本原则、当前流行的技术、数据库存储结构、Web 界面用户接口层、业务层架构、持久层技术、XML 结构化信息传输和存储的重要性等多个方面。...
本文将深入探讨Lotus Notes的开发技术,结合李建壹 Louis Lee(小路哥)的开发随笔,揭示其在实际工作中的应用和经验分享。 Lotus Notes的核心特性在于它的数据库系统,它不仅仅是一个文档存储系统,更是一个强大...
工程数学软件实用入门资料,可视很好,不需要专门的语言。
本文将从作者的个人生活随笔中提炼与技术相关的主题,并对这些主题进行深入探讨。 首先,生物学的学习与观察是作者在随笔中提到的一个重要方面。通过观察昆虫,作者不仅对生物学产生了浓厚的兴趣,还意识到科学学习...
关于描写夏天的散文随笔.doc
黄牛的散文随笔以PDF形式发布,顺应了这一趋势,使得更多人能够便捷地接触到他的作品,扩大了作品的影响力。 6. **版权保护**:尽管PDF文件易于传播,但也需要注意版权问题。下载和分享这类文件时,应确保遵循合法...
总的来说,这个随笔结合具体的硬件平台和代码实例,全面介绍了按键消抖的技术要点和实现步骤,对于学习嵌入式系统开发和理解微控制器应用具有很高的参考价值。通过阅读和实践,读者不仅能掌握消抖技术,还能提升对DE...
通过与同龄人的互动,可以有效提升孩子的语言表达能力和社交技能。 ### 2. 教育政策与指导纲要的学习 - **政策学习的重要性**:作为一名幼儿园教师,了解并掌握《幼儿园工作规程》和《教育指导纲要》是非常重要的...
很抱歉,根据您提供的文件信息,标题和描述中提到的“生活感言随笔.docx”显然是一份关于个人感悟和生活体验的文档,并非与技术相关的内容。标签虽然注明为“技术”,但从部分内容来看,主要讲述的是作者对于日常...
正如这篇随笔所展示的,信息技术的广泛运用让原本与技术看似不相关的个人爱好,都或多或少地与之产生了联系。让我们深入分析这篇随笔,探讨技术如何与个人兴趣相结合,以及这种结合给我们带来了哪些可能和机遇。 ...