电脑软件与软件工程

2024-07-06

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

电脑软件与软件工程 第1篇

1.1 研究背景

随着软件工程的不断发展, 对软件工程的研究逐渐划分为两个方面:

(1) 软件工程技术。包括对工程化的开发方法, 软件开发工具与环境的研究。主要面对的技术有:适应需求分析的不确定性;软件的可靠性;软件度量;软件复用性等。

软件工程技术的发展非常迅速, 出现了许多优秀的软件开发方法和工具。比较熟悉的瀑布模型、快速原型法等方法在国内外都有过成熟和成功的应用范例。近几年随着新的软件开发技术的不断涌现, 一些先进的软件开发思想也不断渗透到软件工程技术的研究中, 出现了诸如面向对象的软件工程等新的软件工程开发技术, 给软件工程技术的研究带来了新的课题。

(2) 软件工程管理。包括质量管理, 费用管理, 配置管理, 项日管理等。主要面对的问题有:软件开发成本的控制;软件开发中的资源控制;软件质量的控制;开发进度的控制等。

人们最初认为软件工程的发展主要由软件工程技术决定, 而长期忽视软件工程与软件质量管理。对软件工程管理和软件质量保证的重视, 从而导致了对软件工程管理的研究长期滞后。

可喜的是随着国内众多工业企业掀起的与国际标准接轨, 进行国际标准化质量体系认证 (ISO 9000系列) 的热潮, 许多软件开发企业的有识之士已经开始关注软件质量的管理, 甚至开始准备或已经进行软件质量体系国际标准化认证的工作。

1.2 研究方向

随着国际计算机行业新思想, 新技术的不断涌现, 只有从一开始就站在一个较高的起点上研究和开发软件工程的技术和管理, 才能紧跟、赶上、甚至超过软件工程的国际先进水平。试图从软件工程学科的两个方面 (软件工程技术和软件工程管理) 对国际上的一些新的发展进行研究;而且希望结合具体的开发实例寻求一套比较实用和先进的软件系统开发和管理手段。

采用的方法主要来自于Elvar Jacobs等人的“面向对象的软件工程” (object-Oriented Software Engineering, OOSE) 这一方法, 略加修改以适应软件质量管理的需要。将在第二章详尽介绍这一方法, 并简要其它面向对象的开发方法。

2 软件质量体系参考模型

2.1 模型的建立

提出的软件质量参考模型是基于三个方面的考虑而形成的, 包括SQMP、OOSE和ISO9000-3。建立模型的基本指导思想是SQMP, 即软件质量管理的方法。SQMP首先要求对软件的质量要有一个目标 (即需求的建立) 。根本地、全面地满足用户的需要当然是任何体系模型最基础的目标。但是, 不同的体系模型由于存在不同的体系结构, 实现方法和着眼点, 必然在具体的功能和性能要求上有不同的追求。由前面对软件工程两个方面的讨论可知, 提出的模型希望使软件产品最大程度地具有可维护性、可重用性、可移植性, 更主要的是使软件开发过程更简单, 更易理解, 具有更高的灵活性、抗变化能力、可维护性和可追溯性。这些要求与体系模型建立的方法有很大关系, 即SQMP中的第二方面:设计、开发和维护的方法。这里采用的方法是OOSE法。面向对象的思想本身就具有许多优秀的品质, 而OOSE以维护为主要目的, 它的软件设计和开发过程能更充分地利用面向对象的思想的优势, 使模型的质量目标更易实现。

2.2 质量体系框架

本小节规定了质量体系框架建立的基本原则、基本步骤、基本要求和基本要素。主要包括七个方面:

(1) 确定质量方针和质量目标

质量方针体现了一个组织对质量的追求, 对顾客的承诺, 是职工质量行为的准则和质量工作的方向。质量方针中应包括质量目标, 质量目标是一个企业或组织对质量的具体要求。

(2) 确定组织机构

企业内部应对现有的组织机构进行调整以适应质量管理的要求, 对具体的项目而言应建立相应的责任小组。组织机构中应至少建立一个质量管理部门专门负责质量体系的建立, 质量控制的实施和与质量相关的其它活动。质量部门应具有较高的独立性, 一般只对最高领导或机构负责, 不受其它部门和项目的约束。它还应具有相当大的权利, 能够对在生产过程的各个环节, 产生的质量问题予以及时解决。

(3) 培训和教育

在质量体系实施之前, 应由最高领导者或机构负责, 由质量管理部门实施, 对全体员工进行质量管理的教育和培训, 以提高全员的质量意识, 熟悉质量管理的过程和方法, 明确责任和分工, 以确保高效快速的实施质量体系。首先由质量管理角色制定出质量管理培训计划, 并与规划角色协商, 然后, 依次对开发层和实现层进行质量概念的教育, 力求使每一个开发和管理人员明确自己的责任, 明确质量管理的重要性。最后, 将质量手册分发给每个人, 使每个人对自己的职责、行为规范和质量要求有明确的认识。

(4) 确定管理职责

在明确组织机构的同时, 质量体系应明确各个机构和人员的职责及他们之间的相互关系。这些责任应包括企业和项目管理者的责任, 各个机构的责任, 客户方责任, 工程需求分析、开发、实现和测试等各个环节管理者的软件工程与软件质量管理责任等, 以期达到产品开发的每个过程和质量控制的每个环节都有明确的分工负责, 既无重叠也无疏漏, 以防止质量因控制的原因产生缺陷。

(5) 评审

应组织专门人员和机构对建立起来的质量体系进行定期的审核, 以确保质量体系的不断改进。审核有内部审核和外部审核。内部审核是企业的主动行为, 应包括开发和管理的各个过程的主要负责人。在审核前应按照需要和重要性安排审核的顺序。审核结果要有书面记录, 发现问题应及时采取纠正措施。

(6) 质量体系文件

质量体系的所有要素和规定都应落实成文字, 要用系统有序的方法将所有质量体系要素、要求和预防措施清楚地写入文件。每个软件项目的开发和实施都应依据质量体系文件的规定制定相应的质量活动计划并形成文件, 以确保有关机构和人员能够理解并遵照执行。

(7) 纠正措施

应制定采取纠正措施的书面规定并贯彻执行。其内容应包括:调查产品不合格的原因并研究为防止再发生所需的纠正措施;对全部过程、操作、质量记录、服务报告和顾客投诉进行分析, 以查明不合格品的潜在原因;根据风险程度, 采取相应的预防措施;应对纠正措施的有效实施予以控制;执行由纠正措施引起的规程的更改并予以记录。

结束语

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

以上观点还有许多值得推敲的地方, 由于知识的局限性, 致使很多问题未能进行深入的探讨。对于提出的模型, 还需要进行大量的实际应用才能积累度量本方法质量的数据和经验, 单纯从理论上考察这个模型是不够的。

参考文献

[1]中国认证人员国家注册委员会.质量体系内部审核员国家通教程[Z].[1]中国认证人员国家注册委员会.质量体系内部审核员国家通教程[Z].

[2]李友仁.软件工程与软件质量分析[Z].[2]李友仁.软件工程与软件质量分析[Z].

[3]朱兰.质量计划与分析[Z].[3]朱兰.质量计划与分析[Z].

浅谈正版软件与盗版软件的利弊 第2篇

任何事物既然存在,便有其存在的意义,盗版软件亦是如此。无可厚非,盗版软件以其低廉的价格、便捷的操作、较完备的功能而得到用户的广泛使用。而正版软件因其价格相对昂贵,目前法律对正版软件保护不健全导致等因素,阻碍了正版软件的广泛使用。

下面以专业绘图软件Solidworks、AUTOCAD为例,探讨公司在面对正版软件与盗版软件时该如何选择。

就绘图软件使用者而言,在绘制简单零件或小型装配体(零件数小于100个)时,由于运算要求较低,对软件运行的稳定性要求不高,绘图者使用盗版绘图软件完全可以按要求完成绘制工作,正版软件与盗版软件在操作和功能方面没有明显区别。

但是,当绘图者需要绘制复杂零件或大型装配体时,盗版软件与正版软件的区别就有所体现了。首先,软件的稳定性,在绘制上千个零件的装配体时,正版软件的稳定性优势便体现出来,较好的保证了绘图者所绘模型数据的安全,较少担心因软件运行不稳定而丢失模型数据;其次,软件的可持续使用性,盗版绘图软件存在突然被封序列号而无法使用的情况,正版软件则不存在无法使用的情况;最后,软件的可持续升级性,绘图软件公司通常会给正版用户提供版本免费升级的服务以及相关技术支持服务,而盗版软件用户是无法享受这些资源的。

软件是各公司软实力的重要体现,也是公司的核心竞争力。一套正版软件价格相对昂贵,某些大型公司仅一款正版软件的购置费用就高达数十万元,很多公司负担不起。如今企业都注重知识产权保护。盗版软件的使用,虽然违背了知识产权保护的精神,但行业的现状却是盗版软件的广泛使用。开发软件的公司很少会对绘图软件个人使用者提出制裁,但具有一定规模的公司如果长期使用盗版,则涉及侵权侵犯专利等法律问题,影响公司形象,给公司带来负面影响。

