电脑软件与软件工程

2024-05-12

电脑软件与软件工程(精选十篇)

电脑软件与软件工程 篇1

软件测试和软件质量二者是不可分离的。测试是手段, 质量是目的, 二者同等重要, 缺一不可。测试的复杂性和软件的复杂性是一致的, 也就是说由于软件的复杂导致了测试的复杂性。实际操作中若仅将软件质量的控制手段依赖于软件测试, 是不可能真正解决软件质量问题的。测试不是解决错误的根本举措, 只是一种辅助手段。但又是必须的手段, 软件在测试的过程中也要投入较多的人力、财力、物力和技术。本文分析的重点在于如何对软件进行更有效的测试, 以保障软件的测试的质量与可靠性。

2 软件测试的目的及意义

(1) 在尽量节约人力、物力、财力等资源的基础上, 发现软件中潜在的错误以及漏洞, 通过检测来修正各种错误和漏洞, 从而避免软件投用后由于潜在的错误或漏洞所造成的风险。

(2) 对软件质量进行检测和评估, 确认软件可执行预期的要求或软件以正确的方式来执行要求, 以验证软件的质量是否满足用户的需求, 从而为用户挑选与接受软件提供保障。

(3) 对软件的生命周期进行质量把控, 通过测试来分析发生错误和漏洞区域及发生的原因, 测试可为软件开发人员提供后续风险评估所需的信息, 从而帮助软件开发者或项目管理人员改进软件开发过程及提高软件质量。软件测试不仅近是对软件产品本身的测试, 而且还包括软件开发的各个环节。如果一个软件产品在完成开发后经检测发现很多潜在的问题, 这就证明在软件的开发环节中存有一定的缺陷。因此软件测试的根本目的是保证整个软件开发过程是高质量的。

3 软件测试存在的误区

由于我国的软件测试工作起步晚, 测试工作还未形成规范化, 人们对软件测试在认识上还存有一些误区, 而这些误区也影响着测试工作的开展, 影响着软件测试的质量。

(1) 软件测试工作待软件基本开发完后才启动, 目前我国仍有许多软件开发项目采用瀑布型的软件开发模式, 软件测试工作往往位于编码完成之后, 这样的测试流程对整个软件开发工作是不利的。随着软件项目规模的增大, 软件中潜在的缺陷就被发现的越晚, 后续的修改与补救成本就越高, 同时也会延误软件项目开发的期限, 增加最终测试的难度。

(2) 认为软件测试仅仅是测试人员的事情, 如参与开发的其他人员无关。在很多软件开发中, 项目开发人员与测试人员缺乏沟通, 开发人员仅编写程序, 测试人员仅报告软件中的错误与漏洞。而事实上, 测试与开发同为一个软件项目开发中的部分, 二者应是紧密联系的。一个成功的软件测试, 是离不开开发人员和测试人员间的交流与协商的, 另外, 还需要系统分析师等人员的配合, 这样才能提高测试工作的效率与质量, 改进软件质量。

(3) 认为软件测试仅是为了证明软件的正确度, 软件测试只是证明软件程序是否以正确的方式执行了预期的功能, 仅能发现软件存在的错误, 而不能发现软件程序是否存与错误, 实际上以软件测试来发现软件程序上的错误也是不可能的, 程序测试需耗费的时间与成本也是软件测试所不能承担的。

(4) 对软件的检测不充分, 缺乏测试工具或用于软件测试的软件不规范。目前大多数的软件测试都与硬件一起进行, 在软件的验收工作中, 所谓的测试也仅仅是对预先设定的用例进行测试, 而并非根据软件开发的阶段进行部件、配置项、单元、系统的测试等, 这样的软件测试发挥不了全部的作用, 造成软件遗留的缺陷多、漏洞多。

4 软件测试应遵循的原则

为了突出软件测试的效果, 就必须对软件测试制定一定的规范以保障其有效性, 因此, 在平时进行软件测试时, 就要相应地遵循以下原则:将软件测试贯穿于整个软件开发中, 尽量降低或避免错误的发生, 尽管有错误发生也可尽早发现并改进, 保障软件开发的质量;对测试用例要精心设计, 测试用例需包含输入数据、合理的与不合理的输入条件及与输入数据相对应的预计输出结果;避免由软件设计者来检查自身设计的程序, 可降低失误率;预防错误群集的发生;避免测试的随意性, 严格按照以上原则进行测试计划。

5 软件质量的评估

对于软件质量的评估切忌单方面的进行判定, 而应该考虑到软件适用群体的感受。这是因为不同的使用人员对软件关心的侧重点也会不同, 其具有各自的评价标准与需求。作为软件的用户, 其关心的首要问题自然是软件的性能与功能, 简言之就是所购买的软件是否操作简便与可靠;作为软件开发人员, 其对软件质量的评价深入至软件开发的每个阶段, 他们将软件的内部质量与产品的外部特征相对应。作为软件维护人员来说, 其对软件质量的评估主要是考察软件系统的完善性, 软件文档与源代码是否一致, 软件修改与维护是否简易等。总而言之, 综合以上人员的评估标准, 我们要求软件必须具备良好的结构, 具备齐全的文档资料, 便于用户理解与使用, 利于修改与维护, 人机界面清晰, 内部层次分明, 这样, 才能满足大多数人员的需求。

6 应对软件测试缺陷与加强质量控制的方法

综上所述, 为了规避软件测试中的缺陷, 加强软件质量的控制, 我们要从软件开发的各个阶段进行质量把控, 做好以下几点可有利于今后软件测试工作的开展, 提高软件的质量。具体是:1.组织技术审核, 软件开发过程中的潜在错误均是通过组织技术审核来发现的;2.测试工作不能等到编码完成之后再开展, 应该将测试与开发作为同步进行的工作, 在开发活动的初期就进行测试活动, 对软件工程开发的每个阶段进行审查;3.在软件项目开发初期就让测试人员参与进来, 进行相关的测试准备工作, 制定测试计划、方案, 设计测试用例。

大量实践证明, 越早发现软件中的错误与漏洞, 其后的修复成本越低, 软件项目的最终效果也越佳。

参考文献

[1]魏强, 沈沉.一种新的应用于DDC控制器软件的测试模型[J].日用电器, 2012 (04) .

[2]张忠阳, 黄志洲.软件工程系统项目开发的质量控制[J].现代测绘, 2011 (04) .

[3]李杨.软件测试质量的分析与探讨[J].硅谷, 2011 (07) .

恶意软件与流氓软件谁恶意谁流氓 篇2

呜呼,笔者不才,以区区一介书生网民之拙眼,不明白那些不经过网民允许强行安装的、为欺世盗名者谋财谋利的软件,用流氓来称呼是如何不客观、不公正?

流氓者,鲁迅先生在上海东亚同文书院作题为《流氓与文学》的讲演时,曾对“流氓”一词作过如下界定:“流氓等于无赖子加上壮士、加三百代言。流氓的造成,大约有两种东西:一种是孔子之徒,就是儒;一种是墨子之徒,就是侠。这两种东西本来也很好,可是后来他们的思想一堕落,就慢慢地演成了‘流氓’。

《流氓的历史》中早已指出:越是向当今靠近,流氓的内涵越是突出其行为特征。这时既包含无产无业、专事游荡而又扰乱社会秩序者,同时也兼及有业有产却不务正业,在社会下层施展流氓手段为非作歹者,甚至还包括那些有某种劣迹的行为过失者。

可见,流氓一词早已不是什么市井漫骂之词,而是一种社会文化现象的符号。互联网是虚拟社会,同样也反映出现实社会的文化折射。

想想7的那位先人,靠皮厚 ,如今已是富甲四方。如今他的新老东家都是XX互联网协会的座上宾客,

如今用新东家反击老东家,从流氓教父从容变身江湖大侠。如今按XX互联网协会的说法,你连流氓的称呼都不能给他了!原来只是所谓恶意软件,请问那什么是善意软件呢?

明明是对广大网民干了坏事,靠欺诈手段骗取网民和投资商的金钱,用无耻的原始资本手段一夜暴富。如今老百姓终于生气了,愤怒了,于是心虚了,一方面左躲右闪,强词夺辩,一方面狼狈为奸,不客观、不公正、不规范的去研究下流氓一词的由来和内涵,将广大网民的正义叱责当成是泼皮诬赖,是典型的不学无术,缺乏文化修养,就悍然妄图剥夺百姓话语权的官僚霸道作风。信口胡说什么“流氓软件”称谓不公正,非要换一个文绉绉的“恶意软件”来代替!

请问XX互联网协会,谁给你统一称谓的权利?让一群不理网民痛痒的“精英”欢聚一堂闭门造车,那么多受害的广大网民的意见哪里去了?

请问XX互联网协会,广大受害的网民要对迄今依然居庙堂之高的大小流氓要如何客观、如何公正、如何规范?

开会不征求网民意见,没有网民代表,最好还要厚颜无耻的声称“希望通过此次治理工作,维护网络的正常秩序,保护广大网民的正当权益。”如今国家提倡和谐社会,可某些人就敢公然打着维护和谐的口号,不听不闻不问广大网民的呼声,蛇鼠两端,以一己自私而忘义妄为。

