软件理论十篇

2024-09-10

软件理论 篇1

关键词:软件构架,概念,发展历程,局限性

1 概念

在计算机发展的早期,大型计算机系统主要是被设计应用于非常狭窄的军事领域。在这个时期,研制计算机的费用主要由国家财政提供,研制者很少考虑到研制代价问题。随着计算机市场化和民用化的发展,代价和成本就成为投资者考虑的最重要的问题之一。

20世纪50年代,软件成本在整个计算机系统成本中所占的比例为10%———20%。但随着软件产业的发展,软件成本日益增长。相反,计算机硬件随着技术的进步、生产规模的扩大,价格却不断下降。这样一来,软件成本在计算机系统中所占的比例越来越大。到20世纪60年代中期,软件成本在计算机系统中所占的比例已经增长到50%左右。

60年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。软件危机的程度日益加剧,现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择己经变得明显重要得多。在此种背景下,人们认识到软件架构的重要性,并认为对软件架构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。

1.1 软件架构

软件架构,亦称软件体系结构,它是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。它是一个系统的草图,描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通信。

在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。直到今天,软件架构还没有一个统一的定义。本文引用IEEE Working Group on Architecture的解释:“系统在其环境中的最高层概念”。从这个定义上考虑,架构不仅仅是结构,它还应包括“符合”系统完整性、经济约束条件、审美需求和样式。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。

鉴于软件架构的特殊地位,在设计一个系统之前就必须对它的软件架构进行详细设计及构造,以软件架构作为后续工作的基石。一旦这个架构决定下来就不应轻易地进行更改,这是关系到整个系统设计的成败。因此,软件架构的设计,必须经过非常慎重的研究和考察。

1.2 软件框架

说到架构,有必要提一下软件框架。框架的定义是:它是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架的作用在于:因为提取了特定领域软件的共性部分,因此在此领域内新项目的开发过程中代码不需要从头编写,只需要在框架的基础上进行一些开发和调整便可满足要求。对于开发过程而言,这样做会提高软件的质量,降低成本,缩短开发时间,使开发越做越轻松,效益越做越好,形成一种良性循环。

框架不是现成可用的应用系统。它只是一个半成品,需要后来的开发人员进行二次开发,实现具体功能的应用系统。框架不是“平台”,平台概念比较模糊,它可以是一种操作系统,一种应用服务器,一种数据库软件,一种通信中间件等。因此,平台在应用中主要指提供特定服务的系统软件,而框架更侧重了设计,开发过程,或者可以说,框架通过调用平台提供的服务而起的作用。

框架不是构架。架构确定了系统整体结构、层次划分、不同部分之间的协作等设计考虑。框架比架构更具体,更偏重于技术细节。确定框架后,架构也随之确定,而对于同一架构(比如Web开发中的MVC),可以通过多种框架来实现。

2 发展历程

早在19世纪60年代,诸如E·W·戴克斯特拉就已经涉及“软件架构”这个概念了。自90年代以来,由于在Rational Software Corporation和Microsoft公司内部的相关活动,“软件架构”这个概念开始越来越流行起来。

卡内基梅隆大学和加州大学埃尔文分校在这个领域作了很多研究。卡内基·梅隆大学的Mary Shaw和David Garland于1996年写了一本叫做“Software Architecture Perspective on an Emerging Discipline”的书,提出了软件架构中的很多概念,例如软件组件、连接器、风格等等。加州大学埃尔文分校的软件研究院所做的工作则主要集中于架构风格、架构描述语言以及动态架构。从学者们所关注的角度不同,逐渐出现了逻辑架构、物理架构、系统架构等软件架构的分类。多层的软件架构逐渐成为主流,一个典型的软件系统都分为表现层、业务层、数据层等多个层次,来满足不断发展的软件系统的业务需求。随着现代企业对IT基础设施的依赖增大,整个企业的业务可能都会基于Internet或Intranet进行运作,因此,出现了MIS、ERP、SCM等应用系统。在这些复杂的应用系统中,软件架构至关重要,它必须保证软件系统的后期扩展性,来延长系统的生命周期,并与其它系统通过EAI或其它方式进行集成。同时还出现了“企业软件总线(Enterprise software Bus,ESB)”的架构,它试图通过确立软件模块间的、独立于技术、统一的企业级通信标准,从根本上解决应用程序的集成问题。与此同时,一些软件架构开始尝试使用CORBA等中间件解决系统异质问题,这些都为后来软件架构的研究提供了很好的路线图。

3 现状及其局限性

经过几十年的发展,软件架构的研究取得了一定的成果。然而,在研究中仍然面临着很多不易解决的问题,在面对统一的软件架构这个问题时一时还缺少标准的答案。在过去的软件系统中,由于设计不合理,接口不规范等问题,造成系统与系统间甚至是子系统与子系统间的相互通信困难,资源共享不顺畅,整合困难,容易出现所谓的“信息孤岛”和“应用孤岛”。软件架构的设计中通常都缺乏灵活性,产生了“Monolithic”设计,在设计与灵活的应用需求脱节。但在上世纪九十年代后期,这个问题逐渐被学者们所重视,一个好的软件架构应能提供灵活的扩展机制、丰富的接口、共享应该共享的信息等,这是一个良好设计的软件架构的规范,但由于技术间差异性的普遍存在,大多数系统间即便有良好定义的接口也难以得到其他系统的使用。CORBA、DCOM、EJB等中间件的出现为统一接口层的出现提供了可能。但抛开某些中间件的灵活性易用性不谈,这些异构的中间件之间的统一访问又产生了新的问题,即中间件的异构性问题。又由于新旧系统混杂,异构系统、不同的平台、开发技术、开发商、多个版本并存等问题,使得软件系统很难被重用,不可避免地需要被重写。此时,统一的软件架构得到前所未有的关注。

SOA是一种较新的软件架构,它最早在1996年被提出,但是由于当时软件实现相关技术的不足,一直未能获得发展。后来由于在分布式技术、程序设计方法学、业务计算能力等方面的长足发展,使得SOA作为“现代应用开发领域最重要的课题”被提了出来,许多研究机构、大学、软件企业都将其作为研究重点。IBM、BEA、微软等公司和机构都提出了实现SOA的新技术。尤其是一些机构联合提出以Web Service Architecture作为实现SOA的标准,这使得SOA在标准化之路上迈出了一大步,但还有很长的路要走。SOA仍远没有达到成熟的地步,甚至还没有一个获得公认的定义,研究工作大都处于理论研究阶段。

在国内,SOA还是一个新鲜的事物,虽然近两年来关于SOA的报道经常见诸各种媒体,但是炒作概念的成分居多,并没有多少实用成果。研究中,面向服务、面向组件、面向对象的理论研究成果也并不多,关于SOA的著作更是少见。在实践领域,虽然有一些国内企业提出了SOA的概念性产品,但仍很少看到其SOA系统的成熟应用的案例。由此可见,国内对SOA的研究还处于初级阶段。

然而,由于企业用户业务需求的不断变化,要求企业IT系统必须成为一个适应力强的竞争体,能随着企业环境的变化而改变,并具备柔性扩展、随时支持业务流程变化的基础功能。因此目前的很多行业,例如政府、电信、金融、医疗等等,都需要实施SOA。

SOA作为一种方兴未艾的技术,虽然很不成熟,而且具有一定的不确定性,然而这并没有阻碍SOA技术的不断发展,已有大量的国际软件公司和标准化组织对其投入了大量的资源进行研究。作为一种新型的软件开发架构,SOA具有非常大的优势,它放弃了极易带来技术差异性的“以技术为中心”的细粒度实体,而转向“以业务为中心”的服务,这符合按需计算的发展潮流,尤其适用于大规模的企业级应用开发。随着互联网络的进一步发展,分布式应用的不断普及,SOA的应用会更加的普遍并被人们所接受,成为一种最重要的软件架构。可以预见,SOA的发展会对软件设计思想产生非常大的影响并对分布式企业应用的不断普及起到巨大的推动作用。

参考文献

[1]李莉.基于自适应构件的软件架构研究[J].惠州学院学报(自然科学版),2008;3

[2]龚爱斐.基于虚拟化架构的软件开发与测试环境自动化[J].自动化与信息工程,2008;2

[3]曾仁京.集群负载的分布式软件构架分析与设计[J].福建电脑,2008;7

软件理论 篇2

关键词:即时通讯软件,英语写作教学,语言学习

1 简介

从20世纪早期至今的一个世纪以来, 计算机技术被广泛应用于二语教学。在这一时期, 技术的持续更新和发展促进了二语教学的改进, 同时技术的应用也根据二语教学的理论而改进。特别是在计算机辅助语言学习 (CALL) 的不同应用阶段, 计算机技术的应用与语言教学理论的三个阶段紧密相连:计算机辅助教学 (CAI) , 又称为传统CALL, 是CALL的最初应用, 其反映了结构主义的教学理论;智能CALL反映了认知主义的教学理论;而基于网络的语言教学 (NBLT) , 反映的是社会认知主义的教学理论。

如今, Web 2.0技术在国内外被广泛应用。其中博客和播客作为Web 2.0技术的两种形式被较多地应用于我国的二语教学及其研究领域中。博客和播客反映了Web 2.0技术的异步交流功能, 而Web 2.0技术还有另一个重要的功能, 即同步交流, 如Facebook和QQ的聊天功能。

1999年, 腾讯公司研发了基于英特网的即时通讯网络工具, 简称QQ。QQ的互动功能非常强大, 它不仅支持在线的文本交流、视频共享文件传输, 还支持离线交流。为满足用户的不同需要, QQ还设有电子邮箱、博客、QQ空间、论坛、聊天室和QQ群等功能。目前, QQ是亚洲第一、世界第二的即时交流工具, 其注册用户达到64亿人。尤其在学生群体中, 使用QQ更为普遍[1]。

在我国, 英语写作的教与学是个薄弱环节。为应对考试, 英语写作教学仍然止步于结构主义所强调的句式练习或认知主义所强调的写作策略的改进。学生缺乏英语写作的内部动机, 所以在英语写作时经常言语匮乏, 无从下笔。社会认知主义认为写作是一个社会现象, 写作的目的是为了和读者进行交流。网络环境提供了一个平等交流的平台, 是写作的催化剂。但是国内将网络技术应用于英语教学的研究多集中在博客、播客、电子邮件等领域。因此, 结合我国国情, 笔者认为QQ辅助英语写作教学有广阔的发展空间。

2 相关文献

2.1 与基于NBLT的写作教学相关的研究