目前,国内多数稍具规模的公司在对待正版软件问题上一般都采用正版软件与盗版软件并行使用的方式。员工平时使用盗版软件进行绘图工作,正版软件在公司对外活动时使用。由于购买了正版软件,不仅可以有效的避免侵权等法律问题给公司带来不必要的麻烦,还有助于树立公司诚实守信、依法守法等良好社会形象。同时,本公司在与国外公司合作时,正版软件可以应对外国公司的检查,有助于公司间建立信赖关系,开拓更大的市场。

嵌入式软件开发模式与软件架构研究 第3篇

关键词:嵌入式软件;开发模式与软件架构;系统安全

中图分类号:TP311 文献标识码:A 文章编号:1006-8937(2016)06-0064-01

信息社会的互联网在发展过程中面临着越来越复杂的问题,嵌入式软件在开发和架构过程中随着功能需求的加大,嵌入式软件也更加广泛地应用于各种设备上,这种广泛的应用对嵌入式软件操作和运行过程中的稳定性和安全性问题提出了更高的要求,然而受到当前技术水平的制约,在软件开发和研制的过程中还存在着较多的问题,它与其他的软件比如说桌面软件等存在着较大的差异,由于其技术还不够成熟,因此在开发和软件架构的过程仍旧是嵌入式软件需要进行解决的关键问题。

1 嵌入式软件开发开发和架构问题简述

首先,在软件的开发阶段,为了减少系统资源的过度消耗,嵌入式的软件在代码的制作过程中主要针对的是用户使用过程中的问题,其复用度比较低,这就导致了软件在实际使用过程中实现用户多项的应用要求时发生困难,这是在开发过程中必须要进行统筹的问题。

其次,嵌入式软件在具体的应用过程中通过与硬件驱动的接口进行对接操作,由于面对的对象硬件驱动等应用对象的差别比较大,在这个过程中不同的设备之间的差异需要嵌入式软件要有与之比较高的兼容性,这需要在软件的开发过程中对常见的的对接的硬件进行操作系统进行代码的编写。

在软件的使用过程中为了解决使用过程中软件本身存在的问题以及满足新的用户要求需要对软件进行升级扩展其功能,并且保证在使用过程中软件的工作效率和安全性,需要向被嵌入的操作系统进行代码的植入,这个问题降低了软件在使用过程中的效率问题,在研发过程中,这造成软件的开发周期延长和开发效率的降低。

2 开发模式和软件架构

嵌入式软件的开发模式与一般的桌面型软件的开发模式的开发过程存在着较大的差异,它首先表现在开发过程中,它首先要考虑到代码在不同接入的硬件系统的兼容性,同时需要在代码的编译过程中交叉编译,这些问题给软件的研发带来很多问题和要求,导致在软件的研发过程中,无法灵活地适应市场的变化随时发生调整。

利用多平台的研发条件以及套件式交付的方式能够最大限度上利用研发平台和实现资源的共享,有效提高产品的质量和减少研发的时间以适应市场的需求,降低研发成本,这是未来嵌入式软件研发的趋势。

在嵌入式软件的研发过程中,准备阶段包括获取开发套件和与开发环境集成,编码的阶段是一个利用终端模拟器进行反馈的系统,在这个过程中,工程师进行相关的应用程序的编写以及进行运行程序的编译,完成后进行初步的运行和调试,通过自动写入终端模拟器进行反馈,如果有缺陷则会重新进行缺陷的部分程序的重新编写。

集成调试的反馈建立在编码基础,调试正常的编码进行应用程序的归档,归档完成后进行集成的编译,并进行运行和调试,集成的编译通过编入目标系统完成试运行,并完成整个过程的试用报告,在运行过程中如果存在漏洞则会重新进入终端模拟器寻找发生漏洞的编码并进行漏洞的修复。

嵌入式软件在应用架构过程中分为三个层面:接入层、应用层和基础层。用户通常通过三种常见的方式进入软件构架实现多种功能的应用层面,电脑接入、手机接入和遥控接入进入用户的数据管理、节能优化、充值服务以及安全控制等应用层面,应用层面通过控制、采集以及通讯等手段实现对电子锁、电器、仪表等接入系统中的控制实现用户的所要求的功能。嵌入式软件系统结构图,如图1所示。

嵌入式软件的各个层面通过协调完成设备的预定功能,通过接入目标设备的接口以及各个设备之间的实现整个系统的运行。在接口层首先存在着接入的要求,这些要求是实现功能的预设。可以通过接入以及用户的功能要求进行具体的配置制定出符合特定要求的软件系统。

进行功能控制和管理的是内核层,这个层面主要进行任务的管理和分配调度,而其他的应用组件比如网络协议和数据库等可以通过存储实现复用以尽量减少软件的进行系统烧入的时间,同时用户可以根据自己的需求进行配置,这就使得软件的应用范围更加广阔。

设备的操作层中对硬件的功能进行封装,通过提供对各种操作系统的硬件功能提供统一的软件接口能够保证软件在烧入的过程中中成功移植的关键所在,这个过程实际上也是实现了硬件操作过程中代码的复用的过程。这种方式可以应用到其他的嵌入嵌入系统的开发利用中,针对不同的芯片进行对应的编码的编写并进行存放实现对不同系统中同一功能元件的代码复用。

3 嵌入式软件开发模式和架构中有关升级和升级的 效果评估

在软件的开发模式和软件架构过程中必须考虑的关键问题就是在后期用户使用过程中的软件升级问题,嵌入式的软件适用不同类型的设备,但是其自身并不存在升级的功能,因此在使用过程中出现的缺陷和漏洞系统无法进行修复,而且在使用过程中,用户会逐渐产生新的功能需求而这种需求在软件的开发和架构过程中往往是无法预期的,这就需要利用远端进行软件的升级。

目前市场上运用的方式需要在软件在开发和架构过程中就进行控制,远端接收到嵌入软件运行过程中的漏洞以及用户发送的升级要求,针对这些问题进行相关的代码的改写以及增加功能代码的写入,这个过程中主机实现了二进制的解析以及命令的下达,需要升级的软件所在的设备实现了与主机的通信并进行数据包的传送,通过数据的传送进行软件升级的准备以及进行必要的软件漏洞和缺陷地弥补等,目前主要通过多次的数据的传输来保证传输数据的完整,同时也对文件长度进行确定保证软件省局数据的准确。

4 结 语

嵌入式软件目前已经占据了较大的市场份额,但是过高的软件研发的经费阻碍了其研究发展的进程,随着市场对于嵌入式软件功能的需求的扩大以及软件质量要求的提高,这对软件的开发模式和软件架构方式的革新提出更高的要求,这要求在软件靠法过程中实现缩短产品的开发周期和成本,另外软件复用通过在计算机系统中进行控制来实现软件研发过程中的大规模应用问题,这对软件的研发成本的降低以及更好地满足用户更为复杂的功能要求具有非常重要的意义。因此,对于软件的开发模式和软件架构的问题的研究还需要进一步的投资和工程人员投入,以实现其大规模的应用。

参考文献:

[1] 吴慧婷,綦志勇.一种简单可靠的嵌入式软件升级方法[J].信息技术与 信息化,2015,(9).

软件架构与可信软件开发 第4篇

现代信息技术的发展和应用给社会生活带来了极大的便利,也对很多原本固有的行为模式的改变带来了巨大的推动力,从而引起社会生活和人类行为等方方面面的变化。纵观人类社会的发展进程,任何新技术的投入使用,在推动人类进步的同时,也不可避免地带来无法估计的问题。

而各种软件作为信息技术发展的核心,在信息技术和人类社会生活接近、融合中,扮演了最直接的代表角色。人们对软件本身、软件技术及软件使用的评价和期望,一定程度地反映了人们对信息技术,甚至对人类社会进步的态度。但软件的应用在给人们生活带来极大便利的同时,其生产、使用过程中的各种不便、缺陷甚至破坏,也给人们带来了极大的影响,有时甚至可以用震撼来形容。这促使更多的人越来越重视软件的“可信赖”问题,越来越多的人提出,软件应该能够真正按照人们的期望运行,避免任何非预期的行为,而目前阶段的很多软件,尚未完全达到这一要求,这也就是可信软件问题。在信息安全问题已经危及国家经济命脉并上升到国家防务安全问题高度的今天,可信软件问题的研究已经引起包括政府在内的各界的重视。

从国家角度讲,在很多应用领域,如航空、航天、国防工业、高精尖技术产业等,国家既是可信软件开发的倡导者,也是可信软件的直接使用者,因此,也必然对可信软件的研究和发展起着至关重要的作用,这就使得可信软件研究对国民经济的发展具有基础性、战略性的重大意义。我国也针对软件的可信问题研究,投入了大量的人力和资源。

2. 可信软件研究现状

(1)什么是可信软件。

