Learn IT: Software Development

来源:岁月联盟 编辑:zhu 时间:2010-02-07
    

简单十步学习IT概念。  

它是这样实现的:我们给你一些关于这个概念的一些相关背景,一个术语表查阅相关术语,一些额外的阅读资料和自己评价测试。你可以自己决定花多少时间完成这十步来理解这个概念。  

指导:阅读1至9步和它们的相关链接。在第十步的时候,可以使用术语表查阅你不明白的术语。当你完成这些后做一个测试题看看你学到了多少。  

也可以看我们对产品开发和系统开发生命周期的定义。  

1.什么是软件开发?  

软件开发是有序的通过连续阶段进行软件开发的整个过程.这个过程不但包括代码的写入还包括需求及目标的确定,设计代码完成什么功能,和保证开发成果与目标的对应.  

在系统开发方法出现之前,新的系统或是产品的开发通常会由管理者和技术人员按照个人自觉或是经验进行.然而复杂的现代系统和计算机产品很早就使得对那些有序开发过程的需求变得相当明确了.  

典型的软件开发步骤:  

1)软件需求识别  

2)软件需求分析  

3)软件需求的细节技术说明  

4)软件设计  

5)编程  

6)测试  

7)维护  

总体上来说,商业软件的开发通常是市场需求的结果,而企业软件开发是从企业环境中出现的需求和问题中提炼出来.相关链接:  

Rafeeq Ur Rehman和Christopher Paul的软件开发入门中介绍关于软件开发过程的一些详细内容.  

SearchVB提供了关于设计和开发的可选择的资源.  

2.如何指导软件开发  

软件开发过程几乎都可以由一些系统化的软件开发方法(SDM)指导。这里涉及到一些术语,如过程模型、开发指导方针和系统开发生命周期模型(SDLC),软件开发方法通常仍然包含相同的开发过程:  

对当前系统评估和不足评估,通常通过跟系统使用者和维护者面谈实现。  

新系统需求的定义。尤其是当前系统的不足应该在改进中特别列出。  

目标系统的设计。设计的内容包括物理结构、硬件、操作系统、程序设计、通信和安全事项。  

新系统的开发。必须得到并安装新的组件和程序。系统的使用者在使用系统前必须经过培训,系统所有的方面都需要经过测试。如果有必要的话还需要在这个阶段做出相应的调整。  

系统开始实施。有很多方法来完成这一步。新的系统根据应用或定位可以外购,并逐渐替代久的系统。在一些情况下,直接管壁旧系统同时应用新系统可能会更加经济。  

一旦新系统完成并使用了一段时间,就应该对它进行全面地评价。维护工作必须坚持严格的不断进行。随着最新的修改和流程的变化,系统使用者也应该及时地随之更新。  

系统开发生命周期模型是作为信息系统开发的结构化过程而开发的,它可以指导所有包含了通过维护最终产品初始可行性研究的过程。SDLC模型适用于各种各样的开发途径。  

系统开发生命周期模型包括:  

瀑布模型:这是典型的SDLC模型,采用线性顺序逼近的方法,它的每一个开发阶段都有相应的目标。瀑布模型简化了任务进程,因为其中没有重复和反复操作步骤。瀑布模型又一个缺点就是不允许进行过多的修改。  

快速应用程序开发(RAD):这种模型是基于概念一个更好的产品可以快速的开发:它通过使用车间或专门的工作组来集合系统的需求;生成原型并反复测试;严格按照进度进行;采用非正式的团队交流比如说总结。  

综合程序开发(JAD):这种模型包括客户或者是最终用户参与程序设计和开发,通过一系列叫做JAD会议的联合工作室。  

原型模型:在这个模型中,建立并测试一个原型(一个早期的近似的最终系统或产品),然后进行适当的修改,直到一个能被接受的模型最终完成,从这个模型中完整系统或产品现在可以开发出来了。  

同步和稳定开发:这种模型包括一些平行开发独立程序模块的团队,不断地与其他团队同步他们得到的代码,并在开发过程中自始至终的保证他们的代码不变。  

螺旋形模型:这一模型结合了原型模型和瀑布模型的特征。螺旋模型适用于大型巨额的复杂项目。  

相关链接:  

Peter H. Gregory'的SearchNetworking文章探索《Security in the software development life cycle》  

CTG也提供了新的篇章《Systems Development Process Model》  

Bender RBT在《Systems Development Life Cycle Objectives and Requirements》中提供了他们的文章  

3.通常情况下开放性资源开发过程是如何影响软件开发的?  

开放性资源软件是协作开发的;源代码也是可以自由使用和修改的。开放资源运动兴起是因为一些开发者认为卖家之间的竞争导致了低劣的产品而最好的开发过程是源自于合作。  

OSI(开放资源******)是一个工业实体,它保证产品是开放资源,并通过以下几点原则进行判断:  

发布的软件必须可以由其他人无条件的再发布  

源代码必须是可利用的(这样接受的组织可以改变并改进它)  

