首页 > 文章中心 > 正文

计算机程序开发

前言:本站为你精心整理了计算机程序开发范文,希望能为你的创作提供参考价值,我们的客服老师可以帮助你提供个性化的参考范文,欢迎咨询。

计算机程序开发

摘要:参与过大型软件项目的人都会认识到许多事情都可能出错,一但出错就可能给项目带来危害、损失或其它不利影响。风险是在项目中发生的一系列事件或不利结果的可能性。软件开发是一项高风险的活动,在项目开发过程的任何一个阶段都可能存在风险。采取积极的风险管理方式,可以使项目进程更加平稳,可以获得很高的跟踪和控制项目的能力,可以规避、转移风险,或缓解风险带来的不利影响。风险管理是对项目风险进行识别、分析、应对和监控的过程,是项目管理中很重要的管理活动,有效的实施软件风险管理是软件项目开发工作顺利完成的保证。计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。计算机程序或者软件程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。

关键字:计算机,工程应用,程序,开发

计算机程序或者软件程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程序通常称之为脚本程序。

为了一个程序运行,计算机加载程序代码,可能还要加载数据,从而初始化成一个开始状态,然后调用某种启动机制。在最低层上,这些是由一个引导序列开始的。在大多数计算机中,操作系统例如Windows等,加载并且执行很多程序。在这种情况下,一个计算机程序是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程序。目前中国国内的计算机语言应用认证主要有微软的MCSD、IBM以及SUN的SCJP,常用计算机语言主要包括C、C++、Java、Cobal、Fortran、Pascal等等,但除了Java可广泛应用于不同平台,其他语言都受到操作平台类型的限制,使编程工作复杂化,重复编程工作人员的劳动,降低了效率。因此Java也就越来越多地受到重视,被广大计算机工作者接受。特别是其基于internet的操作性,更使其方便地在网络上传播应用,加之其执行速度比其他开发语言要快,更适应现代经济发展的需要。我们可以乐观地预计Java不久将成为世界上最普及的计算机程序开发语言。编写一个程序去生成另外一个程序的过程被称之为原编程(Metaprogramming)。它可以被应用于让程序根据给定数据生成代码。单一一个程序可能不足以表示给定数据的所有方面。让一个程序去分析这个数据并生成新的程序去处理数据所有的方面可能会容易一些。Lisp就是一例支持这种编程模式的程序语言。

在神经网络里储存的权重是一种数据。正是这些权重数据,跟网路的拓扑结构一起,定义了网络的行为。人们通常很难界定这些数据到底表示什么或者它们是否可以由程序来代替。这个例子以及跟人工智能相关的其它一些问题进一步考验程序和数据的区别。

编写程序是以下步骤的一个往复过程:编写新的源代码,测试、分析和提高新编写的代码以找出语法和语义错误。从事这种工作的人叫做程序设计员。由于计算机的飞速发展,编程的要求和种类也日趋多样,由此产生了不同种类的程序设计员,每一种都有更细致的分工和任务。软件工程师和系统分析员就是两个例子。现在,编程的长时间过程被称之为“软件开发”或者软件工程。后者也由于这一学科的日益成熟而逐渐流行。

因此,如今程序设计员可以指某一领域的编程专家,也可以泛指软件公司里编写一个复杂软件系统里某一块的一般程序员。一组为某一软件公司工作的程序员有时会被指定一个程序组长或者项目经理,用以监督项目进度和完成日期。大型软件通常经历由系统设计师的掌握的一个长时间的设计阶段,然后才交付给开发人员。牛仔式的编程(未经详细设计)是不为人所齿的。

两种当今常见的程序开发方式之一是项目组开发方式。使用这种方式项目组里每一个成员都能对项目的进行发表意见,而由其中的某一个人协调不同意见。这样的项目组通常有10个左右的成员,这样做是为了便于管理。第二种开发方式是结对开发。在生活中,你通常只知道「喔!原来这网站是用Java写的」、「喔!原来这是手机的JavaGame」。若自技术层次拆解,JavaTechnology可简单区分为Java程序语言(language)与Java平台(platform)。

Java程序语言所指是撰写程序所需的语法与词汇,像学习中、英文,有一套基本的单字与语法,只要利用单字组出符合语法的句子,这就是Java程序的基础。

至于Java平台,如大家熟知的,Java共分三大平台:J2ME、J2SE和J2EE,分别专精于嵌入式行动平台、标准平台和企业应用平台,除了共同的类别函式库(API)之外,每个平台也有其特定的API,供程序设计师们开发使用。

随着开发工具陆续推出,降低了Java开发技术门坎,要写出正确无误的Java程序不是太难的事情,但论及系统性的Java软件开发,那可就不是一件轻松事。开发大型项目有三项非常重要的因素,将会影响整个项目的进度与质量,分别是人(people)、流程(process)与技术(technology)。

这三个要素是环环相扣的,任何一项要素的成败都会影响另外两个要素,与相关开发人员的素质,这不是一项简单容易的任务,但有好的方法可以完成。真正困难的不是Java程序语言或是API的使用,而是整个对象导向程序设计的概念。也标榜与Java有着类似的对象导向架构,除执行平台不同、API的名称不同,本质与Java可以算是孪生兄妹,在渐进式的开发过程中,透过不断的提炼(refine),可趁早发现问题且找出解决方法,也确保每一工作项目的进度。不过,在架构(Architecture)方面,RUP确实着墨较少,而架构优劣也是足以影响软件系统成败的关键因素。

QoS(QualityofService)或是SLR(ServiceLevelRequirement),我想是每个系统最基本的要求,它包含可用性(Availability)、可管理(Manageability)、可信赖(Reliability)、可扩充(Scalability)和安全性(Security)等条件。

举例而言,先前某家外商银行因系统设计不良而导致外人可轻易猜出参数设定的方式,直接入侵系统窃取消费者隐私数据;也有某家电信业者为没考虑系统的负载量,而导致在耶诞、跨年等重要节日时,涌入大量简讯的尖峰时期造成服务塞车、系统当机。虽说不同的程序技术皆有其满足QoS的方法,相较之下,Java对上述五大项功能的支持应该算是最为丰富。如在J2EE的设计模式(DesignPattern)中,几乎都是为解决此几项问题而设计,之后再配合程序语言本身的强固性,开发而成的企业级应用系统,我想应可满足客户对于QoS的严格要求。先看研发人员这部分。我想,要满足技术与流程两项因素,关键都是人。如何选择对且合适的技术,要有专业人才;如何有效管理流程?如何规划满足AMRSS五项需求的系统架构?这都是需要有经验的管理人才及架构师(architect)。当然,能不能写出漂亮且可完善运作的程序代码,也是需要有一定水平的研发人员。软件开发工具有很多种,现在常见的软件一般用DelphiVBVC++C++BuilderPB等开发的,你其它有一个概念不要混淆,一般开发工具叫开发集成环境,而这些开发集成环境是基于某种语言,一种语言可能有多种开发集成环境,如C++就是VC++与C++Builder等,一个软件项目研发的设计流程是怎样的呢?以通常标准的设计方法为例。第一个步骤是市场调研,技术和市场要结合才能体现最大价值。第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操作手册。用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了很多操作方面的流程和条件。数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成了一半多。第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤。第四个步骤是详细设计,这是考验技术专家设计思维的重要关卡,详细设计说明书应当把具体的模块以最'干净'的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软件系统在完成了一半的时候,其实还没有开始一行代码工作。第五个步骤是编码,在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候吗?从来没有!第六个步骤是测试测试有很多种:按照测试执行方,可以分为内部测试和外部测试,按照测试范围,可以分为模块测试和整体联调。按照测试条件,可以分为正常操作情况测试和异常情况测试。

按照测试的输入范围,可以分为全覆盖测试和抽样测试。总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会又不可预料的问题存在。完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,知道这个软件被彻底淘汰为止。