流氓软件纵横江湖数载春秋,不见这XX协会振臂高呼,中流击砥,敢做敢为。如今流氓软件厂商惶惶不可终日,舆论形势一片喊打胜利在望之际,突然冒出个称谓不当的奇谈怪论!只怕是某些人居心叵测,害怕网民的自发组织威胁到其权威的饭碗,而妄图狐假虎威,假以维护正义的名义,行裹胁敛财和欺世盗名之卑鄙行经吧!

计算机软件与软件工程 篇3

关键词:计算机软件;软件工程;开发软件;软件发展

中图分类号:TP311.5

随着软件产业的不断发展,计算机应用逐步渗透到社会的各个角落,使各行各业都发生了很大的变化。传统的计算机学科逐步上升到计算科学。这同时也促使人们对软件的品种、数量、功能和质量等提出了越来越高的要求。软件的规模越大、越复杂,软件开发越显得力不从心。于是,业绩开始重视软件开发过程、方法、工具和环境的研究,软件工程应用而生。20世纪90年代以来,软件重用和软件构件技术成为研究热点,面向对象方法和技术成为软件开发的主流技术。软件工程知识为开发高品质的产品提供了理论和科学支撑,强调采用工程化的方式开发软件。这些知识支持以精确地方式描述软件工程产品,为产品及其相互关系的建模和推理提供了基础,并为可预测的设计过程提供了依据。

1 计算机软件

“软件”这个词汇于20世纪60年代被首次提出。一个完整的计算机系统由软件和硬件组成。它们相互依存,缺一不可。IEEE给软件定义为是计算机程序、规划以及运行计算机系统可能需要的相关文档和数据。其概念是随着计算机的发展而得出进一步完善的,最先人们认为软件就是程序,到了20世紀70年代,人们认为软件不仅包括程序,还包括开发、使用、维护这些程序所需要的文档。到了80年代,较为全面的软件的定义才出现,包括计算机程序、实现程序所使用的方法、规则、相关联的文档、运行所需的数据等都是程序。

计算机的应用和功能的正常使用离不开硬件和软件,只有硬件和软件得到很好的组合,计算机才能正常工作,完成相应的任务。在计算机的资源配置上,既要考虑硬件资源又要考虑软件资源。就软件资源来看,它包括系统软件和应用软件。系统软件的主要目的是实现对计算机的管理、监控和维护,包括自检程序、操作系统等等。而应用软件的主要目的是解决计算机当中的某些具体问题,实现对计算机的管理等功能,包括学习管理软件、人事管理软件等等。从软件功能的角度来看,我们可以认为,软件就是通过利用计算机本身提供的逻辑功能,合理组织计算机的工作,简化或者替代人们在使用计算机过程中的工作环境。因此,对于计算机的各种程序来说,不管是支持计算机工作的程序,还是支持用户使用的程序,它们都是软件,如职场生存攻略提高工作效率的一些必备软件:Photoshop、word、Excel、Dreamweaver等。

软件特点有:(1)复杂性;(2)一致性;(3)可变性;(4)不可见性。软件类型一是通用软件,另一是定制软件,是根据软件服务对象的范围,将其划分为两个类型。软件危机是:(1)软件维护费用急剧上升,直接威胁计算机应用的扩大;(2)软件生产技术进步缓慢,是加剧软件危机的重要原因。软件生存周期是指一个软件从提出需求开始直到该软件报废为止的整个时期,通常包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,它们将以适当地方式分配到不同阶段去完成。

软件开发是一个过程,是指软件工程人员未获得软件产品在软件工具支持下实施的一系列软件工程活动。其开发过程包括获取过程、供应过程、开发过程、操作过程、维护过程、管理过程和支持过程。其开发模型有:(1)瀑布模型;(2)快速原型模型;(3)喷泉模型;(4)增量模型;(5)螺旋模型;(6)形式化方法模型;(7)基于构件的开发模型。其开发方式是一种使用定义好的技术集及符号表示组织软件生产的过程,包括:(1)结构化方式;(2)Jackson方法;(3)维也纳开发方法;(4)面向对象开发方法。其开发工具一般指为了支持软件人员开发和维护活动而使用的软件。有RUP、RequisitepRro、Rose及Robot。

2 软件工程

“软件工程”自1968年首次提出软件工程概念以来,已经40多年了。编程范型已经经历了三次演变,软件工程也从第一代发展到第三代。其概念提出那个年代就开发大型系统软件用手工方式进行,其生产效率低、出错率高。这种状态不能满足日益增长的软件生产的需要,产生以下四个方面的问题:(1)软件复杂性飞速增长;(2)软件成本高;(3)开发周期长;(4)维护工作量大。即出现了“软件危机”现象。软件工程定义为将系统性的、规范化的、可定量的方法应用于软件得开发、运行和维护,即将工程化应用到软件上。

其有一个相似的概念,出现上个世纪70年代,是开发和维护软件的规范化方法,其指导思想是以处理工程问题的方法处理软件生产的全过程。其发展大致经过三个阶段,包括程序设计时代、软件时代、软件工程时代。而软件开发也大体经过三个阶段,定义、开发、维护三个阶段。随着软件工程的发展,软件工程学出现,它是计算机科学、系统工程学、管理学、经济学等等,既是边缘学科,又是综合性学科。

软件工程目标有:(1)支付较低的开发成本;(2)达到要求的软件功能;(3)取较好的软件性能;(4)开发的软件易于移植;(5)需要较低的维护费用;(6)能按时完成开发任务,及时交付使用;(7)开发的软件可靠性高。其标准主要有三:一是FIPS 135是美国国家标准局发布的《软件文档管理指针》;二是NSAC--39是美国核子安全分析中心发布的《安全参数显示系统的验证与确认》;三是ISO 5807是国际标准化组织发布(现在已经成为中国国家标准)的《信息处理--数据流程图、程序流程图、程序网络图和系统资源图的文件编制符号及约定》。

其标准层次有五个,从顶层到低层依次是国际标准、国家标准、行业标准、企业规范及项目(课题)规范。其标准级别也是五个,即国际标准、国家标准、行业标准、企业(机构)标准和项目(课题)标准。这是根据软件工程,其标准制定的机构和标准适用的范围有所不同分出的级别。软件工程包括软件开发技术和软件工程项目管理两大部分。第三代软件工程:基于构件的软件工程是以软件服用为目标、领域工程为基础,其开发过程一般包括四个阶段,依次是领域分析和测试计划定制、领域设计、建立可复用构件库、按“构件集成模型”查找与集成构件。

今后,计算机软件工程的不断发展,给克服软件危机带来了希望。随着面向对象编程力度的增大,软件工程师技术再不断进步,特别是构件开发的规范化与市场化,已经把软件开发推进到一个新的阶段,出现了“开发伴随软件复用,开发为了软件复用”以及“软件就是服务”等新思想。这些突出的成绩,让我们对计算机软件方向的发展拭目以待。

参考文献:

[1]史济民,顾春华,郑红.软件工程--原理?方法与应用[M].北京:高等教育出版社出版社,2009.

[2]刘冰,赖涵,瞿中,等.软件工程实践教程[M].北京:机械工业出版社,2009.

[3]麦中凡.计算机软件技术基础[M].北京:高等教育出版社,1999.

[4]钱乐秋,赵文耘.软件工程[M].北京:清华大学出版社,2007.

作者简介:张宇(1992-),女,黑龙江哈尔滨人,在读学生,研究方向:计算机科学与技术。

软件工程与软件质量管理分析 篇4

上世纪60年代,随着计算机应用领域的迅速扩大和计算机软件系统的日益庞大和复杂,出现了“软件危机”。为了解决由于“软件危机”带来的诸如软件质量下降、成本难于控制、软件进度无法完成、软件的可维护性差等问题,产生了软件工程这一学科。人们最初认为软件工程的发展主要由软件工程技术决定,而长期忽视了软件工程与软件质量管理对软件工程管理和软件质量保证的重视,从而导致了对软件工程管理的研究长期滞后。软件质量的管理主要来自于对软件开发过程的管理。

2 软件工程分析

2.1 系统开发的基本过程

系统开发可以分为3个基本的过程,包括分析、开发、测试和维护过程[1]。开发过程还包括设计和实现两个子过程。这种划分将一个复杂的开发过程分解为几个相对独立的子过程,便于系统的并行开发和逐步深化。在分析阶段,需要根据用户的功能说明构造一个分析模型。在这个阶段,用户的需求会经常更改。分析模型的目标是提供一个强壮的体系结构,它要能经得起需求的变化。这一阶段还应该将系统分解为几个子系统,以便于对系统的理解。分析模型应该是在理想的情况下考虑系统功能的实现,不考虑具体的编程语言、数据库系统或性能等的要求,在开发阶段,应该考虑具体的实施环境。开发阶段又分为两个过程———设计和实现。设计阶段将分析模型转化为更加详细的、根据具体环境的设计模型,并将分析模型中的功能模块转化成适当的软件模块并最终在实现过程中编码实现。测试过程用于验证是否所有在分析模型中提出的功能需求都被开发模型实现以及是否正确的实现。测试过程实质上是对整个系统从部分到整体的验证,对测试模型的组织实际上也是对系统的一种抽象理解的应用。在这样一个模型中,维护工作可以从任何一个模型开始。