一般认为,如果一个软件系统的行为总是与预期相一致,则可称之为可信的(trustworthy)[1]。从人们对可信软件的期望来说,也包含软件系统本身即使在遭到非法使用(包括误操作、硬件错误、通讯环境影响、非法入侵等)或蓄意破坏的情况下,也能够提供持续、一致和可信赖的服务,从这一点来说,可信软件的讨论范围覆盖了软件使用的各个方面。可信软件生产、使用当中的各个环节,都蕴藏着可致力于解决软件可信问题的重要课题。

(2)软件不可信的原因。

需要注意的一点是,软件可信问题并不是一个完全崭新的问题,而是随着软件应用的进一步推广,使软件生产在原有规模的基础上进一步扩大,使软件生产中的各个环节分工更细。环节的增加也必然会同时增加引入各种缺陷的风险;而软件应用范围在深度和广度的扩展,使得各种破坏性操作发生的几率大大增加,破坏程度愈演愈烈,损失与日俱增,其影响也日益凸显;同时,对软件使用的依赖,使软件变得似乎庞大和难以掌控,也使其破坏力发挥到必须人人关注的程度,而此时此刻的人,似乎变得很脆弱。

得益于现代信息技术发展的信息传播本身,也使得软件的缺陷得到进一步渲染和夸大,人们头脑中充斥了诸如因为软件失效而导致北美大停电,最终导致数十亿美元损失;俄罗斯的载人飞船因为导航软件的计算错误,在反航途中大幅度偏离预定降落地点;以及无数现实的和虚拟的木马攻击对国防带来新挑战等等之类的故事,也使软件可信问题,成为亟待解决的问题。

应该看到,软件可信问题之所以引人注目,也在一定程度反映了正常的社会心理问题。简单来说,同一事物,对不同主体而言,其可信度可能是不一样,即使对同一主体而言,在不同阶段对其可信的认知也是不一样的:对某一个软件系统,当用户对其功能并不很了解时,可信度低,掌握了较多的功能后,可信度就大大提高。

这正如20世纪60年代出现的所谓软件危机一样,无非是软件产业发展过程中的一个特殊阶段,从产业发展本身来说,是必由之路。在一定程度上,可以通过强化软件开发能力得到解决。

(3)可信软件基础研究所涉及到的问题。

在目前针对可信软件问题研究中,保障软件可信性的几个基础性问题包括:软件可信性度量、建模与预测,可信软件的构造与验证,可信软件的演化与控制和可信环境的构造与评估。

(4)在现有的软件生命周期中改善提高软件可信性。

在当前社会发展阶段,软件还属于人类智能产品,其生产过程中可能的各种人为问题也是软件各种缺陷的原因,其中包括:对用户需求的理解有偏差,软件规模增大带来开发的复杂,设计过程引入缺陷(架构缺陷、设计不合理),时间压力,其他人为的外在因素等。

从软件工程的角度看,软件产品的生命周期包括可行性研究、需求规范或功能设计、体系架构和设计,编程实现、测试、问题分析和修改、系统部署、运行维护等阶段(见图1)。

从软件生产的成本投入和工作性质(创造性和维护性)看,我们可以把整个软件产品的生命周期划分为上游和下游2个部分:上游包括可行性研究、需求规范或功能设计、系统架构和设计、编码实现等过程;下游包括测试、问题分析和修改、系统部署、运行维护等过程。考虑到影响软件可信因素的各种缺陷的引入,“提高软件可靠性和可信赖程度的所有质量方法都必须尽可能地在上游阶段应用”[2],即在软件设计实现阶段处理影响软件可信的可控制(内因)和不可控(外因)因素,这也说明,在现有软件生产过程的基础上,通过强化某些关键过程,可以提高软件可信度。

3. 软件架构与软件开发

(1)软件架构的定义。

软件界对软件架构这一概念本身给出了很多的定义,尽管不尽相同,但在软件架构的工作是针对系统组成成分和成分之间关系的表述上,却几乎是一致的。在这里,我们引述Bass等人的话,给出软件架构的定义:“一个程序或计算机系统的软件架构是系统的一种结构或组成结构,它包含软件元素、这些元素的外部可见的属性以及元素之间的关系。“外部可见”的属性是其他元素对该元素可以做出的假定,诸如它提供的服务、执行时的特征、错误处理、共享资源的使用等。”[3]

换句话说,软件架构的主要工作是关注于整个软件系统是由哪些子系统组成,以及各个子系统相互之间的关系。

(2)软件架构在传统软件开发中的地位。

正如之前所述,软件可信问题并不是软件发展中的崭新问题,软件架构工作也不是软件开发体系中的一个新兴职业,而是因为软件规模变得越来越大,软件的设计和开发工作变得越来越复杂,促使软件开发组织按照不同的人员组成层次来应对解决软件设计、开发中出现的不同层次问题,即在现代软件开发中, 对架构与详细设计进行分离,这也是对软件本身发展要求的一种适应。

这种分离,也使人们能够更好地去分配资源和发展不同专业的特长需求,以利于更好地、协调一致地完成复杂的工作。而这一过程本身正如David Garlan和Mary Shaw所描述的,“随着软件系统的规模和复杂度的增加,设计问题就会超越算法和数据结构凸现出来:整体系统结构的设计和制订就呈现为一类新的问题。结构问题包括,……。这是软件架构层面的设计。”[4]这很好地表述了关于软件架构讨论的产生,以及人们希望软件架构研究涵盖的内容。在一定程度上,架构与易变的具体应用细节是可以分离的,从更大的范围来说,术语“架构”总是意味着“不变的深层次结构”[5]。

但架构与设计并不是割裂开来的,正如架构工作并不是所谓的软件行业的新兴职业一样,架构是系统整体规划的一个组成阶段。它突出了把需求分析反映的用户视图映射为系统的总体和子系统的组成,侧重于描述各个子系统的框架和其相互之间的接口定义和优化,而把各个子系统内部的具体实现留给了详细设计。

对于详细设计和代码开发人员来说,他们在更多的情况下并不需要关心系统各个组成部分之间是如何装配在一起的,他们关注具体某个组成部分是如何实现的,以及有哪些技术限定和架构约束,而技术限定和架构约束正是由软件架构工作在前期做出的。

因此,架构人员和设计人员有各自的工作重点,这有助于我们更好地理解软件架构的工作与软件架构工作对整个系统的影响。

软件架构从系统设计中分离出来,使得架构人员从设计开发人员中随之分离出来,这就像在软件开发队伍中有了专职从事软件测试的工程师一样,对软件的规模化设计生产,具有重大意义。这意味着软件产业分工的进一步明晰,产业链应对产业发展作出了变革。虽然在很多情况下,架构人员也同时从事设计开发工作,但毕竟软件架构这一产业行为更为明确,对软件生产发展来说,影响是巨大的。

(3)软件架构的输入和输出。

软件产品的生产过程,是从需求分析开始的,从需求分析开始的软件生命周期的每一步骤,都决定了软件的可信。

一般说来,软件架构是从需求分析结束,有了完备的需求规格后开始的。在需求分析的基础上,软件架构反映了软件系统高层的结构,重点描述系统为完成需求分析定义的功能而分解成的组件、组件的布局、以及各组件间的关系。软件架构描述应该包含架构的多个视图,规划针对系统的功能性需求和非功能性需求的设计原则。特别要提到的是,系统性能、容错能力、安全性甚至CPU和内存使用等非功能性需求,对架构人员来说,也是功能要求的组成部分。

从软件架构的输入输出来看,满足软件可信的具体实现,是从系统架构工作开始的。软件架构工作是从需求出发,到产生出确定的系统运行架构,并对后续的软件设计实现提供基础,从这个过程中可以看到,架构承担着把商业概念映射到设计实现的职责,因此,也是决定软件可信的重要因素。

而软件架构阶段中的架构人员要从需求分析入手,全面认识需求,并对关键需求进行区分,之后侧重于系统的分解以及分解后的各个组件之间的接口关系,形成稳定的架构基线,并在一定程度上对关键组件进行设计和优化。

(4)软件架构完成的标志。

通常软件架构也要经历多次迭代,甚至可分为概要架构和详细架构,因此,也是一个漫长而复杂的过程。架构人员最终要对系统静态表述和动态运行做出足够的展示,“展示某些关注点得到满足时,可能会影响到其他方面的关注点,但架构师必须能够说明所有关注点都已得到满足[6]”,这里当然也包括对软件可信的满足。

一旦稳定的软件架构能为设计开发人员提供足够的指导,并对后续的设计和开发做出明确的技术限定时,软件架构工作就可以结束了。也可以说,由系统组成和各个组件之间交互带来的软件可信问题,已经有了确定处理

(5)架构人员在可信软件产品的生命周期中所承担的责任。

和软件设计人员相比,架构人员的主要工作不是从事具体的软件设计和代码的编写,而是从更高层次的构架着手,对软件产品的开发提供指导和技术限制。

软件架构是在需求分析阶段完成,需求规格确定之后开始的,但是,软件架构人员的工作却早在需求分析阶段就开始了。架构人员的职责是在一个软件产品或项目开发过程中,将需求分析的结果转换为系统的总体结构,为产品应对未来技术的发展做出预测,并制定开发计划,指导开发团队完成这个开发。因此,在需求分析阶段,架构人员就要参与到需求的获取和定义中,当产品投入运行后,架构人员也有责任去关注产品的后续发展。