Andrew在《利用课堂和学生博客创建一个写作课程》一文中提出, 因为大多数大学实验室已联网, 写作教师可以很容易地利用博客创建课堂, 从而为学生提供撰写和提交课堂作业的机会。Noraien在《通过电子邮件讨论的合作学习:ESL课堂写作教学策略》一文中认为, 电子邮件为进一步研究ESL大学写作课堂提供了可能性, 可以加强学生的学习, 提高学生的语言能力, 促进学生的积极态度和兴趣, 改善学生的表现。Fox认为, 教师可以用播客教授学生听力、口语和拼读, 同时提高其文化意识。Paul在《使用维基的在线合作写作》一文中指出, 维基有利于促进ESL学生的合作写作。

郎永清在《电子邮件在大学英语写作课堂的应用》一文中认为, 电子邮件应用于英语写作使教师和学生从传统的协作工具中解脱出来, 使教学成为一个发现、思考、探索和创造的有趣过程。王芬和张玉莲在《网络环境下写作策略在英语教学中的培养和应用》一文中, 分析了目前英语写作教学的情况, 探索了大学英语教学改革背景下写作教学的新模式和新方法。杨行胜在《网络博客在英语教学中的应用》一文中指出, 博客应用于英语教学, 有利于提供大量的教学资源, 促进教学互动;在发展和完善评价体系、培养学生的英语写作能力和开展英语课外活动上有很好的效果。陈艳和孙卫华在《维基平台在初中英语写作教学中的建设和应用》一文中指出, 维基写作教学平台的应用有明显的效果。蔡基刚在《中国大学生英语写作在线同伴反馈和教师反馈对比研究》一文中指出, 在线同伴反馈可以提高学生为同伴写作的意识, 强化学生学习和掌握写作策略的动机, 改进学生的作文内容和语言应用, 帮助他们建立一个英语学习社区。

2.2 我国应用QQ进行英语教学的相关研究

高永兵[2]认为, 使用QQ群可以实现在线的CAI教学, 从而改善高校学生与教师之间的疏远关系。齐菊红在《QQ的教学功能》一文中认为, QQ可以激发学生的学习兴趣, 提高他们解决问题的能力, 从而进一步促进教学。陈志、陈晓辉在《QQ在教学中的应用》一文中, 介绍了QQ的特性及其在ESL课堂上的应用, 如课后辅导和Web Quest学习等。王歆军在《QQ空间在英语教学论课程实施过程中的应用》一文中认为, 受试者在QQ空间教学反思及资源共享两个方面认同程度较高, 不过对于QQ空间交流的频度及深度有待进一步提高。

2.3 我国应用QQ进行英语写作教学的相关研究

于兰[1]介绍了QQ好友、QQ空间、QQ讨论组和QQ电子邮件的功能, 并阐述了网络辅助英语写作的QQ平台的创建、内容设计和实施步骤。

3 理论基础

3.1 社会认知语言学

社会认知语言学与认知主义语言学几乎流行于同一时期。社会认知语言学认为, 语言学习不是个体头脑中的现象而是社会建构的现象。在20世纪80年代, “交流能力”成为语言教学的热门词语。教学所需要的不仅仅是语言能力, 还有社会语言能力、话语能力和策略能力。当今, 由于语言相互交流使用的需要, 交流过程已与语言产出同样重要, 因此, 教学更倾向于以学生为中心的模式。

Crook指出:社会认知主义理论认为学习不仅是对个体认知结构的改变, 也是学习者的话语和活动在社会结构上的改变。Holquist认为, 话语不是情境的反映, 话语本身就是情境。因此, 语言教学不只提供可理解性输入, 还帮助学生进入其在课外可能遇到的各种真实的社会话语情境和话语社区中。

社会认知语言学认为, 写作是嵌在特定社会文化背景中的过程。写作教学不应只侧重于个体策略的发展, 还应学习与不同读者进行交流的适当方法。

3.2 可理解输出假设

Swain认为, 可理解输入不能满足二语学习, 而可理解输出同样重要, 提出了“可理解输出”假说, 认为只理解是不够的, 学习者还需要产出, 至少提供有情境、有意义的使用机会, 并把学习从一个纯粹的语义分析转到句法分析上来;在二语学习中, 当学习者在语言知识上遇到不足时, 学习便产生了;通过注意, 学习者意识到了这一不足, 并尽可能修改其产出从而学到有关语言的新知识。

Swain认为产出有三个功能: (1) 注意功能。学习者在其想要表达和能够表达之间遇到不足时, 就会注意到在语言中他们所不知道的或是一知半解的知识。 (2) 测试假说功能。当学习者表达时通常隐含着某种假说。通过表达, 学习者测试这一假说并从谈话者中得到反馈。 (3) 元语言功能。学习者表达其所学到的语言, 由此方式产出使其控制并且内化语言知识。Swain认为, 当学习者使用他们自己的目标语言进行表达时, 产出体现的是元语言功能, 使学习者能够控制并且内化语言知识。也就是说, 学习者的可理解输出加强了二语使用的准确性和流利性。

4 结束语

在我国, 学生学习英语主要是为了应付考试, 在英语试题中大部分为四选一的类型, 所以英语教学的重点便集中在选择题型所对应的技能 (语音、语法、词汇、阅读) 上, 而很少关注写作。在课程设计上, 写作课往往被缩略为学生的课后作业, 即完成一篇作文的写作。

英语写作教学的重点在于交流, 应充分利用技术资源, 创建真实情境, 促进学生之间的交流。计算机和英特网的普及促进了NBLT的发展。在我国, 一些学校已经建立了自己的校园网, 大多数学校也有了自己的多媒体计算机教室。硬件设备的逐步发展为NBLT提供了良好的条件。专业化网络教学平台的购买和开发需要大量的资金和人力, 而QQ的使用率在我国教师和学生中又比较高, 所以利用QQ进行英语写作教学无疑是一个简便、经济的途径。QQ交流鼓励平等参与, 提供了真实的交流和互动, 延展了写作课堂之外的时间和空间。因此, 利用计算机网络技术———QQ进行英语写作教学, 可以为学生创建一个安全的交流环境, 为学生提供读者, 实现“建立丰富的课程资源体系、分享学习资源、培养有效的交际策略、利用多种渠道使用英语”等目标。

参考文献

[1]于兰.基于QQ平台的网络辅助英语教学[J].中国电化教育, 2010 (5) :84~87.

印度软件产业兴起的理论探讨 篇3

一、产品价值链与垂直型专业化分工主导的新国际分工格局

第二次世界大战以后,随着科学技术的进步、国际分工的不断深化和扩大及跨国公司的兴起,国际间货物、资本、技术和劳动力的流动日益增长。经济全球化作为生产力发展的必然结果,呈现出一种不可逆转的趋势,其本质特点可归结为一种世界范围内各国和各地区经济融合成整体,按照市场经济要求保证生产要素自由流动和合理配置的历史过程。国际贸易方式也随之发生重大改变,加工贸易成为发展中国家参与国际分工的主要形式与开展国际贸易的主要方式。

20世纪60年代以来,为应对日益激烈的产业内部竞争,跨国公司着手开展复合一体化战略,各国生产能力均被纳入其中,具备劳动力比较优势的国家或地区集中发展各产业中劳动密集的生产环节,拥有资本优势的国家或地区则集中发展各产业中资本密集的生产环节,拥有技术优势的国家或地区则集中发展各产业中技术密集的生产环节。母公司和子公司之间按照各自竞争优势分别处于产品价值链的节点上,形成相互间的垂直分工或水平分工,它们共同组成一个以价值增值链为纽带的国际一体化生产体系。产业的全球化态势由此形成。

产业内部的垂直型专业化分工成为国际分工的主导。在新的分工格局下,特定行业最具竞争力的国家占据具有垄断地位的战略环节,占有着价值链上最多的价值增加量;具有一定竞争力的国家占据不完全竞争环节,占有一定的价值量;而在价值链中不具国际竞争力的国家,只能占据价值链中完全竞争环节,在价值链中占有很小的价值增加量。因此,从产业的国际竞争角度看,国际产业内部的生产分工使得一国的竞争优势不再体现于最终产品和某个特定产业上,而是体现在该国在全球化产业的价值链中所占据的环节上。而对于发展中国家来说,其全球化产业的成长过程,事实上就成为不断培育和积累竞争优势,由劳动密集、资本密集的非战略环节一步步向技术密集的战略环节挺进的过程。

二、印度软件产业发展现状

在2001-2002年间,印度软件公司的销售综合增长率每年超过50%。印度软件和ITES出口2003-2004年达到129亿美元,2004-2005达到177亿美元,2005-2006达到234亿美元,与2004年相比净增长率达到31.7%。2006年,印度拥有软件公司近3000家,从业人员多达41万,前十家软件公司的人员规模在万人以上,企业盈利在20%以上。由世界著名的麦肯锡管理咨询公司为NASS-COM(印度软件和服务企业协会)曾经做过的一项研究中预测印度软件产业总额将在2008年达到870亿美元,其中出口额可达500亿美元。根据世界银行对各国软件出口能力的调查结果,印度软件的出口规模、质量和成本三项综合指标居世界首位。难怪比尔·盖茨在对印度软件业进行考察之后,曾下断言:下一个软件超级大国不是美国,不是日本,也不是欧洲国家,而将是印度!

印度政府高度重视软件产业的发展,把软件产业视为国家经济起飞的支点。印度政府除了为软件产业的发展提供法律制度和市场规则的基本框架之外,它在更多时候充当的是私营部门的服务者的角色。印度政府的软件产业政策和相关措施既保证了高科技(软件)产业生态的四个基本要素(企业、人才、技术、资金)中的每一个都健康的发展,又促进了他们之间的良性互动,从而为印度软件产业的发展创造了良好的产业生态环境,使软件产业这种新兴产业在其产业化的道路上,从众多的产业中脱颖而出,形成了今天的繁荣。值得一提的是,产业生态的四个基本要素之间的良性互动是形成良好的产业生态环境的基础:众多的软件高级人才和殷实的风险投资是推动印度软件产业发展的两个重要因素,而人才的流动又可以带动资金及技术的流动,许多规模较大的软件企业是在资金的有力支持下建立起来的。

三、印度软件产业的兴起缘于在产品价值链上的高端定位

在产业全球化的背景下,生产链各个基本功能环节在地理空间上越来越发生分离,各自集聚成群,由此形成了一个按附加值尺度衡量具有典型等级特征的空间等级体系。全球价值链构建在全球产业链的基础上,全球价值链条的驱动力基本来自生产者和购买者。换句话,就是全球价值链的各个环节在空间上的分离、重组和正常运行等是在生产者和购买者的推动下完成的。随着制造环节持续转移,发达国家的全球竞争优势越来越体现在无形资产方面,而有形资产方面的优势越来越体现在发展中国家。与之相对应,购买者驱动模式逐渐取代生产者驱动模式,也就是说品牌、销售渠道、链条管理能力等无形资产在全球价值链中的作用正处于不断上升的过程中。尽管在购买者驱动的价值链上构建制造业全球竞争优势的周期有加速的特征,但是原先在本环节具有竞争优势的国家和地区仍然会利用其几十年来建立起来的与发达国家的外包渠道来充当该产业的全球代理。