2.2 面向对象的开发方法

科学的开发方法需要一套科学的方法学,不同的思想方法决定不同的开发方法及最终产品的结构、特性等。所关心的问题是真正地将软件工程技术纳入工业化大规摸的实施进程中,这种方法的关键要素包括在能支持渐进的变化的开发过程中,使系统的开发过程的各个阶段能够简单易行、彼此平滑过渡,系统模型易于理解,易于维护,能够最大限度地重用已有的成果,面向对象的技术为实现以上目标提供了强有力的支持[2]。

传统的功能/数据(F/D)方法不能很好地解决以上问题。首先,功能/数据方法将系统分解为功能和数据两部分,功能是主动的,并具有一定的行为,数据是被动的信息拥有者,它被功能中的各种行为利用或改变。其次,用功能/数据方法开发的系统与现实系统之间存在很大的差别,它往往不是根据现实生活中的实体形成系统模型,而是将所有实体中不同的功能和数据提取出来。最后,继承是面向对象技术本身的特点,它可以极大程度地重用现有的软件产品。因此,对一个大型系统的开发,应该采用面向对象的技术。

2.3 重用

都希望在所有的开发过程中尽可能地重用己有的结果,因为重用可以极大地提高生产效率。重用是解决软件工程危机的一个关键方法,传统的软件工程开发方法并不能很好地利用己有的软件产品。

比较熟悉对软件代码的重用,这是最常见的重用方式。它可以极大地提高生产效率,但是从软件工程的角度来看,这并不是唯一感兴趣的方式。更希望能从软件开发的更广泛的范围和阶段中发现并使用重用技术。例如,最终的软件包可以由已有软件模块组成,软件模块又可以由软件组件(Compoment)组成,组件可以是完成固定功能的并经过测试的最小软件单元[3]。

另外,对文档也可以重用,因为无论是开发阶段的文档,还是维护阶段的文档,对于不同的软件系统而言,只要开发方法和管理方法不变,文档的格式、使用规程等都有极高的可重用率。在重用技术方面,面向对象的技术提供了强大的帮助,它为寻找、理解和分配可重用事务提供了一个很好的解决办法。

3 软件质量管理

日本的著名软件质量专家KAORUISHIKAWA解释日本质量奇迹时指出了质量工作的6个特征:

(1)全公司范围的质量控制。

(2)高层管理者和结构的质量控制监督。

(3)教育和培训。

(4)质量周期活动。

(5)统计方法的应用。

(6)全国范围的质量提高活动。

从上面可以看出,其中至少4点l、2、3、6是涉及到与人或与机构相关的方面。的确,质量的提高没有人的参与是不可能实现的,没有有效地组织管理也是难于实现的。大部分的企业一般都会有质量管理部门,这些企业知道质量管理的重要性。但是对于质量管理和质量改进的概念仅限于这些质量管理部门,而其他人员也想当然地认为质量的管理和改进是这些管理部门的事,与自己无关。

如图1所示,软件质量框架是一个“质量特征—质量子特征—度量因子”的三层结构模型。在这个框架模型中,上层是面向管理的质量特征,每一个质量特征是用以描述和评价软件质量的一组属性,代表软件质量的一个方面。软件质量不仅从该软件外部表现出来的特征来确定,而且必须从其内部所具有的特征来确定。

第二层的质量子特征是上层质量特征的细化,一个特定的子特征可以对应若干个质量特征。软件质量子特征是管理人员和技术人员关于软件质量问题的通信渠道。

最下面一层是软件质量度量因子(包括各种参数),用来度量质量特征。定量化的度量因子可以直接测量或统计得到,为最终得到软件质量子特征值和特征值提供依据。

事实上,质量提高必须是全企业甚至是全社会的责任。企业和社会中的每个人都对质量提高起着决定作用。质量管理部门只是对质量进行监督、审查,并提出改进方法,进行质量培训。尤其是最高管理者,只有他们真正理解了全面质量管理的意义和方法,才能使质量管理真正能得到贯彻和实施。而且全面质量管理已不是仅仅涉及产品质量的一项工作,当今的先进企业应该把质量作为企业的核心目标,一切活动应该围绕着增进质量来进行。因此,全面质量管理己成为企业的一套现代化的管理模式,包括企业所有的生产、经营、管理、流通等环节的管理,集科学性、效率性、经济性于一体。

质量管理的目的在于最终消除一切可能的缺陷,缺陷产生的原因有两种。一种是由工人造成的,一种是由管理造成的。由工人造成的缺陷比较容易解决,只要让工人知道去做什么,知道自己工作产生的结果,以及懂得控制结果的方法就可以阻止工人生产的产品出现缺陷。通过对各种错误和缺陷进行研究,就可以找到产生缺陷的原因,并最终找到解决的办法。通过对工人进行培训,让工人完全认识到以上3点是完全可能的。

但由管理而产生的缺陷往往不易察觉而被忽视。由于管理上的漏洞,往往会形成管理上的交叠或空缺,使工人因无法满足上述3个条件造成产品缺陷。而且,软件开发是一个渐进的过程,很难一开始就把需求完全描述清楚。对软件产品的测试也不可能面面俱到,必然存在隐藏的缺陷。因此,需要一套强有力的管理机构,实施一套有效的管理程序来不断地消灭缺陷,提高质量。

质量管理机构应该具有独立性,并且具有相当的管理权力。除企业最高管理者外,它不应该受其他部门的约束和干扰,并且所有部门涉及质量的过程都应受到质量管理部门的监督甚至管理。质量管理机构按职能可以分为几个子部门,质量管理部门的作用是制定、实施、改进质量计划;质量认证部门负责企业内部质量认证的工作,质量认证是对企业的质量管理水平进行评估的行为,分内部认证和外部认证。外部认证获得通过后往往可以获得国际上的质量认可,如获得系列国际认证,产品出口可以免检。外部认证往往是被动的,而内部认证是一种主动行为,是对自身质量管理水平的考验,通过周期性的认证,不断提高企业自身的质量水平。培训部门对于一个大企业来说,培训是非常重要的工作,要使全体员工理解和掌握质量的概念和方法,培训必须专人负责,并科学地、系统地进行。对于一些大企业,还可以划分出一个支持部门,处理一些辅助性的工作。

质量部门必须涉及与质量相关的所有部门的工作,以便于及时发现质量问题,分析发生的原因,制定相应的修改和解决办法。有了对质量的全面认识,合理的管理机构,还需要一套完善的质量管理程序。质量管理程序是提高过程质量的一套科学方法,产品质量的提高来自于对生产产品的过程的不断提高,这就是全面质量管理的精髓。对产品的测试和评估不能换回产品的质量。质量不是最后加进产品中的,而是在产品产生的每个阶段中创造出来的。因此只有提高生产产品的整个过程的质量,才能真正地提高产品的质量。

4 结语

在对软件工程的发展现状进行分析后,提出了对软件工程的一些基本认识和看法,并以此为出发点,希望结合最先进的软件工程开发技术和管理的成果,探讨一种面向实用的、保证软件质量和提高软件生产效率的大型系统的开发方法,并给出了一个质量体系框架模型。

摘要:我国的软件开发行业拥有众多优秀的软件开发人员,但是企业对项目软件开发的管理始终处于比较低的水平。随着国内众多工业企业掀起的与国际标准接轨,进行国际标准化质量体系认证(ISO9000系列)的热潮,许多软件开发企业的有识之士己经开始关注软件质量的管理,甚至开始准备或已经进行软件质量体系国际标准化认证的工作。本文就软件工程与软件质量管理方面的有关问题进行分析研究。

关键词:软件工程,软件质量,管理

参考文献

[1]Pressman.R.Software Engineering:A Reactionary’s Approa-cb,4th ed.New York:Mcgraw-Hill,1997.

[2]Lin,Jy huong,Lee,Mingchang.An object-oriented analysismet hod for customer relationship management information system.Information and software technology Volume:46,2004,5(8).

微软诚云:软件安全漏洞与软件开发 篇5

腾讯科技讯 3月19日消息,在为期两日的网讯网络安全技术峰会上,微软安全响应中心的诚云分享了他在软件安全漏洞与软件开发上的研究成果,

以下为褚诚云讲演实录:

褚诚云:大家好!我叫褚诚云,来自微软公司。我这个讲座可能跟其他人的讲座都有一点不一样,我是从产品开发的角度和大家分析安全漏洞。我希望利用这个机会可以和大家分享一些在软件开发过程中如何避免安全漏洞的经验。我先自我简单介绍一下,SWI称为Secure Windows Initiative,我们这个组处理微软产品的安全问题。我们这个组严格意义上隶属于MSRC的一部分。 ChrisW是我们一个资深的架构师。

现在我们转到正题。很多人说微软是不是真正了解安全,为什么这么说呢?微软的安全漏洞问题层出不穷。如果真正懂得安全,为什么产品还有这么多安全漏洞呢?

今天讲的核心问题:第一,什么是安全漏洞。第二,为什么代码中存在安全漏洞。第三,我们想探讨一下对每一个安全漏洞,我们做了什么。微软发现安全漏洞后,怎么处理它?我们是怎么在开发实践中去提高我们实践开发的指导过程,这样可以避免同样错误不要犯两次。