因此,架构人员负责整个软件产品的生命周期。可以这样说,架构人员工作的好坏决定了整个软件开发项目的成败,而构建良好的软件架构体系,可以确保软件可信。

4. 强化软件架构工作,构建可信软件

正如我们在之前提到的,软件的可信问题,并不是新生事物,而正是作为信息技术发展的直接代表的软件大量投入应用,导致软件无论从生产规模到深入日常生活中的深度和广度,都到了一定程度后,必然要产生的不可回避的问题。

因此,在一定程度上,可以借助于行业自身的固有技术的提高来完善。

(1)强化软件架构工作。

如前所述,软件架构工作从设计中分离出来,是软件界应对软件开发中所遇问题的一种反应,即设计环节进一步进行专业细化,因此,和软件产品开发中的其他阶段一样,有时需要多次迭代后才能形成相对稳定的系统架构基线,并在此基础上,设计子系统架构,最终形成系统架构。

软件架构是软件系统设计和实现过程的基础,因此,要重视和强化软件架构工作,最大限度地考虑各种问题,构建可信软件。

(2)进行架构验证。

软件架构人员的工作结果是软件架构,而这个结果要作为下一阶段软件详细设计和开发实现的基础性指导和限定,因此,对软件架构的度量在一定程度反映了软件的质量预测, 也可以说软件架构的可信程度在一定程度上已经决定了软件产品的可信。从这个意义上说,对软件架构的评估和验证,对保障软件系统的质量和可信度有着举足轻重的意义,所以,要对软件架构进行评估和度量。

对软件架构的度量,一般从以下五个方面着手[7]。

(1) 架构和设计模式的密度。

模式是经过应用检验的解决某类问题的最佳实践,精心匹配和选择应用模式,在一定程度上保证了设计开发的合理和正确。

(2) 系统架构的匀称/均衡性。

均衡、匀称是系统稳定的象征,也在一定程度上反映了架构思考的完整性。

(3) 实用简洁。

与详细设计不同,架构是高层面的系统构图,简洁是主要特征,要选择最适合系统自身情况的简单做法而不是追求所谓标准甚至经典方案。架构不是空中楼阁,必须立足于实用,从实用出发,找到最适合的做法。

(4) 表述能力。

软件架构在一定程度上是用来作为后续工作指导用的,应该具备一定的表述能力,方便讨论交流;同时好的表述能力也是架构设计的特征。

(5) 系统的自适应。

可信的软件必须具备很强的容错能力,又是安全的,并支持灵活的配置,要达到这个目的,系统的构件必须能够自主地协调和交互,以便联合在一起完成特定功能。

(3)重视软件架构人员的培养。

软件架构人员,或者叫架构师负责整个软件产品的生命周期,行业内很早就意识到,对架构师的要求完全超出了软件生命周期过程中其他的组成人员。如“今天的软件架构师是诸如系统分析师,系统设计师和软件工程师等角色的联合体”[8]。

遍览对软件架构师的定义和对架构师所需技能描述的语句,无一不可视为是对软件从业人员的赞美之词,这在一定程度上说明了软件架构师的重要。在架构师必须具备的各项技能中,架构师的经验尤其重要。我们都知道,没有“唯一”正确的架构解决问题的答案,因此,架构师常常要扮演经验丰富的判断者的角色,有时甚至必须是独裁者(做架构抉择时),是系统之父。

架构师也并非是天生万能的,是在工程实践中培养出来的,因此,要在实际工作中培养架构师。

5. 结语

信息技术的飞速发展推动了软件这一人类智能产品进一步深入社会生活的方方面面。对软件的大规模使用,使软件在满足使用要求时,在设计、生产、投运等各方面的不足日益显现,带来了软件可信性危机的问题。但我们要知道,软件的可信性,在一定程度上可以在现有的软件生产框架范围内得到提升。在这一过程中,可以通过发挥软件架构师的作用,从软件架构入手,促进软件可信程度的提高。

软件架构强调“分而治之”、逐步求精的过程方法,对我们的启示是,凡事也不能一概而论,需要逐个分析,要针对特定原因处理问题。对于由于开发平台、操作系统,甚至于目前的软件工程方法所带来的软件可信问题,在必要时要通过引入软件工程的变革进行解决。从这个角度看,提高软件可信程度也应该是一种“分而治之”策略的应用。

参考文献

[1]王怀民, 等.互联网软件的可信机理[J].中国科学[E]辑信息科学, 2006 (1) .

[2]BijayK.Jayaswal, PeterC.Patton.可信赖的软件开发[M].杨洁, 译.北京:清华大学出版社, 2008.

[3]Len Bass, Paul Clements, Rick Kazman.Software Architecture in Practice, Second Edition[M].MA:Addision Wesley, 2003.

[4]David Garlan, Mary Shaw.An Introduction to Software Architecture[M].Advances in Software Engineering and Knowledge Engineering1993 (Volume I) .New Jersey, USA:World Scientific Publishing Company.

[5]StewartBrand, HowBuildingsLearn[M].Penguin (Non-Classics) , 1995.

[6]DiomidisSpinellis&GeorgiosGousios.架构之美[M].王海鹏, 等, 译.北京:机械工业出版社, 2010.

[7]李伟, 吴庆海.软件架构的艺术[M].北京:电子工业出版社, 2009.

软件工程导论心得与感想 第5篇

在前不久的几周里,刚刚结束了“软件工程导论”课程的学习。这门课程带给了我很大的启发,让我对软件工程这一新兴学科有了全面的,深刻的认识。卢苇老师精彩的讲演,同学们积极地提问与回答,都带给了我深刻的认识。下面是我在学完该课程后的一些启发。

一、我对软件行业的认识

众所周知,计算机已经是现代人生活的必需品。无论是工作、学习、生活、娱乐,我们的生活每时每刻都能见到它的踪影。大到航天飞机的研制,原子弹、氢弹的引爆,笑道一个小小的电子表,都需要会软件会变成的人来研制它,让其工作。所以,伴随着计算机而生的的潜在市场是十分巨大的,无数因此成功的公司便是印证,无论是乔布斯的“苹果”,还是比尔盖茨的微软,亦或是马克·扎克伯克的facebook,都获得了世人的肯定。他们的成功被人称道,但是不可否认的是他们的成功是建立在如此巨大的市场空间上的。所以,首先软件行业有着充足的市场。

其次是我国的软件力量。我们国家面临着一个良好的社会的环境,社会安定,政府稳定,特别是当前经济发展迅速,法制建设不断完善,高新技术领域突飞猛进。但是由于法律制度不完善,并且从业人员普遍创新的意识不够完善等等多方面的因素,我国的市场并非特别乐观。我们都能清晰地看到许许多多成功的企业都未做到完全的创新,如“淘宝网”便是借鉴“亚马逊”网站,而“人人网”也与facebook有极大的相似度,而腾讯更是众所周知的山寨之王。但是换个角度看看,这正说明,我国的软件具有极大地潜力,在未来的几年,几十年之间,我国的软件行业必会重新洗牌,涌现出强大的软件企业,而我们,也一定有机会实现自己的软件梦。

第三是我国软件行业的人员构成。我国的软件行业目前主要还是中低素质人员构成。打不风程序员,他们没有系统的、完整的学习整个软件工程的知识,仅仅靠自学或者短期学习,掌握到部分的、片面的知识就已经进入从业阶段,这样的学业使他们不能够胜任自己的工作。而高端的软件从业人员相比较而言是相对稀少的,所以我国的软件行业并未真正崛起。我们急需那样的高端人才,而这些人才,便是现在我们学院所努力培养的。

二、我对我们学院软件工程专业的认识

IT行业是随着电子信息产业的发展而逐步发展起来的,并且日益得到完善。IT行业的平稳增长必然会带来软件工程师需求的增长,目前随着IT产品出现的技术融合,市场需求的巨大和专业人才的缺乏,由此可知,软件行业还是比较乐观的。但软件行业需要的也是复合型人才,软件工程师需要掌握更多的编程语言。

北京交通大学软件学院是经教育部批准的国家示范性软件学院。学院成立于2003年2月,是为适应我国经济结构战略性调整的要求和软件产业发展对人才的迫切需求,实现我国软件人才培养的跨越式发展而建立的。学院充分发挥学校的计算机学科优势和 IT 企业资源综合优势,利用已有的办学与市场资源,与国内外著名的 IT 企业开展合作,在管理体制、运行机制、教育思想与理念、人才培养方案与课程体系、教学模式与方法、产学研合作等领域大胆创新,已探索出一条有效地培养“国际化、工业化、高层次、复合型” 软件人才的办学之路。

作为教育部批准的全国36所示范性软件学院和学校教育体制改革与办学机制创新的试验田,北交大软件学院承载着学校的殷切期望。作为国家重要的软件人才培养基地,在管理体制、运行机制、教育思想与理念、人才培养方案与课程体系、教学模式与方法、产学研合作等领域大胆创新,探索出一条有效地培养“国际化、工业化、高层次” 软件人才的办学之路,推出了“2+1+1”人才培养模式。作为一名北京交通大学软件学院的靴子,我感到十分自豪。

