2007年4月4日

软件开发人员的能力模型

不知觉做软件开发已经有6年了,回看自己的经历,可以说是相当有成就感,6年中通过不断的学习的实践,从一个菜鸟成长为一名软件架构师,这个过程可以说充满乐趣。通过学习各种理论、技术、方法,并有在实践中应用,观察它们的效果,思考它们之间的关系,再把不同事物融合在一起,形成一个完整的能力体系,以此来挑战更艰巨的软件开发任务。
我现在是一个框架师,所以看问题喜欢从总体架构出发,所以我认为人的能力也有一个架构存在,每个的能力架构都不一样,有的人能力架构比较合理,有的人则不那么合理,合理的能力架构能让较少能力元素(知识、技能、方法等)发挥出较大的作用,不合理的能力架构会浪费人的能力,让所学无所用。
什么样的能力结构是比较合理的呢,这不是一个简单的问题,这里我根据自己的经验总结提出一个参考模型,这个参考模型采用我们常见的分层架构模式。我认为一个软件开发人员的能力大体应该分为四个层次:
最高层:过程控制和管理
第三层:方法、思想和理论
第二层:具体技术、语言和工具
最底层:基础原理、基础知识
层以层之间存在一定的关系,上一层必须以下一层为基础,而上一层又反过来影响下一层。最底层是基础原理和基本技术:包括计算机原理、电路、数据结构、数据库原理、编译原理、操作系统等。这些知识是很基础的有了一定的基础才能更好的学习其它能力

第二层是具体技术、语言和工具,包括各种编程语言、开发环境、数据库、开发框架等。每显然,一般情况下要学习第二层的内容必须要有以最底层的能力为基础,当然也有人没有任何基础就能学习第二层的能力,但是一般这样学习效果很差,知其然不知其所以然,遇到一些问题也会不知所措。另一方面第二层的学习又会反过来影响最底层的能力,它能巩固基础知识的学习,能暴露出你在基础方面的不足,还能驱动你对基础知识的学习。当我还是个程序员的时候,学习的内容主要集中在这两个层次。

第三层是方法、思想和理论,包括面向对象思想、设计原理、设计模式、需求工程、UML等,同样第三层的能力也要以第二层为基础,具个例子来说,要学习面向对象的设计方法首先要学会一门面向对象语言还要会使用case工具,同时第三层的能力又会反过来影响第二层,好的方法能更好的发挥你的技术,还可以弥补技术的不足,举几个例子来说,设计做的好是不是写起程序来很轻松,断言、单元测试这些方法能让代码的质量达到前所未有的高度。

最高层是过程控制和管理,这个层次的能力通常涉及时间跨度和团队协作,包括项目管理的能力,软件过程的控制能力、版本控制的能力、需求管理的能力等。同样这一层次的能力也要以第三层的能力为基础,举例来说,如果软件没有好的架构,那不管采用什么过程最终都会一团糟,而良好的设计能力,再加上迭代的开发过程、严格的版本控制,就一定能开发出优秀的软件。

通过这个模型我们不难看出,一个优秀的软件开发人员各个层次的能力应该是比较均衡的,并且这些能力不应该是独立,它们应该能组合在一起发挥出整体性的威力。

通过这个模型也可以指导我们的学习过程,一般地,我们应该先掌握下一层的能力再掌握上一层的能力,但又不能只停留在下一层。我见过不少大学生,刚开始工作就学习项目管理,还一些做项目N年的前辈,能够把类库倒背如流,还不知什么是UML、什么是内聚、藕合和粒度。我觉得这都不是好的现象,我认为能力的学习也应该采取迭代的方式,我们先要打基础,但也不需要打一个完美的基础,我认为打个三成就够了,然后就可以尝试学习上一层的的能力,可能你会掌握一成上层的能力,这时会发现基础还打的有问题,然后再带着你的问题来补基础。如此反复,当你上一层的能力也达到三成时,又可以尝试再上层的学习。这时就把上一层当成是基础再上一层当成是上层。如此反复直到你爽了为止,哈哈。