为什么你需要了解这些东西?现在安全漏洞不是微软一个的问题,就像腾讯总裁所说现在软件安全是整个产业的问题。比如微软收到很多不安全的反映。实际上攻击本身不是针对微软系统本身,而是上面运行的应用。我们希望通过和所有厂商共同努力,提高整个产业环境安全水准。例如,百度工具条就有安全漏洞、暴风有控件安全漏洞、迅雷也发现有很多安全漏洞、google输入法的安全漏洞,还有QQ。

下面我跟大家讨论一下五个我们组经过非常艰苦的努力,可以和大家分享的5个06、的安全漏洞。可以给大家公开讨论导致安全漏洞的源代码,在后面我要跟大家谈谈微软开发周期,怎么指导开发行为,这样可以降低安全漏洞的数目。最后提一下微软关于安全响应流程的部分。

什么是安全漏洞?我们定义是代码或设计缺陷,导致系统可以被恶意攻击。我想特别强调一点,实际上很多安全漏洞是一个设计上的问题。设计上没有考虑这个功能在安全上给大家带来什么样的影响,这与设计人员本身素质有关系。我们看看安全漏洞主要类型:远程代码攻击最受大家关注。但是权限提升、拒绝访问、信息泄露的比例也是非常高的。

第一个,MS03-026漏洞。这个安全漏洞大家非常熟悉了。它的问题就在于一个字母串越界的问题,就是这一行代码错误,损失非常巨大。我们得到的经验:GS编译选项,静态代码检查工具。例如在VS,有一个选项是可以做代码的静态分析,尤其是溢出错误,可以帮助你检查。

缓冲溢出已经谈了很久了,为什么微软还有这么多安全漏洞?问题就是说安全漏洞本身和缓存溢出不相等。很多安全漏洞其实完全不是由缓存溢出构成的。这两个是不等价的。下面说的五个安全漏洞只有一个是缓存溢出。即使这一个缓存溢出也不是那么容易看出来的。

第一个安全漏洞,06-001 WMF。这个安全漏洞很严重。当时在圣诞节,我记得我是在赴宴途中被传呼。一个圣诞节,几百人都没有过好。WMF大家都已经很熟悉,他是Windows支持的一种图像文件。简单说就是大家访问这个文件,收到这个电子邮件,只需要预览就会被感染。可能直接导致大规模蠕虫爆发,所以当时大家非常紧张。这是源代码(图),你觉得这个代码需要特别注意什么地方?我其实首先看到是win.3.1这段注释,写这段代码的时候没有考虑到安全问题,当我们读到类似这种注释的时候,我们脑子里开始紧张。我们看看它具体出了什么问题,这个是一个函数指针,这是函数指针的调用,这是执行(图),关键是在这里,当我开始处理WMF文件的时候,当收到特殊字符的时候就对它进行解析处理,把Abort方式设置好,最后开始执行。整个过程没有缓存溢出漏洞。你需要一个函数可以终止打印操作,这在Windows3.1是很正常的操作,而现在造成这么严重的安全漏洞,这就是设计上的缺陷。有时候设计的缺陷比代码缺陷更难发现。一个设计上的问题导致安全漏洞非常严重。在构造这个文件的时候,提供一个老的无用功能,结果导致一个严重的漏洞。我们把NetDDE、IPX/SPX、NETWare这些全从VISTA中删除了。我们尽可能把那些不需要用的以前的老代码统统删除,因为老代码编写过程中往往没有考虑到安全需求。即使删除不了的,我们在缺省情况也要禁用,只有用户特别有这个需求,需要他自己主动把禁用这个功能开通。而且必须加以辅助测试和fuzzing,仅仅依赖人眼查看代码是不够的。

第二个安全漏洞,06-013 IE create textrange,问题就是我访问一个网页,机器就中招了。这个安全漏洞和缓存溢出完全没有关系。有没有人能发现问题?它的错误就在goto Cleanup这个地方。hr初始赋值S-OK。为什么这是安全漏洞?首先调用pvarresult就是一个函数指针,下面检查hr=s-ok,这是一个标准的com调用。我会调用到未初始化内存。4、5年前微软如果收到这个安全漏洞,他可能认为这不是一个安全漏洞,而只是一个程序崩溃,

结果现在有了heap spray攻击,可能10次有9次能达到成功攻击。静态工具专门要提高对未初始化内存访问,使用SAL确保函数返回时的错误检查。

第三个安全漏洞,05-047 plug-n-play。首先他是直接读到一个注册表key,然后拷贝到堆栈上的变量,大家初看这是非常危险的。但是我们仔细一看,发现从本地注册表读这个key,内容是攻击者无法控制的。这个key本身最多只有255字节,而且内容只有admin才能控制。堆栈的变量大小是360字节,怎么会导致字符串溢出?我们当时也一下看不出有缓存溢出问题。它的攻击就是通过这样去攻击,虽然Key在注册表也是有效,但是后来加了这样一堆东西,会自动被过滤掉,结果拷贝就会溢出的。这是一个非常有意思的缓存溢出漏洞。得到经验是禁用危险的APIs,以前有这样的反对意见,只要我知道我在做什么,即使用危险的API也没有什么问题。这个例子就看出,在有些情况下即使你以为你知道你在干什么,但是还会发生你并没有想到的后果。所以我们彻底把危险的API从VISTA完全取消掉。

第四个漏洞,06-013 IE。当你访问一个文件类型属于不安全类型,我们通知你下载而不是直接执行。这就是代码(图),看上去完全没有什么问题。到底它出了什么问题?我们仔细看这个变量,它可以被多个线程同时访问,可能会导致跳过安全对话框。这个漏洞也和缓存溢出没有关系。我们得到一个经验:多线程环境下测试、代码复查时的安全意识。例子:微软对安全方面的标准,包括攻击界面分析、常见安全漏洞类型、针对威胁的缓解手段、针对安全缺陷来复查代码。我们这个组本身不可能去复查所有微软代码,要依靠各个产品组自身复查代码,但是你复查代码,你需要知道你去找什么样的错误。如果不知道要去找什么的话,即使你看半天也发现不出来什么。

第五个漏洞,06-018 MSDTC。这个实际上是自定义的内存分配。这里有一个宏,我看到这个代码是比较头疼的。微软针对这个安全漏洞补丁,发现了两次公告,第一次公告没有发布对,只好发第二次安全补丁。微软得到经验:对内存分配器加注SAL。在Windows VISTA删除大多数的定制在内存分配器,除非有特别考虑,一般是不允许的。另外,在汇编代码一级经验证补丁,这样可以避免补丁发布的错误。

安全漏洞分析小结:分析安全漏洞产生的根本原因,在已经实施现有的流程后,为什么还有安全漏洞?我已经规定你产品组需要做的安全流程,结果还有安全漏洞,这可能有两个原因,第一,我说要做的事你没有做,这是管理上的问题。第二,你确实做了我要做的东西,但是还是避免不了安全漏洞。那就是流程或工具的问题。提供建议来完善现有工具和开发新的工具,同安全软件开发集成,并提供反馈。减少以后的安全漏洞。

于是我们提出SDL开发概念,安全软件开发专门针对产品安全性,它有几个原则:安全的设计、安全的开发、安全的部署。也就是在产品真正部署配置上怎么来处理。在设计阶段和需求阶段中,需求阶段引入安全功能上的需求,设计上提高安全设计风险分析,对程序攻击界面一个评估,编码就是安全编码实践和提供很多安全开发工具,测试提供是专门要进行安全测试,每个组都要提供尤其是安全方面的测试报告,最后发布,你这个组响应过程,如果出现漏洞,你是怎么响应,有没有专人处理漏洞。最后就是一个维护。这是具体流程(图),这里不跟大家仔细说了。如果产品暴露出严重的安全问题,即使下个月要发布这个产品,我们就有这个权力让你不能发布。微软认为安全这个问题不能忽视。

这是SDL效果(图),通过SDL可以在很大程度上降低安全漏洞。这是XP避免安全漏洞。VISTA安全漏洞的数目下降了,像这种统计数据可以证明SDL在实践中可以降低安全漏洞爆发的数目。

《软件工程》双语教学的实践与思考 篇6

关键词:双语教学;实践;问卷调查;软件工程

一、引言

双语教学是指将母语以外的另外一种语言直接应用于语言学科以外的其他学科的教学,使第二语言的学习与学科知识的获取同步进行。2002年在教育部高等教育评估中心的《本科教学评估方案》中首次出现了双语教学,由此,这种全新的教学模式得到迅速推广。近年来,全国大部分高校都在本科生中进行了双语教学的尝试,目前正处在不断地摸索和积累经验的过程中。2010至今,笔者担任了我院《软件工程》双语课程教学任务,从双语教学模式、教学方法和手段等方面作了一系列探索,并在课程结束时作的一个抽样调查,并对教学进行总结。

二、双语教学的实践

1.课程的选择。在我院软件工程的本科教学中,我们选择了《软件工程》这门专业课开展了双语教学的实践与探索。原因有二:第一,这门课程的专业术语较少,易于掌握;第二,有利于他们后续课程软件工程专业英语的学习。