三、我未来的职业规划

在学习完院长的导论课后,我对自己的直接规划产生了很深的想法并且做出了很大的改变。首先,我一定要努力完成大学的学业。在大学一年级,我要认真地完成专业课程,努力学好c语言和java的课程,同时扩大自己的知识面,多多学习一些有关软件方面的知识,不断地充实自己。

在大学二、三年级,我要注重学习Java基础知识、多学习项目开发经验,了解项目开发业务知识,并在学习中掌握DB2数据库的SQL语句的复杂查询以及管理操作,并深入学习了解struts、hibernate、spring相关操作。同时在大三结束之前,我要至少了解并熟悉2门编程语言,如.net、C++、PHP;并学习掌握nOracle、MS-SQL数据库管理操作;掌握软件开发各个阶段的基本技能,如市场分析, 可行性分析, 需求分析, 结构设计, 详细设计, 软件测试等。如果有时间的话,还要学习管理方面的相关知识,由技术型向管理型方面的转移。我要多多锻炼自己的能力,不论待人接物,还是进行演练,都要积极参见,努力争取较大的提升。

在大学四年级,学校会安排比较多的实习,到那时候,就要好好工作,发挥自己前三年学到的知识,努力完成自己的毕业实习,最后,优秀地完成自己的大学学业。如果能够,我将选择继续深造,可以通过保研,考研等等许多途径,努力获得研究生的资格。同时,就业也是一个不错的选择,但是不论考研还是工作,我都要一如既往地补充自己,不断提高自己的专业水平。在工作时,我会优先选择私人的,创意性比较强的公司,从中积累经验,并且努力奋斗,成为复合型人才,我便可凭此进入大公司或者帮助自己的公司变得更加强大和成功,最后成为IT行业中优秀的一员。

四、总结

社交软件与群体未来 第6篇

在社交化大热的今天,重温一下舍基关于社交、组织、群体的论述,还是有很多收获的。下面是书中一些闪亮的观点:

1.我们在历史上高估了计算机联网的价值,而低估了社会联网的价值。所以我们花了过多的时间用在解决技术问题上,而不是用在解决使用软件的人群的社会问题上。

2.在过去100年里,一个关于组织的重大问题由来已久:一件事最好是由国家按计划的方式指挥进行,还是通过企业在市场中竞争实现?这个争论实际上是默认了一个普遍假设,那就是人们不可能自我集合,只能在市场和管理措施之间做选择。但是现在,电子网络正使得集体行动的各种新奇形式成为可能,比历史上任何时候都更大更分散的协作性群体也因此产生。

3.集体行动是最难的一种群体行为,因为它要求一组人共同致力于一件特定的事,而且做事的方式更要求集体的决定对于每个个体成员都具有约束力。

4.新闻的定义发生了变化:它从一种机构特权转变为信息传播生态系统的一部分,各种正式的组织、非正式的集体和众多的个人都杂处在这个生态系统当中。

5.一项职业,对于这些从业者来说,会变成他们理解世界的一种方式。

6.在采用印刷机后的100年里,它所摧毁的比它补救的东西更多——整个欧洲因之陷入智力与政治的混乱,这一时期直到17世纪才告结束。

7.诸如博客、论坛等社会化媒体铲平了出版的门槛,却也伴生着残忍的经济逻辑:有价值的不是信息,而是注意力。

8.社会化媒体的扩张,意味着先出版再过滤成为唯一可行的系统。

9.网络使交互性在技术上成为可能,但是技术赐予的,社会因素又把它拿走了。

10.在着些早期的变革中,一直存在着不平衡。电话的技术革命给予了个人最大的表达能力,却没有创造出受众——电话是为交谈设计的。与此同时,印刷机、唱片和广告媒体都创造了巨大的受众群,却把对媒体的控制交给了少数职业人士掌控。

11.所有的企业都是媒体企业,因为不管它们做什么,他们都依赖于两种对受众的信息管理——雇员和外界。个人和群体在传统组织结构之外的能力增长是前所未有的。

12.思考有关群体与行动的能力上的变化,一个方法是将它与疾病的传播作类比。关于疾病传播的经典模式是研究3个变量:感染的可能性、任意两人的接触可能性,人群的总体规模。这个模型对于谣言以及其他口碑型观点的传播也很适用。

13.社会化工具并没有创造集体行动——它们只是消除了对于集体行动的障碍。

14.在闪电战中,尽管德军的坦克较小装甲也较少,它们却装备了一件法军坦克没有的东西——无线电。这样无线电将德军坦克从多件单独的兵器转变成某种能协同的武器群。

15.许多人因为有了手机而不再做预先的安排。我们不再说,“我和你6点在33街和第三大道交汇处见面”,而是说,“你下班时给我电话”。

16.社会生活的高度可见性和可搜索性意味着,想法相同的人们现在拥有了找到对方、聚集起来并互相合作的能力,而不受社会赞成或反对的制约。

17.2000年,哈佛大学社会学家罗伯特·普特南所著《独自打保龄球》,观察到两点发人深省的现象:第一,美国作为国家取得的成功,在很大程度上与它产生社会资本的能力有关。第二,群体活动的参与,即产生和维系社会资本的依托,在美国已经开始下降。

18.城市在物质层面通常有比乡村对于群体生活异常行为更多的规定,完全是因为城市生活所造成的社会性接触要比乡村生活多得多。

19.20世纪60年代最伟大的发明——晶体管和避孕药并不相似,但却有一个共同点:二者都是普通人级别的发明,并以一次一人的方式引入到社会中来,它们却比依靠巨大的、长期的努力持续推动的巨人级发明更加重要。

20.身处变革的年代,我们中经验丰富的那些人却会犯相反的错误——当一生唯一一次真正的变革降临时,我们很有可能把它当成一时的狂热。

应用软件与系统软件的关系 第7篇

系统软件是指那些能够直接控制和协调计算机硬件、维护和管理计算机的软件, 它是人机交互的窗口。应用软件是指为用户的某项特殊需要而专门开发和设计的, 用来解决具体问题的各类程序。

1 系统软件

各种应用软件, 无论工作领域或工作性质千差万别, 其基础操作程序都大同小异。比如数据的获取、存读、传输等操作皆由输入设备和输出设备来完成。每一项基础操作都有特定的操作指令。人类基于不同的使用需求, 通过技术研究将操作指令集中组织起来, 使其形成一整套支持应用软件运行的软件, 并将其定义为系统软件。

系统软件在支持应用软件正常运行的过程中, 也进行着硬件的操作, 使同一台计算机设备能够兼容两个或两个以上同步运行的应用软件, 确保各应用软件有序运行。比如两个应用软件都要通过硬盘进行数据的存读, 系统软件可以为这两个应用软件在硬盘上划定不同的区域, 避免数据信息因存储撞车被破坏。

基于系统软件的应用特点, 其类别分析如下:

(1) 操作系统管理计算机的硬件设备, 以提高这些设备应用软件上的使用效率。微机系统常用的系统软件包括UNIX、WINDOWS、DOS、OS/2等。

(2) 数据库管理系统实时、有序地进行数据存储, 以便于用户使用。SQL-server、Access、DB-2和Fox Pro就是时下应用较广泛的数据库。

(3) 编译软件CPU执行的各项操作必须有其对应的操作指令, 一套完整的系统软件或应用软件往往包括成千上亿条操作指令。直接通过基本指令进行软件的编写既费事又费时。因此一套省时省力的高级语言便应运而生。这套语言编程所包括的每一条指令都可以单独完成一项基础操作, 每一项基础操作对于CPU操作来说非常复杂。应用这套先进的操作指令可节省大量无用功。做一个恰当的比较, 应用这套高级语言进行编程, 就好比用预制板替代砖块来造房子, 能够大大提高工作效率。但必须编写一个能够将源程序语言翻译成CPU语言的软件才可以执行这些指令。若按类别划分, 这套软件属于系统软件的范畴, 通常称之为高级语言编译软件。就现阶段计算机技术水平来分析, VB、C++、JAVA可以说是当前计算机领域较为先进的高级语言, 从适用领域和功能特点来看, 它们各有千秋, 某一特定领域都有其各自的编译软件。

2 应用软件

应用软件是专门为某一应用目的而编制的软件。常用的应用软件包括文字处理软件、信息管理软件、辅助设计软件、实时控制软件等等, 其适用领域和特点分析如下:

2.1 文字处理软件

它的功能是输入、存储、修改、编辑、打印文字材料。目前应用较为广泛的要数WORD和WPS。

2.2 信息管理软件

数据信息的输入、存储、检索或修改等操作要通过信息管理软件来完成。信息管理软件的应用领域非常广, 比如计划管理软件、人事管理软件、工资管理软件以及仓库管理软件等等。软件技术适用领域的拓展和技术研究的进步使各单项软件之间的联系越来越紧密, 计算机与管理人员逐渐构成一个和谐的整体, 促进了各类数据信息的合理流动, 最终构成一套相对完善且高效运作的管理信息系统, 即MIS。

