//2010-08-01 21:05

今天要强迫自己写出这个总结来了,否则我怕以后又有了新的感受,还要沉淀,又不知道多久才能沉淀和写出来.三年前,我写过一个<Web开发的一点心得> http://blog.csdn.net/Eric77/archive/2006/12/13/1441977.aspx ,基本的观点继续延续里面的想法. 只是最近这几年,做了不少系统,从需求分析,设计,开发,测试 和 项目管理了整个流程,又有了一些新的感悟.

对任何系统来说: 无非是做好3件事: IPO. 也就是Input,Process,Output.

对需求分析来说: 你最重要的是搞明白,用户的需求.也就是搞清用户的输入(Input)和输出(Output)是什么,它的要求达到的功能(Process)是什么. 明白以后,你就可以写一些用户需求说明书,描述用例,输入输出处理异常什么的,或者做一个简单的Demo系统,拿去给用户看,看看这个界面是不是用户喜欢的,这个流程是不是用户所需要的等等.

然后就是系统分析: 首先,你需要对用户的需求分模块,每个模块的IPO是什么,他们应采用什么架构,需要和那些模块交互,互相之间的接口是怎样的,需要使用什么技术.每个模块的运行环境是什么样子的,对效率,安全或者容错等特性是否要着重考虑.

接着就是系统设计: 每个模块的数据库要怎么设计,所用技术和架构决定后,要确定不同层次有哪些接口,比如说表现层,业务逻辑层,数据库访问层,相互之间怎么调用,定好框架和开发模式和格式,剩下的就是编码了.

编码部分: 首先团队要有一个良好的编码规范.并且对每个人提交的代码要review,我发现程序编多了,自己就成了一台计算,看到程序就会知道会出现什么结果,根本都不用跑起来.

测试: 单元测试是否编写测试用例? Junit是个好工具.每个人都要保证好自己的代码没有问题. 整体测试就要整个流程的跑一下,看看需求实现的对不对,还有没有什么其他纰漏.

风险管理: 这一点很重要,要时刻知道自己的项目有什么风险,无论是人员的,技术的,时间的,还是协调上面的.都要心里有数,按时按周向领导汇报.

恩,以上就是我现在对一个系统开发的整体观点.

也许写的简单了一点,不过我觉得真的是如此,面试的时候,经常有人问我,你有没有做过一些复杂的业务逻辑,其实说实话,我还真不知道怎么回答这个问题,我一直都觉得,把IPO搞明白,多复杂的业务逻辑都会简化成一个一个小的步骤,处理完输入的数据后,就进行数据库更新或保存,然后就返回给用户处理后的反馈信息. 复杂点的最多就是涉及到多数据库或者嵌套事务的处理,只要把握好事务的生命周期,是否互相影响,处理好提交和回滚也就OK了. 如果是涉及到工作流的,就要记录和管理好它的位置,上下流程的关系状态什么的. 还有什么复杂的业务逻辑形式? 额,我再想一想.

也许大型的数据量的访问和处理就需要一些技巧了. 典型的就是把经常访问的变化不经常的动态页面,转换成静态的html分配给apache处理,注意更新. 或者使用集群Cluster来缓解压力.这又会涉及到怎样追踪用户的问题了,一个最简单的方式就是对用户取模来进行分配,呀,跑题了.如果对数据库的存取量太大,一般可以使用缓存,多弄几台数据库,搞成集群形式,一台主的多台辅的.恩,如果后台表数据量太大的话,就是用分表方式,分表有几种方法,略掉吧.还有什么呢,比如说对查询语句怎么优化,这就要使用查询分析器了,也不多说. 额,,, 还有什么,暂时想不起来了. 不过,douban无私牛人的<豆瓣网技术架构的发展历程>这篇pdf真的很不多,值得每个人研读.

记得我去IBM面试的时候,问过,以后有几条职业发展的方向,回答有三条,一条是IT Specialist,一条是Project Manager,还有一条是IT Architect. 我还曾要求以后能不能向IT Architect发展,那人说,Architect要熟悉很多技术呢,我问了两遍,他这样回答了两遍.后来给我订了Advisory I/T Specialist. 我当时很纳闷,我搞Java这么久,J2ME,J2SE,J2EE全都搞过,而且对Gof的<Design Pattern>也悟了5年,了熟于心,各种各样的经典书籍也看了不少,怎么不能向Architect发展呢. 现在我加入了IBM,进入一个香港的项目,过段时间要去香港培训几星期,才明白了,原来一个大项目会涉及到各种各样的语言,技术,什么Cobal(音译),forturn(音译),java,vb,C#,soa xx总线模式,mq,大型机开发,等,很多我只在书上看到过的古老语言,还有一些听都没听过的语言,框架,模式,全都出现了.我当时这个汗哪,我才发现我真的很无知.知识就是一个气球,你知道的越多,接触的越多就会发现自己越无知.所以这也是我要今天赶紧把这个写出来的原因. 我怕以后又有了变故,还要沉淀,需要时间.

恩,路还长,吾等还需继续努力.