证书要求软件的改进版携带有源软件的版本和名字  

尽管它强调合作的过程,总体上来说开放资源对软件开发最大的影响可能就是通过竞争了:通过与专用软件开发的竞争,开放资源产品迫使卖主在可用开放资源的替代面前更加努力的保证他们的市场份额。  

相关链接:  

OSI的网站。  

Margie Semilof在SearchWin2000上的文章《Battening down the Windows: Open source vs. commercial tools》。  

Jan Stafford在SearchEnterpriseLinux上的文章《Perens: IT pros must lobby for open source》。  

4.大多数或几乎所有的开发模型普遍接受的惯例是什么?  

这里从一些产业资源总结了一些重要的提示:  

确保你选择的系统生命开发周期模型适合你的项目,因为每个过程都包含着对模型的需求。也就是说尽管现有的任何一个模型都比没有好,多数情况下一个项目的成功依赖于模型对项目的适应性。  

当合适的时候重复使用软件模块,不要使用那些不能完全满足预订目标的代码,尽管你手头有很多。  

详细地收集需求,确保能理解他们的本意并且把他们保存为文档。  

如果不能实现就不要许愿。避免让不完全了解情况的人和客户交流。  

确保你所选定的结构是适合你要构建的程序的。为了保证项目的实现你可能需要察看样图并对结构进行修改。  

改变是生命的一部分,软件开发也不例外。你必须接受贯穿于整个项目生命其中各种各样的事情——比如说需求——可能的改变。确保能控制他们但也不要太强求。  

对项目的每个因素都建立同业审查过程。  

精密并小心的设计,但记住KISS原则:保持简单(Keep it simple)。  

在项目计划中,用具体的关键点和期限把大的项目分割成便于管理的块。  

责任明确:取保期限的明晰使得人员能够上报他们是否完成了任务,并在如果没有完成的情况下作出解释。  

在整个项目过程中执行质量控制规程。  

全面的测试--没有必要草率的忽略,这只能导致程序出错你有得为客户忙乱。  

当项目完结了应该组织一个详细的总结,每个人都参加。这样你可以明白什么做得好什么还需要改进,你以后的项目也会从中受益。  

相关链接:  

IBM的网站提供Mike Perk的文章《Best Practices for Software Development Projects》。  

IEEE Software推荐的开发的最好实践《Daily Build and Smoke Test》。  

Standish Group提供的《Recipe for Success》。  

W. Edwards Deming在他的列表中对软件开发提出额外的14点建议。  

Johanna Rothman建议开发者用通俗易懂的话语写下目标来帮助管理者,团队成员和投资人能在软件开发杂志中找到相关文章(需要免费注册)。   

5.软件开发的一些通病  

根据Standish Group的报道美国的公司每年要花费2.75亿在软件项目开发上,其中很多是注定要失败的。他们发现超过80%的项目由于各种各样的原因失败,又足足30%的项目在没有完成前就因为糟糕执行而取消。  

Maryland大学的David B. Stewart列出了10个软件开发的通病。尽管如此他发现另外数个常见的错误导致不可能使得通病维持在十个以内。他最后给他的文章取名为实时软件开发中的25个常见错误。尽管如此当题目定下来了以后他又发现了五个比较普遍的错误以至于他不得不把它们加上去。。  

根据Michael Stovsky博士及其助手的说法,多数项目的通病来源于没有成功的控制好项目的因素:  

需求没能清晰而准确的定义并得到所有相关人员的认同。  

资源没有充分的计划和配置。  

没有清楚地发现识别和应对对项目成功的威胁。  

关键路线分析被省去或是没有很好地执行。  

对项目的进度没有充分进行跟踪  

在整个项目的生命过程中质量管理没有很好地执行  

收集的数据太少以及有数据忽略了或者没有完全理解  

在软件的安全审查中校正已知的缺陷是代价昂贵并相当耗费时间的。更糟糕的是巨大的资源会用于从开发中涉及和回收利用。幸运的是,只要是有避免这些缺陷的知识和工具的开发人员这些事情将是容易和低成本的。  

相关链接:  

David B. Stewart列出的25条软件开发的常见错误。  

文中提到的Michael P. Stovsky博士研究出的的软件开发管理中的常见错误。  

6.对于一个特定的过程模型是否有一套工具(开发环境)来支持它?  

通常来说,过程模型一般就像哲语所说的"谁什么时候怎么开发?"那样开始,而不是死板的依照方法论完完全全的使用工具。比如说重复系统开发(RAD)是一种可以利用已有的开发工具的开发方法。通常来说,能支持一个过程模型全部或是部分的都会晚些出现如果有的话。  

从以前看来,开发工具都注重于代码的编写,代码的归档管理,提供文档,测试和过程的封装,有时候提供一些套件。这种套件通常认为是一种整体开发环境(IDE).  