2.教材的选择。教材选自《软件工程》课程的双语教学当中,我们选择了由Ian Sommervill著作的《Software Engineering》(第八版)(英文版)为教材,但是由于课时的限制(要求为20学时),对使用该本书时在内容上做了相对应的删节,讲授了Chapter1,Chapter4,Chapter6,Chapter7,Chapter11,Chapter14,Chapter16,Chapter17 Chapter23,Chapter25.同时参照清华大学出版社出版的张海藩写的《软件工程》的内容进行有所增加。

3.教学方法与手段。由于原版英文书当中涉及大量的框图及程序流程图等,因此授课形式采用多媒体方式,授课语言为中英双语,课件语言以英文为主。

三、双语教学的调查及分析

1.调查对象。调查对象为我院软件工程专业2010~2011学年期间选修《软件工程》双语课程的本科生。有软件工程083班学生共53人,软件工程0910班学生共48人,软件工程0908班学生共45人选修。

2.调查方法。采取不记名答卷方式,遵循自愿原则,在此学年课程结课以后,向选修这门课程的学生发放和回收调查表。共计发放调查表分数:146份,回收146份,回收率为100%。

3.调查项目及结果分析。调查问卷主要参考了教育部高教司的《教育部普通高等学校本科专业双语教学情况调查问卷(学生卷)》(教高函[2006]73号),并在此基础上由笔者进行了再加工与设计,共23题,主要调查学生英文水平、本次双语课程教学效果、教学模式、教材和考试等的看法及双语教学定位和双语学习措施等方面的内容。调查项目及结果见表1~表3,表中未作说明的均为单选项。

由上述表1和表2可知:(1)学生的英语水平参差不齐。41.7%的同学通过了国家四级英语考试,但也有30.82%的同学未通过四、六级英语考试。(2)大部分同学认为在本科教学中开设双语课程是有必要的。(3)认为双语教学的主要目標是提升专业知识和能力的占37.23%,认为主要目标是提升外语知识和能力的占34.04%。这说明同学们认为双语教学中提升专业知识和能力与提升外语知识和能力同等重要,且提升专业知识和能力略高一筹。

由表3(见下页)可知:(1)从学生角度看,认为双语教学在课堂上外语授课比例没有统一标准的为36.96%;课堂上外语授课比例30%左右的是32.6%。这两项数据表明学生期待在双语课上,既能提高自己的英语水平,又能学到专业知识。(2)关于教材,44.9%的同学选择国外原版教材,36.95%对于现在采用的英文版教材不愿意读,认为老师需要提供中文参考资料的达到76.08%,52.16%的同学认为选择“中、英文参考资料”的形式为好。这一系列数据给我们在教材选择及建设上提出了新的思路与要求。(3)关于考试,选择外文命题,中文答题30.4%;选择外文命题,自由作答的同学为28.26%。这说明学生对英文答题有着考虑与顾及,害怕用英文答题,但又想尝试用英文去答题,他们是希望上一个层级的。(4)学生认为在授课过程中,老师应该以专业知识为主,讲述时兼顾教材上的内容。(5)33.33%同学认为教学方法和手段是决定双语教学质量和效果的最主要因素。(6)另外还有部分学生认为:双语课程根本无法提高英语水平,且增加了学习负担,没有必要开设。有39.1%的同学认为双语课程会增加学习负担这些学生大多英语水平相对稍差一些,因此感觉有些吃力。另外还有36.96%认为稍有增加但能承受;开始不适应,慢慢适应的占52.17%。

4.双语教学的建议。因为计算机学科最新的思想和成果都是来自国外,所以在教学中应该实施双语教学的模式。这样会对学生以后的工作大有益处。在开展双语教学的过程中,应该适当控制班级规模,充分考虑实际情况。在教材的选择上,也应该比较慎重,尽量选择国外著名高校的原版教材,使学生能够接触比较地道的专业英语,但原版教材内容往往较多,价格较贵,高校的教学课时在不断地压缩,减少。在现有的条件下,应该以原版外文教材做辅助,采用中文教材或自编双语教材,用中文和外文交替讲述相关的定理和关键词。期末考试也尽量采用开卷,让学生尽量使用英文编写,且考试成绩应该占总成绩的比例要低,以免学生对考试产生过大的压力,尽量让学生在轻松的环境中学习。构建双语教学的师资队伍开设双语教学对教师也提出了很高的要求,语言能力、知识水平都应该达到一定的层次,双语教师一定要具有两种语言的熟练地沟通能力,掌握大量的理论和专业知识,能够将专业知识灵活地运用到双语教学的过程中,使教学任务能够顺利的进行。且学校在双语教师的培训过程中,也应注重培养本土的教师,定期培训,使教师的专业知识有所增长。

在现有形势下,双语教学对于软件工程专业非常重要,学校一定要加大力度使其有效的执行。但它依然处于探索阶段,需要在教学的过程中不断地总结经验教训,在不断地探索实践中使双语教学能够有效的进行。在软件工程专业中,语言也仅仅是一个载体,给学生提供学习英语的机会,教学还是控制在使学生掌握专业技能知识为主。

参考文献:

[1]马颍丽.双语教学的实践与问卷调查[J].Computer Education,2009(07-0107-04).

[2]孙优萍.独立学院经管类课程双语教学的实践与思考[J].职业技术教育,2009,(11).

基金项目:江西农业大学校级课题:案例驱动法在计算机图形图像处理教学中的研究与实践资助项目

软件复用与软件构件技术探讨 篇7

1.1 软件的构件技术

软件的构件技术主要包括构件获取、构件的模型、构件描述语言、构件的符合组装、构件的分类和检索、构件的标准化等内容。下面主要从构件的模型、构件的描述语言、构件的分类和检索、构件的复合组装四个方面进行了解。

(1) 构件的模型。构件的模型主要是用来研究构件特征以及构件之间的关系, 比较常见的构件模型有COM、EJB、COR-BA三种。COM是一种二进制的构件接口标准, 它实现了不同语言之间的互相操作和不同代码之间的共享。EJB提供了通用接口, 主要用于开发多层次的、面向对象的、分布式的Java应用系统构件体系结构。CORBA主要是为了实现基于对象软件的互操作性而设计的一种接口标准。

(2) 构件的描述语言。主要是以构件的模型为基础, 解决构件的精确描述, 构件的理解以及构件的组装问题。

(3) 构件的分类和检索。主要是研究构件的分类策略和检验策略以及组织模式, 建立构件库的系统, 支持和保证构件有效的管理。

(4) 构件的复合组装。主要是以构件的模型为基础, 研究与构件的组装相关的内容。主要包括源代码和基于对象相互操作性组装。

1.2 软件构架

软件构架是对软件系统进行的总体规划, 包括对整体结构的设计、构件之间的联系、数据访问的协议、以及各元素之间的物理分布的规划、功能的设计与设计元素的集成等。研究软件的构架有非常重要的作用:研究软件的架构可以发现不同系统间的共性;设计合理的软件架构有利于促进系统的设计;研究各种软件架构可以给软件工程师提供更多的选择;在基于复用的软件开发中, 软件构架可以作为一种高效的软件构件进行复用, 还可以为组装构件提供基础, 有利于促进软件的复用。

1.3 领域工程

领域工程通过储备所需要的能力和基础为相近系统的应用工程进行服务。领域工程包括建立可复用构件的所有活动, 主要分为三个阶段: (1) 领域的分析。这个阶段主要是建立软件复用领域模型, 主要包括确定边界、辨别信息源、分析各个系统的要求、明确软件的共享部分以及软件的可改变部分等内容。 (2) 领域的设计。这个阶段的任务是建立领域构架, 领域构架不是对单个系统的设计, 而是对多个系统的较高层次的设计。建立了领域模型之后, 要进行领域构架设计。领域构架设计要根据领域模型中领域需求的变化而变化。 (3) 领域的实现。领域的实现主要是建立相应的系统机制。根据使用的复用方法和领域的成熟度, 这种系统机制可以是与领域模型或领域构件相关联的一组可复用构件, 也可能是应用系统的生成器。

1.4 软件再工程

由于软件技术的发展, 一些软件系统开始逐渐落伍, 这就需要从这些落后软件中找到有用的软件构件, 充分发挥其价值;一些软件构件随着时间的推移也会出现一些问题, 就需要对其进行维护;对现有软件系统需要进行技术创新, 以适应新的需要。软件再工程通过结合正向和逆向工程以及重构工程建立一个全新的系统形式, 可以很好地解决这些问题。软件再工程的基础就是对包括系统的源代码、系统的运行、系统的设计分析以及文档在内的系统整体进行理解。

1.5 开放系统技术

开放系统技术由最初的工业标准演变成系统软件的可移植性, 再转变为应用软件的可移植性, 直到现在的互操作性。开放系统技术能够在不降低系统效率的基础上降低软件开发成本、缩短开发周期;为软件复用提供了良好的技术支持, 如果构件符合接口标准, 就可以独立地开发构件。

1.6 软件过程

这个过程是为了建造高质量软件所需要完成任务的框架, 也就是形成软件产品的一系列过程。软件过程是软件的整个生命周期, 包括需求的获取、需求分析、设计、实现、测试、发布和维护。软件过程良好的设计可以很好地提高软件开发的开发效率和开发质量。软件过程已经逐步成为软件研究的重要课题。

