软件编码综述

一:软件编码的任务与目标
将软件设计的结果翻译成计算机可以“的形成使用某种语言描述的程序。
程序的质量主要取决于软件设计的质量,程序设计语言的特性和编码途径也对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。
二:常用程序设计语言及开发环境的特点与适用范围;
1、项目的应用领域
(1)科学工程计算。需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有FORTRAN语言、C语言等。
(2)数据处理与数据库应用。SQL为IBM公司开发的数据库查询语言,4GL称为第4代语言。
(3)实时处理。实时处理软件一般对性能的要求很高,可选用的语言有汇编语言、Ada语言等。
(4)系统软件。如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。
(5)人工智能。如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人工智能领域内的系统,应选择Prolog、Lisp语言。
2、软件开发的方法
有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用4GL。如果是面向对象方法,宜采用面向对象的语言编程。
3、软件执行的环境
良好的编程环境不但能有效提高软件生产率,同时能减少错误,有效提高软件质量。
4、算法和数据结构的复杂性
科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系统软件领域的问题,数据结构.比较复杂,因此选择语言时可考虑是否有完成复杂算法的能力,或者有构造复杂数据结构的能力。
5、软件开发人员的知识
编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件项目的类型,敢于学习新知识,掌握新技术。
三:编程规范的作用和内容;
(1)提高可读性
编码规范,帮助我们写出人类容易理解的代码,它为我们提供了最基本的模板,良好的编码风格,使代码具有一定的描述性,可以通过名字来获取一些需要IDE才能得到的提示,如可访问性、继承基类等。
(2)统领全局,促进团队协助
编码规范,要求团队成员遵守这一统一的全局决策,这样成员之间可以轻松地阅读对方的代码,所有成员正以一种清晰而一致的风格进行编码。而且,开发人员也可以集中精力关注他们真正应该关注的问题——自身代码的业务逻辑,与需求的契合度等局部问题。

(3)有助于知识传递,加快工作交接的好处是开发人员可以很快的接手项目组其他成员的工作,快速完成工作交接。
(4)减少名字增生,降低维护成本
在没有规范的情况下和容易为同一类型的实例起不同的名字。对于以后维护这些代码程序员来说会产生疑惑。
(5)强调变量之间的关系降低缺陷引入的机会
命名可以表示一定的逻辑关系,是开发人员在使用时保持警惕,从而一定程度上减
风格的相似性,能让开发人员更迅速,更容易理解一些陌生的代码,更快速地理解别人的代码。因为,他和你的代码风格是一样的,你没有必要对他的一些个性化风格进行揣测。这样少缺陷被引人的机会。
(6)提高程序员个人能力
不可否认,每个程序员都应该养成良好的编码习惯,而编码规范无疑是教材之一。从一个程序员的代码本身能看出很多东西。所以,即便是为了自身发展,作为程序员也没有理由***这种规则的存在。你可能没有认识到,我们正默默地得益于编码规范。
编码规范的基本内容
1、代码简洁,避免冗余,要使代码统一,易于阅读,就要做到遵循严格的规范
  每个源程序文件都应有文件头说明
  每个函数都有函数头说明
  主要变量(结构、联合、类或对象)在定义或引用时,应添加能反映其含义的注释
  常量定义时应有相应的说明
  变量、常量和函数的命名都应一目了然
  处理过程的每个阶段应有相应的注释说明
  在典型算法前都有注释,一目了然的语句不加注释
  保持注释与代码完全对应
  利用缩进来显示程序的逻辑结构(缩进后的代码在后期维护时会结构清晰且易于维护)