印度软件产业的兴起缘于产品价值链的高端定位(基于良好的印度高科技产业生态),这使得印度软件业的加工贸易存在着较大的增值空间,对GDP的贡献率更高,反哺国内相关产业的发展,形成良性发展态势。在过年的5年里,亚太地区增长最快的是IT行业,强劲的需求带动印度软件产业的出口,使得印度软件产业对GDP的贡献率从1999-2000年的1.2%上升至2005-2006年估计的4.8%。印度软件公司通过主动新建合资企业、跨国并购和结盟当地企业等方式提高和加强全球服务能力。这使得他们获得了新服务的“端对端”的提供能力。全球软件业巨头,如Microsoft,Oracle and SAP,都在印度建立了研发中心。尽管目前印度软件业从高科技产业生态的四个基本内涵——高科技产业的上中下游关系、高科技产业的附加价值链、高科技产业的密集度以及高科技产业技术与商品化能力一的角度分析还存在着较多的问题。

四、印度软件产业全球产品价值链驱动力的选择

在全球价值链的架构之下,我们知道价值链蕴含着地区间价值分工的不平等,价值链中利润最丰厚的两端即下游的市场营销和上游的关键零部件等,往往属于核心企业或地区,中间生产部分则是处于被压榨的状态。尽管后起国家或地区在全球价值链中的制造环节建立全球竞争优势的进程加速了,但由于老牌或新兴工业化国家把持着其通往产品最终市场的中间环节,拉长了这些国家实际的产业升级周期。特别是在20世纪90年代以后,在全球价值链下,地方产业集群所要面对的市场规则和竞争原则发生了动态的变化。这些传统产业竞争优势的确立,很大程度上却转移到了贸易联系、品牌、融资能力等方面。

印度的软件产业是从专业代工编程服务发展起来的,距软件产业附加价值链的顶端还有相当的距离。截至2005年为止,印度软件产业的总产值中只有10%的产品属于自主版权产品,而其余的90%都属于集成类、代人加工类的软件。因此,创建自主品牌是毋庸质疑的。这是印度软件业高端定位必须要具备的条件。根据经济学原理,缺乏对国外市场的控制和国内市场的支撑是很难培育出具有有效的国际竞争力的产业的。结合印度软件业的实际,购买者驱动力模式几乎是不可能的。尽管缺乏对国外市场控制和国内市场的支撑,但前文提及的良好的印度软件产业生态却为在生产者驱动模式的建立提供了可能。

软件测试理论总结 篇4

软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估

软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力

软件测试与质量保证的区别:

质量保证(QA):质量保证的重要工作是通过预防、检查与改进来保证软件质量。QA采用“全面质量管理”和“过程改进”的原理开展质量保证工作。所关注的是软件质量的检查与测量。虽然QA的活动中也有一些测试活动,但所关注的是软件质量的检查与测量。QA的工作是软件生命周期的管理以及验证软件是否满足规定的质量和用户的需求,因此主要着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析找出问题或评估。

软件测试:测试虽然也与开发过程紧密相关,但关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。测试人员要“执行”软件,对过程中的产物----开发文档和源代码进行走查,运行软件,以找出问题,报告质量。测试人员必须假设软件存在潜在的问题,测试中所做的操作是为了找出更多的问题,而不仅仅是为了验证每一件事是正确的。对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,因此软件测试是保证软件质量的一个重要环节。

软件测试的目的:尽可能多的发现软件中存在的错误。

Grenford J.Myers 就软件测试目的提出了以下观点:

1、测试是程序的执行过程,目的在于发现错误

2、一个好的测试用例在于能发现至今未发现的错误

3、一个成功的测试是发现了至今未发现的错误的测试

测试的目的,是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。

软件测试原则:

1、所有的测试都应当追溯到用户需求

2、应当尽早地和不断地进行测试

3、完全测试是不可能的,测试需要适可而止

4、测试应充分注意软件中的群集现象。测试中该模块残存的缺陷与该模块中已发现的缺陷数成正比。

5、程序员应避免检查自己的程序,软件项目组应避免测试自己组开发的程序

6、工程界中的80-20原则;BUG的80-20原则

7、测试应从“小规模”开始,逐步转向“大规模”

8、同化效应,为了达到最佳测试效果,可以由第三方来构造测试

9、检查程序是否做了该做的工作只是完成了一半,另一半是检查程序是否做了不该做的工作

10、设计测试用例时必须包括正常的输入和异常的输入

软件包括程序、数据和文档

软件测试对象:程序、数据和文档

软件测试中的V&Vi:

验证(vertification)是保证软件正确实现特定功能的一系列活动和过程,目的是保证软件生命周期的每一个阶段的成果满足上一个阶段所设定的目标(是否按需求做出了功能正确的产品)

确认(validation)是保证软件满足用户需求的一系列的活动和过程,目的是在软件开发完成后保证软件与用户需求相符合(是否做出了用户想要的产品)

验证与确认都属于软件测试,它包括对软件分析、设计以及程序的验证与确认。软件测试分类

按照开发阶段划分:单元测试、集成测试、系统测试、(确认测试)和验收测试

单元测试:又称模块测试,逻辑测试或结构测试,是针对软件设计的最小单位--程序模块进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各个模块内部可能存在的各种错误。单元测试需要从程序的内部结构出发设计测试用例。

单元测试的内容:

1)模块接口测试

2)局部数据结构测试

3)路径测试

4)错误处理测试

5)边界测试

单元测试辅助模块:

驱动模块(drive):相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果

桩模块(stub):也叫做存根模块。用以代替所测模块调用的子模块

集成测试:又叫组装测试,综合测试或联合测试。通常在单元测试基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。

集成测试需要考虑的问题:

1)在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失

2)一个模块的功能是否会对另一个模块的功能产生不利的影响

3)各个子功能组合起来,能否达到预期要求的父功能

4)全局数据结构是否有问题

5)单个模块的误差累积起来,是否会放大,以至达到不能接受的程度

集成测试组装方法:一次性组装方式和渐增式组装方式;后者又包括:自底向上、自顶向下、混合集成集成测试完成的标志:

1)成功地执行了测试计划中规定的所有集成测试

2)修正了所发现的错误

3)测试结果通过了专门小组的评审

确认测试:通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试是检测与证实软件是否满足软件需求说明书中规定的要求。

确认测试一般包括有效性测试和软件配置复查

系统测试:是为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并满足用户需求。

验收测试:按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。

验收测试往往在系统测试完成后、项目最终交付前进行。

验收测试计划、测试方案与测试案例一般由开发方制定,由用户方与监理联合进行评审。验收小组由开发方、用户方、监理方代表、主管单位及行业专家构成。

按照测试技术划分:白盒测试、黑盒测试、灰盒测试;也可划分静态测试和动态测试。

静态测试是指不运行程序,通过人工对程序和文档进行分析与检查;

动态测试是指通过人工或使用工具运行程序进行检查、分析程序的执行状态和外部表现。白盒测试:又称结构测试、逻辑测试,指通过对程序内部结构的分析、检测来寻找问题。白盒测试把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件的内部动作是否按照设计说明的规定正常进行。白盒测试用例设计方法:逻辑覆盖法和基本路径测试法

逻辑覆盖法:

根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。

语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次

判定覆盖:通过执行足够多的测试用例,使得程序中的每个判定可能取值(真或假)都至少满足一次,也称为“分支覆盖”

条件覆盖:设计足够多的测试用例,使得程序中的每个判定包含的每个条件的可能取值(真/假)都至少满足一次

判定/条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次

组合覆盖:设计足够多的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次

路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径

基本路径测试方法:

在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下四个步骤和一个工具方法:

1)以详细设计或源代码作为基础,导出程序的控制流图

2)计算得到的控制流图G的环路复杂性V(G)

3)确定线性无关的路径的基本集

4)生成测试用例,确保基本路径集中每条路径的执行

环路复杂性V(G)也称圈复杂度V(G)=区域数=判断结点数+1=边数—结点数+2

黑盒测试:又称功能测试或数据驱动测试,指通过软件的外部表现来发现缺陷和错误。黑盒测试把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序界面处进行测试,它只是检查样序是否按照需求规格说明书的规定正常实现。

黑盒测试用例设计方法:等价类划分法、边界值分析法、错误推测法、决策表法、因果图法、场景法、功能图法

等价类划分法:不考虑程序的内部结构,测试人员要对需求规格说明书的功能需求进行细致分析,然后把程序的输入域划分成若干部分,从每个部分中选取少数代表性数据当作测试用例。

等价类分为:有效等价类和无效等价类

有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合,可以检验程序是否实现了规格说明书中所规定的功能和性能

无效等价类:指对于程序的规格说明来说是不合理的、无意义的输入数据构成的集合。确定等价类的原则:

1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类

2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类

3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

4)在规定了输入数据的一组值(假定N个),并且程序要对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类

5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应将该等价类进一步划分为更小的等价类

根据已列出的等价类表,按以下步骤确定测试用例:

1)为每一个等价类规定一个唯一的编号

2)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖

3)设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步骤,使所有无效等价类均被覆盖

灰盒测试是介于白盒测试与黑盒测试之间,主要关注输出对于输入的正确性;同进也关注内部表现,但这种关注不像白盒测试那么详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。

自动化测试:通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动的测试

自动化测试的优势:

1)提高测试质量

2)提高测试效率,缩短测试工作时间

3)提高测试覆盖率

4)执行手工测试不能完成的测试任务,如压力测试

5)更好地重现软件缺陷的能力

6)更好的利用资源

7)增进测试人员与开发人员之间的合作伙伴关系

自动化测试的局限性:

1)定制型项目

2)周期很短的项目

3)业务规则复杂的对象

4)人体感观与易用性测试

5)不稳定的软件

6)涉及物理交互

开发模型:瀑布模型、原型模型、螺旋模型、增量模型、渐进模型、快速软件开发(RAD)以及Rational统一过程(RUP)

瀑布模型:需求分析、可行性研究、概要设计、详细设计、编码、测试、运行维护

软件的生命周期:需求分析、概要设计、详细设计、编码、测试、运行维护、退出使用 软件的全寿命周期费用(LCC:Life cycle cost)

测试的花费减少了运行维护阶段的花费,从全寿命周期费用来看,测试是使LCC降低了 测试模型:V模型、W模型、H模型、X模型、前置测试模型