2.3 辅助设计软件

工程图纸的编绘和修改、设计方案的甄选以及各类常规计算都通过辅助设计软件来完成。

2.4 实时控制软件

用于随时搜集生产装置、飞行器等的运行状态信息, 以此为依据按预定的方案实施自动或半自动控制, 安全、准确地完成任务。

系统软件是应用软件的一个平台, 没有系统软件就用不了应用软件。应用软件是对人的生活有工作性的。应用软件建立在系统软件上系统软件是计算机应用软件的基础。它和计算机的硬件组成了系统。使电脑能够为我们工作。所有的应用软件都是安装在系统软件里面的, 系统软件是一个基础性的软件。用一个简单的比方来说明操作系统、电脑硬件、应用软件之间的关系:

电脑硬件就相当于土地一样, 操作系统就像土地上的清水房子, 而应用软件就像是房子里面的家具、人、水管、气管、电线、外墙颜色等等附属设施一样, 都是为了更好的使用好房子, 使房子能够更好的为我们服务。同时不同的应用需要不同的工具, 煮饭需要水电气、娱乐需要电视机、收音机等等;同样清水房子也可以为我们提供居住的地方, 为我们提供服务, 只是功能少很多而已。在电脑中也就是需要不同应用软件完成不同的工作, 丰富我们的需求。

参考文献

[1]李小遐.计算机应用基础[M].北京理工大学出版社, 2010.

[2]谭浩强.大学计算机基础[M].新世纪计算机基础教育丛书, 2008.

[3]冯博琴.计算机文化基础[M].北京清华大学出版社, 2004.

软件测试与软件可靠性研究 第8篇

软件可靠性是指软件在规定的条件下和规定的时间内,完成规定功能的能力, 软件可靠性包含三个要素,即“规定的条件”“、规定的时间”、和“完成规定的功能”。 “规定的条件”指软件的用法和软件的运行环境 ;“规定的时间”指软件的工作周期 ; “完成规定功能”指软件不出现失效。

本文对软件测试和软件可靠性进行了论述,研究了如何将测试过程中产生的数据进行软件可靠性估计,从而为正确评价软件质量提供了一个方法。

1软件测试

软件测试在软件生存期开发阶段中占有突出的地位,它是保证软件可靠性的重要手段,其基本任务是尽可能多的发现软件中的错误,排除软件缺陷,提高软件可靠性。

软件可靠性测试中最关键的三个环节是 :

1) 根据用户实际使用软件的方式,构造软件运行剖面,生成测试用例 ;

2) 开发软件可靠性测试的环境,使被测软件能在该环境中得以测试 ;

3) 对测试结果进行分析,并作出软件可靠性的预计。

软件的可靠性测试过程完整的测试过程包括测试前的检查、设计测试用例、 测试实施、可靠性数据收集和编写测试报告5个步骤,其中最重要的是设计测试用例和可靠性数据收集。

1.1软件测试前的检查

测试前的检查 :在进行应用软件的可靠性测试前有必要检查软件需求与研制任务书是否一致 , 检查所交付的程序和数据以及相应的软件支持环境是否符合要求, 检查文档与程序的一致性 , 检查软件研制过程中形成的文档是否齐全、文档的准确性和完整性以及是否通过了有关评审。

1.2设计测试用例

在软件测试过程中,测试用例的生成是软件测试的关键和难点,直接影响着软件测试的有效性。测试用例是按一定顺序执行的与测试目标相关的一系列测试,是测试数据以及与之相关的测试规程的一个特定集合。测试用例设计将产生许多测试所包括的输入值、期望输出以及其它任何运行测试的有关信息 ( 例如环境要求 )。

如果测试用例设计得好,不但可以在较短的时间内,测出较多的软件错误,也可以为修改软件错误提供时间。测试用例的选择既要有一般情况,也应有极限情况以及最大和最小的边界值情况。因为测试的目的是暴露应用软件中隐藏的缺陷,所以在设计选取测试用例和数据时要考虑那些易于发现缺陷的测试用例和数据,结合复杂的运行环境,在所有可能的输入条件和输出条件中确定测试数据,来检查应用软件是否都能产生正确的输出。

1.3测试实施

测试实施做好上述准备工作后 , 就可以实施测试了。研制方交付的任何软件文档中与可靠性质量特性有关的部分 , 包括产品说明书、用户文档、程序以及数据都应当按照需求说明和质量需求进行测试。 在项目合同、需求说明书和用户文档中规定的所有配置情况下 , 程序和数据都必须进行测试。

在测试中 , 可以考虑进行“强化输入”, 即输入比正常输入更恶劣 ( 合理程度的恶劣 ) 的输入。如果软件在强化输入下可靠 , 只能说明比正规输入下可靠得多。对需要进行大量的长期的运算试验 , 如连续运行108h允许出现1次失效的测试 , 为获得更多的可靠性数据 , 我们可以采用多台计算机、多线程同时运行软件 , 以增加累计运行时间。

1.4可靠性数据收集

软件可靠性数据是可靠性评估的基础。应该建立软件错误报告、分析与纠正措施系统。按照相关标准的要求,制定和实施软件错误报告和可靠性数据收集、保存、分析和处理的规程,完整、准确地记录软件测试阶段的软件错误报告和收集可靠性数据。用时间定义的软件可靠性数据可以分为4类 :

1) 失效时间数据 :记录发生一次失效所累积经历的时间

2) 失效间隔时间数据 :记录本次失效与上一次失效的间隔时间

3) 分组数据 :记录某个时间区内发生了多少次失效

4) 分组时间内的累积失效数 :记录某个区间内的累积失效数。

这4类数据可以相互转化。

将收集的软件可靠性数据用于软件可靠性模型可以对软件可靠性进行估计。

2软件可靠性模型

软件可靠性模型是随机过程的一种表示,通过这一表示,可以将软件可靠性或与软件可靠性直接相关的量,如或表示成时间及过程的函数。一个软件可靠性模型通常由模型假设、性能度量、数据要求、参数估计方法组成。将软件测试中收集到的可靠性数据带入软件可靠性模型 (或表示成时间及过程的函数 ) 可以对软件可靠性进行估计。

(9) 用以估算现时的值,并将它与目标的平均无故障工作时间比较,如达到或超过 ,则表示测试已达到目标,测试于是就可以停止,否则测试继续进行。对于的最大似然估计,为达到由用户规定的目标值,所要求的执行时间增量 :

3软件测试与可靠性模型关系

对于同一组软件测试所得的失效数据,不同的软件可靠性模型会给出不同的软件可靠性估计,因此有必要对软件可靠性模型进行组合。将模型的结果进行线性组合,即使是以非常简单的形式,也会得到比单个模型更精确的测量结果。

构造组合模型的基本策略是 :

1) 选定一组基本模型。选择软件实际运行条件与所选模型假设最接近的模型 ;

2) 将每个基模型分别应用于数据 ;

3) 应用所选择的评价规则为每个基模型加权,构成用以最后预测的组合模型。权值可以静态或动态地确定。一般,这种方案可以表达为如下混合分布形式 :

将在软件测试时收集到的失效时间数据、失效间隔时间数据、分组数据、分组时间内的累积失效数代入软件可靠性模型,进行软件可靠性评估,根据评估结果再进行测试和整改,进一步提高软件可靠性。 同时测试数据也可以纠正可靠性模型中的某些参数,使得评估模型更加合理准确。

4结语

软件测试与软件开发的关系探讨 第9篇

软件开发和软件测试都是软件工程定义里的重要阶段。软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发人员主要工作是对用户需求进行分析, 根据需求分析进行系统设计、程序编码、单元测试和软件缺陷的修复。

软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例 (包括输入数据与预期输出结果) , 并利用这些测试用例运行软件, 以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷的过程。在软件投入运行前, 软件测试对软件需求分析、设计规格说明和编码最终复审, 是软件质量保证的关键步骤。

2 软件开发和软件测试的关系

在软件项目团队中, 软件开发和软件测试都是其重要的项目成员, 两者都有共同的目标就是实现用户需求, 保证软件高品质的交付到用户手中。有开发就会有测试, 开发人员先实现软件, 测试人员对软件进行测试找出程序错误和缺陷, 并提交开发进行修复。软件开发和软件测试通过这样互相合作, 逐步解除软件隐藏的程序错误和潜在风险, 使软件产品更逼近于用户需求。

软件开发和软件测试的工作交集就是软件缺陷, 在软件缺陷的定义和处理上往往容易发生意见分歧。在这个时候, 作为软件测试人员, 如何处理和应对好和软件开发的关系, 保持高效的团队协作能力就显得尤为重要。

3 软件测试对软件开发关系的处理方法及技巧

3.1 尊重开发成果