1.7 CASE技术

CASE技术对软件复用具有重要的支持作用, 其中与软件复用相关的内容有:可复用构件的抽取、描述、分类和存储;检索、提取和组装;可复用构件的度量。

1.8 非技术的要素

非技术的要素主要包括:组织结构设计和组织结构的管理方法适应软件复用需求的方式;软件开发人员知识与技术更新, 软件开发人员的心理素质提升;软件知识产权的问题;软件的应用标准化等。

2 结语

软件复用与软件构件技术探讨 篇8

1 基本概念

1.1 软件复用

软件复用不仅仅是再次使用软件程序, 而是软件在开发的过程中对已经存在的软件再次进行合理地运用, 也是对劳动成果再次应用。软件复用就好比在软件开发过程中对涉及到的项目计划书、计划等进行合理地运用。

1.2 软件构件

软件构件主要包括源代码、文档等在软件开发的过程中较为重要的信息。软件开发人员对内部开发构件进行合理地运用可以显著地增加应用软件的功能, 使其更加多样化。其次, 软件开发者对其他构件编写的过程中可以合理地对软件构件进行连接。最后将新编写的构件放入到数据库中, 如此便能在软件开发的过程中更加合理地应用软件构件的功能, 从而能在银锭程度上提高软件开发的效率, 控制软件的开发成本。

2 主要内容

2.1 软件构架

软件构架包括软件构件之间的联系、结构设计以及数据访问协议等。本文通过研究可以发现不同软件系统之间的共性, 合理的软件构架更加合理化软件系统。进一步研究软件构件可以提供更多的选择给软件开发者, 并且软件开发者在复用软件开发的基础上, 可以为软件复用提供有利条件。

2.2 领域工程

领域工程主要分成分析领域、设计领域以及实现领域, 现就对这3种领域的具体内容进行分析和研究。

2.2.1 分析领域

分析领域的主要工作建立复用领域模型, 而具体的内容包括:确定边界、辨别信息源、分析和确定软件的可变部分等。

2.2.2 设计领域

设计领域的主要工作是建立领域构架, 领域机构面对的是多个系统, 设计的内容层次较高。软件开发人员在建立领域模型后, 需要对领域模型架构进行设计, 需要注意的是, 软件开发人员在对领域模型架构进行设计的过程中, 设计的内容要随时根据领域模型需求变化而变化。

2.2.3 实现领域

实现领域的建立需要依靠相应的系统机制, 在建立领域机制的过程中需要合理地使用领域的成熟度和复用方法。领域机制不仅是可复用构件, 也是一种生成器。

2.3 软件再工程

软件技术的发展淘汰了许多软件系统, 软件开发人员可以在被淘汰的软件系统中找出可供使用的软件构件, 最大限度地发挥其使用价值。而一部分软件构件在使用的过程中也出现了种种问题, 这就需要软件开发人员适当地对其进行维护, 并且不断地创新软件开发技术和维护的技术上。软件开发人员在软件开发的过程中合理的结合了各项工程从而形成了软件再工程, 有效地解决软件淘汰以及软件构件在使用过程中出现的问题。

3 展望

3.1 两者关系

软件复用能在一定程度上推动软件构件技术的发展, 但软件构件技术还需要解决以下问题: (1) 重用。由于软件构件具有较强的通用性, 因此一般来说软件构件功能可以满足多个系统的应用。 (2) 互操作。由于软件构件的协调性较强, 也就是说即便软件构件的来源不同, 它们之间也能实现相互通信和相互协作, 从而完成复杂的功能。软件技术的构件可以由各种不同的因素和条件而成, 比如不同的开发商、开发语言等, 然后软件开发人员通过软件重用而构成软件。现如今软件构件依旧具有封装特性, 也就是说在软件构件并不仅仅局限在一个对象内, 软件构件结构非常灵活, 其内部可以对多个类群以及多个程序包进行封装。

软件构件技术根据其功能可以分为底层、中层以及顶层。 (1) 底层。底层主要包括代码表和数据库。 (2) 中层。中层主要包括了各种通用构件, 但其中最主要是数据交换构件以及信息构建等。 (3) 顶层。顶层主要是针对不同领域的子系统构件或专用构件, 而其中主要包括的构件为查询、添加、删除以及统计构建等。三层软件构件技术比较中, 顶层构件的粒度较小, 底层粒度较大, 而中层则是整个软件系统中主要的技术。中层能确保构件化的实施, 并且为构件提供了运行的空间。

3.2 复用技术

软件能实现可重复使用, 而软件重用也贯穿于整个软件技术的发展。目前我国软件重用的层次已经提升到了二进制级, 在遵循统一构件模型基础上开发的软件构件在使用的过程中实现了交互, 如此能有效地控制构建粒度, 并且通过容器实现不同服务。软件构件技术在一定程度上支持了逻辑模型的构建和发展, 给构件技术未来的发展提供了基础。在软件开发的过程中, 软件构件系统中不同的构件模型之间的相互操作存在一定难度。因此, 我们可以得出, 随着我国科技和计算机技术的进步和发展, 软件构件技术已经有了较为先进的技术和丰富的理论支持。

4 结论

综上所述, 软开发人员在软件开发的过程中经常会应用到软件复用与软件构件技术, 能够在很大程度上推进我国软件产业的发展, 也在一定程度上对我国软件技术的改革以及我国的软件产业工程化的发展均有着推动作用。因此, 软件开发人员在未来软件开发过程中需要不断地加强研究软件复用与软件构件技术, 以便为软件开发提供技术支持。

参考文献

[1]张华欣.软件复用与软件构件技术探讨[J].信息通信, 2013, 22 (6) :175-175.

[2]陈辞.基于复用的军用软件构件化与生产线技术探讨[J].计算机与数字工程, 2014, 26 (7) :1306-1310.

[3]曹敬瑜, 柴玮岩, 王博等.嵌入式分布计算环境下的高效软件构件化框架研究[J].兵工学报, 2013, 34 (4) :451-458.

电脑软件与软件工程 篇9

关键词:EpiInfo软件,Epidata软件,现场调查,数据录入

0 引言

上世纪80年代以来, 公共卫生领域的研究内容和研究方法有了长足的进步, 人们愈来愈认识到, 仅靠微生物检验解决不了流行病学的诸多问题。一些大型的流行病学研究, 如美国心脏协会 (AHA) 从上世纪中期启动的弗明汉心脏研究, 从最初的队列到子代队列, 时间跨度近半个世纪, 研究成果推动了流行病学、卫生统计学、社会医学等多门公共卫生学科的发展。这些大型研究对实验设计、数据质量、统计学方法及工具软件提出了更高的要求。

Epi Info软件和Epidata软件是流行病学研究中常用的工具软件, 且都是免费软件, 两者有着密切的关系。它们究竟是什么关系?各自的优势是什么?兼容性如何?国内目前没有相关报道。本文首先简要回顾各自的开发历史, 继而对两者进行比较, 最后结合讨论提出使用建议。

1 Epi Info软件

在应用需求的驱动下, 美国疾控中心 (CDC) 的一组人员于1985年前后开始研发Epi info, 旨在支持疾病暴发的现场调查。自1986年第1版发布以来, Epi info很快得到了世界范围内流行病学专家及公共卫生专家的认可, 版本不断更新。2001年, CDC发布了DOS操作系统下最后的一个版本:Epi Info6.04d。Epi info DOS包含了一系列子程序, 如EPED (定义数据库结构及生成录入界面) 、ENTER (录入数据) 、CHECK (录入质量控制) 、ANALYSIS (分析) 。这些程序功能强大, 可以在短时间内建立起高效实用的数据库来支持数据录入及分析, 满足了疾病暴发现场调查对时间性的要求。

上世纪90年代末, 为了适应Microsoft Windows系统及微型计算机的普及, CDC于2000年开发出了Epi Info 2000 (Ep Info 3) for Windows, Epi Info 3有很多不同于Epi Info DOS的地方:首先, 数据库不再采用过去简单的ASCII格式, 而是启用Access数据库格式, 这提高了该软件与“工业标准”如Microsof Office Access 2003的兼容性, 但也失去了一些实用的功能, 如快速创建问卷、在多个变量间建立核查命令等。使用的速度也有所降低, 这不利于疾病暴发的现场调查。其次, Epi Info 3在数据分析方面的能力有了极大的提高, 引入了Cox比例风险模型、多元Logistic回归等多种计算模块, 并增加了绘图功能。由于Epi Info 3没有继承Epi Info DOS的一贯的风格, 特别是简单、易上手的的特性, 致使从熟练的Epi Info DOS的操作者到Epi Info 3的操作者, 还需要经过培训和学习。

2 Epidata软件

随着视窗类软件的应用, 很多用户觉得使用“DOS”系统下的Epi Info (1990-1995年间开发的版本) 很不方便, 而商业软件又不专注于数据的管理、操作的简化以及双录入数据的核查。丹麦的Jens M.Lauritsen决定开发一套新的软件, 起初是作为Funen县“Initiative for Accident Prevention”项目的一部分。1999年末, Jens M.Lauritsen和Mark Myatt、Michael Bruus建立起了合作关系, 成立了非赢利组织EpiData Association, 并于2000年发布了第1版的Epidata。

