您的位置:首页 > 其它

浅析软件开发之道

2010-07-30 18:03 106 查看
如何成为一个软件开发高手?相信这是每个软件开发者的梦想。但是你知道吗?软件工程是一个非常庞大的体系,软件开发只是其中一个组成部分,如果你有其他领域的天赋,你一样可以成为IT行业的顶尖人才。让我们一个一个来深入讨论一下吧。

谈软件需求

对于IT行业,要成为一个专业的需求分析师很不容易,10个软件开发里面估计能够成功转一个好的需求分析师。需求分析是业务和软件开发技术的双重结合,软件开发走到需求分析核心就是业务领域知识和业务建模知识储备,思维的一个重要转变就是:考虑业务流程和业务数据本身而不是过多一开始就考虑系统实现,因为实现可以交给下面的软件开发来做。好的需求人员不一定是该行业的业务专家,对每一个业务细节都了解清楚,但是一定有全局业务思维和把控能力,具备业务建模和分析能力。而这两个里面的重点又是业务流程 建模和业务数据建模,形成端到端流程意识和全局数据模型意识。

需求调研能力是需求人员的一个核心能力,而需求调研的重点一方面是行业的业务技术积累形成的经验,一方面是沟通和理解能力。这两方面的能力是基础,其它方法,工具,模板都是其次的东西。其中我觉得比较重要的是沟通和理解能力,要有能够把客户的语言转化成程序员懂得的模型语言的能力。打个比方,一个需求分析人员就像是一个翻译官,优秀的翻译官可以翻译出生动活泼的语言精髓,而普通的翻译官只能做字面上的逐字逐句翻译,对语言的了解程度决定了两者的区别。

谈软件架构

架构师我原来谈的比较多的,其核心仍然是高屋建瓴和落地实施两个能力,两个能力一个都不能少,不能落地分阶段实施就是空架构,不能高屋建瓴和自上而下就没 有全局把控能力和系统思维。对于从软件开发人员转过来的架构,一般来说落地实施能力还是很强的,毕竟有多年的开发经验的积累;但是差的就是系统建模能力, 做软件需求偏向业务建模,而软件架构偏向系统建模,而建模的重点一个是全局和自上而下,一个又是从下而上的抽象。如果说需求分析是翻译官的话,那么软件架构就是建筑工程的总设计师。

一件事情先开始没有计划,但是同样的事情做多了就知道如何先做计划。架构一样,一种设计和实现,做多了后知道如何去抽象,抽象完后面对新事物就变成了不需 在做完后再抽象,而是可以直接高层建模后再逐层分解,这就是架构师的核心能力。但是不可能任何技术都有经验,所有面对新技术的时候仍然需要自己开发原型对 架构进行验证。在这个信息爆炸的时代,有行业经验的架构师是非常稀缺的。

当公司的基础架构或平台没有确定前,架构师往往关注非功能性需求的满足,当公司开发平台和框架基本确定后,架构师的工作重点转移到对功能性需求的关注。非 功能性需求涉及到架构的方面是性能,框架,分层,公用组件封装,运行机制,日志等方面的内容;而功能性架构涉及到的是系统,子系统,模块,组件,接口,关 键算法,业务交互机制等重要内容。两方面都必须关注才是一个完整的架构。

谈软件开发

架构的目的是为了保证新开发的应用或系统的概念完整性。对于已有系统的新功能或变更的开发,可以看到架构的作用往往并不会很大。而根据源代码就是设计的思 想,软件设计和软件开发不用分的那么清楚,但是并不代表在软件开发过程中不体现设计的思想。哪些地方需要抽取为复用,哪些地方涉及到接口,算法的采用,类之间的调用, 变量和数据结构的选择,程序本身的实现逻辑,后续代码的重构都将体现你的设计思路。所以我们说,同样一个功能的通用编码,仅仅从CodeReview的角 度其实就很容易看出软件开发者的技术功底和设计的潜质。

在软件开发的过程中能有意识的体现设计的意识是软件开发朝软件设计转的一个重点,其次需要有面向对象的思维和掌握形式化的设计语言如UML这是基础,需要在软件开发过程中 有重构的意识,有复用的意识。有了这些可以开始读开源的源代码,多看看和熟悉别人是如何设计和开发系统的,可以尝试由公用函数的复用转化到组件级的黑盒复 用,加强在软件开发过程中的重构,加强对系统实现机制和底层的一些研究,而这些往往正是设计模式的基础。设计模式再通俗点就是在不同的业务场景和现实问题下采 用不同的设计方法的经验。

软件开发虽然像是建筑工程的实施工人,但是哪个总设计师不是到建筑工地上挥洒过汗水的?不想当将军的兵就不是好兵,就算你是一个普通的建筑工人,但是凭借自己的勤奋好学和善于思考,总有出人头地的一天。

谈软件测试

需求人员最熟悉业务,从这点上来说测试人员应该向需求人员看齐。但是区别点在于需求人员需要调研和分析业务,进行业务建模和需求挖掘等,而测试人员只需要 完全理解最终的结果(需求说明书)即可。如果再加深一点,测试人员应该再多考虑下由于什么样的业务场景形成了最终的结果,只有这样测试人员才能够逐渐形成 业务人员的思维。

测试工程里面虽然涉及的东西很多,包括测试生命周期中的测试计划,测试分析,测试设计,测试执行,测试评估等各个方面的内容。涉及到各种测试工具,测试方 法等,但是这些仍然是工具和技术层面,而真正的重点仍然在于测试人员对某个行业某类业务的了解程度,这是真正做好测试的基础。我们始终要知道测试的持续改 进目标只有一个,发现前人从来没有发现过的问题。否则你就永远是一个墨守成规、循规蹈矩的普通员工,因为测试文档可能都是需求人员、软件设计师写出来的。

在软件设计和软件开发人员启用单元测试后我们看到,软件开发人员希望从繁重的重复测试中解脱出来。而测试人员同样需要有这种思维,即如何从重复不增值的工作中解放出 来,这本身就是一种持续改进的思维。包括自动化测试,性能测试,测试模板等都是为这个目的服务。从重复工作中解脱出来你才可能有更多的时间考虑和分析业务 场景,分析和准备数据。

谈了这么多,从需求分析到软件设计,从软件开发到软件测试,可以发现这4个领域都是一脉相通的,当然不能否认,软件开发还是核心。开发可以向任何一个领域进行转化,但是前提是你要具备更多的业务知识,否则,随着年龄的增长,你总有一天将被日新月异的技术所淘汰。

感谢:软件定制开发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: