欢迎来到天天文库
浏览记录
ID:30463743
大小:89.25 KB
页数:12页
时间:2018-12-30
《浅谈软件的特性及其意义》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、浅谈软件的特性及其意义浅谈软件的特性及其意义2011年07月12日星期二10:22我们对软件的大体映像,建立于其根本特性之上;而软件的外部行为表现、和内部结构等,均受这些特性的影响和制约,并反反复复地印证着那些特性。人们往往不愿意浪费时间去认真思考软件的本质特性,其后果常常是使用了错误的方法去开发软件。软件是人类有史以来创造的一种非常特别的制品,它具备与传统制品完全不同的特性。而软件的这些特性既来自信息技术本身,也来自其所要解决的问题域。正是它的这种特殊性,使得人类至今仍然在苦苦寻觅解决软件开发问题的终极手段--所谓"一
2、枪毙命的银弹"。从1991年起一直从事IT行业,长期担任软件开发的高级技术和管理职务,拥有非常丰富的工作经验(其中有2年硬件开发的特别经历);曾经成功主持过多个大型软件项目及软件产品的开发;是国内较早引入UML模型驱动开发方法的倡导人之一,和最早的UP统一软件过程推动人之一;目前是国内培训与咨询界最受欢迎的资深软件架构师之一,和屈指可数的能够领导开展软件教练项目的顶级咨询师之一。曾经给东软、华为、中兴通讯、雅虎中国(3721)、西门子、海南航空集团等知名企业做过教练项目或咨询培训。软件的精确性与模糊性大部分人造物,比如象
3、建筑,都可以允许一定的误差存在。我们在修建公路时,并不苛求最终的路面位置与设计图中的坐标值丝毫不差;在建造楼房时,也不要求施工队浇注的钢筋混泥土框架与设计的承重指标精确相符。一方面,这是因为人类还没有能力以合理的成本在建筑上实现极高的精度;另一方面,人类可以通过留有余量的手段来解决误差问题。例如建筑师在设计楼房时,会为承重指标留一定的余量,即使施工队浇注的框架结构强度比设计指标低一点,也不会因为这种不精确而导致其坍塌。(留余量、多付出一定的代价以规避风险的做法,实际上是传统工程的一种通行原则,称为Overengineer
4、ing过度工程或过度设计;极端的例子是运载火箭上的控制设备至少备有三套,以防控制指令出错)但是软件却不像上述其它人工制品,软件的最终交付形态是二进制的可执行码,执行码是不能容忍误差的。想象一下,我们复制一段可执行文件到主机上去运行,如果文件中的某个字节出现了错误,这时我们恐怕只能向上帝祷告,祈求系统不要突然挡机了。据说欧洲亚利安娜火箭一次发射失败的主要原因,就是其飞行控制软件中的一行代码有误所造成的。实际上,程序代码中的任何误差,都可能导致软件的整体失效;人们也无法通过简单地留余量的(过度工程)方式来解决这种问题。其背后
5、的原理是:建筑设计的客体内容(结构、材料、工艺等)本身并不是精确的东西(取值是连续的);而软件开发的客体,是计算机的执行序列码,它本身是绝对精确的东西(取值是离散的,最终会转化为机器中代表0/1的电平信号),不允许误差的存在(当然,如果未来哪一天,神经元计算体系取代目前的冯·诺依曼体系,局面可能就完全不同了)。软件的这种精确性,迫使人们在开发时,必须投入大量的精力来确保代码的正确性。而人类的思维特性正好与之相反,是模糊和充满误差的。因此,程序员很难在第一次就写出正确的代码;他总是要不断的测试这些代码,然后调试、跟踪,进行
6、除错,直到获得正确的结果。这样,软件的测试与验证在开发活动中就占据了极其重要的地位。另外,其它行业中很少会出现软件开发中的一种特有现象--程序员大部分时间中不是在编写新的代码,而是在排除已有代码中的各种Bug;更要命的是,程序员自己也没有把握,在其承诺的时间内,将主要的缺陷都排除掉。软件的精确性还体现在软件的规格定义上,如果软件的需求规格没有定义准确,那么据此所开发出来的交付也不大可能符合用户的要求。理论上已经证明,程序的百分之百正确性是不可能实现的。因此软件同样无可奈何地需要容忍一定误差的存在,但这种误差主要体现在软件
7、的某些质量范围上,而软件的功能本身在逻辑上仍然是排斥误差的。软件中的可以接受的误差或不精确主要体现在:◆交付的可靠性误差--用户对交付中缺陷的接纳程度(用户能够接受一些非关键功能的失效)。开发组总是尽量减少交付中的缺陷数量,但实现零缺陷在理论上是做不到的;因此,只要将交付的缺陷率控制在一定范围之内,能够为用户所容忍就行了。◆软件的健壮性误差--软件对规格定义之外的异常状况的适应能力(用户总是可能执行一些非法的操作等)。开发组应当在规格定义中就将异常处理囊括进去,并在设计时考虑更多的异常处理场景;这样用户的非法操作不至于引
8、起系统的崩溃。◆系统的性能误差--软件性能处于用户能够接受的范围之内。开发组尽力设计性能最优的方案,比用户的接受标准更高,为今后系统的演进留下更大的余量(例如用户数量随业务的发展而呈几何指数增长)。◆范围类规格误差--软件中涉及到一些规格定义,这些规格本身是一种范围定义;开发组在不确定的时候,可以选择定义更大的范围值
此文档下载收益归作者所有