前不久在家里陪我妈看了'曲黎敏'讲的<黄帝内经>的相关养生知识,觉得每个人都应该听一下,大道至简,阴阳五行,天地自然,健康养生. 悟 - 这个字存在宇宙万物中.

//22:23

软件开发的一些感想(五年工作总结版)相关推荐

  1. 论软件开发中的可信赖的工作

    中大型软件开发,免不了团队开发,团队开发就少不了分工合作.在团队开发中,当然每个人的能力都很重要,但是我认为可信赖的工作是团队开发的首要条件,也是团队开发存在的基本保证.没有可信赖的工作,就没有团队分 ...

  2. 任职软件开发工程师的感想

    前言 我在该公司任职软件开发工程师,刚实习的第一个星期,主要的工作是熟悉公司的开发框架及开发流程,及时完成项目经理派发的任务.从第二个星期开始,我就开始接触公司的开发项目. 项目介绍 令我印象最深.体 ...

  3. DA14580软件开发平台参考(五)

    翻译的是这个文档. 它介绍了整个系统架构,组件,应用程序编程接口(API)以及开发工具链,环境和过程. 问题点请在评论中留言,我看到了回去改正. 这篇主要是讲SDk5.0.4里面有什么? 11 Dev ...

  4. 京东价格监控软件开发技术探讨十五:C#下如何实现推送消息到微信群

    目前推送消息到QQ群,已经被大部分业内人士掌握并熟练运用.近期专家群里面比较关注的是如何通过技术方式,实现模拟微信登录及推送微信消息. 占位符.

  5. 软件开发中IT用语-日文和英文对照版

    開発工程 † 要件定義-Requirement Definition (Analyze) 外部設計-External Design 内部設計-Internal Design 開発-Coding テスト ...

  6. 软件开发工具【五】 之 软件开发工具的使用与开发

    感谢内容提供者:金牛区吴迪软件开发工作室 接上一篇:软件开发工具[四] 之 软件开发工具的技术要素 文章目录 一.购置与开发的权衡 1.购买或自行开发软件与哪些条件有关 2.自行开发软件开发工具的优点 ...

  7. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The End 导航页及收尾工作

    导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 1 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 2 桃词 ...

  8. java软件开发培训班靠谱吗?好找工作吗?

    其实现在很多大学生毕业都找不到工作或者对自己所学专业并不喜欢,自然毕业了也就很迷茫,也没有一个自己的职业规划.相信大部分人都知道目前IT行业平均薪资都挺高,前景也不错.其中,Java软件开发更是其中特 ...

  9. 软件开发职业是青春饭

    Java程序员最常用的Java日志框架组件. 1.Log4j – 最受欢迎的Java日志组件 Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台.文件. ...

  10. 【软件开发工具】填空选择,精讲

    [软件开发工具]填空选择,精讲 填空 选择 J1 J2 J3,J4 J5 J6 J8 J9 J10 J11 J12 填空 J1 1.第三代程序设计语言一般都是(过程化)语言.填空题 2.进入二十一世纪 ...

最新文章

  1. 【VMC实验室】在QCloud上创建您的SQL Cluster(1)
  2. liunx服务(Nginx服务器 web服务器源码包和rpm 服务平滑升级)
  3. MFC listctrl显示缩略图时索引问题和滚动条问题
  4. 什么是线程安全,你真的了解吗?
  5. 大咖分享会 | 百度首次揭秘如何构建用户画像与移动统计
  6. 上海人工智能实验室刘宇:从感知AI的发展理解决策AI的未来
  7. 10个加速Table Views开发的Tips
  8. 解决一次由于SSL证书到期导致的网站不能访问的问题(Nginx,php,Apache)
  9. redis rdb aof区别_理解Redis的持久化机制:RDB和AOF
  10. linux 下ifconfig修改IP
  11. 【数据分析】基于matlab伊藤微分方程布朗运动分析【含Matlab源码 261期】
  12. mysql language sql immutable_sql - PostgreSQL是否支持“不区分重音”排序规则?
  13. React Native 制作iOS静态库供其他原生项目使用
  14. 会议预约及信息发布服务器,会议预约系统
  15. 硬盘格式化了怎么恢复数据
  16. IPhone 日历提醒
  17. DELPHI盒子FTP登录地址及用户密码
  18. 【odoo15】自定义一个kanban视图
  19. js 中编码(encode)和解码(decode)的三种方法(传递是特殊符号丢失问题,如‘+’)
  20. 纳税信用等级怎么划分 激励惩戒措施有哪些

热门文章

  1. 第四章:mongodb 命令行操作进程控制性能优化
  2. 性能优化专题 - MySql 性能优化 - 03 - 深入理解InnoDB
  3. ProjectZomboid服务器搭建
  4. 人工智能 7.专家系统
  5. Chrome浏览器中比较实用的一些插件(文字复制、广告拦截、视频倍速、文献下载)
  6. 华为手机热点无法连接_华为手机开热点,连不上怎么破
  7. android视频实时编辑器,视频编辑器app下载
  8. 工具篇--时间转化,设置,格式
  9. Android Studio 嵌入X5WebView
  10. 解决Invalid `Podfile` file: no implicit conversion of nil into String