作为测试人员要保持良好的心态, 要尊重开发的工作成果。有的测试人员接到开发提交测试的软件, 在开始测试后碰到这样那样的问题, 有的可能是显而易见的问题时, 就会心生抱怨, 甚至言语上抨击开发人员技术水平低, 单元测试没做好, 这样很容易导致开发人员对测试人员的反感和抵触, 造成两者关系紧张。其实, 你要理解开发人员也是在时间紧, 任务重, 经过加班加点的情况下开发出来的程序, 有错误那是肯定的, 我们测试人员的职责就是要帮助他们找到软件里面的Bug, 帮助他们改进软件质量。所以, 测试人员要保持好的心态, 理解开发人员的辛劳, 尽好测试职责努力帮助他们。

3.2 提交缺陷技巧

日常工作中测试与开发打交道最多的莫过于在软件缺陷的定义和处理上了。怎样能够让开发人员更乐于接受测试提交的缺陷并改进它, 测试人员要注意以下几点:

3.2.1 换位思考, 多站在开发人员的角度想

开发人员将软件提交测试后, 他们最焦急等待的测试结果基本上都是系统逻辑跑不跑得通, 数据流转是否正确。测试人员在这方面就要注意测试技巧和提交Bug的优先顺序。测试时优先按业务流程测试整个系统逻辑, 把影响系统逻辑的错误找出来优先提交给开发人员, 这时候的开发人员会很喜欢修改这些问题。测试中碰到一些不影响系统逻辑的Bug我们先暂且记录下来, 待第一批都修改完毕, 测试才提交如界面美观、输入输出控制等改进型的Bug, 这样有主次的提交Bug顺序, 开发更易于接受。

3.2.2 Bug描述要清晰准确

测试人员发现的BUG是开发人员改进的重要依据, 好的Bug描述对于正确的和高效的解决Bug非常重要。测试人员在描述Bug时, 语言要简明准确, 杜绝使用“好像、有时、偶尔、几分钟、一段时间”等模糊词语;描述的内容不是越多越好, 只要提供有利于开发人员快速定位的必要信息即可。具备一定开发经验, 水平较高的测试人员还能通过错误现象, 定位程序可能出错的地方, 提出问题查找的方向。

3.2.3 避免提交重复和无效的Bug

测试人员在遇到Bug时, 要先进行问题分析, 这个问题是独立出现还是整个系统都普遍存在, 如果是普遍问题, 只需要提交一个Bug即可。过多的同一问题根源的Bug会令开发人员厌烦。另外, 测试人员不但要熟悉业务需求, 还要熟悉软件系统的操作和使用, 提交由于操作错误而非程序问题引起的Bug, 容易导致开发对测试失去信任。如果测试人员在不确定是否Bug的时候, 可先向开发人员进行询问确认。

3.3 注重沟通

(1) 测试人员与开发人员最容易产生分歧的就是对缺陷的定义, 这时候面对面的讨论比在即时通讯工具上数十个来回的争论来得直接、有效、清晰。讨论的时候, 测试人员应说说自己的测试方法, 让开发明白你的测试内容和做法都是站在用户的角度去测试和看待问题。

(2) 不要期望所有的Bug都会被开发人员修复, 浪费太多的时间去争论一些不影响系统本质的非关键点反而会得不尝失, 应该允许开发人员保持不同的观点, 问题可留待下个版本完善。

(3) 平时多与开发人员交流, 了解他们负责的模块和实现方法, 这样有助于自己对系统有更深入的认识, 改善测试方法和测试技巧, 帮助开发改进软件质量。

4 总结

软件测试与软件开发保持良好的合作关系, 能够使项目团队具备更高的凝聚力, 极大的提升团队协作能力, 是顺利、高效的实施软件项目的有力保障。

摘要:软件开发和软件测试是当前软件项目团队的中坚力量, 两者工作相辅相成。本文分析了软件开发与软件测试在项目团队中的关系及重要性, 并从软件测试的角度提出处理好与软件开发关系的处理方法及技巧。

关键词:软件测试,软件开发,软件工程

参考文献

软件质量保证与软件质量控制的初探 第10篇

一、软件质量保证

1、实施SQA的目的

软件质量保证是建立一套有计划、有系统的方法, 来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。

软件质量保证的目的是使软件开发过程对管理人员来说是可见的。并通过对软件产品和活动进行阶段性评审和审计来验证软件是合乎标准的。SQA组在项目开始时就一起参与建立计划、标准和规程, 使软件项目满足机构方针的要求。[1]

衡量一个项目优劣的主要标准是:成本、进度、质量。软件界已经达成共识:影响软件项目进度、成本、质量的因素主要是“人、过程、技术”。首先需要明确的是, 这三个因素中人是第一位的。

2、SQA人员的素质要求

1) 要有很强的沟通能力。

2) 要熟悉软件开发过程。

3) 要有很强的计划性。

4) 要能应对繁杂的工作。

5) 要客观, 有责任心。

3、SQA人员的组成

软件企业中的SQA人员既可以由全职人员担任, 也可以由企业内具有相关素质经过SQA培训的人员兼职担任。由此组成的SQA小组可能是一个真正存在的独立部门, 也可以是一个逻辑上存在的平台。

4、SQA工作的内容

主要包括以下六类:

1) SQA计划的制订。

2) 参与项目的阶段性评审和产品审计。

3) 对项目日常活动与规程的符合性进行检查。

4) 对配置管理工作的检查和审计。

5) 跟踪问题的解决情况。

6) 收集新方法、提供过程改进的依据。

5、SQA工作中常见问题和对策

1) 最初给项目组配置SQA人员的时候, SQA的价值不被认可, 尤其是被向高层经理汇报的项目组难免会有抵触情绪。要从两个方面解决这个问题:一方面, 从组织的角度, 要明确SQA人员的角色及其合法性;另方面, SQA人员也要以其专业的工作赢得项目组认可, 为项目组增加价值。

2) 一个全职的SQA人员可以同时兼任多少个项目的SQA工作呢?根据实施中的一些经验总结, 通常在第一次实施时, 承担一个20人左右的项目组的SQA工作约需占用一个人30%的工作量, 随着SQA的成熟, 这个比例会降低到15%。对于一个10人以内的项目组, SQA约需投入其10%的工作量。

3) SQA人员与项目组的关系难处理时, 应该遵循以下原则:要在过程方面成为项目组的严师, 有错必纠, 但不能有错全报;要做项目组的朋友, 但不能包庇纵容。

4) 项目组有了SQA, 可是需求文档和设计文档的质量还是不高, 这不是SQA的直接工作范围。提高需求和设计的质量, 要从人员培训和严格评审入手, 让有经验有资格的人来完成需求和设计文档。SQA人员只能从规程符合方面进行监督。

总之, 在软件企业中建立SQA体系是软件项目管理由人治到法治的一个必经阶段, 也是软件企业以CMM (“能力成熟度模型”) 为参考, 进行软件过程改造中一个不可缺少的部分。

二、软件质量控制

产品的质量是产品的生命, 那么如何才能保障知识产品的质量呢?知识产品不同于传统的工业产品, 其生产的规律也有所不同, 要保证知识产品的质量同样也要有个方法问题。计算机软件产品是一项知识产品, 保证计算机软件的质量目前国际软件界普遍采用软件工程化方法。[2]下面从这一角度, 结合本人的认识和体会, 谈一谈软件产品质量控制的方法问题。

1软件产品的工程化

计算机软件是一项知识产品, 它的生产过程是一组严密组织的智力活动, 它的设计和生产有其独特的规律。在软件工程化出现之前, 人们一直认为计算机软件是软件工程师们的智力艺术, 没有把它用工程的方法加以控制, 直到上世纪六十年代末爆发了众所周知的“软件危机”。人们对如何提高软件质量、保证项目成功等问题一直在进行不懈的探索和实践。经几十年的实践和总结, 采用系统化、规范化、数量化等工程原则和方法去进行软件开发, 即走工程化道路。

1) 软件具备工业产品的共性

软件既然是一种工业产品, 它就具有一般工业产品的共性, 必须具备4个要素:

(1) 软件工程的理论与技术。

(2) 软件工程的标准和规范。

(3) 软件的组织和管理。

(4) 软件工程工具和环境。

2) 采用软件工程化的方法为什么会保证软件的质量呢?

(1) 软件产品是一种逻辑产品, 描述的是逻辑思维的过程, 所以软件开发方法有其自己的规律性。

(2) 现在规模大的软件已不再是个别人的独创产品, 它需要一个团队的合作。 (3) 对软件开发来说, 工程的组织和管理也相当重要, 它包括技术管理和质量管理。通过有效的工程组织和管理, 保证了软件开发的进度和产品的质量。

(4) 软件工程工具和环境是软件产品生产达到一定阶段的产物。按其功能分类可分为CASE集成环境、软件工具箱和专用软件工具三类。[3]通过这些工具, 使软件开发基本达到通用模块集成即软件自动生成的目的, 使计算机软件的开发更接近于工业化的程度。

2、软件产品质量控制的方法设想

软件产品的质量控制采用工程化的方法, 具体可分为三个阶段:

第一阶段为工程化建立阶段, 该阶段主要解决知识产品文档的规范、测试方法、评审方法, 解决由“无形变有形”的问题, 实现由“个人拥有变为集体监督”。

第二阶段为工程化的完善阶段, 即通过工程化的运行, 逐渐完善工程的标准和规范。