软件测试策略:单元测试、集成(组装)测试、确认测试和系统测试。

软件失效分类:软件错误(software error)、软件缺陷(software defect)、软件故障(software fault)、软件失效(software failure)

软件缺陷定义:

1、软件未达到产品说明书中明确指明要实现的功能

2、软件出现了产品说明书中指明不会出现的错误

3、软件功能超出了产品说明书中指明的范围

4、软件未达到产品说明书中虽未明确指出但应达到的目标

5、软件测试人员认为软件难以理解、不易使用、运行速度慢,或最终用户认为不好使用 缺陷与错误严重性和优先级:

严重级:表示软件缺陷所造成的危害的恶劣程序;分为以下四个等级:

严重:系统崩溃、数据丢失、数据毁坏

较严重:操作性错误、错误结果、遗漏功能

一般:小问题、错误字、UI布局、罕见故障

建议:不影响使用的瑕疵或更好的实现

优先级:表示修复缺陷的重要程度与次序

最高优先级:立即修复,停止进一步测试

次高优先级:在产品发布之前必须修复

中等优先级:如果时间允许应该修复

最低优先级:可能会修复,但是也能发布

软件缺陷跟踪管理

(1)Bug记录信息

主要包括以下几项内容:

测试软件名称、测试版本号、测试人名称、测试事件、测试软件和硬件配置环境、发现软件错误的类型、错误的严重等级及优先级、详细步骤、必要的附图、测试注释、提交给谁

(2)Bug处理信息

主要包括以下4项内容:

处理者姓名、处理时间、处理步骤、错误记录的当前状态

软件错误的状态:

软件错误的主要状态包括以下内容:

新信息(New):测试中新报告的软件Bug

打开(Open):被确认并分配给相关开发人员处理

修正(Fixed):开发人员已完成修正,等待测试人员验证

拒绝(Declined):拒绝修改Bug

延期(Deferrend):不在当前版本修复的错误,下一版本修复

关闭(Closed):Bug已被修复

错误管理流程:

错误管理的流程可以概括为以下几项内容:

1、测试人员提交新的错误入库,错误状态为“New”

2、高级测试人员验证错误

1)如果确认是错误,分配给相应的开发人员,设置状态为“Open”

2)如果不是错误,则拒绝,设置为“Declined”状态

3、开发人员查询状态为“Open”的错误,做如下处理

1)如果不是错误,则拒绝,设置为“Declined”状态

2)如果是错误,则修复并置状态为“Fixed”

3)如果不能解决的错误,要留下文字说明并保持错误为“Open”状态

4)对于不能解决和延期解决的错误,不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可

4、测试人员查询状态为“Fixed”的错误,验证错误是否解决,做如下处理

1)如果问题解决了,置错误状态为“Closed”

2)如果问题没有解决,置错误状态为“Reopen”

测试用例:

为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。

测试用例基本组成要素:项目名称、测试人员、用例编号、测试用例说明、测试的模块、测试的输入条件、测试的预期结果、测试实际结果、缺陷编号

1、什么是软件测试,为什么要进行软件测试?软件测试与调试的区别?

答案:(1)软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

(2)因为没有经过测试的软件很难在发布之前知道该软件的质量,就像ISO质量认证一样,软件同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

(3)在软件开发的过程中,调试和测试是两个不同的过程,分别由程序开发人员和测试人员来完成。

第一,调试的过程是随机的不可重复的;而测试的过程是有计划的、可以重复的过程。

第二,调试的目的是为了隔离和确认问题的所在,并加以解决,使得程序能够正常运行;而测试的目的是为了找出与软件实现定义的规格和标准不符合的问题,保证软件能都满足用户需求。

但二者也有相同之处,最终目的都是为了提高软件质量。

2、a测试与b测试的区别?静态测试与动态测试的区别?

答案:(1)Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试;Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。总而言之,前者是内部模拟上线,后者是真正上线,让用户参与测试。

(2)静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

软件理论 篇5

随着计算机技术的飞速发展,以及与之相适应的新技术的不断涌现, 各行各业对软件开发的速度和质量要求有了很大提高。传统的“手工作坊”式软件开发方式已不能满足现在的软件市场需求;同时, 市场中有大量的遗留软件系统存在,加之软件规模越来越大, 这些都引导人们又重新思考软件系统的复用问题。1999年2月美国总统 IT 顾问委员会的一份报告中将软件列为重点支持的项目之一,认为软件是信息时代社会的最重要的基础设施,但是现实中这个基础却相当脆弱和不可靠,原因是软件越来越普及并且越来越复杂,缺乏开发可靠安全的各种软件的合用技术,软件的生产能力远远满足不了飞速发展的实际需求。因此,该报告又强调了支持软件开发方法和构件技术的基础研究。那么,什么是软件开发的构件技术,为什么把它提得这么高,它究竟对软件的开发和应用有些什么作用,构件技术的突破对软件产业的发展会带来什么影响和机遇,它的突破点又是什么,所有的这些问题正是本文要讨论的内容。

1 软件构件技术

1.1 什么是构件(Component)

这同什么是对象一样, 是大家都理解而难以准确定义的问题, 在软件工业界出现的一些概念只勾画出了这个复杂概念的轮廓,并没有一个明确的定义。

杨芙清,王千祥等人将构件定义为:构件是可以被复用的软件实体 ,由构件规约与构件实现两部分组成. 其中 ,构件规约主要由构件模型进行描述。构架是一类特殊的构件,它刻画了组成系统的构件和构件之间相互作用的关系。[1]

王直杰,张钰等人则对构件有如下定义:构件又称元件, 是指可方便地插入到语言、工具、操作系统、网络软件系统中的一种独立可重用的二进制形式的代码和数据。[2]

贺秋芳则将构件定义为:构件是应用程序中功能独立、可以明确辨识的构成成分,具有规范的接口描述,可以提供给第三方进行组装。构件可以是被封装的对象类、类树、一些功能模块、软件框架、软件构架(或体系结构) 、文档、分析件、设计模式等。[7]

这些定义基本上反映了构件的特性。一般地,我们可以这样理解构件:

构件是可用来构成软件系统的即插即用(plug and play) 的软件成分, 是可以独立地制造、分发、销售、装配的二进制软件单元。它由以下三大要素构成:

1.1.1 接口( Interface)

接口告诉构件的用户该构件能完成什么功能。

1.1.2 实现( Implementation)

实现就是让该构件得以运作的代码。一个构件可以有多个实现, 如一个构件可以同时有处理XML 文件的实现和处理关系型数据库文件的实现。

1.1.3 部署(Deployment)

部署是构件的存在形式,一般即为二进制代码或可执行文件。

1.2 软件构件技术的应用与构件模型

当前,软件构件技术已经有了广泛的应用,例如面向对象的分布式软件开发[3]和基于Web的企业应用等等。与此同时,也有不少企业加入到软件构件革新的队伍当中,例如BEA, Microsoft, IBM 和 Sun公司。比较显著的应用实例有IBM公司的San Francisco 工程[4]。它提供了可复用的分布式对象架构和一个丰富的软件构件库。在国内,比较著名的则是青鸟构件模型。[5]

构件模型(Component Model)是对构件本质特征的抽象描述。构件模型规定了构件接口的结构以及构件与软件构架、构件与构件之间的交互机制。构件模型通常还提供创建和实现构件的指导原则。一个被所有构件生产者和构件复用者所接受的构件模型实际上起到了构件标准化的作用。目前国际上已经出现了许多构件模型,有学术界的抽象程度较高的3C模型,也有应用于工程实践的实现模型(标准) , 其中最有影响的是CORBA、COM /DCOM 和EJB,而国内最著名的就是青鸟构件模型。

CORBA是由对象管理联盟(OMG)提出的,其核心是对象请求中介(ORB),是分布式对象借以相互操作的中介通道。ORB的作用是将客户对象(Client)的请求发送给目标对象(在CORBA中称为对象实现Object Implementation),并将相应的回应返回至发出请求的客户对象。ORB的关键特征是客户与目标对象之间通信的透明性。

COM ( Component Object Model) 是微软公司1995年提出的构件标准。DCOM (Distribute Component Object Model)是微软为支持网络环境而对COM进行的扩充,它使得基于COM的构件能够在位于不同机器上的两个进程间协作,使得程序员可以不必编写网络代码去处理分布式构件跨网络交互所需要的通信。DCOM中主要使用ActiveX构件作为其对象。COM+ 是微软1999 年提出的,COM,DCOM、MTS的功能有机地统一在一起,形成了一个概念、功能强的构件应用体系结构。

JavaBeans构件实现标准由Sun公司在Java语言的基础上提出的,它是一种代码构件组合重用技术,是一个可移植的、平台独立的CBSE基础设施,它允许软件开发人员基于Java 语言,开发并重用代码构件Bean。EJB ( Enterprise Java Beans)是Java Beans的扩展,是一种面向企业应用、基于Java平台的服务器端标准构件体系结构,用于使用Java程序设计语言建立平台无关的、分布式对象及面向事务的业务应用系统。

1.3 何为软件构件化

在1.1和1.2中我们能了结了构件和当前软件构件技术的发展状况。那么,究竟什么是软件构件化那?在这里我们认为所谓的软件构件化,就是要让软件开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装,或者像建筑业一样,用各种建筑材料搭建成各式各样的建筑。软件的构件化和集成技术的目标是:软件可以由不同厂商提供的,用不同语言开发的,在不同硬件平台上实现的软件构件,方便地、动态地集成。这些构件要求能互操作,它们可以放在本地的计算机上,也可以分布式地放置在网上异构环境下的不同结点上。实现软件的构件化,这是软件业界多年来奋斗的目标,可以说已经经过了几代人的努力。

2 基于构件的软件开发过程

基于构件的软件开发过程与传统的软件开发有着很大的不同,其中最显著的一点就是它的开发过程不再是“算法+ 数据结构”,而是“构件的开发+基于体系结构的构件的组装”。

2.1 基于构件的软件开发的基本思想

构件技术是应用级别的集成技术,其基本思想是将应用软件分解成为一个个独立的单元, 将软件开发地过程转变成为类似于搭积木的搭建过程,通过组装不同的软件构件单元来实现软件的集成,按照构件技术的观点, 应用软件的开发就成为各种不同构件的集成过程.这一过程可用下图来表示。如图1所示。

2.2 基于构件的软件系统的开发方法

基于构件的软件系统的开发以构件为核心, 而且在需求分析阶段就可着手进行构件收集工作, 增加了开发的并行程度, 这从另一个方面提高了开发效率。它的开发大体可以包括两部分: 一是构件的开发, 二是应用程序的开发。传统的开发方法包括面向对象的技术是以很小粒度的“软件片”开始的, 而基于构件的软件系统的开发方法是面向重用的, 面向接口和面向连接的。如下图2所示。

