`
wodamazi
  • 浏览: 1417759 次
文章分类
社区版块
存档分类
最新评论

今天,软件开发是变易还是变难

 
阅读更多

今天,软件开发是变易还是变难

(附:金旭亮WCF最新教学资源包下载)

软件技术恐怕是人类社会各行业中更新最快的一个领域了,往往老的技术还没有弄明白,新的技术又横空出世。与老的技术相比,新技术往往功能更为强大,开发效率更高。

我还记得我当年学程序设计时,用C语言写程序,要想得到一个好的用户界面,实在是要付出太多的努力,弄一个中文下拉菜单,都需要上千行的代码。以致于当时流行一句话:一个软件,80%的代码是界面代码。

VB的出现使用户界面的设计工作不再那么劳累了,用控件“拖拖拽拽”就可以“画”出一个规范的用户界面,很快,更先进强大的设计工具出现了,从Delphi到当今的Visual Studio 2008,从MFCWindows Form再到WPF,当年开发用户界面的痛苦日益成为历史,今天的程序员已很难有老程序员的那种感触了。

有了这样的感叹:由于开发工具越来越强大,编程将变得越来越简单,门槛越来越低,以后,一个笨人也可以编程了,现在的程序员看来前景不妙,人多了,就不值钱了。

从过去到现在再到未来,这个问题变得很有趣:软件开发是变得越来越容易呢还是变得越来越难?

的确,随着技术的发展,一些原来很困难的东西现在实现起来轻而易举。一些原先需要高素质的人才可以从事的工作,现在,普通人也可以从事了。例如:VB的普及使全世界的程序员数目大大增加,这个现象让原先那些拿着高薪的C/C++高手们拥有了一种复杂的心态,既看不起VB菜鸟而又无可奈何。

为何老的“高手”们会感到无可奈何?因为任何人都无法对抗技术发展的客观规律。过去的辉煌业绩,只能供自己在闲暇里回味,软件技术日益走向普及是必然的发展方向。技术,不再也不会始终高居于神坛之上。

然而,还是没有正面回答这个问题:技术的发展,使软件开发是变易还是变难?

我个人认为:软件开发没有变得更简单,也没有变得更复杂。

现代软件技术的发展,使一些过去很困难的问题现在解决得很简单,但与此同时,要求软件技术解决的问题也变得更为复杂多样了。

举例说明。

过去的DOS时代,你编写的程序可以独占整个操作系统和计算机,在PC时代,你可以编写操控个人电脑上各种资源的程序,而到了网络时代,你必须开发高度分布的异构的软件系统。

早期的单机版程序,一个人编写几千行最多几万行搞定,而现代一些复杂的应用系统,拥有几十万行甚至数百万行代码,而象Windows这样“吨位”的大胖子,拥有千万行代码的规模,同时有上千名工程师在工作。

你说软件开发是变难还是变易了?这还真难说。早期的软件虽然规模小,但那时也没有这么强大的工具,这么丰富的资源,更重要的,技术也不成熟,各方面都无法与现在相比,因此,那时开发软件是不能说容易的。

现在开发的环境与条件是过去不能比的,强大的开发工具可以大大地提升编码效率,好用的搜索引擎可以提供丰富的技术资源,无所不在的互联网可以使你向世界上任何一名技术高手请求帮助……,但你要对付的软件开发任务也变得不同的,因此,现在开发软件也不能说是容易的。

事情还有另一方面:虽然现代软件的开发技术与开发方式与几十年前相比有了较大的变化,然而,有些东西却始终起着关键性的作用。这就是人自身所具有的基本能力:学习能力、思考能力、探索能力、解决问题的能力、知识迁移的能力、组合应用能力……。

从人的基本能力出发,其实一名软件牛人与一名玩游戏导致大学没毕业的失败者没有太大的差别。牛人们“牛”在技术,而这些失败的学生们“牛”在玩游戏上。绝大多数人都拥有足够的天赋和能力,可以在某个他所擅长的领域内成为牛人(前提是他能找到它并且具备相应的成功素质)。

软件开发没有变容易,也并不去过去更难。形式变了,但本质没变,因为软件开发本就是一个人基本能力的不断应用过程。

我还记得小时候抱着强烈的好奇心和我的哥哥一起拆过家里的一个闹钟,为了把各式各样的大大小小的齿轮原样再装回去,我们兄弟俩足足耗了好几个小时,不断地动脑筋琢磨这个小齿轮应该放在什么地方的,因为“拆”容易,“装”就难了,“装”好并且还让它“走”就更难了。虽然最后难免被老爸责骂几句,但那种兴致勃勃的探索劲头,现在还记忆犹新。

然而长大以后,有这种体验的机会好象越来越少了。所幸的事,软件技术好象也是一个闹钟,如果你感兴趣的话,也可以拆拆装装,体验一下儿时的那种单纯的快乐。

我最近在拆微软的“WCF牌”闹钟,附件是我的“拆卸”记录。期望对WCF技术感兴趣的朋友,也能从中体会到和我一样的动手试验进行探索的乐趣

下载“WCF并发与实例管理”学习资源包

(http://download.csdn.net/source/1322774)

资源说明:

本资源包集中介绍了WCF中有关“并发与实例管理”这一领域的技术知识,其主要内容有:

1)理解WCF中的“行为(Behavior)”

2)异步调用设计模式

3)在Windows FormWPF应用程序中驻留WCF服务

4)使用InstanceContextModeConcurrencyMode管理服务对象

5WCF如何对并发请求进行控制。

要求学习者具备.NET多线程开发基本技能,以及了解WCF基础知识(可以先看我的《WCF概述》技术资源)。

本资源提供一个PDF文件,和11个示例项目,要求大家亲自动手进行实验。

记得有网友在我发布《WCF概述》教学资源时问过WCF用在何处,我的回答是:

如果你想基于Windows平台开发分布式的软件系统,那么,WCF是一个不错的选择。

而我本次发布的这个学习资源包,可以看成是进入WCF开发分布式系统这一领域的第一步。其中涉及到了许多分布式系统开发中重要的技术点:比如如何处理线程同步、访问共享资源、超时回收对象、保证服务器吞吐率等问题,我相信这个资源能帮助大家进一步理解和掌握更多的WCF技术内幕打下基础。

我个人认为:随着网络技术的发展,计算将高度分布化,某一信息处理任务可能由PC、高性能服务器以及手机等智能设备等共同协同完成,我们已开始进入“计算无所不在”的时代。

开发分布式软件系统是当前和未来主要的一个软件开发领域,它给软件工程师所带来的挑战也是巨大的,其难度大于单机软件系统的开发。

是对分布式软件技术予以足够重视的时候了,因为相关的技术与工具已趋于成熟。

勇敢地迎接新时代的挑战吧!

分享到:
评论

相关推荐

    金旭亮“WCF并发与实例管理”学习资源包

    本资源包是金旭亮.NET ...有关本资源的详细介绍,请访问金旭亮博文《今天,软件开发是变易还是变难》(http://blog.csdn.net/bitfan/archive/2009/05/18/4197786.aspx) 更多更新技术学习资源敬请关注金旭亮技术博客: ...

    [详细完整版]26软件工程.doc

    软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率。 衡量软件的常用六个指标:功能性,可靠性,易变性,效率,可维护性,可移植性。 统一过程描述软件的生存期,它用二维图来描述:横...

    [详细完整版]2软件工程.pptx

    (计算思维的社会意义) 软件及其特殊性 "软"性质(易变、难) 2软件工程全文共18页,当前为第2页。 软件及其特殊性 软件一般涉及两个以上领域(计算机本身和应用对象),超出个人的专业知识,需要综合知识 软件与...

    软件设计规范

    要考虑纳入新的发展,那么规范应该分层,把一般的和具体易变的成分分开;要有具体的指导意义,越具体指导意义越大,但通用性则越小。 所谓架构,可能是十分具体应用的代表;不同类别的应用必然有不同的架构。软件...

    校内API开发. pdf

    种新软件Software开发思路方法学极端编程(extreme programming)引进了个严格软件Software开发思路方 法这种思路方法牢记使最终产品可以交付、使用户满意并质量合格(见资源)它是建立在个基于测试开发理念上鼓 励开发...

    Web 开发敏捷之道(应用Rails 进行敏捷Web 开发第三版)

    Ruby on Rails 是一个框架,一个使Web 应用的开发、部署和维护变得更容易的框架。自从发布 第一个版本以来,Rails 已经从一个默默无闻的玩具蜕变成了一种世界性的现象。它拿下了一个又一个 的奖项,更重要的是,很多...

    基于Java+ jsp的健身俱乐部会员系统.zip

    更与现今的常用的软件开发模式B/S, C/S模式背道而驰,加之这样JSP技术可以支持多种运行平台,运行速度快,难易程度低,扩展性安全性好,数据库支持多等特点,为设计者、使用者和维护者提供了方便。

    网络安全之安全编码.docx

    安全编码中使用的协议为软件开发创建了一种防御方法。在此过程中,编码人员使用消除常见安全问题的标准和实践。代码问题可能由于各种原因而出现,包括权限控制不当和bud缓冲协议。这些协议可能在开发或测试期间无法...

    C#微软培训资料

    <<page 1>> page begin==================== 目 目目 目 录 录录 ... 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代...

    完成Java面向对象程序设计实验课的心得体会.doc

    通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装 性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对 于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中...

    完成Java面向对象程序设计实验课的心得体会(1).doc

    通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装 性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对 于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中...

    [硕士论文]三维虚拟试衣系统中参数化人体建模技术的研究

    直接影响后期三维服装模拟实现的难易程度和表现效果,并且现在服装 CAD(Computer Aided Design)发展的趋势也是三维的,因此研究三维服装人体模型的建模方法具有广泛的研究价值和应用前景。本文对参数化三维人体建模...

    在线考试系统文献综述

    JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML...

    电子商务详细的需求分析文档

    高校教务管理工作中一项非常重要的工作就是考试管理工作,每学期各专业考试,从组织出卷到试卷的印制及试卷的管理等工作非常繁琐且工作量很大,这种组织管理方式不仅工作任务繁重而且试卷的标准化程度、难易程度、...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    嵌入式汽车检测装置的设计与实现.pdf

    在一个系统中使用什么样的嵌入式处理器内核主要取决于应用的领域、用户的需求、成本问题、开发的难易程度等因素。确定了使用哪种   嵌入式处理器内核以后,接下来就是结合实际情况,考虑系统外围设备的需求...

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

    计算机毕业设计:Python实现的火车票分析助手应用(源码+详细说明)),保证可靠运行,附赠计算机答辩PPT模板

    用户可以通过应用查询特定时间、地点的火车票余票情况,了解票价的波动趋势,以及不同车次、席别的购票难易程度。这些信息对于购票者来说至关重要,能够帮助他们做出更加明智的购票决策。 除了基础的数据查询功能,...

    vf学生公寓管理系统 信息与计算科学的课程设计

    对于软件设计而言,可行性研究是尤其重要的,即在开发软件之前.用很小的代价在尽可能短的时间内确定问题是否可以得到解决。解决问题的软件是否有一定的商业价值和实用价值,即经济可行性;是否有可行的方法来解决...

    单片机技术应用-课程标准.doc

    1.2.1本课程在专业人才培养过程中的地位及作用: 本课程以模块化教学为基点,学习情境按照难易程度依次递进的思路设计的。通过 该系列项目的学习,反复训练,学生不但能够掌握51系列单片机的汇编语言的编写能力 ,...

Global site tag (gtag.js) - Google Analytics