第三阶段为推广阶段, 即将成熟的标准和规范向同行业推广应用。

综上所述, 软件产品作为一类特殊的产品, 其质量可通过工程化的方法加以控制, 相信在我国未来的知识经济中将作为控制软件产品质量的有效手段得到广泛应用。

软件质量保证和软件质量控制之间不同之处在于前者侧重于管理工作, 而后者侧重于技术工作, 而两者都是贯穿整个软件开发生命周期的流程。[4]随着时间的推移, 软件质量保证和控制之间的界限越来越模糊了, 两者合二为一, 已无法分开。

参考文献

[1]加林, 《软件质量保证》, 机械工业出版社:2004:20-21

[2]张凯, 《软件复杂性与质量控制》, 中国财政经济出版社:2005:35-36

[3]李健, 《软件过程质量度量与控制》, 清华大学出版社:2006:40-42

网络安全与“软件智慧” 第11篇

在如今这个“软件定义”的时代,Check Point“软件智慧”的理念得以乘上了东风。通过将软硬件解耦,安全产品可以按需进行不同的产品配置,最终形成为每个用户业务量身打造的方案。这是Check Point推出其软刀片架构的初衷。网络安全如今已经不再仅仅是防火墙、IPS或者UTM。新威胁的出现、APT的盛行以及移动互联设备的普及,使得人们需要更加智能化且系统化的安全防护规则。罗杉很明显地感受到了市场的变化,他表示:“三年间,用户对于安全管理的需求实现了成百倍的增长。”

今天,Check Point的用户不再仅仅是大型的企业或者重要部门,还包括了中小企业。这同过去Check Point的用户组成截然不同。“CIO们每天的第一件工作,就是要确保信息的安全。”罗杉认为,这是一个人人都需要网络安全的时代。信息化已经不再是一个只针对某些领域的垂直技术,而是完全水平化的,普适于任何一个行业。Check Point“软件智慧”的价值在于,其不仅适应了不同行业、不同规模用户的安全需求,同时将孤立的安全事件联系在一起呈现给用户。这样的效果实现,只能靠软件来进行。

以“软件智慧”为理念打造最新的安全产品,并将其统合为一个有机的整体,帮助用户应对最新的安全威胁,这是Check Point在5年前就已经开始坚持的设计,同时这也是Check Point能够连续19年位居Gartner领导者象限的秘密武器。在中国,“软件智慧”为Check Point赋予了绝对的灵活性,这使得其可以为某一类行业用户进行安全产品的型号定制。Check Point总裁多年前的一句话让罗杉至今记忆犹新:“我们对中国市场是有耐心的。如果我们的业务在这里没有发展的话,在整个亚太地区都很难出彩。” 因此,与很多公司不同的是,为了提供更好的本地化服务,Check Point在北亚地区大部分的员工都集中在北京、上海和香港。

“网络安全建设在我国得到了政府的大力重视。其中一个很重要的思想就是‘以人为本’,从人开始定义安全流程。”罗杉表示,“这符合安全精细化的全球趋势。”这种精细化的人性,已经渗透到了业务流程之中。在汇丰银行,Check Point甚至参与了其员工手册的细则拟定,利用专业的安全知识来提供咨询服务。

电脑软件与软件工程 第12篇

关键词:软件,数据转换,数据分析

0引言

Epidata软件是由丹麦的Lauritsen JM为主要发起人开发的软件, 其设计思想起源于Epi info DOS version 6, 参考了它的文件结构和设计原则, 将其应用于Windows系统, 设计时着眼于Epidata软件在定义问卷结构及数据录入质量控制方面的能力。Epidata是一个免费软件, 可以从www.epidata.dk网站下载, 目前常用的版本是3.1。

Epidata的设计思路是:通过简单的文本来定义数据库结构 (QES文件) , 然后将其转化为录入文件 (同名REC文件) , 最后通过对录入设置严格的条件 (同名CHK文件) 来进行质量控制。Epidata软件能实现数据的录入和管理, 但其统计分析能力较弱, 经常要将数据导出交给专业统计软件进行下一步的分析, 可导出的数据类型有:文本 (Text) 、dBase III、Excel、Stata、SPSS、SAS、子Epidata文件, 涵盖了常用的统计软件。导出数据包含Epidata里设置的变量标签、数值标签, 方便研究者进行分析。

Stata软件是一个用于分析和管理的统计分析软件, 数据的功能强大又小巧玲珑, 由美国计算机资源中心 (Computer Resource Center) 研制。Stata软件的优势在于:具有强大的数据管理能力和统计功能, 制图精美;矩阵运算能力强大;具备程序设计功能, 用户可以充分发挥自己的聪明才智, 熟练应用各种技巧, 真正做到随心所欲。Stata软件在国外被广泛应用于经济学、流行病学等领域, 用以实现数据的个性化分析。

本文以Epidata 3.1软件英文版和Stata 9/SE (SE:Special Edition, Stata软件的一个型号) 软件为例, 就如何利用Epidata软件与Stata软件数据文件实现转接作一简要介绍。

1Epidata软件数据转接到Stata软件

1.1Epidata文件的导出

运行Epidata软件后, 可在“Data in/out”菜单“Export”项 (图1) 或流程栏“6 Export Data” (图2) 项实现数据导出, 选择导出格式为Stata, 弹出图3所示对话框, 可在“Exprt to”对话栏中指定路径和文件名, 如不指定, 程序默认保存在REC文件所在目录下, 保存为同名dta文件。

1.2Stata对Epidata导出文件的读取

如Stata软件是安装版, 双击相应dta文件后即可读入数据, 如使用的是免安装版, 则需要在双击前建立Stata软件与数据文件的关联, 使用“Pref”菜单“Restore File Association”项 (图4) , 也可使用“File”菜单“Open”项打开。Stata软件关联的基本文件有4种:数据文件 (*.Dta) , 用来存储数据;日志文件 (*.log) , 用来记录运算结果;命令批处理文件 (*.do) , 用于数据批处理、数据清洗、逻辑查错、质量控制、命令备份、图表绘制等, 可以极大地提高运算效率;程序命令文件 (*.ado) , 自定义命令, 实现计算过程的个性化, 建议高级用户使用。

使用Stata软件的do文件, 双击后可自动执行, 加载指定的导出文件, 执行指定命令后会在指定文件夹下生成指定Log文件储存运算结果, 笔者在部队基层进行处方监测的时候, 设计了质量控制do文件和数据分析do文件来进行数据质量控制及分析, 下面以质控Do文件的基本结构 (/* */之间的文字是注解, 执行时会自动忽略) 为例说明, 读者可在Stata软件的do file editor里编辑类似的do文件来进行个性化的数据处理。

2Stata数据转接到Epidata软件

Epdata软件可直接读入Text文本、DBF文件和Stata文件, 可在“Data in/out”菜单“Import”项 (参见图1) 实现, 当Epidata软件设计的录入系统丢失时, 可先利用此功能根据Stata文件生成REC文件和CHK文件 (CHK文件里保留了Stata文件变量的数值标签) , 再利用Epidata软件“Tools”菜单“QES File from REC File”项恢复QES文件, 对恢复后的QES文件进行排版整理后, 接着利用“Tools”菜单“Revise Data File”对REC文件进行修改, 这样就可以安全地恢复Epidata录入系统。

3结束语

Epidata软件简单实用、容易上手、录入效率高、录入质量好、占用系统资源少, 最重要的是它具有强大的录入质量控制功能, 这一点是其他录入软件难以比拟的。正因为如此, 自2000年第1版发布以来, 国内外不少学者, 特别是流行病学专家推荐使用Epidata软件来进行数据录入, 国内不少省份使用Epidata软件来设计国家卫生服务调查的信息录入系统。

从2001年起, Epidata Association开始开发Epidata Analysis, 并于2005年9月发布了Epidata Analysis第1版, 弥补了它在统计分析方面的不足, 结合Epidata Analysis, Epidata系列软件可基本满足流行病学现场调查的需要, 但其统计分析能力和数学建模能力较专业统计分析软件, 如SAS、SPSS、Stata, 还是不够专业和强大, 因此大多数情况下, 需要将数据导出交给专业的统计软件处理, 国内已有文章讨论Epidata软件与SPSS软件数据文件的配合使用、与Excel的配合使用等。使用Epidata软件实现数据录入质量控制, 继而使用专业统计软件进行进一步的分析是流行病学数据分析管理过程的一个趋势。

参考文献

[1]Kafatos G, Verlander N, Gelb D, Arnold E, Charlett A.Acompari-son of public domain software for outbreak investigations:Epi Info and EpiData[J].Euro Surveill.2007;12 (2) :pii=3111.

[2]陈峰.现代医学统计方法与Stata应用 (第二版) [M].北京:中国统计出版社, 2006.

[3]胡静.Epidata软件与SPSS软件的转接[J].疾病监测, 2006 (6) .

[4]车志教.Epidata与SPSS软件在传染病暴发调查中应用1例[J].中国热带医学, 2007 (1) .

上一篇:评价报告制度下一篇:产业结构促进