posted @ 2007-04-04 16:44 JAVAFANS 阅读(17784) 评论(26) 编辑

2007年2月4日

Postgresql简易安装步骤

www.postgresql.com下载 window no install 版本,解压到硬盘上,以下这些命令都在bin目录下


step1.初始化数据库
initdb -D directory -E encoding [-U username] --locale=C
directory 指定存放数据文件的目录,将会在这个目录下创建数据库文件
encoding 字符集
username 管理员用户,对应操作系统的一个用户,这个用户可以管理数据库
注意:
directory不能事先创建
初始化数据库后postgres和template1这两个数据库会被自动创建
使用非管理员来运行这个程序

step2.注册服务
注册window服务
pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir]
通过[-U username] [-P password]这两个参数来指定运行服务的用户,出于安全的考虑,必须用非管理员用户来运行这个服务
datadir取第一步中directory参数,另外要给运行服务的用户授与那个目录完全控制的权限

要是觉得不爽,可以注销window服务
pg_ctl unregister [-N servicename]

step3.创建数据库
createdb dbname

step4.设置客户机登陆方式
打开数据存放目录(就是第一步中指定的directory参数)下的pg_hba.conf文件
在文件的最后可以添加允许连接的客户机,每行是一条记录,最后一个字段method用来指定登陆验证的方式,
如果设为trust则意味着不需要验证就可以登陆
如果设为md5则意味着用md5对密码验证,其它类型的方法暂时用不到


step5.可以使用psql程序登陆服务进入sql命令行
psql dbname -h hostname_or_host_ip [-p post] [-u username]

posted @ 2007-02-04 13:32 JAVAFANS 阅读(242) 评论(0) 编辑

2007年1月26日

最近养了些小宠物,哈哈

 

posted @ 2007-01-26 22:33 JAVAFANS 阅读(65) 评论(1) 编辑

2006年12月25日

架构师培训总结1-成为架构师的第一步,学会架构分析

架构分析是需求之后的一个阶段,这个阶段最重要的就是通过这些需求对即将开发的架构基线做一个全面的分析,以保证将来开发出来的架构能够有效的满足需求。
首先要准备架构分析的原始材料,这些材料包括架构敏感用例、变更案例、架构敏感的非功能需求。
架构敏感用例应该是用例中那些比较有代表性的用例,特别还要注意那些可实现性不是很确定的用例,这些用例可能浅藏着风险,所以要在做架构的阶段就要把这些风险排除。
变更案例,是系统将来可能发生的变化,一个好我架构应该能够很好应对各种变化
非功能性需求,非功能性对架构来说是非常重要的,因为非功能性需求通常横切于整个系统中,实现这些非功能性需求主要是靠架构的支持,例如性能、安全性、错误日志、持久化、易操作性、界面一致性。
有了这些原始材料,接下来就可以确定架构的设计目标和相关的约束

通过这些原始材料我们可以确定目标系统的特征,这些特征决定了我们如何制定架构级的技术方案,这些因素包括,界面的复杂度、终端的类型、用户的数量和类型、外部接口的方式、网络带宽、对性能的要求、等等。通过对这些要求的权衡,我们可以制定出基本的技术架构。

几乎所有要开发的软件都不需要从头做起,所以接下来,我们需要考查已有的资产,包括可重用的方案、构件和企业现有的系统,通过以上的材料,我们可以检查已资产是否符合要求。

然后通过以上的材料,再配合架构的分析和设计能力,可以确定出初始的架构风格。当然这一方案要适用以上的所有需求(敏感用例和非功能需求)

基于这个架构风格,要从中识别出各种分析机制、各种关键抽象概念、典型的架构协作、定义界面导航,致些架构分析宣告结束。

架构分析的输入有,用例模型、非功能需求规格、设计约束。
架构分析的产出的工件有,初始的架构风格、各种分析机制的描述、关键抽象概念模型、典型架构协作模型、界面导航模型。

posted @ 2006-12-25 23:25 JAVAFANS 阅读(285) 评论(0) 编辑

2006年12月17日

软件架构师培训笔记2

架构师原来就是一打杂的
从架构敏感用例中抽象出关键的因素,这些因素将会影响架构方案的制定,包括:
界面的复杂度
用户终端的部署约束
用户数量和类型
外部接口的类型

分析、设计、架构分析等是架构师的核心能力

posted @ 2006-12-17 16:35 JAVAFANS 阅读(172) 评论(2) 编辑

软件架构师培训笔记1

架构师在项目中要负责可重用资产的积累,包括分层模式、自有组件、第三方组件
确定架构开发目标的的依据有,架构敏感用例、变更案例、非功能性需求、设计约束
变更案例用来测试架构的可扩展性
验证架构原型应该由具体开发人员使用架构来实现用例
设计员不应只做设计,他要编一些代码,还要指导编程人员编写他设计的部分。
进程视图的设计要架构师规划整个系统的进程模块,以解决并发、响应、死锁、健壮性等问题

posted @ 2006-12-17 10:22 JAVAFANS 阅读(199) 评论(1) 编辑

2006年12月5日

目标和执行

摘要: 信息系统可以给各行各业带来巨大的价值,因为它可以取代很多手工劳动,并且代价很低,另外很多原来无法做到的事情都可以借助信息系统完成。因此,在IT业里,可以说机会很多,各种行业都需要开发信息系统,而且就算是一个普通的人也需要各种样的IT产品。 在这么多机会面前,我们困惑了,我们不知道该选择什么样的目标,总感觉做这个行业也好,做那个行业也好,这个产品有市场,那个产品也有市场。当我们开始做了以后,我们发现...阅读全文

posted @ 2006-12-05 15:46 JAVAFANS 阅读(89) 评论(0) 编辑

2006年12月4日

最近一段时间搞病毒的总结

摘要: 最近一段时候电脑中了病毒,耗去了我不少时间。这个病毒是一个木马程序,它会在磁盘上建立很多可以执行文件,然后修改注册表把这些文件给挂上去,另外还会在Explorer进程中附加一个模块。如果只是删除硬盘上的程序过不了一会,病毒又会复发,因为真正的幕后黑手没有清除掉。折腾了两三天,上网查资料,还有各种分析扫描工具都用了,最后靠木马清道夫解决了问题,这个软件有一个功能,就是探测可疑模块,我就是借助这个功能...阅读全文

posted @ 2006-12-04 12:27 JAVAFANS 阅读(99) 评论(0) 编辑

2006年7月3日

企业应用系统总体设计-----面向对象方法

摘要: 这篇文章是我工作中长期思考的总结,现在分享给大家/Files/lishu1980/OOEAARCH.rar阅读全文

posted @ 2006-07-03 19:46 JAVAFANS 阅读(2304) 评论(18) 编辑

2006年6月22日

废弃管理

摘要: 当某个类或是调用项(方法或是特性)因为早期设计的接口存在问题,需要改成正确的接口。但是又不能把旧的接口删除,因为旧的应用还依赖旧的接口。所以,需要把旧的接口声明为废弃,这样做的目的主要是为了告诉开发者,在编写新的应用时,不要调用旧的有问题的接口。废弃的工作分为以下几个步骤进行:Ø 初步编写新的接口Ø 和应用开发负责人讨论新的接口Ø 定下正式的新接口Ø 实现新...阅读全文

posted @ 2006-06-22 22:39 JAVAFANS 阅读(87) 评论(0) 编辑

<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

公告

昵称:JAVAFANS
园龄:5年7个月
粉丝:1
关注:0

搜索

 
 

常用链接

最新随笔

积分与排名

推荐排行榜