Epidata的设计思想起源于Epi info DOS version 6, 继承了它的文件结构和设计原则, 将其应用于Windows系统, 设计时着眼于Epidata在定义问卷结构及数据录入质量控制方面的能力。Epidata的设计思路是:通过简单的文本来定义数据库结构 (QES文件) , 然后将其转化为录入界面 (REC文件) , 最后通过对录入设置严格的条件 (CHK文件) 来进行质量控制。定义问卷结构时, 可直接拷贝文字处理软件如Mircosoft Word里的内容到QES文件, 略加修改后即可应用, 可以在编辑器 (Editor) 里对变量批量设置CHECK命令, 极大地提高了工作效率。

Epidata在数据分析方面的能力很弱, 仅能进行一些简单的描述性统计。

3 比较

Epi Info软件和Epidata软件目前常用的版本分别是TM3.5.1和Epidata 3.1, 它们基本特征和不同之处的比较分别参见表1和表2。

4 结束语

Epidata 3.1和Epi Info 3都是从Epi info DOS version 6发展而来, Epidata继承了Epi info DOS version 6的功能、流程和界面, 可以在疾病暴发时快速建立录入数据库。从2001年起, Epidata Association开始开发Epidata Analysis, 并于2005年9月发布了Epidata Analysis第1版, 弥补了它在统计分析、绘图方面的不足, 结合Epidata Analysis, Epidata系列软件可基本满足流行病学现场调查的需要。Epi Info 3后来发展成为支持流行病学整体研究的综合软件, 统计分析、绘图能力大大提高, 功能不仅仅限于支持疾病暴发现场调查。

英国G Kafatos等人指出:Epidata 3.1与Epi Info 3同出一源, 但沿着不同的方向发展, Epidata 3.1更像是Epi info DOS version 6的继承者。孰优孰劣, 不能贸然判断, 两种方向都是必要的:在创建问卷的简易性方面, Epidata 3.1具有优势, 而在分析处理混杂因素时, Epi Info 3要强大得多。我国举行的第三次卫生服务调查后期的数据录入中, Epidata软件逐渐得到了专家们的认可, 大有后来居上之势。

总之, Epi Info软件和Epidata软件的各有所长, 且兼容性较好。在使用中要注意以下几点:

(1) Epidata适用于大型流行病学调查中数据的录入和管理。如果数据量较小 (样本量<100, 变量数<30) , 使用Epidata虽然能提高录入质量, 但不一定能提高工作效率, 此时可考虑使用EXCEL来录入数据。如果数据量小但需要进行专业流行病学分析及建模的话, 建议直接使用Epi Info软件来实现数据的录入、管理、分析。

(2) 数据量较大时, 可先利用Epidata3.1的优势建立录入数据库录入数据, 进行录入的质量控制, 在定义QES文件时, 要把变量格式设置成Epi Info能识别的格式。

(3) 数据录完及逻辑查错结束之后, 可结合Epidata Analysis进行一些初步的分析, 或者导出其他格式的数据由相应的统计软件分析, 同时也可以使用Epi Info 3来读取Epidata 3.1的REC数据库来进行深入的流行病学分析。

在商业软件占垄断地位的今天, 免费软件Epidata和Ep Info都得到了广泛应用, 虽然它们沿着不同的方向发展, 但都满足了解决现实问题的需要, 在使用时有必要将两者结合起来。

参考文献

[1]PALMER SR, Epidemiology in search of infectious diseases:meth-ods in outbreak investigation[J].Journal of Epidemiology and Com-munity Health, 1989 (12) .

[2]TRUETT J, CORNFIELD J, KANNEL W.A multivariate analysis of therisk of coronary heart disease in Framingham[J].J.chron.Dis, 1967 (4) .

[3]WILSON PWF, D'AGOSTINO RB, LEVY D.Prediction of coronaryheart disease using risk factor categories[J].Circntation, 1998 (5) .

[4]MA J, OTTEN M, KAMADJEU R, et al.New frontiers for health infor-mation systems using Epi Info in developing countries:structured ap-plication framework for Epi Info (SAFE) [J].Int J Med Inform.2008 (4) .

[5]DEAN AG, DEAN JA, COULOMBIER D, et al.Epi Info, Version 6:A Word-Processing, Database, and Statistics Program for PublicHealth on IBM-compatible Microcomputers[C].Centers for DiseaseControl and Prevention, Atlanta, Georgia, U.S.A, 1995.

电脑软件与软件工程 篇10

一、软件产业的发展历程

“软件”作为术语首次被使用是在1959年, 而软件类业务从1949年就已经起步[2]。本文在参照麦肯锡观点的基础上, 把球软件产业的发展历程分为六个阶段, 下面从商业模式的角度具体介绍这六个阶段的情况:

(一) 第一阶段:早期独立编程的服务公司 (1949~1959) 。最早的软件企业是在美国出现的为客户提供定制解决方案的企业, 当时的解决方案实际上就是按照客户的需求提供独立的编程和维护服务。早期软件企业是伴随着大的软件项目而产生的, 这些大型软件项目开始由美国政府出现, 后来被几家美国大企业所认购。如美国政府在1949年到1962年间的SAGE (Semi-Automatic Ground Environment) 系统, 是美国为了防御苏联建立的防空半自动化指挥系统, 也是第一个巨型的计算机项目, 总开支就有80亿美元[4]。1959年, 兰德公司建立了系统开发公司这个独立的子公司, 以更好地开发这个大型软件。后来, 经过锻炼的程序员用他们在大项目上学到的知识创立了自己的编程企业。由于大型软件项目为独立的软件企业提供了重要的学习, 而且市场上存在着很多未满足的需求, 因此这些独立的软件企业很快发展起来。到20世纪50年代和60年代, 欧洲也有几家软件承包商先后建立, 但发展要落后于美国独立的软件企业。在这个阶段, 软件企业为客户提供的产品是定制的, 不重复销售给其他客户, 其典型代表是美国计算机科学公司 (CSC) 。

(二) 第二阶段:早期软件产品公司 (1959~1969) 。随着独立软件公司的发展, 一些公司开始尝试开发软件产品。与第一阶段的定制解决方案不同, 这些软件产品可以用来重复销售给多个客户。一般认为ADR公司受委托开发的一个代表设备逻辑流程图的程序是第一个独立的软件产品, 在软件产品开发出来后, ADR最初试图通过直接向RCA 501计算机的100个用户发放许可证来收回投资, 但只有2个用户购买了程序, 后来ADR然后改变了策略, 为IBM 1401计算机和IBM/360系统重写了程序, 并在几年里成功让数千台IBM计算机使用了ADR软件[3]。由于在这一阶段计算机地位得到了显著的提升, 软件也开始全面进入商业领域, 软件工程的原理和方法也开始普及。在这一阶段也出现了第一个软件许可证协议, 这个协议包括了一个软件产品的基本概念、定价、维护以及保护手段, 软件许可证协议在很大程度上促进了软件的商用。以ADR为代表的软件公司的成功也证实了软件项目和软件产品企业是两个很不同的行业, 他们拥有完全不同的商业模式。在新的模式下, 软件公司不在出售一个独立的产品, 而是将一个软件多次销售。这一阶段主要的公司代表是ADR和Informatics。

(三) 第三阶段:企业解决方案提供商的出现 (1969~1981) 。在20世纪70年代以前, 虽然存在独立的软件公司, 但这些软件公司的解决方案和产品基本上都是提供给硬件供应商的, 再由硬件供应商把最终的产品提供给用户。不过这种情况在20世纪70年代以后慢慢发生了改变。一方面是硬件提供商提供的软件系统不能完全满足用户的需求, 另一方面越来越多的独立软件公司能够开发功能更强的软件产品, 并能够为硬件供应商之外的各种规模企业开发产品。这样, 有部分用户愿意付费从硬件供应商之外购买更合适的软件。比较典型的是数据库市场。由于数据库系统是一种基础软件, 应用非常广泛, 而技术又非常复杂, 由计算机生产商提供的系统功能并不完善, 这样独立的数据库公司开始出现并逐渐占据了重要的位置。在这个领域, 欧洲软件业发展也比较快, 比较有代表性的是德国达姆斯塔特应用信息处理研究所的几位成员在1969年创立了SoftwareAG公司, 该公司在三年后进入了美国市场, 并在随后不久开始向全世界销售它的产品。这个领域其他具有代表性的公司还有1968年建立的Cincom系统公司、1972年建立的SAP、1976年建立的计算机联合公司和1977年建立的Oracle。在这一阶段, 软件也分工有了较大的发展, 软件企业开始以企业解决方案供应商的面目出现。