2.3 基于构件的软件系统的生命周期

基于构件的软件开发方式不仅可以显著的降低软件开发的时间和开发成本,而且它的生命周期也与传统软件开发的生命周期有着巨大的差别。

由于基于构件的软件系统的开发是通过选择一系列的构件并将它们组合起来的过程,它的生命周期与传统的软件系统是完全不同的.基于构件的软件系统的生命周期可归纳为:

a、需求分析;

b、软件架构的选择, 构建,分析和评估;

c、构件的开发,选择和组装;

d、系统集成;

e、系统测试;

f、软件维护。

2.4 基于构件的软件开发的一般流程

2.4.1 需求分析(Requirement Analysis)

基于构件的软件开发过程的需求分析与传统的软件开发方法大体相同都是对对象领域内的共性特征、共性需求、共性结构以及可变特征、特有需求进行归纳和一致性描述,本阶段的工作不必也未必能面面俱到, 可以随着以后行为分析的进行而不断地调整、具体、优化。

2.4.2 构件的开发,选择与修改(Component Development, Selection, Certification)

构件是整个构架中基本的逻辑单元和数据处理单元。选取适合的已有构件以及将新开发的领域构件加入构件库是本阶段乃至整个基于构件的开发方法的关键,它集中体现了软件复用思想。

这一阶段的主要任务包括根据目标系统的需要修改构件,根据开发平台的需要对构件进行必要的改变以及对构件进行适当的升级以便取得更好的应用效果等等。这一阶段工作的核心就是对构件进行修改以求它能同其它构件兼容以及在特定的系统进行应用。这一阶段开始时需要系统的需求,构件的需求以及构件开发相关的文件。结束后能够得到复合系统要求的构件和与系统集成和系统维护相关的文件。

一般的,可以从Internet网上现有的构件库或商业性软件机构进行已有构件的挑选, 也可以从先前开发的各种应用系统中提取。当然, 现有构件的接口与系统的要求可能存在差距,但并不等于该构件就不能被复用, 可以利用构件的扩展性进行进一步的剪裁加工, 以符合系统的要求。而新开发的领域构件的入库工作可以由专门的构件库管理系统完成。

2.4.3 软件架构的设计(System Architecture Design)

为了保证基于构件的软件系统能够正常有效的进行运转,系统的架构设计是十分重要的。架构的设计是评估,选择和构建基于构件的软件系统架构的过程。系统架构设计的目标是综合用户的需求,确定系统的规范,选择合适的架构和确定系统的实施细节,例如实施平台,程序语言等等。

通过研究和企业的具体实践来看基于构件的软件系统的架构应当是分层模块结构。这一架构如下图3所示:

软件的架构包括两大部分,一是应用层,它是支持一个企业正常运营的应用系统。二是构件层,包括软件中的各个构件,也分为三个层次。第一层包括仅仅应用在特殊的企业或者应用领域的构件,第二层指横跨企业内部的中层构件,包括普通的软件和与其它应用实体的连接部分,第三层是指连接操作系统和其它相关硬件的基础性构件。

这一阶段结束后我们应当得出系统集成需要的系统规范书和系统测试以维护阶段的详细要求。

2.4.4 系统集成(System Integration)

在所有的构件都就绪后, 最后就是把这些构件按系统构架组装应用系统。组装过程完成构件的连接(Connection) 和约束(Constraint) 工作, 一般只需要编写些基本代码, 诸如构件间的互相调用等即可。其过程大体包括四个部分集成,测试,改变构件和重新集成(如果需要的话)。这一阶段结束后得到系统测试需要的系统雏形和系统维护阶段需要的系统文档等。

2.4.5 系统测试(System Testing)

系统测试是确定一个系统能否满足特定的需求以及发现并改正系统实施过程中漏洞的过程。系统测试的目标是根据系统需求选择的构件集成的最终系统。系统测试应当包括功能测试和稳定性测试。在这一阶段中需要选择合适的测试方法,包括单元测试(测试单个构件),集成测试(测试由构件构成的子系统),系统测试(测试由子系统构成的整个系统)等。需要的材料包括构件设计,开发,修改阶段以及系统集成阶段的文件。通过系统测试可以得到系统维护阶段需要的资料。

2.4.6 系统维护(System Maintenance)

系统维护是指对系统的日常维修,护理和改善。其目的是通过修改错误,改善软件的运行水平以及其它活动使系统能够适应复杂多变的活动,为用户提供一个更为有效的产品或者服务。一般而言,系统维护主要有三种类型:

纠正性维护(Corrective maintenance):用以改正现有系统的失误和缺陷。

完善性维护 (Improving maintenance):用以扩展现有系统的应有范围及提高其处理能力。

适应性维护(Adaptive maintenance):用以调整与改正系统的应用和功能,以使现有的信息系统可以更好地适应环境和管理需要的变化。随着行业竞争加剧和经营环境的多变,系统的适应性维护已越来越重要。

至此,一个基于构件的软件系统就完成了。当然本文只是简单的论述一般的思路和方法,具体每个步骤中用到的方法和编程的技巧性问题不属于本文阐述的对象,故而不再详细的赘述。

3 基于构件的软件工程的突破点

综合上面各个部分的论述,与传统的软件开发方式相比,基于构件的软件开发方法有什么突破呢?

3.1 体系结构

传统的应用系统体系结构从基于主机的集中式框架,到在网络的客户端上通过网络访问服务器的框架,都不能适应目前企业所处的商业环境, CBSE为开发这样的应用系统提供了新的系统体系结构。它是标准定义的、分布式、模块化结构,使应用系统可分成几个独立部分开发,可用增量方式开发。 CDSE从系统高层次的抽象上解决了复用性与异构互操作性,这正是分布式网络系统所希望解决的难题。

3.2 开发过程

传统的软件开发过程在重用元素、开发方法上都与CBSE有很大的不同。CBSE实现了分析、设计、类等多层次上的重用。在软件开发方法上,CBSE引导软件开发从应用系统开发转变为应用系统集成。建立一个应用系统需要重用很多已有的构件模块,这些构件模块可能是在不同的时间、由不同的人员开发的,并有各种不同的用途。在这种情况下,应用系统的开发过程就变成对构件接口、构件上下文以及框架环境一致性的逐渐探索过程。概括地说,传统的软件开发过程是串行瀑布式、流水线的过程;而CBSE是并发进化式,不断升级完善的过程。

3.3 软件方法学

传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流、面向对象等不断创新的观点反映问题的本质。CBSE发展到今天把应用业务和实现分离,即逻辑与数据的分离,提供标准接口和框架,使软件开发方法变成构件的组合。因此,软件方法学是以接口为中心,面向行为的设计。

3.4 构造方法

传统应用软件的构造是用白盒子方法,应用系统的实现全在代码中,应用逻辑和数据粘结在一起。而CBSD 的构造是用白盒子和黑盒子相结合的方法。 基于构件的框架是用两个概念来支持演变:第一个概念是构件有很强的性能接口,使构件逻辑功能和构件模型的实现都隐藏起来。这样,只要接口相同,构件就可以被替换。 第二个概念是隐式调用,即在基于构件的框架中,从来不直接给构件的接口分配地址,只在识别构件用户后才分配地址。因此,构件用户只要了解接口要求和为构件接口提供的引用后的返回信息。构件接口的信息并不存入构件内,而是存入构件仓库或注册处。这样才能保证构件替换灵活,并很容易利用隐式调用去重新部署构件。由于构件的实现对用户透明,因此也使构件能适应各种不同的个性化要求。

4 结束语

本文通过引入构件技术介绍了什么是软件构件技术以及其当前的应用现状,同时介绍了基于构件的软件开发的一般过程和软件构件技术的突破所在。基于构件的软件开发已经不是什么新名词,但是目前世界上还没有开发商用构件的公司出现,还没有形成规模化专业化、商品化的构件生产,可供使用的商品化业务构件还很少,同时基于构件的开发方法还有许多有待于进一步解决的问题,如系统构件、组织构件及构件库的规范和标准化问题,与人工智能、软件自动化技术的进一步的结合问题等等。但是我们可以相信,随着技术的不断发展,采用构件化和软件复用的方法进行软件开发必将受到人们越来越多的重视。

摘要:基于构件的软件工程(Component Based Software Engineering,以下简称CBSE)是提高软件产品质量与软件生产效率的关键技术。它是根据“选择合适的构件产品并按照完整的软件架构将它们组装起来”这一思想发展起来的。在此,重点论述与CBSE技术相关的系列问题:CBSE产生的背景,构件技术在软件开发中的作用及地位,基于构件技术的软件开发过程,以及CBSE与传统软件技术相比的突破点等。

关键词:CBSE构件,软件工程

参考文献

[1]杨芙清,王千祥等.基于复用的软件生产技术[J].中国科学:E辑2001年31卷4-363-371页.

[2]傅音翔,王直杰,张珏.一种基于构件的软件开发方法[J].微计算机信息2006年第22卷第1-3期228-230页.

[3]S.S.Yau,B.Xia.Object-Oriented Distributed Component Software Development based on CORBA.Proceedings of COMPSAC’98.The Twenty-Second Annual International,1998,pp.246-251.

[4]IBM:http://www4.ibm.com/software/ad/san-francisco,Mar,2000.

[5]青鸟构件模型http://www.sei.pku.edu.cn/jadebird/index.html.

[6]杨芙清,梅宏,李克勤.软件复用与软构件技术[J].电子学报,1999,27(2):68275.

[7]贺秋芳.基于构件的软件复用技术[J].广东轻工职业技术学院学报,2005年9月第4卷第3期.

软件理论 篇6

关键词:项目管理,软件需求开发,进度,成本,质量,管理模型

一、引言

软件需求开发是软件工程的一个重要环节, 在软件生命周期中的需求、设计、编码、测试和维护等各个阶段中, 需求开发处于软件工程的开始部分, 它提供构建软件项目的根基, 决定软件开发成果满足客户需求的匹配程度。软件需求开发环节的失误会随着开发进度的扩大而蔓延, 资料表明, 软件项目中由于需求开发管理混乱而造成的返工开销几乎占了总开发的50%。本文应用项目管理理论分析软件需求开发阶段的系统构成, 并设计管理模型来提高软件需求开发的管理效率。

二、软件需求开发管理过程

由于计算机技术的迅速发展, 使得软件需求具有模糊性、不确定性、变化性、主观性等特点, 并带来软件需求开发管理的复杂性。软件需求开发是一定的组织利用有限的资源在规定的时间内完成, 可以作为项目来进行管理, 其管理过程由需求获取、需求分析、编写软件需求规格和需求验证四个阶段构成。