2、使代码不受单一平台和编译器的制约,方便日后的移植,即增加适应性,这就要求开发的程序能在几乎所有的环境下都能成功的运行而不仅是局限于开发者的环境中,例如Web开发工程师就应该保证自己的程序能在类型繁多,版本繁多的浏览器中均能运行且不会造成兼容性问题。
3、保证基本安全,避免代码漏洞,意味着该软件在测试运行的过程中具备避免可能发生故障的能力,且一旦发生故障,能自我解除或排除故障,软件的可靠性必须在设计阶段就确定,在开发和测试阶段再考虑就困难了,同时,软件应有一定的健壮性和可扩展性,即软件对于规范要求以外的输入能够判断出这个输入不符合规范要求且有合理的处理方式,软件设计完成后要留有升级接口和升级空间,对扩展开放,对修改关闭。

四:常用版本控制工具及特点
Clearcase是Rational公司(2003年被IBM收购)的一款重量级的软件配置管理(SCM Software Configuration Managemen)工具。不同于CVS和VSS,Clearcase涵盖的范围包括:版本控制、建立管理、工作空间管理和过程控制。从最初的软件配置计划,到配置项的确立,从变更控制到版本控制,它贯穿于整个软件生命周期
CVS 是Concurrent Versions System 的缩写,它是开放源代码软件世界的一个伟大杰作,由于其简单易用、功能强大,跨平台,支持并发版本控制,而且免费,它在全球中小型软件企业中得到了广泛使用。其最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是读源代码。CVS是一个典型的Server/Client端软件,有UNIX版本的CVS 、Linux版本的CVS,和WINDOWS版本的CVS,在下载的软件包中已经包含了Server端和Client端,但是因为我们在工作中一般都是使用Windows操作系统,所以我们可以再下载一个Windows下CVS的Client端软件WinCVS。
VSS微软的产品。简单好用,局域网中用VSS。用于Team级还可以,企业级不好。仅支持Windows 操作系统。
PVCS MERANT 公司的核心产品PVCS,PVCS的最新版PVCS8.0。在PVCS8.0中,过程支持的功能与PVCS进行了集成。看到网上对它的介绍不多,据说曾经赠送给国内很多大的机构使用。主要功能:软件配置管理;问题管理;过程控制与自动化, 帮助软件开发组织自动提高软件产品质量。
Perforce是美国perforce软件公司的软件配置产品家族,其特点是易用性强,速度快。主要特性【smchina.net 观点 】: 安装、配置和管理非常简单,安装过程几分钟就可以搞定 ;基于TCP/IP的客户服务器架构,不依赖于其他网络协议如NFS等 ;采用流式传输协议提高传输效率 ;易用,命令行客户端容易上手 ;文件间分支技术更自然符合开发人员工作习惯 ;与变更管理集成,并提供开放接口,支持第三方变更管理工具

五:结对编程和测试驱动的软件开发的实施方法。
结对编程:
1、结对的双方限定为同一项目组;
2、领航者和实施者坐在同一台速度较快、配置较高的机器前,要保证两个人都能看清屏幕,尤其是领航者(可以考虑接一个显示屏);
3、两个人至少保证每分钟交流一次;
4、在我们提高班,建议用有经验的“老手”带“新手”的方式或者“新手”之间组合,尽量避免两个人都特别经验丰富,“老手”或“新手”在工作开始之前应该向对方解释清楚自己正在做的工作;
5、两名开发人员先共同制定一套设计方案,但绝大部分应由实施者完成;
6、代码完成后进行单元测试;
7、代码审查小组进行审查;
8、实施结对轮转机制,包括两方面:
(1)、领航者和实施者在一定时间内互换角色(比如一个小时,双方可以根据实际情况协调)
(2)、每个小模块完成后进行人员轮换,即更换结对对象(由于结对本来的目的之一就是每个人都需要了解整个项目的需求,所以几乎不存在“合作思维中断”现象)。
测试驱动的软件开发:
1、 识别所需的功能增量
2、 针对此功能编写一个测试并实现为一个自动测试
3、 运行此测试,以及所有已实现的其他测试
4、 实现这个功能,并重新运行这个测试
5、 一旦所有的测试成功,转入去实现下一个功能

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 16:06
已编辑
快手电商 后端 23k-35k
点赞 评论 收藏
分享
10-25 23:12
门头沟学院 Java
点赞 评论 收藏
分享
11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务