(四) 第四阶段:客户大众市场软件提供商 (1981~1994) 。1981年IBM公司正式推出了全球第一台个人计算机——IBM PC, 该产品也成为个人计算机标准平台。个人计算机的应用推动一种全新的软件的出现:基于个人计算机的大众市场套装软件。微软是这个时期最知名也是最成功的软件公司, 微软的MS DOS, 以及后来的Windows, 成为市场的领先标准。除了微软外, IBM PC平台还推动了大量软件企业的创立, 这些新建立的企业很快就在个人计算机软件的很多分分支中占据了主导地位, 其代表有Adobe、Autodesk、Corel、Intuit和Novell。这个时期的软件是真正独立的软件产业诞生的标志, 同样也是套装软件引入的开端。20世纪80年代美国软件产业高速增长, 如1982年全国软件产业年收入还在100亿美元, 到1985年就达到了250亿美元。在软件业高速的发展过程中, 软件产业变的更加开放, 出现了更细致的分工, 这也推动了出现了软件外包和开源软件等新软件商业模式的出现。

(五) 第五阶段:互联网增值服务提供商 (1994~2006) 。在20世纪末互联网出现之后, 飞速发展的互联网给软件产业带来的革命性的意义, 也给软件发展提供了一个崭新的舞台, 网络逐渐成为软件产品的新平台, 大量基于网络的软件不断涌现, 满足了不同用户的多样化需求。这一现象改变了软件业的竞争格局, 新的网络企业通过提供软件服务迅速发展, 并对传统大众应用软件提供商产生冲击。在这一阶段, 新兴的网络企业利用内部或外部获得的各种软件给网络用户提供服务, 不再通过销售软件获得收入, 而是通过提供互联网增值服务获得收入。典型的企业如Google、腾讯等。

(六) 第六阶段:基于云计算的软件服务公司 (2007至今) 。云计算是一种基于互联网的计算方式, 通过这种方式, 共享的软硬件资源和信息可以按需提供给计算机和其他设备。云计算由包括SaaS (Software as a Service) 、PaaS (Platform as a Service) 、IaaS (Infrastructure as a Service) 三个层次。在云计算模式下, 软件进一步向“服务化”的方向发展。如在SaaS模式下, 企业不需要购买服务器等硬件和相应的软件, 而只需要支付租用费, 通过网络来应用企业所需要的各种应用系统, 而且不必关注硬件、软件的升级和维护。如果说第五阶段主要是新兴的网络企业提供软件服务的话, 第六阶段主要是传统的软件企业通过利用云计算的方式向服务化方向转型。在这一阶段, 软件企业提供服务的方式和获得收入的重点都正在发生改变。典型的企业如微软、用友软件等。

二、软件产业发展的趋势

从软件产业发展历程来看, 软件企业的商业模式是在不断变化的。随着软件产业的发展, 软件企业的商业模式也在不断的演变。从产业发展趋势上看, 软件产业正在向网络化、开放化、服务化和产业融合等方向发展, 而且这些趋势仍然在不断强化, 从而推动了一些新商业模式的出现, 也推动着原有软件企业的转型[5]。下面就软件产业发展趋势及其对软件企业商业模式的影响做详细分析。

(一) 网络化。

互联网在人们工作、学习、生活、娱乐等各个方面的广泛应用, 不仅提高了人们的工作效率、改善了人们的生活水平, 也让软件开发、应用和获利方式产生了深刻的变化, 众多软件企业开始利用互联网这一平台开发新的软件, 提供多种多样的服务, 也使得软件服务业正在从“以计算机为中心”向“以网络为中心”转变。这种网络化趋势推动了软件企业向新模式转变, 在国内软件产业中比较典型的是安全软件市场, 自2008年安全软件公司奇虎360宣布推出永久免费杀毒软件后, 瑞星、金山毒霸等国内主要安全软件也逐渐开始免费, 虽然目前安全软件企业新商业模式还未完全成熟, 但旧的商业模式将不可避免地向新模式转变[6]。

(二) 开放化。

软件产业的开放化主要是指软件产品的开放化, 软件产品的开放又体现在标准开放和源代码开放两个层面。开放标准一般指通过公开公平、协商一致的过程制定或者批准的标准[7], 软件的开放标准则是实现软件互操作的基础, 只有实现开放标准, 软件之间以及软件和硬件之间才能借助于同一套格式来交换数据;开放源代码软件是指其源码可以被公众使用的软件, 并且此软件的使用、修改和分发也不受许可证的限制, 开放源代码软件本身是有版权的, 是通过软件许可协议的方式允许其他用户使用、传播和修改。开放标准让软件产品在互操作的前提下, 保证软件行业的自由竞争;而由开源软件推动的新模式使得软件企业不再依赖于产品收费, 而是通过收取服务相关费用获得收入, 这样, 软件商由重视产品向重视服务转移, 让使用软件的企业和用户得到更多便利。国内比较典型的软件企业如康盛创想、盛大网络、易软天创等已经开始采用开源的商业模式, 通过“服务收费”、“双授权”、“咨询 (培训) 收费”、“广告收费”等方式获得收入[8]。

(三) 服务化。

软件服务化可以从产品经营和软件设计两个角度来认识。在产品经营方面, 软件“服务”的概念是和传统的软件“产品”概念相对应, 传统的软件产品在经营上遵循的是“研究-发布-释放-升级”这一模式 , 而软件服务则是把软件看成一种连续的过程, 让软件升级的周期被大大缩短, 让用户感觉软件时刻都能满足用户的最新需求;在软件设计方面, 面向服务设计的软件是把软件模块化思想粒度提升到用户所需要服务层面上, 面向服务 (SOA) 技术是在互联网环境下、各行业构建信息化基础设施和促进信息资源开发利用的有效方法之一, 也是支撑云计算、软件服务化及物联网发展的重要技术。服务化对软件企业商业模式影响最显著的就是SAAS模式的出现和发展, 自2005年八百客在国内首先提供SAAS服务以来, 已经有百会、今目标、Xtools、友商网、800APP、金算盘、讯鸟、江苏风云网络、北京网动、神码在线等几十家软件企业采用了这种新的商业模式。

(四) 产业融合。

高渗透性是软件产业的特征之一, 软件产业向其他产业的渗透结果就表现为产业融合[9]。这种融合, 既体现在终端产品功能的融合, 即个人计算、通信、消费电子的融合;又体现在运行平台上的服务融合, 即通信服务、内容服务、计算服务等融合。软件产业与其他产业的渗融合在向客户提供新产品和新服务的同时, 也推动了软件企业新商业模式的出现, 比如青岛软控通过提高橡胶机械工业智能化控制软件的水平, 已具备向轮胎企业提供所需的全套设备及控制系统的能力, 从而实现 “卖工厂”这样一种新模式, 并以这种模式协助建起了17个民营子午胎生产企业[10]。

三、软件企业商业模式创新的特征

(一) 软件企业商业模式创新主要是渐进式的。

从软件产业发展历程都可以看到, 一段时期内软件产业的主要商业模式是在不断变化的, 这种转变在当时的时点上就是软件企业的商业模式创新。从过程来看, 每个阶段的主要商业模式变化并不是突变的, 而是有一个较长的过程, 因此软件产业的商业模式创新以渐进式为主。

(二) 新商业模式是旧商业模式的补充而不是替代。

从软件产业发展历程都还可以看到, 新商业模式的出现为软件企业提供了一种开展新业务的可能, 但是这种新的业务并不一定取代原由的业务, 而是作为原有业务的一种补充或延伸。如互联网增值服务的出现并没有取代传统的大众软件, 而是作为大众软件的一种补充。

(三) 新商业模式的进入壁垒不高。

由于软件业的初始投资和进入壁垒都比较低, 而一个软件产品受到用户信赖的周期比较长, 因此一个新的软件商业模式出现后可能在短期内出现大量的模仿者。虽然软件产品的规模效应非常强, 在一个商业模式成熟后可以获得明显的规模效应, 但是在商业模式形成的初期可能会面临激烈的竞争。

(四) 软件企业商业模式不断多样化。

随着产业技术的发展和市场需求的变化, 软件产业的商业模式也在不断地增加。特别是在二十世纪九十年代以来, 随着网络技术和通信技术的快速发展, 很多企业为一些细分市场提供新的产品和服务, 其中也出现了一些新的商业模式。

参考文献

[1].Chesbrough H., Rosenbloom R.S., The role of the business model in capturing value from innovation[J]Industrial and Cor-porate Change, 2002, 11 (3) :529~555

[2].王鑫鑫, 王宗军, 涂静.基于系统视角的软件企业商业模式创新研究[J].2010 (6) :203~207

[3].Hock D.J., Roeding C.R., Purkert G et al.Secrets of softwre success[M]Boston:Harvard Buiness School Press, 2000

[4].Steinmueller W.E..The International Computer Software In-dustry[M].Oxford:Oxford University Press, 1995

[5].Rajala R, Westerlund M.The Effects of Service Orientation, Technology Orientation and Open Innovation on the Performance of Software-intensive Service Businesses[C].HICSS, Hawaii, 2012:1532~1541

[6].张雪超.安全软件商业模式演变[J].互联网天地, 2010 (5) :32~34

[7].徐杨, 梁正.开放标准:企业创新的机遇与挑战——以长风开放标准平台软件联盟为例[J].科学学与科学技术管理, 2010, 10:84~86

[8].张源.开源商业模式介绍[J].程序员, 2008, 6:63

[9].周宏仁.两化融合促进软件产业调整升级[J].信息系统工程, 2008, 7:4~7

上一篇:价值保持下一篇:科技成果转化体系