1. 需求获取

需求获取是在问题和最终解决方案之间架设桥梁, 其主要任务是和用户方的领导层、业务层人员进行沟通, 获取用户的具体需求, 并了解用户的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等具体情况, 同用户建立起良好的沟通渠道和方式。软件需求获取的方法有:与用户交谈, 向用户提问题;参观用户的工作流程, 观察用户的操作;用户工作的情景分析;现有系统的问题报告和改进要求, 事件和响应;市场调查和向用户群体发调查问卷;与同行、专家交谈, 听取他们的意见;分析已经存在的同类软件产品, 提取需求;从现有产品或竞争产品的文档中提取需求;从行业标准、规则中提取需求;从Internet上搜查相关资料等。

2. 需求分析

需求分析主要通过建立业务模型的方式来描述用户的功能需求, 为客户、用户、开发方等不同参与者提供一个交流的渠道。业务模型可以映射出软件产品的核心需求, 即功能需求。功能需求应描述软件提供的功能和服务、对输入的响应, 并描述特定条件下的系统构成等。软件产品本身可能还存在与业务无直接关系的非功能需求, 具体与系统的总体特性有关, 如可靠性、响应时间、存储空间等。非功能需求定义系统提供服务或功能的约束, 包括时间约束、空间约束、开发过程约束及应遵循的标准等。通常这两类需求构成软件需求的总集。

3. 编制软件需求规格

软件需求规格的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解, 使之成为整个开发工作的基础, 需求分析完成的标志就是提交一份完整的软件需求规格说明书。软件需求规格说明书以一种开发人员可用的技术形式阐述软件必须提供的功能和具备的性能, 以及必须考虑的限制条件。软件项目客户通过软件需求规格了解软件项目能够提供的软件产品, 检查软件需求是否满足需要;项目管理人员根据软件需求规格制定项目的开发计划和管理过程;软件开发人员通过软件需求规格理解要开发的产品及具体要开发的内容;软件测试人员通过软件需求规格验证软件。

4. 需求评审

编写的软件需求规格说明书还应当进行需求评审, 确保需求确定的科学性。可采用下列指标进行评审: (1) 正确性:每条需求都正确代表构建软件系统所要完成的事情。 (2) 无歧义:每条需求只有一种解释。 (3) 完备性:需求不能发生遗漏, 应全面考虑相关问题。 (4) 一致性:用户需求必须和业务需求一致, 功能需求必须和用户需求一致。 (5) 重要性和稳定性分级:现有资源不足以实现所有需求时, 可以根据级别的高低决定实现的先后, 舍弃一些级别低的需求以保证项目的按期交付。 (6) 可验证性:需求分析是可测试的, 只有系统的所有需求都是可以被测试的, 才能够保证软件始终围绕着用户的需要, 保证软件系统是成功的。 (7) 可修改性:每一条需求都易于完整一致的进行变更, 且不改变需求集的结构和风格。 (8) 可跟踪性:每条需求都是可溯源的, 且存在一种机制使得在以后的工作中引用需求是可行的。 (9) 可理解性:用户和开发人员都完全理解需求集的整体行为、所提供的功能及其中的每条需求的含义。

三、软件需求开发管理模型

1. 软件需求开发管理模型构建原则

软件需求开发是一项复杂的系统工程, 管理模型的构建应遵循下列原则: (1) 程序性原则:软件需求开发管理应遵循固定的业务流程, 可将其划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段, 前一阶段的工作完成后才能进入下一阶段。 (2) 系统性原则:软件需求开发要在限定的时间、成本条件约束下达到一定的质量, 实现软件系统的最优, 要求管理遵循系统管理原则, 实现目标最优。 (3) 简化性原则:化繁为简, 将模糊的、潜在的复杂问题明确化, 以图表的形式表示出, 并以简化的解决方案解决问题, 便于项目管理。 (4) 平衡性原则:管理软件需求开发的具体事务要有一定的侧重。对于需求开发过程事项, 应根据影响大小分清主次, 关键的事项或者事项里的某个多发问题点, 着重管理, 达到在管理上的主次平衡。 (5) 高效性原则:模型的设计必须以促进需求开发目标的实现为前提, 提供给相关人员一个展示需求开发管理和有效解决方案的平台。 (6) 时时控制性原则:及时控制需求开发过程中影响进度、成本、质量等问题, 及时发现解决冲突事件, 做到事前、事中、事后控制, 保证项目按时保质保量完成。 (7) 动态性原则:开发中应关注信息技术的发展, 将先进的技术应用到软件需求开发中, 并学习借鉴相关软件需求开发的成果。

2. 软件需求开发管理模型

基于以上分析, 本文构建了软件需求开发管理模型, 见下图:

该模型遵循了软件需求开发的管理流程。启动阶段, 软件开发进行了可行性研究, 软件项目已立项, 项目正式启动。软件需求开发管理阶段是模型的主要部分, 按照项目流程, 依次划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段。总结阶段, 对软件需求开发管理进行总结, 并进入到软件程序设计阶段。模型的核心部分是应用项目管理的进度管理、成本管理、质量管理, 对软件需求开发进行动态管理。进度管理就是制定出经济合理的进度计划, 然后在计划执行过程中, 检查实际进度与计划进度之间的差异, 并及时找出出现差异的原因, 采取有效的补救措施, 以确保项目按时按质完成。进度管理应加强沟通, 掌握可能延误进度的环节, 并严格控制进度变更。成本管理就是对项目所需的成本情况进行详细地分析和估算, 编制资源需求计划, 并编制项目所需的成本估算和预算, 在执行过程中, 采取相应的措施对项目成本进行控制。成本管理应严格控制加班、浪费等额外支出。质量管理是为了保证项目的可交付成果能够满足客户的需求, 围绕项目质量而进行的计划、协调和控制等活动, 其具体内容涉及质量规划、实施质量保证和质量控制。通过进度管理、成本管理和质量管理, 使软件需求开发成为进度快、成本低和质量合格的有机统一体。

该模型规范了软件需求开发的业务流程, 并在整个软件需求开发的不同环节之间建立联系, 明确需求开发过程与自身各任务项之间以及项目其余环节所存在的各种联系。模型各环节间的相关性、可追溯性保证了软件项目需求开发过程, 可以遵循统一的管理模式。该模型具备可配置性。每个软件项目, 都具有个性化管理需求, 在进度管理、成本管理、质量管理等方面有不同的要求, 可以针对具体的开发团队, 项目要求, 管理侧重点, 扩增相应的管理模块, 将此模型推广到任何一个软件需求开发项目。

3. 模型应用

由于软件需求开发具有复杂性, 其主要表现为需求描述问题, 明确表达需求较难确定, 并且难以统一;需求完备问题, 需求没有遗漏, 难以准确划定系统范围;需求的变更问题, 需求变化是永恒, 需求不可能是完备。模型应用需做好以下工作: (1) 文档化管理。需求必须有文档来记录, 该文档必须是正确的, 是经过验证的, 是在受控的状态下变更的。开发或管理人员常常会在含糊的情况下把认为是相对简单的需求忽视而省略文档记录, 其实未必简单, 只有想清楚、写清楚、说清楚才说明已经真正把需求整理清楚了, 同时方便日后维护工作的展开。需求含糊的情况下要进行会议形式处理, 并邀请相关人员参加进行需求澄清及确定, 需求在进行多方确定后进行归档。同时软件需求的复用率也是相当高的, 可以避免升级时重新将需求再次获取, 只需要在原来的基础上作为文挡需求复用升级处理。 (2) 审核评估需求变更, 减少变更的影响。在管理软件开发过程中, 需求渐变是必然的, 无论需求变化的程度如何, 只要需求变更就必须进行评估。在需求变更之前必须由项目管理人员审核, 再传给开发人员进行评估等工作。管理人员必需依据对整套系统的了解程度分析需求变更过程中可能受影响的系统及受关联的功能模块, 并制定积极应对措施。 (3) 整体管理。应识别、确定、结合、统一与协调软件需求开发管理过程中所需要进行的各种过程和活动, 保证进度、成本、质量等各要素的相互协调。

四、结语

软件需求开发在软件项目管理中具有重要地位。本文应用项目管理理论, 设计了软件需求开发管理模型。该模型遵循项目管理流程, 将软件需求开发划分启动、需求开发过程、总结三个阶段, 并将软件需求开发过程划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段, 模型应用项目管理的进度管理、成本管理、质量管理, 对软件需求开发进行动态管理, 实现软件需求开发项目目标最优。该模型能够提高软件需求开发管理效率, 确保软件开发能够按进度, 低成本, 高质量地完成。

参考文献

[1]景慎艳:软件项目需求管理的探索与实践[J].电脑知识与技术, 2008 (27)

[2]左怀远:软件项目中的风险管理研究[J].世界科技研究与发展, 2008 (3)

[3]孙琦龙:加强软件项目管理的实践模式[J].科技信息, 2008 (7)

[4]潘加宇:软件工程与项目管理[J].程序员, 2007 (12)

软件理论 篇7

关键词:误差理论,数据处理,Excel,课程教学

数据处理、曲线绘制、表格制作等是工程技术人员和科研工作者进行科学研究和学术交流必备的技能。随着计算机技术和数据处理软件的飞速发展,数据处理和绘图手段发生了巨大的变化,手工处理已经渐渐被计算机所代替。计算机进行数据处理具有速度快、精度高等优点,绝大部分学术期刊都要求投稿时采用计算机绘图。目前,数据处理软件很多,常用的有Matlab、Excel、Original、Maple等,这些软件各有优缺点。其中Excel作为MS Office的一部分,具有操作简单、容易掌握、不需要编程等优点,被广泛采用。与数据处理技能相对应的高等院校课程是误差理论与数据处理及相关课程。由于课程涉及的数据及计算量都较大,传统的黑板板书教学面临的弊端就愈显突出。计算机技术与数据处理软件的发展、多媒体教学的运用提高了课程的教学效果,也为数据处理软件在课程中的运用开辟了广阔的天地。基于此,本文以几个实例为基础,给出了Excel在数据处理教学中的应用方法。

一、相关的操作

1. 公式

Excel具有强大的公式计算功能,一个公式可以是简单的两个数加减运算、也可以是包含关系等运算的复杂运算。运算符可以是:算术运算符[+(加)、-(减)、×(乘)、÷(除)]、关系运算符[=(等于)、>(大于)、<(小于)、≥(大于等于)、≤(小于等于)、<>(不等于)]和字符运算符“&”。在数据处理中,很多复杂的计算都可以用一个或若干个公式完成。数据处理中很多计算都可以直接采用公式完成,而不需要编程。如图1中C、D两列求残余误差和残差平方都是简单的公式,图6中最小二乘法进行线性回归则为多个公式的组合运用。

2. 函数

一些常用的或较为繁琐的公式都有相应的函数。Excel中提供了大量的函数,在误差数据处理中常用的函数为数学与三角函数、统计函数、逻辑函数等。如图1中B17和D18分别调用了求平均值和开平方的函数。

3. 单元格的引用

单元格的引用是把单元格的地址作为参数。如图1中C列求残余误差时要用到算术平均值B17。单元格C2~C16公式的形式都是一样,都是测得值减去算术平均值B17,为了数据处理时使用单元格填充公式,对算术平均值B17的引用需要使用绝对引用$B$17。如果采用相对引用,则公式填充时,单元格的地址就会发生变化。如果将绝对引用$B$17改为混合引用B$17,则效果与绝对引用相同,这是因为在C列进行公式填充时,B、C两列的相对位置没有发生变化。

二、课堂教学实例

1. 粗大误差的判别

粗大误差的判别是数据处理中经常用到的,粗大误差判别常用的准则有莱以特准则、罗曼诺夫斯基淮则、格罗布斯准则和狄克松准则。

则xi含有粗大误差。

下面以文献[5]P44的表2-11中数据为例用莱以特准则判别粗大误差,处理的过程及相关公式如图1所示。在处理时,用到了Excel中最基本的数据处理功能:求和、平均值、开平方。本例中直接用公式进行计算,也可以调用Excel自带的函数。在本例中,绝对引用和相对引用要结合使用,如求残余误差时,平均值的引用必须采用绝对引用,而当前数值采用的是相对引用,这为复制公式提供了便利。根据原始数据计算得到的3倍标准差为0.0981,则第8个数据20.30含有粗大误差,剔除之后,则剩下的数据不含粗大误差。

2. 随机误差分布规律的模拟

Crystal Ball是一款基于Excel的仿真软件包,可以进行随机误差合成、分配等的仿真。在误差理论教学中,所涉及的随机误差大都服从正态分布,但是还存在着诸如均匀分布、三角分布等形式。这些不同的分布之间可能存在着某些联系,通过软件仿真可以加深学生对它们之间关系的了解与掌握。Crystal Ball中提供的随机分布如图2所示。

“两个服从相同的均匀分布的相互独立的随机变量之和仍为随机变量,且服从三角分布”。如x和y是相互独立、在[-0.1,0.1]上服从均匀分布的两随机误差,则z=x+y服从三角分布。在EXCEL/Crystal Ball试用版中设定“Maximum Number of Trials”为60000、“Sampling Methods”为Monte Carlo,某次仿真结果如图3所示。从仿真结果可以看出,z在[-0.2,0.2]上服从三角分布,标准差为0.0814,均值为0.0004,这与理论计算的结果基本一致。

“对两个误差限为不相等的均匀分布随机误差求和时,则其和的分布不再是三角分布而是梯形分布”。如x和y是相互独立、分别在[-0.1,0.1]和[-0.3,0.3]为均匀分布的两随机误差,则z=x+y服从梯形分布。与上面的设置相同,则仿真结果如图4所示。

对于4个相互独立服从均匀分布的随机误差,其和接近正态分布,图5给出的是相互独立、在[-0.1,0.1]上服从均匀分布的4个随机误差之和的仿真结果。

3.最小二乘法的求解

最小二乘法是曲线拟合、参数估计、回归分析时普遍采用的经典方法,大量的文献都给出了详细的计算过程和公式。设测得的数据为,回归方程为:

则矩阵形式的结果为:

回归平方和为:

残余平方和为:

离差平方和为:

式(6)和(7)本质上是一样的。参考文献[1~3]讨论了用Excel计算回归方程的方法并给出了应用实例。[1]给出了在Excel中用函数、图表向导和数据分析三种不同的方法进行最小二乘法计算;[2]给出了用工作表函数、分析工具及规划求解工具进行多元线性回归分析的方法。其中讨论的方法不用编写程序、不涉及最小二乘法的具体计算公式,便于实际运用。但是在课程教学中,要让学生掌握最小二乘法的原理和计算过程,就需要运用式(6)~(10)直接计算。

在直线y=3x+2附近随机生成一系列数据,并进行回归分析。生成的10个数据如图6的B、C两列所示。采用的是公式(6)、(8)~(10)进行计算,Excel中相关的公式如图6中标注所示。

在Excel中如果采用数据分析工具中的回归进行求解,对话框设置如图7所示,则求解结果如图8所示,与图6中的结果一致。

三、结束语

1. 公式、函数、单元格引用是用Excel进行误差与数据处理时最常用的功能

特别是单元格引用的方式影响到数据处理的效率和灵活程度,巧妙地使用混合引用和单元格公式填充功能,可以实现诸如循环等复杂的数据处理功能。

2. 本文以课堂教学中3个实例简述了Excel在误差理论与数据处理教学中的应用

从最小二乘法求解的实例可以看出,Excel中已经包含了很多数据处理的功能,用户可以直接进行调用,只需简单的设置即可。随着版本的升级,软件的功能将更加强大。但是,课堂教学中不但要让学生学会怎么调用,而且要让学生学会怎么运用基本的公式进行计算,让学生掌握数据处理的理论和方法。

3. 任何软件都不是万能的,Excel也如此

对于一些复杂的、经常使用、重复性的计算可以用V B A进行二次开发。在课程教学中,可以设置一些这方面的实验,培养学生编程进行数据处理的能力。

4. 在课程教学中,可以将数据处理过程转化为Excel的函数、公式进行求解

这可以使学生将注意力集中于数据处理的理论、方法,而不被繁杂的数据和计算所困扰,有利于提高教学效果。

参考文献

[1]唐曙光.基于Excel的实验数据最小二乘法计算探讨[J].大学物理实验,2003,16(4):41~43

[2]王中华,山桂云,林英武.Excel多元线性回归及在化学中的应用[J].计算机与应用化学,2005,22(9):817~820

[3]赵延龄,温晓光,范福海.用Excel求取化工数据组回归方程[J].计算机与应用化学,2004,21(4):650~654

[4]彭小平,颜清.萃取计算的Excel VBA图解方法[J].计算机与应用化学,2008,25(11):1412~1416

[5]费业泰.误差理论与数据处理[M].北京:机械工业出版社,2000

[6]李金海.误差理论与测量不确定度评定[M].北京:中国计量出版社,2003

软件理论 篇8

【关键词】实时数据;线损理论;分析

电网线损涉及面非常广,电网的发、供、变、用等各个环节的运行情况都与线损有密切的联系。也正因为此,线损的统计、计算和分析涉及环节多,数据多,工作量大,人为因素也较多,靠传统的手工计算已不能适应现代企业管理的要求。另一方面,目前电力系统已经建设了SCADA系统,电能量计费系统等,这些系统的建立使得快速而准确地获取电力系统运行参数成为可能,基于这些实时数据开发实用线损管理的条件已经基本成熟。开展实时线损管理系统的建设对于电网公司具有重要意义。

1.理论线损计算的现状

对于线损计算,国外现在研究重点多是对线损的分析和降损措施与方法研究,如:以线损为目标的配电网网络重构、无功优化、补偿电容投放位置的确定等问题,其中涉及到的线损计算问题大都转化为功率损耗问题,以潮流的方法来求解,专门研究传统意义上的线损计算方面的文章并不多。国内电网线损理论计算按管理应分为省市局和县区级两部分,按照电网的不同特点,对35kV及以上输电网和6~10kV配电网分别采用不同的计算方法。总体来说,省市局电力部门线损计算较正规,有比较完善的制度和软件方面的保证;县一级电力部门则基本上没有专门的线损计算软件,有的以手算为主。从计算方法看,目前,电力网理论线损计算方法主要可分为2类模型:一类是依据网络主要损耗元件的物理特性建立的各种模型;另一类是根据馈线数据建立的各种统计模型和神经网络模型等。由于电网结构、计量设备和计算平台等各方面的原因,目前计算的基本思路是在原始的结构和运行数据信息不足的情况下,进行合理的近似计算,为了提高精度需要从数学模型的准确性、数学方法的精确性以及算法上改进计算精度。传统的理论线损计算的方法正在逐步发展成熟,一些智能性的建模方法被引入,例如遗传算法、人工神经网络算法等。

2.线损的分类和构成

全网的电能损耗计算建立在每一电网元件的电能损耗计算基础上,电网电能损耗是电力网同一时段内各元件电能损耗的总和。电能损耗按能否进行理论计算分为两类:第一类是可以计算的技术损耗,这类损耗可以通过理论计算求得其数值,所以也称为理论线损,它主要包括电阻发热损耗,还包括介质磁化损耗、介质极化损耗及电晕损耗等;第二类是难以计算的不明损耗,包括不明管理损耗不明技术损耗,后者如线路绝缘不良引起的泄漏损耗、设备接地或短路故障的电能损耗。

3.理论线损计算系统简介

线损计算分析软件系统是基于各级电能损耗管理部门的损耗计算与损耗统计的数据基础,通过数据共享等手段进行数据汇总,从而进行全网的损耗分析并制定相应的降损决策。因此,线损计算、数据汇总和分析决策等功能的实现是整个系统功能设计的重中之重。实现全网线损计算分析的系统主要由以下几个部分构成:图形编辑模块、图形建模与拓扑分析、数据接口模块、理论线损计算分析模块、统计线损计算分析模块、报表统计与综合查询模块、系统基本信息处理模块、系统服务与标准数据维护模块、数据汇总和上报模块、线损分析与降损决策模块等。理论线损计算不仅需要元件的基础数据,而且需要计算时间段内的运行参数,因此需要从多个系统中抽取数据,才能实现理论线损计算数据的自动录入。用户在客户端,也就是浏览器,选择某个计算时段后(以月为单位),时段信息通过网络传到中间层的Weblogic应用服务器,服务器将时段信息传递到服务器上的Java程序,Java程序得到时段信息后,从多个数据系统中抽取理论线损计算所需数据,然后检查每个元件数据的完整性和正确性,过滤掉残缺数据后,将数据完整的元件数据存放到数据层的Oracle数据库中。由于数据从多个系统中抽取,因此保证数据的正确对应是数据抽取的关键。具体的数据抽取过程为:从供电公司的生产管理GIS系统中抽取出元件的铭牌电气参数,从调度SCADA系统中抽取电网的运行参数,从电能计量遥测系统中抽取电量数据,从用电营销系统中抽取所有用户的售电量。抽取数据时以月为单位,在数据抽取过程中对数据残缺的元件自动进行过滤,保证抽取后所有的元件都可以进行理论线损计算。数据抽取结束后,用户会在客户端看到提示信息,点击计算按钮, Weblogic服务器自动调用部署的Java程序进行理论线损的计算。计算结束后,用户可以立即在客户端看到线损计算结果,以及简单的理论线损分析。同时计算结果存入数据层的Oracle数据库中,供其它系统调用发布。

4.常用电力网线损理论计算方法

4.1均方根电流法

均方根电流法是电网理论线损计算的基本方法,也是最常用的方法。均方根电流法的基本思想是,线路中流过的均方根电流所产生的电能损耗相当于实际负荷在同一时间内所产生的电能损耗。

4.2平均电流法(形状系数法)

平均电流法也称形状系数法,是利用均方根电流与平均电流的等效关系进行电能损耗计算的,由均方根电流法派生而来。平均电流法的基本思想是,线路中流过的平均电流所产生的电能损耗相当于实际负荷在同一时间内所产生的电能损耗。

4.3最大电流法(损失因数法)

最大电流法也称损耗因数法,是利用均方根电流与最大电流的等效关系进行电能损耗计算,由均方根电流法派生而来。最大电流法的基本思想是,线路中流过的最大电流所产生的电能损耗相当于实际负荷在同一时间内所产生的电能损耗。

4.4电压损失法

对于低壓配电网理论线损计算,《电力网电能损耗计算导则》推荐使用电压损失法。电压损失法主要是利用功率损耗与电压损耗百分数之间的关系来粗略计算低电压配电网理论线损,计算方法如下:假设负荷集中在低压配电网线路末端,按照电压向量图可以得到电压损失率近似计算公式。电压损失法的优点是需要的计算数据少,简单易算;缺点是需要假设条件,计算精度低,适用于粗略计算。

5.理论线损计算结果的分析

理论线损计算完毕后,在IE浏览器中选择相应的年、月或时段便可查对理论线损计算结果和各类线损分析表格。“线损分析”页面展示输电线路、主变压器、站用变压器、电容器等元件计算时段的理论线损电量和线损率,可同时展示同一时段相同元件的实际线损电量和线损率;满足“四分”线损分析的需要,满足分别按某一元件(变压器、输电线路、配电线路、配电变压器等)进行分析的需要,自动得出这些元件的损耗率、损耗所占比例以及整个电网的损耗率等数据。

6.结语

在我国能源可持续发展战略和电力行业逐步走向市场与其它能源竞争背景下,开展电网理论线损计算工作,对于降低电能损耗、节约资源,提高供电企业经济效益,提高竞争力,优化电网结构以及电网规划设计等方面有着重要意义。在供电企业网损理论计算工作中,根据电网网络结构、运行参数和现有数据采用适当的方法定期进行理论线损计算十分必要。 [科]

【参考文献】

[1]虞忠年,陈星莺.电力网电能损耗.北京:中国电力出版社,2000.

[2]四川电力试验研究院.电力网电能损耗文献选编,1996,9.

软件理论 篇9

1VFP项目教学法的研究现状

在计算机教学当中,技术基础起到了承上启下的重要作用:既落实理论实践,又为进一步操作打下基础。因此,正确对待VFP教学,认真反思教学中出现的问题,从专业的角度来分析每一个实践环节,才能实现全面改革的教学目标。在当前的VFP教学中,多数都是就具体的项目进行分析研究,过于强调学生的实践环节,忽视了理论基础的培养,导致学生的知识体系不够系统和完整;在实际的.工作环境中,经常会出现过于依赖经验来解决问题,不能考虑客观因素的影响。有一些高校也采取了其他的教学措施来增强学生的理论基础,但是只能做到枯燥的理论讲述,不能将理论与实践有机地结合起来,特别是对于一些应用性较强的学科,例如工商管理、国际商务和法学医学等,导致学生的理论与实际脱离;既降低了学生的学习兴趣,也无法提升学生的专业素质。如何激活学生的思维,使学生形成独立思考的习惯;怎样将解决问题的能力传授给学生,而不是将具体的方法灌输给他们,正是VFP教学当前面临的问题。帮助学生构建起完整的知识框架,树立正确的认知结构和积极的学习态度,将经典案例中的有益经验与理论知识结合起来,才能更好地解决这些问题。

2软件工程理论的优势

软件理论 篇10

将图像信息转化为数学信号并借助计算机强大的信息处理功能、运算功能, 将其转变为便于观察、便于利用的新图像是图像处理的目的, 这一过程不但要使原图清晰化、信息丰富化, 还要保留原图的基本性质. 多功能应用数学理论在图像处理软件开发中的应用, 体现了图像处理的基本特征, 提升了图像处理的速度和效果, 为图像处理的持续发展提供了理论支持.

一、图像处理软件的特点及数学理论的应用的意义

1. 图像处理软件的特点

图像处理工具兴起于上世纪后期, 为了促进图像处理的效果, 人们将数学应用于图像处理之中, 方便于图像的处理和应用, 例如上世纪80 年代, 非线性数学在图像处理中的应用, 极大的促进了图像处理技术的发展和进步. 当今, Photo shop、ACD see、美图工具等等是常见的几种图像处理工具, 通过这些图像处理软件可实现对字体的艺术化、图像的创作、图像视觉创意等等, 方便了人们对各种图像的应用. 通过对这几种软件的研究可以发现, 图像处理系统具有很强的可移植性, 可以将一个图片的影像元素保留到另一个图片中, 即使在图像重组以后, 原图的基本性质也不会被改变. 例如, 应用Photo shop处理图像的灰度, 处理后图片保留原图的基本特征. 其次, 图像处理软件具有操作简便等特点, 例如美图看看等图像处理工具, 简单、直观, 易于操作.再次, 图像处理软件促进了图像的开发、利用, 使图像内涵的价值得到了充分的挖掘. 例如应用Photo shop制作标识、报刊插画等, 都是对原图的二次开发和利用.

2. 数学理论应用的意义

多功能数学与图像处理软件关系紧密, 他是图像处理软件主要的理论基础之一, 数学理论的应用对图像处理软件的发展有积极意义. 一方面, 多功能应用数学再现了图像的本质和真实性, 且使图像的某些元素更为清晰, 其对图像处理的精确性使一般途径难以实现的. 另一方面, 基于多功能应用数学的图像处理软件其使用面宽、灵活性强, 被广泛的应用于医学、制造业等方面, 为各行各业的发展作出了突出贡献. 在图像处理软件中, 数学理论的应用非常广泛, 例如, 几何处理技术, 应用几何形变的特点, 以坐标轴变换为基础, 满足了图像的放大、缩小、旋转、变形等处理需求, 且完整的保存了原图的基本特点. 有如阵列、集合理论在图像形变中的应用. 通过图像元素的重建实现了图像边缘的清晰化、明朗化, 有利于应用者更准确的把握图像特点, 对图像进行直观、准确的分析. 多功能数学在图像处理上的应用, 满足了不同应用者对图像处理软件的差异需求, 使图像处理软件的应用得到了质的提升. 但是, 由于图像处理过程中信息量巨大, 在多功能数学理论应用过程中应注重数学理论应用于计算机硬件、宽带技术等发展的同步, 以提高多功能数学在图像处理中的实践效益.

二、多功能应用数学的技术应用分析

1. 多功能应用数学在图像处理软件中应用的特点

多功能数学对于图像处理软件最显著的贡献是他将图像的特性真实的、清晰的呈现处理, 用数学的语言精致的、准确的描绘出图像的特征, 使图像的质量得到了提升, 而图像的本质特征却不会发生变换. 其次, 多功能数学对图像的描述精度高、灵活性大, 使图像信息具有了更大的利用空间和利用价值, 也是的原图的应用潜力得到了最大化发挥. 再次, 基于多功能数学技术应用的图像处理软件适用面广, 处理速度快、效果好, 引领了图像处理软件的发展趋势, 随着数学理论在图像处理软件开发中的更广泛应用, 各种图像处理算法将更加精确, 图像资源的利用将实现更优化发展.

2. 多功能应用数学在图像处理软件中的应用分析

多功能数学在图像处理中的应用复杂、广泛而又灵活, 以数学形态学、数学集论学等为基础开发图像处理软件, 使图像的边缘平滑、清晰、连续, 方便了图像使用者对图像的观察、理解和研究. 例如, 图像平衡处理, 通过图像函数使图像边缘变得平滑、连续, 又不会改变原有图像的性质, 如灰度处理使图像变明或变暗, 从数学函数中提取图像的边缘特征, 对图像进行分割, 对其形状进行准确的识别, 并且分析其图像文理, 从而重建原图, 使处理过的图像比原图清晰、平滑、易于辨别利用并保留原图的性质特征. 又如模糊数学在图像处理软件中的应用, 通过图像元素的分解, 对图像结构元素进行分析, 形成图像内的集合, 如以模糊数学理论为基础的边缘检测图像处理, 将图像的骨架进行有效的、清晰的提取, 结合提取元素的特征将其分为集合A和集合B, 集合A、B中的图像颗粒有各自的性质特点. 在图像处理中, 通过连续的腐蚀、膨胀运算, 使两个集合形成交集, 交集中的特征元素就会被纳入A集合或B集合, 图像边缘结构元素颗粒就能得到明确的分辨, 使图像文理、边缘更为清晰, 方便了图像的识别和应用. 此外, 多功能应用数学为图像处理软件的图像边缘检测、图像特征提取、抑制噪音等提供了理论支持, 通过图像处理软件所蕴含的一系列的数学理论知识对图像进行精密的运算、构建, 达到图像处理的最佳效果, 提升了图像的开发和利用价值.

三、结语

多功能数学作为图像处理软件开发的工具在促进图像处理效果中起到了重要的作用, 使图像处理的效果满足了更多层次的使用要求, 同时使图像处理的复杂化得到了简化, 提高了图像处理的速度, 使图像资源得到了更为广泛、普遍的应用. 在未来的图像处理软件发展中, 各种图像处理运算, 各种数学理论还将发挥其重要作为, 继续为图像处理软件的发展提供动力.

摘要:数学在图像处理中的应用广泛而普遍, 通过对数学几何处理、算术处理、图像分割处理等的应用, 极大地丰富了图像处理软件的理论体系, 使图像处理软件具备了更强大的功能, 在医学、建筑、智能化生产等方面发挥了重要作用, 同时也是人们认识客观世界拥有了更简洁、更直观的途径.

关键词:多功能应用数学,图像处理,特点,分析

参考文献

[1]肖大雪, 浅析数学形态学在图像处理中的应用[J], 科技广场, 2013 (5) .

[2]王克奇、马晓明、白雪冰, 基于分形理论和数学形态学的木材表面缺陷识别的图像处理[J], 森林工程, 2013 (2) .

上一篇:司法应对论文下一篇:云南白药:骨折治疗