一套管理或是支持开发项目工具通常认为是计算机辅助软件环境(CASE)。很多公司提供这种支持早期开发状态的产品,比如需求收集,设计原型和数据建模。其中很多提供支持使用标准化模型语言数据建模的工具。总的来说,现在是有这种在一个单一的产品或相关产品套件中提供所有的或是多数针对项目开发的工具倾向。   

现在由微软开发的主要的代码开发环境或是编程套件有Visual Studio和Visual Studio .NET,提供支持的有Visual Basic,Visual C#,Visual C++和Visual J#;Sun Microsystems提供了Java 2企业环境;还有其他的厂商比如Borland重新封装了这些环境并增加了一些有价值的特色。最近,几乎所有的软件开发环境供应商都增加了软件对网络方面的应用特性。  

相关链接:  

Microsoft提供了一个公司用Visual Basic .NET产品及PDSA的附属产品开发会计系统案例研究。  

Caldera OpenLinux Workstation描述了它针对Linux和Unix系统提供的若干不同的整体开发环境。  

Knowledgestorm列出了许多适用于整体开发环境的产品  

Carnegie-Mellon Software Engineering Institute解答"CASE环境是什么?"  

7.如何为你的项目选择正确的编程语言?  

对于多数项目来说,很容易选出正确的语言。你的公司可能已经标准化了一种特定的开发环境和语言(并且可能是因为很熟悉这种语言才聘用你)。或者你可能更新或改进现有程序;在现有的程序里使用相同的语言可能几乎总是最好的。然而在一些情况下有些人需要选择最好(或者最好的会是有争议的,至少是比较适合的语言)。有些情况下你和你的团队的开发人员可能需要知道几种不同目的的语言。  

关于编程语言的一些简单的阐述如下:  

Perl或者简单的脚本语言是最适合于小型任务,有时候也在其他的大型间运行程序  

Visual Basic适合于那些相关的新手程序员和相关的简单程序  

Java, C++和类似的语言如Python和Tcl比较适合于是把面向对象当成模型设计的大型程序。  

C适合于主要要求效率和性能的程序。  

适当的汇编语言适合于严格要求短小并且性能很高的程序。  

根据约束条件的要求,有些程序员可能会在众多面向对象的语言中喜欢一种(比如说Java、C++、Python或Tcl)一个精通于C程序员很可能会选择综合了C语言的程序性和其他概念和语法结构及对象变成的概念。  

相关链接:  

Outback Software比较三种面向对象语言: C++、Smalltalk和Java。  

Kuro5hin比较三种Visual Studio语言: C#、C++和Java。  

Jason Voegele's列表比较九个混合和纯的面向对象语言21种特征包括Perl和Basic。  

Open Directory Project提供的关于编程语言比较的链接列表。  

8.今后软件开发的趋势是什么?  

Blogs-比大更加大的数字-称呼那些寻找可以制作更好软件程序的软件开发者如果他们能够一开始就对潜在用户共享信息并和用户一同对开发决定进行反馈。这几年当游戏软件的开发者使用这种方法的时候,商用软件开发者现在也干了上来并使用blogs(weblogs)作为开发过程的重要的一个部分。Big-用来称呼那些独立软件开发商(ISVs)-大角色如Microsoft、IBM和Sun都已经意识到他们不能满足每一个产业对软件的需求,所以他们开始在小型ISVs中寻找合作关系,以期待能鼓励ISVs关注于适合纵向产业应用,这样大家都可以受益。  

基于组件的开发-在这个过程中,软件的开发是通过使用动态的连接而成的模块来构建成完整的程序完成的。  

Charles Simonyi (WYSIWYG editor的创立者)相信最终软件开发将会变成非专业人士可以有效地通过装配组件来生成个性化的软件应用程序。  

不断改进再分解工具-Eric Raymond,一个程序开发的领先思想家,仍然坚持再分解这一概念是与为Unix和开放资源程序员所熟知的get-something-working-now-and-perfect-it-later方法这一理念是完全一致的。这一理念也包括在极限编程的方法中。随着软件程序的变大,基于代码的维护和错误的诊断也会用到再分解工具。  

外购-使用这种方法,软件公司面向全球雇用一些雇员以取得时区劳动成分的不同方面的优势。提倡者认为这是有效的,软件开发团队现在可以一天工作24小时,而且能够提供快速的运转。反对者则认为项目外包的部分导致臃肿的代码,如果涉及建模的任务具有很高的协调度的话那么就只剩下工作了,并且团队里面的沟通水平会超过平均值。  

相关链接:  

Rormer CNET的开发者Dan Seewer和Kevin Cobb描述未来的软件开发。  

Charles Simonyi,WYSIWYG的缔造者,正在为未来设计简单编程工具的过程中,这种工具及是非专业人士也能使用。  

开发者使用blogs来接近他们的用户.  

IBM DeveloperWorks许多开发人员的免费可用资源之一  

10. 软件开发的术语表:  

通过即时消息浏览简易可打印小词典  

11.自我评估:  

当你看完了小词典后,测试你学习软件开发术语的收获。

上一篇:layer 2
下一篇:local loop

图片内容