软件编程框架(共11篇)
软件编程框架 篇1
0 引言
伴随着我国信息化建设的逐步推进, 政府、企事业单位对大规模、集成化软件的需求量日益增长, 软件产业面临着良好的发展机遇, 呈现出高速上升态势, 随之而来的是IT业界的竞争日趋白热化。为了赢得更多的市场分额, 提升企业的知名度和美誉度, 软件研发企业必须努力适应形势需要, 以高质量、低成本的软件产品满足客户需求, 并提供良好的IT服务。
基于这一目标, 软件研发企业提高管理质量, 改进开发过程, 提高软件生产率势在必行。
从软件研发过程入手, 探究影响软件生产率的诸多因素, 目的就是利用过程化、多角度的方法对软件生产率进行有效衡量, 形成对研发人员开发活动的多维评估, 从而优化管理流程和管理方式, 改进研发企业的软件研发过程, 提高软件生产率, 增强软件企业的核心竞争力。
本文希望通过所提供的分析框架对影响软件生产率的因素进行有效分析, 从而为企业软件生产率的提高与过程改进提供新的思路和见解。
1 特殊性分析
在介绍框架之前, 先对软件生产率的特殊性作简要叙述。生产率的概念起源于经济学, 直观说就是投入和产出之比。它是一种评价尺度, 用于衡量资源, 包括人力、资本、原料等的有效使用。对于传统产业, 生产率的界定往往比较理性:一定的投入获得一定的产出;增加投入, 就会在一定程度上增加产出;改进投入过程, 相同的投入会增加产出, 反之亦然, 等等。
然而, 软件研发活动是一项特殊的活动, 由于人作为核心因素参与其中, 对于生产率的界定往往比较困难。我们不能像对待原料那样, 从实体的角度去衡量在智力产品的开发上究竟投入了什么、投入了多少、改变这种投入是否会带来正面或负面效应等等。同时, 也不能控制这种投入的产出到底是什么, 是否具有有效性和实用性。正是由于这种智力或知识产品生产的不可预见性, 使得我们不能单纯地、空泛地使用投入和产出的概念来界定软件领域生产率, 否则会出现概念的混淆和不确定性。
为了能够对软件生产率实施有效的界定, IT业界普遍使用在工作量之上的一种规模度量, 即软件生产领域产出规模与投入的工作量之比。在《软件度量》一书中, Norman E.Fenton和Shari Lawrence Pfleeger就从公式上给出了一般意义上的生产率等式 (productivity equation) :从这一公式出发, 具体细化在软件实践领域, 衍生出了两种主要的定义公式, 一种是码行数与人月数的比值, 一种是功能点数与人月数的比值。前者以月平均代码编辑量作为衡量生产率的尺度, 具有片面性, 不能适应软件生产领域研发的特点;后者理论上非常契合软件研发需求, 但是在具体实现上仍然不尽如人意。
2 框架
软件企业作为智力密集型、以人为核心的实体, 本身存在着不同于传统实体的特殊性。软件生产率不能仅仅通过单一的模式实现充分的和准确的衡量。正是由于决定生产率的因素和层次存在多样性, 利用多角度、过程化的框架作为基础, 能够对生产率的影响因素进行有效分析, 其框架模型如图1所示。
该框架依托软件过程, 从管理、技术和文化3个角度考察影响软件生产率的因素, 并通过评估各种因素在实际环境中的作用效果, 为提高软件生产率、改进企业生产过程提供依据。
2.1 管理角度
管理角度从人才梯队、激励机制和变革管理3个方面剖析影响软件生产率的管理因素。它们直接影响着企业管理方式、管理方法、管理过程等的实施程度, 决定着企业运作是否有效。
(1) 人才梯队强调的是对软件企业人才资源的合理整合, 明确划分管理与技术领域人才, 使得人尽其才, 各司其职。目前在研发企业中存在着人才类型划分不清、技术与管理混淆的情况, 不能充分发挥人才优势, 往往造成能力与职位的错位。对企业人才进行梯度划分, 形成金字塔式的人才层次, 明确各层次职能定位, 将有利于企业效率的提高。这里需要强调的一点是层次的划分并不是机械式的一刀切。由于软件企业以技术为主导, 高级研发人员从技术领域转向管理领域是一大特点。这就意味着管理与技术存在着天然的联系, 不能割裂开来。人才梯度强调研发人员更好地发挥职业优势, 但是在管理和技术领域不能存在交流真空, 管理领域的高级技术人才有必要将技术知识共享和转移, 为企业培养新型技术人才, 防止因职务角色变化而引起的技术力量弱化。
(2) 激励机制强调在合理划分人才层次的基础上, 通过物质奖励、精神鼓励等各种方式, 有选择、不定期地对企业人员进行激励。实施激励机制, 目的是更好地提高研发人员工作热情, 发掘潜在职业能力, 提升企业人力资源价值。在这个过程中, 有必要保证激励的公平性, 防止因激励产生负面效应, 要使激励机制能够向企业员工传递积极的、正面的企业信息, 避免沮丧、消极和抵触情绪的产生。
(3) 变革管理立足于企业所处的市场环境及自身的发展要求。为了应对不断变化的IT市场, 增强企业的核心竞争力, 企业必须从自身入手, 融入变革。经历变革意味着企业在市场中存在风险。为了降低企业风险, 更好地引领企业主动进行变革, 软件研发企业需要良好的变革管理。通过创新管理方式、方法的应用, 使企业能够正确、及时地应对变化, 适应市场需求, 为企业在激烈的市场竞争中赢得一席之地。
2.2 技术角度
影响因素分析框架将技术分解为技术领域、个人能力、创新应用和工具使用等4个方面, 从技术方面全面审视影响软件生产率的因素。
(1) 技术领域主张依据企业研发人员各自擅长的技术能力, 将其划分为不同的专业技术组。例如, 可以从横向上成立基于.NET平台和基于J2EE平台的研发小组, 使研发人员专攻于各自领域的开发。同时也可以从纵向上按照软件研发过程, 成立专门的需求、设计、编码、测试、质量保证等项目组, 实现软件研发作业的流程化。
(2) 强调对企业研发人员个人职业能力的综合评估。软件研发人员组成具有多样性, 知识结构跨越多学科, 专业背景知识及经验各不相同。为了提升个人对软件企业的贡献率, 有必要从专业、学历、经验、技能甚至年龄等方面对员工进行考量, 建立员工职业技能评价库, 使企业从宏观上掌握技术人才资源的结构和特点, 有效指导企业人力资源规划。
(3) 着眼于企业研发人员对新技术的把握进行创新应用。为了提高产品的市场竞争力, 研发人员需要时刻关注软件技术的发展动态, 不断地将新技术应用于开发过程之中。随着各种开源项目的广泛实施, 各种新的技术架构、开发方法层出不穷, 充分利用前沿创新成果, 有效应用于软件开发, 将会极大地提升软件开发效率和产品质量。要求研发人员有意识地使用成熟的软件开发工具进行产品开发。开发工具覆盖了软件研发活动的全过程, 包括业务系统计划工具、项目管理工具、支持工具、分析设计工具、编程工具、组装和测试工具、原型化和模拟工具、维护工具和框架工具等。熟练地掌握各种工具的功能和使用方法, 辅助软件项目开发, 改进产品生产方式, 有助于提高软件产品的生产率和质量。
2.3 文化角度
持续学习、价值取向和团队合作是企业文化的3个核心组成部分, 从文化层面上影响着软件生产率。
(1) 良好的学习氛围是高科技企业生命力延续的重要环节, 是软件生产率提升的基础性因素。对企业学习氛围进行考量, 目的是促使企业创建学习型企业文化, 通过员工个人的知识学习、知识交流、知识共享, 形成集群效应, 提升企业整体的知识资源, 为研发工作提供丰富的知识储备。
(2) 价值取向与企业目标挂钩, 考察员工个人价值目标与企业整体发展战略的一致性。一致性程度越高, 说明员工个人与企业整体协调统一, 彼此能够形成良性互动。这样, 个人工作敬业度的提高将促使软件生产率的提高, 同时个人对于职业目标的追求将有助于企业整体目标的实现。由此可见, 从价值取向上考察企业文化, 研究对软件生产率的影响, 使企业能够发掘出影响员工个人工作效率的深层次因素, 进而能够为管理过程改进提供科学依据。
(3) 软件研发是一项集体性活动, 软件产品是这种集体性活动的智慧结晶, 基于这一特点, 影响因素分析框架将团队合作视为影响团队研发生产率的关键因素, 并试图从3个方面来衡量团队合作对生产率的影响程度。
团队结构。基于小组开发模式的研发团队, 必须具有良好的人员结构。任务角色的分配必须与团队成员的技能相匹配, 这就要求研发队伍根据实际项目确定科学、合理的人员组成。
人际关系。根据需要组成的研发团队必须注重成员之间的人际关系。微妙的人际接触能对团队合作产生正面或负面影响。例如, 互相信任、彼此帮助、积极向上的人际关系能使小组成员合作愉快, 从而高效地完成既定任务;反之, 彼此猜疑、互相推诿、具有抵触情绪的人际关系会严重影响团队合作效果和效率, 阻碍既定目标的实现。
团队沟通。团队合作必须具有良好的沟通方式和效率, 确保信息传递的及时、准确, 防止信息失真, 为成员高效合作搭建顺畅的沟通桥梁。
3 实施程度评估
实施程度评估是在不同的应用环境中对软件生产率影响因素和实施效果进行评估。在软件企业实际的开发过程中, 管理、技术和文化层面的生产率影响因素比例往往彼此不一, 实际的应用程度、实施效果经常受到多方面的限制和影响。对实施程度进行评估, 目的就是要依据不同企业的管理、技术和文化层面资源的实际占有率、利用率, 来确定经过环境整合之后的真实生产率, 以指导企业过程改进。在具体实施过程中, 应该对企业整体实施环境进行评分, 以作为影响企业真实生产率的权值。
4 结语
为了有效地降低软件研发企业风险, 更好地应对激烈的市场竞争, 企业必须从自身出发, 改进研发过程, 提高软件生产率。
笔者通过建立生产率影响因素分析框架, 详细分析了影响软件生产率的各种因素, 并将这些因素与软件开发过程各个环节相映射, 力图实现过程改进和软件生产率的提高, 给软件研发企业相关人员带来一些新的启示。
参考文献
[1]NORMAN E.FENTON, SHARI LAWRENCE PFLEEGER.软件度量[M].第2版.杨海燕, 赵巍, 张力, 译.北京:机械工业出版社, 2004:314-410.
[2]杰拉尔德, 温伯格.质量软件管理协调行动[M].第1版.侯晓宇, 李虹桥, 译.北京:清华大学出版社, 2005:239-283.
[3]DANIEL GALIN.软件质量保证[M].第1版.王振宇, 陈利, 王志海, 译.北京:机械工业出版社, 2004:285-315.
[4]DIRK HUBERTY.软件质量和软件测试[M].第1版.马博, 赵云龙, 译.北京:清华大学出版社, 2003:183-198.
[5]JOEL HENRY.Software project management:a real-world guide to success[M].第1版.北京:科学出版社, 2004:379-397.
软件编程框架 篇2
-03-03python操作日期和时间的方法
-11-11python自动化工具日志查询分析脚本代码实现
2014-01-01Python获取当前时间的方法
2014-05-05Python中使用动态变量名的方法
2009-11-11Python 开发Activex组件方法
2014-06-06测试、预发布后用python检测网页是否有日常链接
-12-12让python json encode datetime类型
2013-11-11python连接MySQL、MongoDB、Redis、memcache等数据库的方法
CMM软件能力成熟度框架分析 篇3
【关键词】软件能力成熟度度模型;软件过程;软件过程能力;软件过程成熟度;软件过程行为
1.引言
随着软件业的发展,软件规模的不断扩大,软件开发方法和技术的不断更新,而相应的软件生产率和软件开发质量却未得到有效提高,软件产品时常不能按时完成,软件生产预算超支,而交付客户使用的软件产品也由于各种原因产生的错误无法克服。软件能力成熟度模型(以下简称CMM模型)就是为了应对这一软件业危机而提出的。
2.CMM简介
美国的Walter Shewart于上世纪30年代发表了软件开发质量控制统计成果,随后卡莱基.梅隆大学软件工程研究所将这套质量控制方法改造整理成为一套能力成熟度框架,并于1990年由SEI公布了CMM模型的第一个版本。CMM的核心是把软件开发视为一个过程,依据这一原则对软件开发和维护进行过程监控和研究并建立起一套框架,使得软件开发组织可以依据框架对项目管理和项目工程进行定量控制和能力评估,从而最终达到使软件的研发过程更加科学化、标准化的目标。随着CMM模型在软件开发中应用,项目开发中的风险得到减低,开发时间大大缩短,开发成本得以减少并大大降低软件产品中的错误发生率。
3.CMM框架
软件生产过程理论告诉我们,软件质量往往取决于软件过程的能力水平,以及在软件过程中所采用的技术适应该过程的成熟度水平。软件过程是一个可度量的、可控制的、可以不断改进的过程。
CMM强调应对软件过程进行连续的改进,在这一改进过程中形成的分级结构——CMM框架,将提供不同等级中的目标和核心领域来规范软件开发过程并为过程的评论和改进提供客观标准。CMM框架共分为5个级别,分别是初始级、可重复级、定义级、管理级和优化级,它们由低到高的代表了不同等级的软件开发过程成熟度能力。
1)CMM初始级
个人英雄主义的天下,绝无可重复性,也无甚积累,项目的执行是随意和混乱,软件开发过程未经定义,开发组织不具备稳定的软件开发与维护环境,面对开发中所遇的各类具体实施问题往往由编程人员凭个人经验与主观感觉应对。在这一级别软件开发过程是不可重复、不可预见、不成体系以及不可积累及不稳定的。
2)CMM可重复级
确定基本的软件生产管理和控制,能针对特定软件项目制定开发过程及管理措施,能将以往项目开发经验用于类似的新项目,有一套不同的软件生产过程提供不同项目选择。软件生产成本和工期能得以客观预测并被有效追踪,过程标准在项目实施中能保证被遵循。项目的开发是有计划的,有控制的,并可重复的行为。在此级别下的软件开发过程是初步实现基本的可管理和可复现。
3)CMM定义级
软件开发过程在整个开发组织范围内得以确立。有一套软件过程规则对所有软件工程和管理行为给与指导。组织内部设置了软件工程小组负责过程的制定,修改,调整和监督。有关软件工程及管理工程的过程文件被编制并成为企业标准,所有项目都必须按照这些标准过程或经调整后的项目过程来实施。软件过程在此得到的稳定的,重复的和持续性的应用,使开发風险大为下降。总而言之,第三级的主要特点在于软件过程已被编制为各个标准化过程,并在企业范围内执行,从而使软件生产和管理在“可重复级”的基础上更具可重复性、可控制性、稳定性和持续性。
4)CMM管理级
第四级的过程是量化的过程,所有项目和产品的质量都有明确的定量化衡量标准,软件也被置于这样一个度量体系中进行分析、比较和监控,所有定量指标都被尽可能地详细采集并描述,使之可具体用于软件产品的控制之中,软件开发过程成为一种真正的工业化生产行为,由专门的软件过程数据库收集和分析软件过程中的各类数据并以此为对软件活动的质量评估的基准。
在此级中,所有的软件过程和产品都树立了定量的目标并被“定量”的管理,使软件组织的能力可以很好地预测。项目组成员对整个过程及其管理体系有高度一致的理解并已学会运用数据库等方法定量地看待和理解软件工程。本级主要在上一级“定义级”基础上实现开发过程的定量化和可预测化。
5)CMM优化级
第五级的软件过程应是持续改进的过程,有一整套有效机制确保软件工程误差接近最小或零。每一个过程在具体项目的运用中,可根据周边和反馈信息来判断下一步实施所需的最佳过程,以持续改善过程使之最优化。因此不断调整软件生产过程,按优化方案改进并执行所需过程。
总之,优化级就是可以根据过程中反馈信息来及时完善下一步的执行过程,通过不断调整使软件开发过程以求达到最佳。
从上面可以看到,五个CMM级别描述了软件开发过程管理从无序到基本有序、到过程定性管理、再到过程定量管理、最后到持续反馈改进的渐进过程,它是一个循序渐进的累进,从第二级到第五级,每一级都需要在满足前一级的基础上实施才可能达到。
4.结论
实施CMM对提升软件过程能力起着至关重要的作用,CMM过程本身就是对软件开发过程发展的一个完整而准确的描述,通过实施CMM可以更好的规范化软件生产和管理的流程,使软件开发组织更加规范化。企业通过CMM认证不是为了满足客户的要求,而是为了自身更好的发展,为进一步扩大规模打下良好基础。近年来国内许多著名的公司,诸如:华为、联想、鼎新等涉及软件开发的企业已经通过了CMM的相关认证,预计未来两三年,软件业会出现一个CMM认证的高潮,这是大势所趋,也标志着我国软件业开始走上标准化、规范化的国际发展道路。
参考文献
[1]杨一平等著.软件能力成熟度模型CMM方法及其应用[M].人民邮电出版社,2009,4:35-60.
[2]Joesph Raynus著.邱仲潘等译.CMM软件过程改进指南[M].电子工业出版社 2007,3:85-110.
基于AOP的软件测试框架设计 篇4
今天,面向方面的程序设计AOP框架在企业环境中得到了越来越多的广泛应用。使用面向方面程序设计的一个很大的好处是不仅解耦,而且增强了应用的可扩展性,使测试变得更容易,所以在测试领域,已经提出了动态替换测试对象的方法,许多远程组件如EJB组件的单元测试开始采用这种方式。本文将要提出一种完全基于AOP的测试框架,将测试案例以测试方面的方式织入到运行代码中进行测试,从而完成复杂的动态白盒测试和仿真测试。
1 AOP技术介绍
目前,OOP(Object-Oriented Programming)是主流的程序设计范型,当对公共行为进行建模时,展示了强大的功能,但是当对跨越多个模块的行为进行建模时,却陷入了困境,于是,一种新的编程思想AOP应运而生。AOP可以说是OOP的补充和完善。它利用一种称为“横切”的技术,剖开封装的对象内部,并将那些存在于对象内部且影响了多个类的公共行为封装为一个可重用模块,即方面(Aspect),从而降低了公共行为和类之间的耦合度,并有利于未来的可扩展性和可维护性。
AOP把软件系统分为两个部分:核心关注点和横向关注点 (如图1所示) 。核心关注点指的是软件的主要业务处理流程,横向关注点指的是与业务流程无关,却为业务模块所共同调用的逻辑或责任,常见的有权限认证、日志、事务处理等。AOP允许用户独立地实现横向关注点,然后把这些横向关注点织入核心关注点,最后形成一个完整的系统。
2 一种基于AOP技术的测试框架设计
测试人员面临的问题:
(1) 动态白盒测试的困难 白盒测试一般分为静态测试与动态测试。静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估。动态测试则需要在主机环境或目标环境中实际运行软件,并使用设计的测试用例去探测软件漏洞。测试主要是在代码的基础上测试各个单元功能的正确执行,包括:单元接口、局部数据结构、重要的执行路径、错误处理的路径和影响上述几点的边界条件等内容。在这种情况下,往往测试代码比原本的软件代码还要复杂,并且代码对功能的依赖性也会增强。
(2) 复杂环境下的黑盒测试 很多情况下测试人员要在数据条件不完备的情况下进行单元测试,如没有数据库连接,JNDI没有就绪,或者远程Web服务不可用的情况下测试调用远程服务的代码。
(3) 契约式设计的检验 Bertrand Meyer提出的契约式设计的概念,即类的设计者和这个类的使用者共同分享关于类的实现的契约,契约包括先验条件、后验条件和不变式动态,然而如何在运行中检验契约的遵守即如何保证设计人员设计的框架是真正基于契约式设计的是困扰测试人员的又一个问题。
2.1 设计思想
基于以上的问题描述,为了降低自动化测试的成本和开发时间,作者提出一种基于AOP的测试框架,主要是由一个容器和一个报表引擎等组成,容器负责装载和解析所有的测试案例并将其织入到相应的测试目标代码中运行,运行结果输入到报表引擎产生测试报表。报表引擎目前使用的是XSLT来将XML格式的数据转换为HTML格式输出,下文主要介绍框架的重点——容器的设计。
2.1.1 容器设计
容器架构图如图2所示。
测试方面生命周期管理(Test Aspect Life Cycle Manager): 核心组件,负责管理Test Aspect的生命周期,生命周期分为每虚拟机(perJVM),每类 (perClass)和每实例(perInstance)三大类。不同的测试方面具有不同的生命周期,perJVM的测试方面在一个虚拟机里只有一个实例,perClass的测试方面对于每个不同的测试类有一个实例,其生命周期与测试的类的装载/卸载息息相关,而perInstance的测试方面对于每个测试类的对象有一个实例,其生命周期与具体的测试对象绑定。
测试用例执行引擎(Test Case Execution Engine):核心组件,负责执行用户编写的测试用例。
切入点匹配(Pointcut matching): 核心组件,该组件负责查找所有匹配的静态或者动态连接点。
织入器(Weaver): 使用Java的动态代理将测试方面中定义的建议以拦截的方法动态织入到相应的切入点。主要有3种拦截器分别实现动态测试(TestCaseExecutionInterceptor),返回数据替换(MethodArgumentsReplacer)和方法输入参数替换(MethodReturnValueReplacer)功能。
报表引擎(Report Engine):运行结果将被输出到报表引擎以产生测试报表。
元数据标签解释器(Annotation Parser): 核心组件,负责解析各种元数据标签。容器使用Java 5提供的元数据标签来进行织入点描述,支持的标签由表1所示。
2.1.2 完整的测试过程
测试人员通过调用容器提供的一个引导类来启动真正的测试案例(包含多个测试方法和一些模拟数据),容器的元数据标签解释器会自动解析测试案例中的目标类及方法,与此同时类的装载器装载相应的目标类(即我们要测试的应用类),接着调用织入器将测试方法或者模拟数据插入到运行的应用程序中,最后生成测试报表,测试人员可以将报表中失败案例的详细信息发给开发人员,帮助他们进行代码调试。整个过程如图3所示。
2.2 具体应用
我们以一个简单的银行系统BankApp中的提款存款的操作为例,Account接口定义了4种操作:
作为测试人员假设我们需要测试该接口方法参数的一些边界条件,比如存钱的数目不能为负数,取钱的数目不能大于帐面余额或者每次最高提款数目等,同时我们还要使用模拟数据注入的方式将用户账面余额替换为测试数据方便测试,完整的测试方面的代码如下所示:
容器自动将该测试方面织入到运行代码中,执行测试,最后生成测试报表。
3 结束语
在极限编程(eXtreme Programming) 中,单元测试是与要测试的代码同时编写的。然而有些复杂的单元测试用例,测试人员甚至会花上比编写功能代码更长的时间来编写测试代码,这样使得测试的时间延长并使测试代码不易于管理以及在以后的回归测试中重用,给测试人员带来很多的困扰。因为极限编程依赖于积极的动机和自给自足的习惯,所以极限编程过程(和项目)的最佳利益就是使测试保持集中和易于编写。
为了保持较低的测试开发成本,利用本AOP框架来做上下文测试,可以使用容器的搜索匹配功能找到各个上下文关注点,并且能够在数据条件不完备的情况下,插入模拟数据,最后本容器也可以作为一个很好的检验契约式编程的框架。
参考文献
[1]AspectJ in Action,Ramnivas Laddad.Manning Publications Co,2003.
[2]企业AOP快速入门(Aspectwerkz 2.0).David Teare,http://dev2dev.bea.com.cn/techdoc/2005070701.html,2005.
[3]AspectJ和模仿对象的测试灵活性.Nicholas Lesiecki.http://fast-point.cntesting.net/blog/htm/do_showone/tid_41.html,2005.
软件编程框架 篇5
摘要:UML已成为复杂系统建模的工业标准,并可借助代码自动生成工具实现从分析到编码的开发过程自动化。而实时系统的行为特征可以很好地用UML的状态机表示,从而成为自动代码生成、测试、分析和校验的最佳选择。Ilogix公司的Rhapsody是一个基于UML支持模型驱动开发的CASE工具,它使用一套为实时系统量身打造的软件框架实现实时系统软件的开发自动化。关键词:实时系统 UML Rhapsody 状态机
引言
面向对象的软件设计方法推崇抽象、可重用且易维护的设计模式。其中,一个普遍采用的做法是使用预定义的框架构建复杂的软件系统。在面向对象领域中,框架是指为某一具体应用领域提供解决方案的类集。程序员使用继承、聚合等技术定制框架并将其用于具体的应用程序设计。基于框架的软件开发具有如下优点:
*由于重用了框架提供的代码,目标系统不必从头写起;
*规范的框架结构能够指导目标系统的设计;
*框架的设计是开放的,因此可以通过子类化等技术定制和扩展。
本文介绍Rhapsody的实时代码生成策略。Ilogix公司提供的Rhapsody是一个基于UML支持实时嵌入式系统全过程面向对象开发的CASE工具。Rhapsody基于一个内置的实时系统软件框架―OXF生成C/C++代码。
(本网网收集整理)
1 Rhapsody的软件框架
Rhapsody的OXF框架专为实时嵌入式系统而设计,它由一系列UML类组成。这些类相互协作,组成了一个结构严整、跨实时操作系统平台的实时嵌入式软件架构。
(1)活动类
活动对象(Active Object)在UML中被定义为“拥有一个线程并能够发起控制活动的对象”。Rhapsody给这个一般定义赋予了具体含义,如图1所示。
活动类(Active Classes)在框架中以OXFActive表示,它拥有一个执行线程和一个事件队列,并提供事件调度功能。用户活动类从OXFActive继承。
该活动类包装了实时系统中的事件调度器。Execute方法是一个无限循环。在循环中,事件被不断地从队列中提取出来,发往对应的目标对象。QueueEvent和schedTimeout方法向队列注入新的事件。
(2)响应类
响应类(Reactive Classes)是能够对事件做出反应的框架类,即事件消费者。它在Rhapsody的框架中以OXFReactive表示,用户响应类从OXFReactive继承,如图2所示。
图2 响应类及相关框架元素
每个响应类都和一个事件管理器关联(通过调用setEventManager方法),事件管理器由活动类充当。一个事件管理器可以服务于多个响应类。响应类的gen方法向其事件管理器注入一个新的事件(通过调用活动类的queueEvent方法)。事件管理器在收到事件之后会调用相应的响应对象(由事件的属性指出)的takeEvent方法。
用户响应类有主动(active)、被动(passive)和从属(subordinate)响应类之分:
*主动用户响应类利用了多重继承技术,它集事件管理器和响应类双得功能于一身;
*被动用户响应类由框架的缺省事件管理器―OXFDefaultEventManager管理,且所有被动用户响应类都共享该缺省事件管理器;
*从属用户响应类由用户定义的活动类充当事件管理器。从属响应类以聚合方式存在于用户活动类内,或者独立于活动类,而通过调用setEventManager方法与一个用户活动关联。
(3)事件和操作
类可以定义自己的事件和操作(Events and Operations)方法。事件代表一种突发的激励信号,可以影响对象的行为及状态。在Rhapsody中,活动类负责事件调度。事件既可以异步(活动类将事件投递给目标对象之后立即返回,目标对象使用自己的线程完成对事件的响应),也可以是同步的(活动类投递事件之后必须等待目标对象处理完成才能返回)。操作代表类本身提供的服务和功能。操作调用总是同步的,即操作总是运行在调用者线程之内。Rhapsody的框架定义了两种事件:
①信号事件。
信号事件(Signal Events)是最常用的事件,它代表对象之间传递的一种异步激励信号。在Rhapsody的框架中,它以OXFEvent表示,所有的用户
事件类都从OXFEvent继承。
信号事件有自己的参数(以其属性表示),并且和一个响应对象关联。事件管理器依据事件的响应对象判断事件的接收者。
②定时事件
定时事件(Timeout Events)在Rhapsody中以OXFTimeOut表示。它在OXF框架中的位置如图3所示。
事件管理器(活动对象)的schedTimeout方法负责定时事件的构造和调度。其执行过程如图4所示。
图3 定时事件及相关框架元素
事件管理器创建一个OXFTimeout对象并将其交由一个定时管理器管理。定时管理器可以管理多个定时事件,它运行于自己的独立线程内且聚合了一个定时器对象。定时器对象每卫固定的时间片会向定时管理器发通知信号,这时定时管理器检查它管理的定时事件集合中是否有定时事件到时,并将到时的定时事件添加到事件管理器(活动对象)的事件队列中(通过调用queueEvent),之后事件管理器再将这些定时事件投递给对应的响应对象。定时事件本身是被动的,它不包含定时器。
(4)状态机
Rhapsody支持UML状态机(State Machines),包括层次状态分解、带参事件、定时事件、伪状态、完成转移、入口和出口动作等功能。Rhapsody也包含了UML中定义的异步事件处理模型:带有状态图的类都是响应类,因此都与一个事件管理器(活动类)关联。事件管理器使用一个队列缓冲收到的事件,然后将事件投递给响应对象。响应对象按照状态图处理收到的事件。
OXF框架使用OXFEvent Consumer、OXFState、OXFLeafState等实现UML状态机的语义。限于篇幅,本文对此不作介绍。
(5)并发控制
Rhapsody的OXF框架使用如下两个类实现对实时系统资源的并发控制(Concurrency Control)。
*OXFOSMutex:包装了实时操作系统的互斥量对象,支持lock和free操作。互斥量用于管理独占性资源。
*OXFOSSemaphore:包装了实时操作系统的信号量对象,支持wait()和signal()操作。信号量用于管理共享资源。
UML类的方法可以声明为guarded。这时类被称为protected。protected类用于对独占性资源进行建模,在任何时刻只可有一份guarded方法执行,OXF框架以OXFProtected定义UML protected类,它充当所有用户protected类的父类。
(6)模型的调试及分析
Rhapsody允许用户单步执行状态图和顺序图以验证系统的功能和逻辑。系统执行过程中,对象的方法调用和状态改变都可以在模型图上以动画的形式表现出来。
除了功能和逻辑上的正确性之外,实时系统还对系统的响应时间有严格的要求。对实时系统响应时间的.测试称为调度性分析,主要使用两种方法。
①经验法:给系统注入实时测试数据,然后测量系统的相应性能。
②理论分析:为系统模块设定足够的时间信息,然后用数学方法计算系统的整体相应性能。此方法通常需借助专用的软件工具完成。
图4 定时事件的调度和投递
Rhapsody支持基于经验的调度性分析。用户需要为对象方法设定估计的执行时间,并编写一个驱动脚本或状态图以模拟系统的触发事件。驱动脚本和状态图启动之后,Rhapsody会按照设定的时间参数和程序逻辑运行模型并输出详细的执行过程报表。用户通过检查执行报表判断系统是否满足要求的响应性能。Rhapsody也允许用户在目标硬件系统运行驱动脚本或状态图,以获得最准确的执行时间报表。
结语
实时嵌入式系统应用的开发越来越复杂,因此有必要对嵌入式项目实施严格的软件工程管理。UML已成为复杂系统建模的工业标准,其状态机模型与实时嵌入式系统极好地对应,且便于借助CASE工具实现代码自动生成,能够极大地提高实时嵌入式软件的开发效率和项目可管理性。
软件编程框架 篇6
摘要:作为工程性很强的软件工程课程,案例教学目前被普遍使用,如何做才能达到理想的效果是很多教师一直在探讨的问题。基于宽框架与启发式为主旨的软件工程课程案例,所选主题实用,内容设计有拓展空间,同时易于逐步渗透在教学过程中,对于激发学生分析和思考问题的主动性、在基本框架上添加适宜且有特色的“砖”和“瓦”以及培养软件分析与设计能力具有良好的推动作用。
关键词:案例式教学;软件工程;宽框架;拓展
一、软件工程课程案例的选择与实施模式
1.教学案例的选择
软件工程是一门理论性和实践性都非常强的课程,其核心任务在于使学生学习、掌握软件项目方案的确定与开发方法。单纯靠死记硬背基本概念和设计规则,是不可能真正掌握和领会软件生产的工程化思想的,而且因为学生缺乏开发经验,虽然对各种建模工具的使用有所了解,但要直接面对繁杂、琐碎又有一定程度交叉的需求叙述进行抽象分析,设计可用的方案,通常也感觉无从下手。因此,采用案例式教学,非常易于学生结合案例中出现的问题,以小组为单位开展思考和研讨,集思广益,通过不断补充、修正,深入感知软件工程思想的基本原理和方法的具体使用,从而提升软件开发技能。
基于上述教学案例要求的分析,在软件工程课程教学中,我们也曾提出过多个项目作为案例,这其中不乏在很多教材中出现频率较高的图书管理系统、教学管理系统,还有时下流行的电商网站等。但综合分析后,我们认为这些项目中都存在一些学生学习和进行深入思考的障碍。例如:图书管理系统中通常一般人只知道有借书、还书、查询图书等,但实际上要保证任何一个图书馆的正常运行,为读者频繁的借、还书做好服务和准备工作,离不开领域内部的专业管理与控制,如必须进行图书入库,此过程中需要对每一本图书都要进行细致的分类、编目,还要涉及上架、下架的登记,工作和处理过程相当繁杂,若因不熟悉而忽略,那么最终给出的系统将缺少或失去特色,也是一个极不真实的结果,对学生而言,也就无法感受实际需求分析的过程及对开发的影响。
因此,经过广泛、深入的分析、思考后,我们最终选择以国内高校大学生体能测试为背景,设立了“大学生体能测试数据的管理与分析”案例题目。由于软件工程课程是大二以后才开设,而大二以上的学生都有体能测试的亲身经历,对测试的内容、形式、过程和结果等都比较了解,因此,可以很轻松地融入此案例的研讨中。同时,此题目与学生息息相关,学生能够以主人翁的精神和姿态理解、完善案例,既有利于短时间内设计出一个满足自己需要且基本合理的方案,也可以总结出分析问题、解决问题的思维模式,真正积累和提高项目开发的经验。
2.教学案例的实施模式
教学理念决定着教学方式,案例式教学虽然是围绕案例开展,使学生了解、感受和明确课程的知识点、运用方法及彼此间的关联性,但是过程如何实施才能达到理想的效果,还是要因课而异。
软件工程教学案例的实施依据软件工程生命期的理念,同时为保证案例具备真实性、可实践性和实用性,也遵循着从实践中获取,再反馈到实践中应用的原则。具体实施过程为:软件工程理论阶段性学习,针对所学习的理论推出案例框架,分析、研究案例框架,结合实际拓展案例,发布、完善案例,理论与实践交融小结。
二、基于宽框架的案例在教学中的渗透与教学组织
1.宽框架的案例设计
鉴于体能测试是由学校体育部直接负责和完成的,所以确定题目后,与体育部的教师进行了具体的交流,了解工作特点、基本工作流程和需求。之后,经过任课教师的总结,首先给出了体能测试项目的基本任务需求、执行流程框架、主要角色和职责、开发目标等。这也是完成软件生命期理论的第l步“项目调研,需求定义”的工作。由此,确定总体目标和大的方向,既节省了学生的调研时间,也可以避免初始任务过于杂乱的情况。
本项目相关的一般用户主要分为教师和学生两类。其中教师包括体育课和担任体能测试的教师、班主任与辅导员、学校和学院内各级领导。教师用户通过本系统可以了解学生的体质健康状况,为进一步调整和提高体育课内容的科学性以及改进校内运动设备的实用性提供参考依据。学生用户通过本系统可以了解自己的体质变化情况,为做出适合自己的个人锻炼计划提供依据。
图l所示内容即是基于上述需求和各类用户工作特点的主要任务分布,它只是对未来体能测试项目开发的一个粗线条任务规划的结果,为学生留有充分的想象和扩展空间。因此,称之为宽框架的课程教学案例,其作用是引导学生项目定位。
2.案例在教学中的渗透与完善
(1)案例的推出。案例教学不是直接告诉学生答案,而是以鼓励学生思考、再创造为目的。宽框架的案例功能图只体现了大学生体能测试项目的基本操作功能,通过网络学堂将案例的框架功能描述发布,在课堂上给予简单介绍,然后要求学生以小组为单位研究、讨论案例中给出的宽框架功能,并结合具体技术、参考其他软件的功能与使用特点,以主人翁的视角和专业软件的开发标准和要求对框架中的每一个结点进行拓展完善,运用相应的建模工具描述拓展结果。
(2)启发与引导。在拓展前,结合项目以及与项目相关的各种用户角色的特点,给学生适当的启发、引导,例如:学生都是在校注册过的,进行体能测试时是否还有必要再重复输入学生的基本信息;教师不仅能够进行大范围的查询,是否还应该有资格查询自己所负责的班级中某个学生的具体测试结果;班主任与学校领导的关注点是否应该有所区别,这两类角色又应该有何共性;作为一个未来的软件系统,对数据的使用和操控怎样设置才能够保证安全,等等。通过一系列的设问,帮助、引导学生扩大联想,同时也将一些学生不了解但是合理的需求和想法渗透到对宽框架的学习与思考过程中。
(3)框架拓展。因课上教学时间很有限,所以具体的学习、讨论都是在课下。学生们在获得基本框架后,对项目的核心问题有了初步的了解和认识,利用课余在网上广泛查阅资料、调研,结合自己以往的体测经历和出于软件实用性考虑,开展分析、研究,分别提出对于现有功能的认识、调整与拓展结果。例如:很多组都同时参考一般网站或系统的管理方式,提出设立管理员用户,其主要任务是对维护系统的数据和进行权限管理等;还提出利用现有的正方教务系统,导入参测学生的基本信息;在统计优秀率的同时,还要对不及格的情况进行分析,由此为将来提高学生体质、改进体育课的教学内容提供有力的参考。
(4)改进完善。软件工程课程教学的目的是培养和提高学生分析问题、进行系统方案设计的能力。学生满怀热情和想象拓展的结果,往往会因为自身经验和技能的欠缺而存在一些问题或不足。为此,每一次的拓展结果任课教师都选择一些组在课堂上演示宣讲,同时带领全班同学进行分析、讲评,并鼓励学生充分发表自己的意见,对于很切中要害和有创意性的合理的观点,都记录到平时成绩中。既提高了学生们积极思考、参与讨论的热情,活跃了课堂氛围,也使学生们能够充分取长补短,向着实用的方向不断发展。
图2即是基于图1的宽框架拓展完善结果。虽然不能称为是最佳设计,但通过这样的项目交流,学生们热情投入,各抒己见,能够不断发现问题,改正错误,进一步加深对理论和技术的理解与运用。
本质上讲,学生提交的拓展结果不仅是将理论用于开发实践,通过实践感受原理、技术的合理性,使知识的理解和操作能力得到升华;同时也能够丰富教学内容,扩充和促进教师深入思考,真正实现了教学相长。
3.教学推进与案例的深化开发
由于数据库表结构的设计对于一个软件项目后续编程实现而言是十分重要的,案例只给出了学生包括学号、姓名、专业、所在学院的基本信息,教师信息包括工号、姓名、所在部门。因体能测试的项目每年可能发生变化,成绩的存储类型也有所不同。所以,在系统设计阶段,针对案例,只提出数据库的具体结构需要做成动态的,以适应实际情况需要,具体保存的字段由学生们自行考虑设计。
各组学生在研究、讨论过程中,提出了多种结果。例如:体侧项目通过一个界面动态完成字段名称及对应的数据类型的选择定义;教师所在部门专门、学院、专业等分别设计一个码本数据表,便于后续操作的简捷和一致性。对于每个结果,任课教师不从主观角度做正确与否的结论,依然采取和全体学生一起分析亮点,让学生自己意识到设计过程有哪些是考虑不周的,由此加深印象,积累和提高依据需求和系统功能对系统数据进行分析、设计的能力和经验。
三、课程的考核
以往软件工程课程的考核一般都采取卷面的形式,死板、生硬,学生考过之后通常脑子里的知识信息如浮云掠过,对于今后的学习和工作很难形成知识的积淀。以案例为核心的教学不仅使学生的学习方式发生改变,考核方式也完全打破过去的主、客观题占卷面绝对主体的方式。
考核的主导思想是随着案例的推进渗透,分阶段评审各小组的成果。小组成员在组长的带领下展示本阶段本组研究拓展的结果,其他组的同学和任课教师共同对成果按照金色产品、银色创意品、铜色拓展品、本色实验品4个级别进行评审,其中:
本色实验品基本无创意,只是按照标准格式完成了文档。成绩为合格。
铜色拓展品指在本色的基础上,增加了极少量的底层小功能,但整体结构无变化。成绩为较好。
银色创意品指在铜色的基础上,整体功能、结构合理、完善,有一定的创意。成绩为良好。
金色产品指在银色的基础上,实用性很强,采用的技术先进,可作为实际项目推出应用。成绩为优秀。
对于学生而言,能够设计出金色产品有相当的难度,需要大量的阅读、学习、调研、分析,既是技术的综合运用,也是逻辑思维能力的造就与深度发掘,是企业软件开发模式的初步体验,能够切实为未来就业积累成果和经验。
教学改革和课程建设,是高校永远的主题和任务,目的是提高教学和学习的成效。不断改进教学方法是教学改革的重要策略和手段,目的是激发和提高学生的学习积极热情与兴趣,而教学案例则是实现该目的重要媒介和工具。软件工程不是一门速成的科学,只听不练难以领会原理和技术的本真与精髓,盲目的练习又会令学生感觉无从下手,难以达到预期的效果。基于宽框架和启发式的软件工程教学案例,不但实现了案例式教学的基本目的和要求,而且因所选项目具有真实感和时代感,其具体内容和需求的变化,使学生可以充分变更与拓展,彰显了规范与灵活的统一、内核与外延的一致、启迪与拓展的协调等特点。学生能够逐步完成开发练习,其综合素质和学习效果可以得到全面提升,培养了分析问题、工程认知、创新、沟通与表达的能力,同时学生们的拓展成果也延展了教师的思维,促使教师深入思考,进而提高教学质量。
软件编程框架 篇7
随着无线通信技术的发展,通信系统的研究进入新水平。第三代移动通信系统取得世界性成功后,LTE和LTE-A的标准和协议一直是3GPP重点研究问题。评估LTE/LTE-A系统性能、研究链路容量及相关算法是项重要工作。由于构建一个真实无线通信系统的成本较高,可建立一个兼容的实验仿真平台实现系统性能的测试与评估。仿真平台的系统设计和开发必须严格遵循LTE标准和协议,并考虑影响系统运行的场景和随机因素。传统的无线通信系统仿真分为链路级仿真与系统级仿真,详见表1。
综合上述两种仿真方式的优缺点,一个从物理层到传输层完整的LTE仿真平台更符合现有研究需求。
OAI仿真平台是一个基于LTE协议栈开发的软件平台,具有可重复性、可移植性及精确的仿真结果。OAI平台可通过对协议栈不同的配置实现不同的仿真场景,使用物理层抽象技术或用硬件替代部分系统功能以减少仿真时间,有效测试、评估、验证LTE系统。
二、Open Air Interface(OAI)仿真平台
2.1 OAI平台概述
Open Air Interface(OAI)平台是由Eurocom开发的开源、实时仿真平台,可完全模拟无线接入技术、协议等特点。常用于无线通信系统的仿真实验及信号处理,研究、验证通信技术的创新算法与策略。OAI仿真平台的架构严格按照3GPP协议设计,通过提供各种不同的仿真场景和完整的通信系统功能分层,最大限度地减少计算机模拟和实际硬件实验之间的差距。
OAI平台的主要特点:
提供完整LTE协议栈,包括物理层、MAC层、RLC层、PDCP层及RRC层;
提供Linux操作系统下的IPv4/IPv6网络设备接口;
可用于蜂窝网络和网状拓扑结构;
支持完整物理层和物理层抽象两种仿真模式;
具有单机仿真和多机联合仿真两种工作模式;
包括多种不同信道模型,如:传输损耗、阴影衰落及随机的小尺度衰落等;
2.2 OAI软件框架及协议栈
OAI仿真平台的源代码分为四个部分。
Open Air0:主要描述硬件模块Card Bus MIMO和Express MIMO,以及对应FPGA的固件驱动程序。
Open Air1:包括物理层各个功能模块,定义相关参数及初始化。主要功能是实现LTE系统基带信号的处理,提供与MAC层之间的接口。此外,Open Air1还提供与硬件之间的接口,形成一个基于硬件的LTE系统仿真平台。
Open Air2:包括LTE系统相关协议栈,即MAC层、RLC层、PDCP层及RRC层的具体实现。Open Air2文件夹主要功能是无线接入控制方面的协议内容,包括相关协议流程的实现以及无线资源管理方案的部署。通过与物理层之间的接口,Open Air1和Open Air2中的内容组成了一个无线通信系统的基本功能。
Open Air3:包括了基于IP的网络模块,即全IP蜂窝与IP/MPLS网状网络开发的第三层协议栈,具体有LTE系统中基站e NB、用户终端设备UE的相关内容。此外,Open Air3为基于OAI平台的网络上层应用提供接口,完善了整个平台。
以上四个文件共同组成了OAI平台的软件框架及完整的LTE协议栈,清晰地划分了传输链路、资源管理、网络应用等功能。在硬件的支持下,整个平台可以看做一个真实的无线系统,完成系统开发与技术创新。
目前Open Air Interface LTE平台包括了完整的LTE系统标准,可实现演进型分组核心网EPS的以下功能:在EPC的PS域可通过MME、SGW、PGW实现固定网络和PLMN分组传输之间的功能接口。OAI使用开源软件实现gtpv1u和gtpv2c的应用协议现称为nw EPC。保证NAS的完整性,使用AES加密算法;UE处理程序:附着、认证、服务访问、无线接入承载建立;全IP网络支持透明访问,可配置接入点名称、IP地址范围、DNS及E-RAB Qo S;支持IPv4和IPv6。
图1是LTE协议栈在OAI平台下实现的示意图。OAI平台可以适用于多种软件开发环境,具有控制、监视、消息和时间分析、低权限的登录系统、流量发生器、分析及软设计等功能,提供协议验证、性能评估和预部署系统测试的工具等。
三、OAI平台仿真流程
Open Air Interface LTE平台的仿真流程实现了真实LTE无线通信系统的完整工作流程,具体分为以下四步。
仿真场景设置:参数配置即仿真场景的设置。OAI平台可配置的参数主要有:LTE系统双工方式(TDD/FDD)、UE数量、e NB数量、信道模型等。
初始化:参数初始化设置。包络仿真场景参数的初始化、各个分层UE及e NB的参数配置、业务信息及移动性等初始化。
仿真执行:仿真节点同步、e NB及UE放置过程执行。基本流程包括LTE系统各个功能分层的处理,即同步、随机接入、调度、无线资源管理等功能的执行。
仿真结果输出:log文件收集、标记、存储。log文件记录并显示OAI平台仿真过程,是分析仿真过程及结果、评估性能最有价值的内容。
四、OAI仿真平台应用分析与展望
4.1 OAI仿真平台应用领域
无线信号处理。硬件/软件架构通SDR技术,利用多处理系统级芯片,实时处理信号。物理层可利用UMTS的LTE和802.16m技术优化算法以适应实时性。
实现全IP无线网络。全IP移动网络协议802.21(基站采用IPv6路由器,包含IPv6的移动性管理)、IP/MPLS协议。
灵敏射频系统设计。OAI平台采用宽带无线电设计、线性范围内无线宽动态接收机设计,联合射频与数字信号处理,共同实现“智能”射频。
设计与仿真方法。OAI平台利用抽象技术如硬件建模、PHY子系统建模、交通建模等,分别模拟硬件、PHY子系统及流量,同时向分布式实时无线仿真网络提供射频仿真体系结构。
传播、系统测量与分析。通过实时测量的离线性能分析,有利于宽带信道表征和建模。
认知无线电。随着传感器网络技术的发展创新,OAI平台将支持同一地区持牌及无牌的无线用户的共存,还可处理相关设计和认知网络互联等问题。
4.2 OAI仿真平台展望
可灵活调配、控制,OAI平台的集成开发环境;
基于软件定义网络功能,可灵活搭建、配置网络组件;
在公共场所为用户终端提供服务、业务及应用;
通过从M2M/Io T、软件定义网络到cloud-RAN、大规模MIMO的研究,促进5G系统新概念成型。
五、结束语
OAI平台基于SDR技术以一个通用、标准、模块化的硬件平台为依托,利用软件编程的方式实现各种应用,即硬件负责数字模拟与信号间转换、射频与基带信号间变频等功能,软件负责协议栈部分,硬件设备与PC端联合处理分析数据实现完整的通信系统。
目前OAI平台为4G测试及5G研究创造了一个开放、灵活的仿真环境,它提供的开源代码和参考软件实现了3GPP LTE兼容系统和LTE-A的特征子集的实时室内/室外试验与示范。OAI平台也将在其不断发展完善的过程中提供更完善的低成本、高适用、高灵活、易扩展及智能化仿真平台。
摘要:Open Air Interface(OAI)仿真平台是评估LTE和LTE-Advanced系统,测试相关的算法和策略的有效工具。本文首先对比现有仿真技术并分析其局限性,阐述OAI仿真平台的软件框架,分析OAI平台下可实现的LTE协议栈及演进分组核心网的主要功能。最后,本文简要分析OAI仿真平台的应用领域及并对未来做展望。
关键词:OpenAirInterface,仿真平台,LTE软件框架,协议栈,应用分析
参考文献
[1]Open Air Interface[EB/OL],http:/www.openairinterface.org/
[2]Renyuan Wang,Yuexing Peng,et al.Open Air Interface-an effective emulation platform for LTE and LTE-Advanced.In Proceedings of IEEE MSE,2014.
[3]ntonio Virdis,Niccolo Iardella,Giovanni Stea.Performance analysis of Open Air Interface system emulation.Computer Society 2015 IEEE.
软件编程框架 篇8
EJB技术作为J2EE整体框架的核心技术, 使得很多人认为"J2EE=EJB", 然而在使用中人们逐渐地认识到EJB是一种过于复杂的技术, 虽然很好地解决了一些问题, 但传统EJB应用代码依赖容器, 部署复杂, 资源占用高, 在许多情况下也增添了比其商业价值更大的复杂性, 所以实际地使用情况并不理想[1]。目前可以以一种更高效, 简单的轻量级框架来替代EJB进行J2EE项目的开发, 本文通过集成Struts, Hibernate, Spring这3种框架技术, 构建一个在线培训考试系统。
1、系统开发中使用到的框架技术
1.1 Struts框架
在线培训考试系统的Web层中框架技术实现:在三层架构中, Web层是一个位于中间层业务接口之上的独立层。为了保证Web层对修改能做出迅速反应, 就要保证在业务对象的表示与逻辑控制和访问之间有一个明确的分离。MVC体系结构可以实现在表示与逻辑之间的分离, Struts就是一个实现MVC体系结构的框架, 在Struts框架中模型由实现业务逻辑的Java Bean构成, 控制器由Action Servlet和Action来实现, 视图由一组JSP文件构成[2]。
1.1 Hibernate框架
在线培训考试系统中用到了Hibernate框架, 该框架是轻量级的, 数据访问的OR映射工具。可以取代Entity Bean和JDBC。它是JDBC上面的一层, 性能优化相当好, 代码量非常少, 一般应用的代码量均小于标准SQL。可以适用16种不同的数据库实现, 遵循相应的标准, 即可做到不同数据库的无缝切换。避免了Entity Bean的多数据库实例要发布大量的jndi名称的缺点, 利用Hibernate, 开发人员可以方便地按照Java对象的结构进行持久层的开发[3]。
1.2 Spring框架
在线培训考试系统中用到了Spring框架, 该框架是一种简化J2EE开发架构, 开放性很好。开发时, 可以部分使用Spring的类库, 也可以不用。它最精华的地方就是基于Java Bean的Java对象的配置机制, 采用AOP (面向方面编程) 或是Io C (依赖注入) 技术, 可以代理开发实现。比如:DAO接口和实现类, 通过配置文件的配置就可以切换不同的DAO实现。整个软件开发都是可配置的。AOP技术可以横向切入, 日志, 数据库地址变化, 事务控制, 权限控制, 都是可以配置的。另外, 使用Spring还可以带来以下好处:
1.面向接口编程, 代码可扩展, 易维护;
2. 基于Java Bean的配置机制, 写代码基本都是Java Bean的set, get机制, 非常简单。
3. 简化开发Hibernate等数据访问层的开发。
4.DAO, 数据源, 事务控制, jndi调用都是可配置, 可替换的。
5.开发的代码易于测试, 基于统一接口。
6.简化J2EE开发, 降低项目风险。
同时, 在Spring框架里依赖注入通常有两种, 一种是基于setter的设值注入, 是在调用无参的构造函数或无参的静态工厂方法实例化bean之后, 通过调用bean上的setter方法实现的, 另一种是基于构造函数的依赖注入, 通过调用带有许多参数的构造方法实现的或带有特定参数的静态工厂方法来构造bean[4]2、培训考试系统开发
2.1培训考试系统的软件架构层次图
图1中培训考试系统的软件架构层次图, 在该图中浏览器展示子层, 界面过程逻辑子层, 业务逻辑子层, 数据访问子层, 数据O-R映射子层, 数据库连接子层:
其中, 1) 业务逻辑子层:业务逻辑子层用于表达业务逻辑, 即根据业务逻辑和外部使用业务信息的需要, 提供各类业务对象的管理服务.业务逻辑子层统一封装为服务管理对象 (BMO) , 用Java类实现, BMO涉及的类分为接口类和实现类, 以便根据业务及环境的需要, 提供不同的实现方式。其运行环境取决于具体要求, 如在本系统内部, 其运行环境为STRUTS;如与外部机构通讯采用Session Bean时, 其运行环境即为EJB环境。业务逻辑子层还使用了Spring做为Io C平台和AOP平台, Io C平台用于发现所需要用的DAO类的接口, 可以实现接口的系统注册和替换;AOP部分用于实现事务控制。2) 数据访问子层:数据访问子层用于封装数据的访问逻辑, 即根据应用的需要, 提供各种数据的访问方法, 包括普通的CRUD操作和较复杂数据抽取操作, 数据访问子层统一封装为数据访问对象 (DAO) , 用Java类实现, DAO涉及的类分为接口类和实现类, , 提供不同的实现方式。另外, 数据访问子层还使用了Spring做为AOP平台, 用于得到数据连接句柄。3) 数据O-R映射子层:数据O-R映射提供数据库到系统的静态信息类模型的映射能力.鉴于Hibernate是目前业界较流行的商业套件, 且可以提供较好的性能, 其功能和性能都可以满足系统需要, 因此数据O-R映射选用Hibernate做为映射工具。4) 数据库连接子层:数据库连接子层提供一个在Java中连接数据库的技术.数据库连接子层采用JDBC, 并使用了Weblogic的数据库连接池技术。应用Spring, 可以方便地将数据库连接池切换到其他厂商的J2EE平台上的连接池。
2.2系统中各层次之间的双向的数据流
在下面的应用结构中, 自上而下的所有层次之间均存在双向的数据流。
图2中产生的数据流说明:1) 界面显示子层-展现逻辑子层, 其数据流向是双向的, 双方通过HTTP进行通讯, 界面显示子层向展现逻辑子层发出请求, 由展现逻辑子层调用业务处理接口产生展现要求的数据, 并将数据返回界面显示子层进行显示。2) 展现逻辑子层―业务逻辑子层:其数据流向是双向的, 展现逻辑子层调用业务逻辑子层的接口, 输入参数, 输出所要求的数据。3) 业务逻辑子层内部, BMO:其数据流向是双向的, 在业务逻辑子层内部, 某些复杂的业务逻辑需要不同BMO协调完成, 在这种情况下, 不同BMO间存在数据流。4) BMO业务逻辑子层-DAO:其数据流向是双向的, BMO向DAO提供参数, DAO向BMO提供业务逻辑所需的数据。
2.3题库管理逻辑结构
下面以考试管理模块中题库管理子模块为例说明SSH架构在系统开发中的应用, 题库管理的逻辑结构如图3所示:
在题库管理的逻辑结构图中, 其各个部分如表1中所述:
2.4培训考试系统开发工具
在本系统的开发中采用了以下的开发工具:
1) Java IDE工具:可以选择JBuilder X (2005也可) 或Eclipse3.01。对IDE选择没有硬性规定, 可以选择最适合自己的IDE。
2) 数据模型设计工具:采用Power Designer9.5作为数据模型设计工具;
3) 版本管理工具:采用VSS6.0作为开发的版本管理工具;
4) 辅助文档工具:采用WORD 2003、VISIO2003做为辅助文档工具。
其他工具:采用ANT进行集成, 采用JUnit作为单元测试工具。
3、结束语
本文应用框架SSH来构建数字图书馆考试系统。在软件的开发中, 尽量做到软件模块与模块之间, 各种框架与框架间不直接打交道, 它们之间的联系尽量通过配置文件来实现。这样做可以尽量降低模块之间, 模块与框架之间的耦合度, 高度抽象出一些公共模块, 为后期复用做准备, 而这些正是SSH框架所体现出的开发优势所在。
参考文献
[1]Rod Johnson.J2EE设计开发编程指南[M].电子工业出版社2003, 10
[2]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].电子工业出版社2004, 13
[3]陈天河.Hibernate项目开发宝典[M].电子工业出版社2006, 7
软件编程框架 篇9
由于J2EE只是一个构架的规范, 也可以说只是有了设计, 但并没有具体的实现, 因此有许多大公司按照这种规范实现了不同层次的功能组件, 行业统称这些组件为中间件, J2EE整个体系结构的由以下几个组成。
1.1 Struts2
Struts2是以Web Work的设计思想为核心, 继承了Struts1的一些优点, 建立的一个兼容Web Work和Struts1的Web框架, 在稳定性、性能等各方面都有很好的保证, 是一个可长远发展的框架, 该框架对页面处理的流程如下:客户端向服务器发送一个请求;对请求进行过滤处理;核心控制器根据客户端发送来的请求去调用某个Action做处理;根据配置加载该Action相关的所有拦截器进行处理;根据配置文件将处理结果返回给客户端。
1.2 Spring
Spring是为了解决企业应用开发的复杂性而创建一个开源框架。它是一种多层的Java EE应用程序框架, 为Java EE应用的各层提供解决方案。可以说Spring是Web应用开发的首选择, 它贯穿了表现层、业务层及持久层, 可与各层之间进行无缝整合。以下是Spring的主要特性:
(1) 轻量。Spring所需的处理开销很小, 就总体的资源消耗而言, Spring解决方法和其它同类框架如EJB3.0比较可以说是轻量的。
(2) 控制反转。又称依赖注入, 是Spring的一个核心设计概念, 具体是指对象和服务之间的连接并不由代码直接给出, 而是哪一个组件需要哪一项服务在配置文件中进行描述, 容器负责将它们联系在一起。
(3) 面向方面。其为面向对象编程的延续。它主要是将基本业务逻辑从实际工程的代码中划分出来, 将其独立到非业务逻辑的方法中, 比如日志记录、性能统计、安全控制、事务处理、异常处理等, 通过预编译的方式和动态加载, 实现源代码不做修改的情况下给程序动态调整一些基本功能。
(4) 容器。其为Spring的中枢, 它负责管理应用对象的创建及其生命周期。
1.3 Hibernate
Hibernate是一个对象关系映射的持久化框架, 提供了一种对象/关系映射 (Object-Relational, OR) 解决方案, 使得数据库可以用对象编程思维来操作, 而不必考虑如何从数据库中进行存取。Hibernate使用的是HQL (Hibernate query language) 语言, 它操作的是持久化对象, 底层持久化对象会将数据更新到数据库, 并且操作的数据是可持久的, 即持久化对象的数据与数据库中的数据保持一致性。
在应用系统开发过程中, 可通过Hibernate配置文件指定JDBC连接数据库的驱动信息。当应用程序访问数据库时, 首先会读取Hibernate配置文件, 再通过配置文件找到持久化类的XML映射文件, 根据该映射文件创建相应的持久化对象, 从而可以这些对象进行操作, 通过持久化对象可完成对数据库表中数据的增加、修改、查询和删除等操作。
2 框架软件辅助平台的需求分析与设计
主要通过三个方面解决:
(1) 通用功能代码的抽象和泛化, 如数据的添加、删除、修改, 读取 (CRUD) 功能实现;
(2) 通过组件功能的实现, 如菜单, 查询, 页面组件 (widget) ;
(3) 通用功能模块的实现, 如权限、报表、任务等。
S S H框架软件辅助管理平台具有A p plic a tio n、Lightweight、Quick、Console这些特征, 因此又简称为ALQC管理平台。它的功能需求正是从以上这三方面的目的考虑而抽取出来的, 平台为了提高SSH框架程序的复用性, 将这些功能需求按照SSH框架设计成独立的应用管理程序, 与实际业务程序分离, 实际应用程序的开发可直接在平台的引擎上进行二次开发。
整个系统平台由Struts2、Spring、Hibernate、Spring security、Jasper report组成, 分别负责显示、业务逻辑、安全、报表引擎。所有的组成部分按照组件化、层次化的架构进行设计和实现, 便于系统的变更和功能扩展。该平台的目标是服务于整个SSH框架的一个基础性平台, 所以在设计上尽量做到让平台具有足够的灵活性, 以满足各种软件的需要。系统平台除了采用最基本MVC模式的三层架构将视图、业务和数据模型分开以外, 对于功能采用了插件的形式加以封装和运用。
3 框架软件辅助平台的应用
结合SSH框架设计的特点, 本着以提高程序可读性、维护性的宗旨, 平台功能基本按照统一的层次规范约束来实现的, 图1展示了平台功能实现的层次结构。
目前, SSH框架软件辅助管理平台按照上述的层次约束实现了菜单、权限、查询、报表、定时器模块的管理和使用引擎。本文以菜单功能实现为例, 通过它解析不同层次上具体实现的功能代码。
(1) 显示层。主要负责数据的界面显示、输入、校验等, 不涉及业务操作, 开发任务主要包括页面和Action类, Action类一般通过Delegate代理或Facade门面与底层业务进行通信交互。
(2) 业务层。主要负责实现系统中的业务流程, 开发任务主要包括Facade门面业务封装和Service业务实现。
(3) 数据层。主要负责数据资源的访问, 它的开发任务主要包括DAO和数据库表映射的Entity类。
4 结语
本文在对相关技术和Web应用软件基本特性研究的基础上, 结合SSH框架设计特性实现了SSH框架软件辅助管理平台。考虑到该系统是一个基础性辅助开发平台, 平台设计开发时着重考虑了其扩展性、稳定性、适应性及重构性, 因此可以很方便扩展基于该框架下的软件基本功能, 从而在实际的软件开发中可以复用这个平台现有的设计和功能。
摘要:SSH是实现Java Web应用系统时常采用的一种框架结构。本文在对Struts2、Spring、Hibernate开源框架技术理论和SSH框架结构系统特性研究的基础上, 设计和实现了基于这一框架下的软件辅助开发平台, 为以后这类框架系统提供高效、便捷、稳定的开发基础。
关键词:Struts2,SSH,J2EE
参考文献
[1]李宁.Java Web开发速学宝典[M].北京:中国铁道出版社, 2009.
软件编程框架 篇10
测试框架是一组测试的规范、测试脚本的基础代码, 以及测试思想、惯例的集合。可用于提高测试效率, 降低测试工作量, 改善测试工作的重用性和可维护性。
测试框架的好处在于:提高开发速度, 提升测试的执行效率;在提高软件代码质量的同时引入测试重用的概念, 可明显减少测试工作量;作为回归测试的一种实现方法支持修改后“再测试”, 确保代码的正确性。
测试框架出现的最终目的是花少量的资源来完成尽可能多的测试任务, 所以测试框架的建立以及框架的重用性方面是最值得深入研究的。
2 嵌入式软件的测试方法
由于嵌入式系统的自身特点, 如实时性、内存不丰富、CPU运算速度不充裕、I/O通道少、开发工具昂贵、并且与硬件紧密相关等, 导致嵌入式软件的开发和测试与一般商用软件的开发和测试有很大的不同。嵌入式软件是最难测试的一类软件。为了确保软件质量, 嵌入式软件应该加强单元测试、功能测试与系统测试等的测试力度。
2.1 单元测试
从广义上看, 单元测试包括静态测试与动态测试。静态测试包括对代码进行静态分析、代码审查的活动。而动态测试就是通过单元测试用例、测试工具来实现对程序单元的有效测试。对于嵌入式软件的单元测试, 可完全在开发主机上执行。
静态测试的目标不是证明程序完全正确, 而是作为动态测试的补充, 在程序运行前尽可能多地发现其中隐含的错误, 提高程序的可靠性和健壮性, 改善代码质量。
执行有效的动态测试, 可帮助更准确更全面地找到错误, 显著提高软件质量。在单元测试的后续测试中为了发现错误, 通过不断修改输入, 希望引发软件内部的潜在错误, 但这无疑是有难度的。测试人员只能依赖于软件的运行失败来发现错误, 这样不仅很难找到错误发生的准确位置, 而且实际上还有大量的错误没有得以发现。
单元测试提供了一种更有效的发现错误的方法, 它将应用程序中的最小单元分离开来, 使得测试更接近错误, 只需要简单地对每个最小单元进行独立测试, 就很容易地使得全面准确地找到所有程序错误成为可能。
2.2 运行时分析测试
开发或测试过程中, 需要对软件的运行性能、内存问题、代码覆盖率等问题进行有效的运行时分析。对嵌入式软件而言运行时分析是一个难点。
嵌入式系统由于本身资源受限, 不能采用通用商业软件的运行时分析方法, 也就是不能把分析软件放置在目标机上运行。嵌入式系统的资源通常不能满足分析软件的需要, 同时分析软件插入的桩函数对目标系统的运行效率有很大的影响 (超过50%) 。分析软件运行在目标系统上, 导致待测软件是在一种不真实的环境下运行, 所获得的数据并不是准确的。
目前常用的方法是结合对待测软件进打点技术和从总线捕获数据进行分析, 可有效地避免各种弊端。
2.3 功能测试
为了验证软件是否满足了功能特性的需求, 必须对软件进行功能测试。功能测试就是对软件的各项功能进行验证,
软件的功能测试主要针对每种功能设计若干典型测试用例, 在测试过程中运行测试用例, 然后将得到的结果与所期望的结果进行比较, 以确定软件是否符合用户的功能需求。
嵌入式软件的功能测试, 可以在主机环境下开展, 不过推荐脱离主机环境开展功能测试, 测试效果会更好, 测试管理更容易。
2.4 系统测试
如果软件只是满足了功能要求, 没有满足一些非功能的特性要求, 软件还是无法满足用户的需求, 无法获得用户的信任。为了验证系统是否符合非功能特性的质量需求, 必须对软件执行系统测试。系统测试主要关注系统的负载测试、性能测试、容量测试、安全性测试、兼容性测试、可靠性测试等。
同时只有在软件的功能趋于稳定后, 才适合开展系统测试工作。在进行系统测试时, 还要强调测试环境的真实性。如果测试环境不能等价于系统的实际运行环境, 系统测试的结果就值得怀疑。所以嵌入式软件的系统测试必须在目标环境下进行。
3 嵌入式Linux软件的测试工具
目前嵌入式Linux下常用的开发语言为C或C++语言。针对嵌入式Linux下采用C和C++语言编制的软件, 分别使用易用的自动测试工具, 以提高测试的效率, 降低测试工作量。
在单元测试的静态测试时可使用Flexelint工具软件或C++test工具软件的编码规范检查功能, 可有效地规范代码风格、防止常见编码错误。这些工具软件可识别并报告C和C++语言中的编程陷阱和格式缺陷, 进行程序的全局分析, 能识别没有被适当检验的数组下标, 报告未被初始化的变量, 警告使用空指针, 冗余的代码, 简单的内存错误等问题。
同时在开发阶段或测试过程中, 开发人员或测试人员还需要采用一定的工具来分析一些深层的代码隐患, 如死锁、文件资源泄露等严重的、难以检测的问题。可使用Coverity Preven SQS工具软件来协助检测。Linux内核、My SQL、Mozilla很多开源软件都使用该工具执行深层次的缺陷检测, 该工具软件对Linux下的应用软件的代码缺陷分析具有独特的优势。
单元测试的动态测试可采用Parasoft公司的C++test工具软件。该软件工具有效地解决了单元测试的难点, 把开发人员从编写测试驱动程序、桩和测试用例的繁重工作中解放出来。其提供有效的自动化单元测试, 能够实现和执行100%的代码覆盖。可自动建立测试驱动程序与任何所需的桩函数, 然后自动执行单元测试的所有步骤, 可以自动执行回归测试。同时对嵌入式系统提供完善的单元测试支持。
在运行时分析测试时, 可使用Cuttle ITE测试工具或CodeTEST测试工具。这些工具提供强大的性能分析、覆盖率分析、内存分析、代码跟踪分析等功能。作为运行时测试工具, 其宗旨是不影响系统的运行并准确测量记录软件运行的各项技术指标。这两款工具采用总线数据捕获技术, 对目标系统的影响非常小, 可以做到精确的数据观察, 在准确性和实时性方面具有很大的优势。
4 测试过程的管理工具
嵌入式软件与硬件结合非常紧密, 对硬件环境的依赖更为严格。在测试过程中必须对组成硬件环境的各种硬件板卡进行有效的配置管理, 才能易于问题复现与定位。
同时嵌入式软件对各种系统的软件环境也有独特的要求。在测试过程中除了对待测软件的源代码进行有效的版本管理外, 还必须加强对系统引导程序的文件、操作系统内核的镜像、各驱动程序的文件、文件系统的配置都得进行有效的配置管理。
在开发与测试过程中可采用开源软件SVN (Subversion) 之类自动化版本控制工具软件进行有效的软件版本管理。
传统的软件缺陷管理没有统一的规范。开发人员、测试人员或用户将发现的软件缺陷以电话、口头、Email等不规范的方式直接报告给软件开发人员。测试人员报告的缺陷容易被遗忘掉, 而且对该缺陷处理情况的跟踪也没有控制, 缺陷是否汇报给了应该对此错误负责的人员, 缺陷最终是否得到了有效的解决等情况都不得而知。项目经理和SQA人员难以及时从缺陷列表中找出规律, 测试的效率比较低。
为了解决这些问题, 需要对缺陷进行有效的管理。需要把缺陷管理的范围扩大到软件整个生命周期, 并使各阶段产生的缺陷都可以得到跟踪控制, 从而可以使软件开发过程中各阶段的缺陷都有人负责并得到有效的处理, 并和整个项目管理结合在一起, 加强开发人员与测试人员之间的沟通, 使之更好地协同工作, 从而缩短整个项目的开发周期。
在开发与测试过程中, 对所发现的各种缺陷必须进行有效的管理。这有利于缺陷的人员分派、归零管理、问题复现等管理。可采用开源软件Bugfree之类的缺陷管理工具软件执行有效的缺陷管理。
摘要:嵌入式Linux软件是最难测试的一类软件。在测试过程中通过使用有效的测试框架, 可以显著提高测试效率, 最终确保软件质量。通过对嵌入式软件测试方法、测试工具与测试流程的深入研究, 一种通用的嵌入式Linux软件的测试框架被提出, 利用该框架可有效改善软件质量。
关键词:嵌入式Linux软件,测试框架,软件测试
参考文献
[1]朱少民.全程软件测试[M].北京:电子工业出版社, 2007.
[2]郭群.嵌入式软件测试设计技术[J].微处理机, 2008 (8) .
[3]Flexelint产品使用手册.http://www.gimpel.com/.
[4]C++test产品使用手册.http://www.parasoft.com.
[5]Coverity Prevent SQS产品使用手册.http://www.coverity.com.
[6]Cuttle ITE产品使用手册.http://www.keyware.com.
软件编程框架 篇11
1963年加拿大测量学家Roger.Tomlinson首次提出了“地理信息系统(Geographical Information System,GIS)”这一术语,并建立了世界第一个地理信息系统——加拿大地理信息系统(CGIS)。经过40多年的发展,其功能、内涵和应用领域不断发展和扩充。现已广泛应用于资源管理、自动制图、设施管理、城市和区域规划、人口和商业管理、交通管理、石油和天然气、教育、军事等多个领域,产生了巨大的经济和社会效益。传统的GIS研究范畴一般指传统地理学所设及的范畴,主要在研究岩石圈和大气之间,即地球的表面,其构模多基于二维空间框架。随着计算机科学技术的飞速发展和地理信息系统应用不断深入,传统的二维系统已不能满足实际的需求,因此发展三维GIS是必然的趋势,同时三维场景又具有以下优点:①对复杂地形对象的处理和管理;②能够对由各种空间对象表进行有效的空间存取;③能对各种空间对象进行有效的空间操作;④在三维中能同时包含一维和二维的对象;⑤可视化三维对象;⑥三维空间DBMS的管理。
在另一方面,纯三维虚拟场景又具有一定的缺陷容易方向迷失感,因此可结合二维地图来进行导航。“数字益阳”是一项庞大的工作,需要多种专业的技术人员支持。二三维GIS系统即可对传统二维GIS系统空间数据的管理也可以对三维GIS空间数据的展示,可以提供一个有效的空间数据库的展示与管理的平台,为数字益阳提供服务平台。二维与三维系统的联动,可以利用三维GIS系统具有连续的数据结构和与之相应的分析功能和真实世界再现的优点,同时可以实现空间数据的共享,三维空间数据共享不论从研究角度还是应用方面都具有非常重要的意义。最直接的一个原因就是:我们只有一个地球,有助于有关部门充分利用已有的空间资源,同时也帮助人们更加准确真实地认识客观世界,服务群众。
1二三维联动的实现方法
二三维联动的基本思路是,就是要实现二维地图与三维虚拟场景之间的一一映射,需要解决二者之间的坐标系的唯一对应及对象的对应。在SuperMap object .net中创建数据的时会对每一个对象都自动生成一个SMID号,这是该对象在该数据集中的唯一编码,当添加到地图上可根据图层名的不同来对每一个数据集的区分,同样在当矢量数据添加到三维场景中也是如此。所以当二维地图与三维场景中数据相同时,可以通过获取其第一个图层中当前视图的SMID号来进行对比,如果相同则什么也不做,如果不同,则获取其SMID号重新设置视图与场景。流程如图1所示。
2系统设计
整个系统采用Visual C#语言在Visual Studio 2005集成环境中开发,系统功能结构图,如图2所示。
总系统既可以实现二维地图的功能又可以实现三维场景,并且二维地图可与三维场景进行互动,实现效果图,如图3所示。
3结束语
数字城市是在数字地球的提出下产生的,其发展离不开数字地球技术的发展、与虚拟技术的发展,数字益阳正是在这样一个大背景下应运而生,同时也得到了政府大力的支持,获得了相当大的成果,二三维联动的数字益阳软件框架的设计可同时实现对益阳空间数据的管理也可对益阳三维数据进行展示,结合GIS的分析功能对空间数据进行查询与修改,经过多次测试,系统有形象直观的可视化界面、动态的交互查询与分析等功能,对今后益阳数字化的发展有着莫大的作用,因时间、精力有限,加上各种条件制约,系统待完善的地方很多,如:如何加快二维矢量数据在三维场景中渲染等等。
参考文献
[1]刘贵明.地理信息系统原理及应用[M].北京:科学出版社,2008.
[2]吴慧欣.三维GIS空间数据模型及可视化技术研究[D].西安:西北工业大学,2007.
[3]DAVIS,T J,C P KELLER.Modelling and Visualizing MultiPleSpatial Uneertainties[J].Computes&Geoseienees,1997(24).
【软件编程框架】推荐阅读:
CAM编程软件07-27
软件编程教学方法06-14
软件编程相关知识介绍08-21
软件编程员岗位职责07-01
JAVA编程语言软件开发06-05
软件安全性保障框架06-26
自动编程06-01
编程游戏06-21
编程控制06-22