软件开发环境_范文大全

软件开发环境

【范文精选】软件开发环境

【范文大全】软件开发环境

【专家解析】软件开发环境

【优秀范文】软件开发环境

范文一:软件开发环境 投稿:邵揶揷

3.2.1基本概念

软件界面也称作UI(User Interface),是人机交互重要部分,也是软件使用的第一印象,是软件设计的重要组成部分。软件界面设计现在越来越被软件设计重视,所谓的用户体验大部分就是指软件界面的设计。

软件界面其中的主要部分即为UI。

UI(User Interface)即用户界面,也称人机接口。是指用户和某些系统进行交互方法的集合,这些系统不单单指电脑程序,还包括某种特定的机器,设备,复杂的工具等。User interface也可以称之为用户接口或人机接口,是系统和用户之间进行交互和信息交换的媒介,实现信息的内部形式与人类可以接受形式之间的转换。它是介于使用者与硬件而设计彼此之间互动沟通相关软件,目的在使得使用者能够方便有效率地去操作硬件以达成双向之互动,完成所希望借助硬件完成之工作。用户接口定义广泛,包含了人机交互与图形使用者接口,凡参与人类与机械的信息交流的领域都存在着用户接口。

软件设计可分为两个部分:编码设计与UI设计。编码设计大家都很熟悉,但是UI设计还是一个很陌生的词,即使一些专门从事网站与多媒体设计的人也不完全理解UI的意思。UI的本意是用户界面,是英文User和 interface的缩写。从字面上看是用户与界面2个组成部分,但实际上还包括用户与界面之间的交互关系。

3.2.2设计关键

在设计的过程中有较多注意的关键问题,以下列出几点:

(1)软件启动封面设计--Splash

应使软件启动封面最终为高清晰度的图像,如软件启动封面需在不同的平台、操作系统上使用将考虑转换不同的格式,并且对选用的色彩不宜超过256色,最好为216色安全色。软件启动封面大小多为主流显示器分辨率的1/6大。如果是系列软件将考虑整体设计的统一和延续性。在上面应该醒目的标注制作或支持的公司标志、产品商标,软件名称,版本号,网址,版权声明,序列号等信息,以树立软件形象,方便使用者或购买者在软件启动的时候得到提示。插图宜使用具有独立版权的,象征性强的,识别性高的,视觉传达效果好的图形,若使用摄影也应该进行数位处理,以形成该软件的个性化特征

(2)软件框架设计

软件的框架设计就复杂得多,因为涉及软件的使用功能,应该对该软件产品的程序和使用比较了解,这就需要设计师有一定的软件跟进经验,能够快速的学习软件产品,并且在和软件产品的程序开发员及程序使用对象进行共同沟通,以设计出友好的,独特的,符合程序开发原则的软件框架。软件框架设计应该简洁明快,尽量少用无谓的装饰,应该考虑节省屏幕空间,各种分辨率的大小,

缩放时的状态和原则,并且为将来设计的按钮,菜单,标签,滚动条及状态栏预留位置。设计中将整体色彩组合进行合理搭配,将软件商标放在显著位置,主菜单应放在左边或上边,滚动条放在右边,状态栏放在下边,以符合视觉流程和用户使用心理

(3)软件按钮设计

软件按钮设计应该具有交互性,即应该有3到6种状态效果:点击时状态;鼠标放在上面但未点击的状态;点击前鼠标未放在上面时的状态;点击后鼠标未放在上面时的状态;不能点击时状态;独立自动变化的状态。按钮应具备简洁的图示效果,应能够让使用者产生功能关联反应,群组内按钮应该风格统一,功能差异大的按钮应该有所区别

(4)软件面板设计

软件面板设计应该具有缩放功能,面板应该对功能区间划分清晰,应该和对话框,弹出框等风格匹配,尽量节省空间,切换方便。

(5)菜单设计

菜单设计一般有选中状态和未选中状态,左边应为名称,右边应为快捷键,如果有下级菜单应该有下级箭头符号,不同功能区间应该用线条分割。

(6)标签设计

标签设计应该注意转角部分的变化,状态可参考按钮。

(7)图标设计

图标设计色彩不宜超过64色,大小为16x16、32x32两种,图标设计是方寸艺术,应该加以着重考虑视觉冲击力,它需要在很小的范围表现出软件的内涵,所以很多图标设计师在设计图标时使用简单的颜色,利用眼睛对色彩和网点的空间混合效果,做出了许多精彩图标。

(8)滚动条及状态栏设计

滚动条主要是为了对区域性空间的固定大小中内容量的变换进行设计,应该有上下箭头,滚动标等,有些还有翻页标。状态栏是为了对软件当前状态的显示和提示。

(9)安装过程设计

安装过程设计主要是将软件安装的过程进行美化,包括对软件功能进行图示化。

(10)包装及商品化

最后软件产品的包装应该考虑保护好软件产品,功能的宣传融合于美观中,可以印刷部分产品介绍,产品界面设计。

3.2.3设计规范

一致性

   坚持以用户体验为中心设计原则,界面直观、简洁,操作方便快捷,用户接触软件后对界面上对应的功能一目了然、不需要太多培训就可以方便使用本应用系统。

布局

   在进行UI设计时需要充分考虑布局的合理化问题,遵循用户从上而下,自左向右浏览、操作习惯,避免常用业务功能按键排列过于分散,以造成用户鼠标移动距离过长的弊端。多做“减法”运算,将不常用的功能区块隐藏,以保持界面的简洁,使用户专注于主要业务操作流程,有利于提高软件的易用性及可用性。

系统响应

系统响应时间应该适中,响应时间过长,用户就会感到不

安和沮丧,而响应时间过快也会影响到用户的操作节奏,并可能导致错误。因此在系统响应时间上坚持如下原则:

2-5秒窗口显示处理信息提示,避免用户误认为没响应而重复操作;

5秒以上显示处理窗口,或显示进度条;

一个长时间的处理完成时应给予完成警告信息。[[11] 杨南.软件用户界面设计[EB].百度文库][10

范文二:1开发环境与软件 投稿:蒋衽衾

1 开发环境与软件

1.1 Microsoft Visual C++ 6.0

Microsoft Visual C++6.0(以下简称为 vC++6.0)是由微软公司出品的功能强大的可视化开发平台之一,我们可以利用它在 Windows 操作系统上完成应用程序的创建、编码、测试、完善等各个阶段的工作。

I.2 OpenGL

OpenGL(开放性图形库 Open Graphics Library)是一个3DAPI,它独立于硬件系统和操作系统,是跨平台的“图形硬件的软件接口”,具有高度的可移植性。它包括了大量的绘图和显示函数,用于快速创建实时 3D图形,主要用于图形专业 领域 ,已经 成 为工 业 标准,目前的最新版本是OpenGL2.0。

1.3 3dsmax 7

3ds max 7是由Autcdesk公司出品的用于制作3D模型和动画的软件,使用它可以制作出栩栩如生的人物、动物、植物和建筑物等各种 3D模型和动画。我们使用 3ds max 7来制作一些动植物、建筑物的 3D模型,并将其导出为 3ds文件,然后在虚拟三维环境中调用。

1.4 Vue 5 Infinite

Vue5 Infinite(以下简称为 vue5)由e-on软件公司出品,它也可以用来制作 3D模型和动画,其特长在于对 3D 自然环境的模拟。在虚拟三维环境中,天空的真实感是影响视觉效果的重要因素之一,我们使用 Vue5的环境模拟功能制作出在各种大气条件下的天空的图片,然后把这些图片作为虚拟三维环境中的“天空盒”的材质贴图,展现出逼真的大气环境效果。另外,我们还可以使用 Vue5强大的地形编辑功能制作出一些不同特征的地形模型来充实虚拟三维场景。

2 虚拟场景中的三维模型的制作

2.1 天空盒模型

我们使用3ds max 7等工具软件来制作虚拟三维场景中的3D模型等元素。首先从天空开始,打开 3ds max 7,创建一个立方体 ,调整其边长到一个比较大的值(比如 2000米)我们把这个立方体称为天空盒。接着制作天空盒的材质贴图,也就是大气环境的图片。打开 Vue5,选择“载人大气”选项 ,然后从弹出的对话框中选择一种你需要的大气环境(当然你也可以使用其编辑功能创建自己想要的大气效果),然后点击文件菜单下的“导出天空”选项,将大气环境作为位图导出,再使用图片处理工具把整幅位图分解为与立方体六个面相对应的六幅位图;再次进入 3ds max 7,选中刚才的立方体,使用材质编辑器把刚才导出的

天空图片赋予立方体,进行一些调整,天空盒的模型就完成了。最后一步就是把天空盒的模型导出为“3dS’’类型的文件,以便在程序中调用。

2.2 建筑物等各种实体的模型

根据需要,还应在场景中添加一些建筑物之类的三维模型,当然了,这些模型也是我们使用 3ds max 7制作的,具体的制作方法这里不再赘述。但是要注意,制作的 3D模型要在程序中实时绘制,因此,在制作模型时,不能一味追求精细,应该有意识地控制多边形的数量,以提高程序运行时的渲染速度。同样,把制作好的模型保存为“3ds”类型的文件。

2.3 树木等植物

一般采用 2D图片的方法来显示植物,这样 ,即使场景中有一大片树林,也不会影响渲染的速度。制作植物图片时 ,首先应选择合适 的植物图片(最好是正面平视的照片)对图片做一些简单的处理 ,使其满足以下几个要求:1)图片尺寸为 2的 N次方(32、64„);2)图片的底色以及不需要显示的地方为纯黑色。以便在程序中将这些地方处理成透明状态。最后,将图片保存为“bmp”格式,虚拟三维场景 中的植物就做好了。

2.4 生成地形数据

地形的创建不再采用预先建模的方式,而采用在程序中实时绘制的方法,便于在场景中漫游时检测并计算出所处位置的地面高度。具体步骤如下:首先,建立一个三维浮点型数组来保存地形的顶点坐标值,三个分量分别为地形顶点的x、Y、z坐标;然后,我们再建两个数组,分别用来保存顶点的索引值(整型)和曲面贴图的平面坐标(浮点型);接着 ,使用一段循环代码来随机生成地面的高度值,同时给三个数组赋值 ;最后,调用 OpenGL中的函数

glEnableClientState()和glVertexPointev()来载入地形顶点坐标数组,凋用 glEnableClientState()和glTexCoordPointer()函数来载人顶点索引数组。这样,地形的初始化工作就完成了,可以把这个过程写成一个函数,名字叫做 lniin(),便于在程序中调用。

3 创建基于 OpenGL的应用程序框架

OpenGL中所有的绘图函数都必须在 OpenGL的环境中运行,这个环境称为 OpenGL框架。OpenGL框架还必须运行在 Windows应用程序框架 中。也就是说,首先要建立Windows应用程序框架,用它响应和处理各种消息和命令,然后再 建立 OpenGI 运行环境 框架,并 在其中调用各种OpenOL绘 图函数 。

3.1 创建 Windows应用程序框架

首先,在 VC十 +6.0中新建 一个 Win32应用 程序(Win32 Application);然后,添加四个全局变量 htX2、hRC、hWnd和 hlnstance,分别用来保存设备描述表、着色描述表、窗口句柄和程序的实例句柄;接下来在应用程序中包含

g1.h,glu.h、glaux.h三个头文件以及 opengl32.1ib、glu32.1ib、glaux.1ib三个静态链接库文件;最后,在程序中加入 winMain()函数和 WndProc()函数(具体方法请参考 MSDN)。其中,WinMain()函数是主程序的入口,我们在其中添加一些代码创建 Windows窗口,并在 WinMain()函数 中使用PeekMessage()函数完成消息循环(即程序的主循环,被程序反复执行),它用来监听并向 WndProc()函数传递 肖息。WndProc()是一个窗口回调函数,用来处理各种窗口消息并响应外部事件。这样,一个基本的 Windows框架就建成了。

3.2 创建 OpenGL运行环境框架

步骤如下:1)对 OpenGL运行环境进行初始化设置;2)调用 OpenGL函数库中的函数完成绘图和显示工作并刷新屏幕,可以把完成这些工作的代码编写成一个函数,命名为DrawScene(),以便在程序中调用;3)在程序退出之前释放各种资源,断开 OpenGL与Windows窗121的连接。

3.3 框架程序间的关系

winMain()函数是程序的入口,我们用它创建一个窗口并设置其大小和样式。WndProc()回调函数会对“创建窗口”这个消息作出响应 ,马上调用 OpenGL框架中的 SetPixelFomat()函数检测机器对 OpenGL的支持情况,并安装OpenGL显示接口。当窗 口创建成功后,WndProc()函数对窗口尺寸变化消息作出响应,调用 OpenGL框架中的 gluPerspective()等函数对 OpenGL视 12I进行变换调整。Windows窗口生成后,就进入程序的主循环,在其中调用 DrawScene()函数绘制场景,同时监听和分配各种消息。程序退出时,调用 OpenGL中的 wglDeleteContext()函数来切断 OpenGL与 Windows窗口的连接。

4 虚拟三维场景的显示和人机交互

在搭建好了应用程序框架之后,我们就可以在其中加入绘制场景的代码了。我们要在场景中绘制出天空、地面、植物和建筑物,从而逐步创造一个虚拟的三维环境,然后增加在其中漫游的功能,实现简单的交互。

4.1 绘制并显示地形

在 OpenOL框架初始化之后需要调用 InitTerrain()函数来生成地形数据数组,进行地形的初始化。编写一个函数来绘制地形,命名为 DrawTerrain(),在其中调用 glDrawgle.ments()函数,通过绘制三角形带的方式来绘制地形。如果地形有纹理,可以调用glBindTexture()函数给地面贴图。把DrawTerrain()增加到 DrawScene()函数中,这样在每次屏幕刷新时就能自动重新绘制地形了。

4.2 载入并显示 3ds格式的模型文件

天空、建筑物等虚拟对象都是采用预先建模的方式创建的,我们已经将其统一保存为“3ds”格式的文件。我们还需要在程序中包含一个名字为“3ds.h”的头文件,其对应的源文件叫做“3ds.cpp”,二者均可互联网上找到。对每一

个3ds文件,可以先用 3ds.h文件中的载入函数将其调入程序,并为其分配各 自的编号,再调用显示模型函数在 OpenGL环境中显示相应的 3D模型。显示模型函数的参数同时定义了模型显示的位置、方向和比例。载入模型的工作可以在程序初始化时完成,而显示模型的函数应添加到 DrawScene()函数中。

4.3 载入并显示植物

按照前面提到的方法,在虚拟三维场景中显示一株植物实际上是显示一幅植物的图片(而不是 3D模型)。我们先在程序中载入图片,然后在屏幕上绘制四边形,把植物的图片作为贴图显示出来。在虚拟三维场景中漫游时,我们知道自己的视线方向,也可以计算出自己所处的位置坐标,那么,就可以编写一段代码,让具有植物纹理的四边形每次重绘时都始终与我们的视线方向垂直,从而形成一种三维模型的效果。

4.4 添加漫游功能

完成了虚拟三维场景的创建和绘制以后,还需要给程序添加漫游功能。有了漫游功能,我们不但能够看到虚拟三维场景,更能以第一人称参与其中,更加“真实”地体验这个虚拟世界。

在现实中人们看到的画面效果,主要取决于两个方面:观察点的位置和视线的方向。在 OpenGL中,也有类似于我们眼睛的东西,我们可以使用 函数 gluLookAt()来改变在OpenGL场景中的观察点的位置和视线方向,我们把这个函数添加到 DrawScene()函数中。在程序运行期间,通过使用键盘和鼠标等来改变观察点坐标和视线方向。屏幕每次刷新时,改变函数 gluLookAt()中的参数值 ,OpenGL就会用新的视角重新绘制屏幕上的画面,从而产生在场景中漫游的效果。 到目前为止,一个简单的交互式虚拟三维环境就建成了,它可以作为任何一个实用的虚拟三维环境的基础模块,我们可以在这个基础上继续丰富场景内容,添加其它功能,逐步完善程序。

5 程序的优化和其它功能的介绍

在虚拟三维环境的设计中,还有很多值得借鉴的方法。比如,用地形灰度图来生成高度数据,使用区域分块显示技术来提高渲染速度,采用 M0D(分级显示)技术加快贴图显示速度并产生较好的效果,用位图字体、轮廓字体等显示汉字,使用显示列表显示多个重复模型从而提高效率,使用粒子动画来模拟爆炸、烟雾等场面,在程序中添加碰撞检测的功能以符合物理原理,等等。

6 小结

计算机技术发展到今天,再也不能忽视虚拟世界与现实世界之间的密切联系,虚拟世界正在越来越真实地再现着现实世界中的一草一木。虚拟三维环境作为虚拟世界的主体,直接决定着虚拟世界的真实感。OpenGL等技术的应用使得三维图形技术在虚拟现实、三维仿真、模拟训练、电子娱乐等领域得到了越来越

广泛的应用,一些平常无法实现或很难实现的自然环境和工作环境的模拟在虚拟世界中成了家常便饭。它在带给体验者更加逼真的感受的同时,也大大降低了各种成本,提高了工作效率,有着广阔的发展空间

范文三:软件的开发和运行的硬件环境 投稿:姚緺緻

开发环境

开发IDE是基于Eclipse定制的移动集成开发环境,专为无Native开发经验的HTML开发人员设计。IDE帮助HTML开发人员在无需任何原生环境辅助下即可完成高体验效果应用的开发、调试、跟踪和模拟,并可借助内嵌的应用打包功能,创建可直接安装到手机的本地应用安装包以便后续测试应用。

跨平台支持

IDE可以用于支持iOS、Android平台手机和平板的高体验Hybrid应用的开发。通过 Hybrid技术,HTML开发人员遵循基于标准CSS技术的 移动开发UI参考框架,即可完成一次开发,多平台适配,在各种分辨率的移动终端上保持相同的体验。 UI框架提供了极高的适配性和自主性,开发人员可以没有束缚地根据需求、UI设计完成应用界面及逻辑的开 发。

HTML5支持

IDE采用国际通用的HTML语言作为跨平台支撑语言,同时借助于 Hybrid技术以终端内嵌浏览器为核心的设计理念,使开发人员可以直接采用HTML5技术完成应用功能的开发。基于业界公认的HTML5的强大能力和广泛的开发用户群体,开发人员不需要重新学习私有标准,即可完成复杂功能的实现。

UI模版支持

IDE内嵌了电商、新闻等多套业界经典应用模板,开发人员可以基于模板快速构建应用框架,同时IDE还内嵌了登录、注册、个人信息、购物车等等超过百款移动经典窗口布局模板,并以界面向导方式交付,有效帮助开发者快速完成应用的界面和功能拼装。

本地打包支持

IDE内嵌开发版应用打包服务,开发人员可以在个人PC机上完成开发版本应用安装包的生成,并可在手机中安装验证应用的实现效果与问题解决情况。开发人员可以在本地配置应用启动界面、图

标,还可以动态选择应用所用的公共插件和自定义插件。打包服务会自动聚合各插件库、引擎和应用HTML代码。通过生成的安装包,可以直接验证插件的功能,便于插件开发人员与HTML开发人员进行联调,同时还可验证应用图标、启动图片等资源的实际展示效果。

本地模拟调试

IDE提供基于Chrome内核的模拟器,可以在PC上完成移动应用的界面模拟、通讯模拟、设备模拟。开发者可以在模拟器中动态跟踪和调试代码,变更显示效果,作断点调试。

真机同步调试

IDE为开发者提供了Android和iOS平台的真机同步调试功能,不仅能快速方便检查HTML页面DOM结构、实时同步更新元素CSS样式,还能跟踪分析页面资源加载性能等问题,帮助开发者高效、便捷的调试应用。

开发环境

CPU Intel(R) Core(TM)2 Duo CPU NVIDIA GeForce GT240 / ATI HD4670 (开

显卡

特效)

内存 4GB

硬盘 3.36 GB

系统 WinXP/2003/Vista/7

软件的服务端运行环境

PHP版本要求

 PHP5.3以上版本(注意:PHP5.3dev版本和PHP6均不支持)

支持的服务器和数据库环境

 支持Windows/Unix服务器环境 可运行于包括Apache、IIS和nginx在内的多种WEB服务器和模式 支持Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase、Mongo以及PDO等多

种数据库和连接

软件客户端运行环境

Android 2.3以上

IOS 8

软件的编程语言及版本号,程序量(条数)。

Php 5.3

Android

objective-c

Html5

Javascript

代码行数165240行

技术特点

多窗口机制

常见应用只支持单一窗口。

原生UI与交互支持

大量原生UI与交互支持(如Action Sheet等),汽车引擎有混合动力,我们的技术同样Hybrid!

第三方开放平台支持

相比国外中间件更具本土优势, 微信、QQ、新浪微博、支付宝等。 HTML5+CSS3支持

完全兼容HTML5,丰富支持CSS3。

终端设备调用API

提供大量设备调用API,如各种传感器、摄像头等。

在线编译发布

无需本地开发环境,通过在线设置图标和启动图片、证书、发布渠道,一键编译发布应用。

多平台支持且体验一致

完美支持Android、iOS。

人性化的集成开发环境

模拟。

提供应用向导和界面向导,预置数百种界面模板和多套应用模板,支持应用本地调试和 支持全包/部分文件加密

全新升级的强劲加密方式,支持全包加密及指定文件加密,全方位保障代码安全。 丰富插件支持

开放插件接口,支持第三方插件,预置数十种应用插件。 快速准确的消息推送

提供面向指定用户或群组的即时消息推送服务。 应用门户

自有应用集中展示,便于下载与推广。 丰富的统计分析

丰富强大的统计分析手段,为应用运营提供数据支撑。

范文四:软件开发方法与环境 投稿:谭訜訝

1.The Sieve of Primes(筛选质数) (1)对于给定的一列数1,2,…,n,构造一个和这列数相对应的一个位向量,记为mark,则:对于单处理机来说,算法如下 ①CurrentPrime=2,Index=22,将该列数的位向量mark的所有元素置为0,即mark[i]=0;

②If Current2>n then 转向④ Else Do mark[Index] =1,Index=Index+CurrentPrime Until Index>n

③找出向量mark中下一个值为零的元素,将其赋给CurrentPrime,转向②执行; ④所有mark值为零的位置所对应的元素即为质数,输出。

(2)对于共享存储器的系统来说,每个空闲的处理机都根据存储器中的CurrentPrime来求自己序列中的质数,同时更改存储器中共享的CurrentPrime的值,从而达到通信的目的,其他同上面的算法。

(3)对于处理机私有存储器的系统来说,P1寻找每一个质数,并且向所有其他处理器广播,然后各个处理机再从它的子列中寻找质数,方法同上。

2.The Sequential(连续的,结果的)algorithm (semigroup(半群), prefix computation, routing, broadcasting, sorting)

(1)

(2)

(3)Packet Routing:一个处理机给另外一个处理机发送数据包;(4)Broadcasting:一个处理机给其他所有处理机发送数据包;(5)Sortin处理机按照指定的顺序对数据进行重新排列。

3.Maximum-finding, Computing prefix sum on linear arrays (在线性组上计算最大值,并行前缀和)

Maximum-finding:每个处理机都有一个初始值,目标是每个处理机都知道最大值是多

少。每个处理机将本身的值都存在own中,

每个处理机都存储一个本地变量max-thus-far,记录迄今为止该处理机上所得到的最大值,其初始值是处理机本身的值。每一步中,每个处理机都向其左右邻居发送其数据,处理机接受到左右邻居的数据后,将其分别存储到left和right中,令max-thus-far=max(left,own,right)。最坏情况下,需要p-1个通讯步和p-1个值比较步即可完成。

Computing prefix sum:

①每个处理机上只有一个值时,初始,只有最左边的处理机是活跃的,将其值向右边的邻居发送,其有邻居接受到数据后变为活跃的,计算两者的和(即为该元素以前的prefix sum)并向其又邻居发送结果、变为不活跃,直至最右边一个处理机计算出最后prefix sum。

②处理机上有多个值时,每个处理机先对自身数据求前缀和,然后再对和求diminished前缀和,最后再将Local prefixes(自身及自身的和)同前面的diminished前缀和求和,即为相应元素的前缀和。

4.Odd-even sort on linear array (27)(在线性数组上的奇偶排序)

当所有的关键值已经存储在各个处理机上,且一个处理机存一个数据时,可用Odd-even Sort。

以升序排列为例,在奇数步骤,标号为奇数的处理器同其右侧的处理器进行比较,如果大于于其右侧处理器的数据,则进行交换,否则不做处理;在偶数步骤,标号为偶数的处理器同其右侧的处理器进行比较,如果大于于其右侧处理器的数据,则进行交换,否则不做处理。这样处理的结果就是将数据按升序排列。

对这种排序,有如下性能度量指标:

speed-up=O(plogp)/p=O(logp), Efficinecy= O(logp)/p, Redundancy= O(p/(logp)), Utilization=1/2

最坏情况下,最大值在P0上,从而一直移动到最右边。

5.Finding the rank of each 1s in a list of 0s and 1s (前缀和的应用)

利用求该序列的parallel prefix computation来实现。

每个1的并行前缀和就是他在该0-1序列中的序号。

6.Packet routing on a tree (30) 依赖于处理机节点的编号模式。以前序遍历为例:按前序遍历的顺序对二叉树的节点进行编号,因此每个节点序号均小于其所有后代节点的序号,即根节点的序号是该子树中序号最小的。假定每个节点知道自己的序号(记为self),其做子树的最大序号为maxl,右子树的最大序号为maxr。则将包(在节点self上)从节点i路由到节点dest的算法为:说明要路由的包的目的节点不在以self为根的子树上,所以应该向上路由,由其父节点来路由它。

7.Find maximum value,computing prefix sum and shearsort on 2d mesh

(1)Find maximum value:首先对每一行求最大值,从而每行都存储了该行的最大值;其次对每一列求最大值,从而每列都存储了该列的最大值。这样,所有的处理机都存储了这些元素的最大值。

(2)computing prefix sum:假定处理机按行主序排列。①在每行中computing prefix sum;②在最右边一列computing diminished prefix sum;③将最右边的结果值在相应行中向左广播,并且与先前求出的该位置处的row prefix sum求和。

(3)shearsort:该算法在r行的2D mesh上需要阶段。除了最后一个阶段的所有阶段,先是所有行都独立地进行蛇形排序,即偶数行从左到右排序,奇数行从右到左排序,然后所有列都分别从上到下排序。最后一个阶段只将每行从左到右排序,或者所有行再进行一次蛇形排序,得到结果即为以行序为主的排序序列。

8.SIMD vs. MIMD Architecture

(1)SIMD:单指令多数据流(Single Instruction Multiple Data)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集以,异步方式,在同一时间内执行同一条指令。 SIMD在性能上的优势:以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。

(2)MIMD:多指令流多数据流(Multiple Instruction Multiple Data),它使用多个控制器来异步地控制多个处理器,从而实现空间上的并行性。传统的顺序执行的计算机在同一时刻只能执行一条指令(即只有一个控制流)、处理一个数据(即只有一个数据流),因此被称为单指令流单数据流计算机。而对于大多数并行计算机而言,多个处理单元都是根据不同的控制流程执行不同的操作,处理不同的数据,因此,它们被称作是多指令流多数据流计算机,即MIMD计算机。 9.PRAM cycle

一个PRAM cycle 包含以下三个阶段:各个处理器访问存储器,通常不同处理器对应存储器的不同地址;各个处理器执行计算步骤;各个处理器将运算结果保存到存储器中。在实际应用中,存储器被分成不同的模块,并且对一个模块的同时访问是不允许的。处理机i在一个cycle内可以完成以下3个工作:①在共享存储器si处取出操作指令;②在本地寄存器中对数据执行计算操作;③将结果存在共享内存的地址di处。 10.PRAM submodel

根据是否允许同时读写一个地址,PRAM模型被定义为四种子模型:①EREW,排他读,排他写;②ERCW,排他读,同时写;③CREW,同时读,排他写;④CRCW,同时读,同时写。其中,EREW是最现实的一种子模型。各个子模型根据其计算能力有如下排序:

EREW

EREW

11.Data broadcasting in EREW PRAM (1)EREW广播的最简单形式是定义一个长度为p(处理机的个数)的广播向量B,然后令每个处理机访问相应的元素B[i]来得到属于它自己的复制值。初始时,处理机i将其值写入B[0],再按下面的算法将其值写入B的所有元素中,最后由各个处理机来读出相应的值即可。

(2)上述算法中有很多无效的数据传输,因此可以改进为如下的one-to-all广播算法,只使有数据的处理机通信,从而减少通信次数。

(3)all-to-all广播:令处理机j将其值写入B[j],从而在一个存储器访问步中,所有要广播的值都写入广播向量B。接着在p-1存储器访问步中每个处理机读入其他p-1个值。为了保证排他读,处理机j从B[j+1]开始读入数据,读到B[p-1]后返回读B[0]。

(4)用all-to-all广播来进行排序的方法:对长度为p(p为处理机的个数)的向量S排序,令处理机j计算数据S[j]的大小序号R[j],然后将S[j]存到S[R[j]]。R[j]定义为比S[j]小的数据元素的个数,它由各个处理机来检查所有其他元素中比S[j]小的元素个数得到。

12.Semigroup computation in CRCW EREW PRAM (66)

EREW PRAM模型上的semigroup计算,除了最后的一步广播外,与所有的其他PRAM模型都是一样的。在该算法中,某一内存地

址处的数u:v表示该地址存储了X[u]到X[v]的所有输入值的半群计算结果。初始时,S[i]存储了输入X[i],记为i:i。第一步,将邻接的元素做semigroup计算,从而除了S[0]以外,其他地址都存储了(i-1):i;第二步,s=2,计算结果进行存储….如此依次进行,最后结果在S[p-1]得到,再广播即可。

13.Parallel Prefix computation (68,69) (1)可以利用EREW PRAM模型上Semigroup方法来进行Parallel Prefix Computation,如下图,所有部分prefix在S的前面各个元素中得到,阴影表示每步中前缀和是成对得到的

(2)利用分治法求前缀和:将问题看做两个子问题,分别计算奇数序号和偶数序号的结果。①先将输入序列中两个连续的元素(x0和x1,x2和x3)求和,得到一个长为原序列一半的序列;②该序列求前缀和得到所有奇数序号的元素的前缀和;③再将每个偶数序号的元素和刚刚得到的它前面的那个奇数序号元素的前缀和求和即得到该偶数序号元素的前缀和。 时间复杂性为:

(3)利用另一种分治法求前缀和:将输入序列看做两个子序列,偶数序号的子列和奇数序号的子列。在两个子列上单独进行前缀和运算,从而得到两部分前缀和。在再将两部分前缀和中相邻的元素求和就得到了该位置元素的前缀和。时间复杂性

14.

Matrix multiplication in PRAM

(1)对有m2个处理机的PRAM模型,每个处理机计算结果矩阵的一个元素,即第(i,j)

个处理机计算C中的第 (i,j)个元素。用m2个处理机的PRAM矩阵乘的算法(在CREW模型上):

(2)对于有m2个处理机的PRAM模型,每个处理机计算结果矩阵的一个行元素,即第i个处理机计算C的第i行,其算法为:

15.Sequential Rank-based selection(77-79) 在n个元素中找第k个大或第k个小的元素。把n个数分为n/q段(q为常量),在每一小段中取其中间数,共有n/q个,再取这n/q个中间数的中间数(记为m),则将原序列分为3段。

16.A parallel select algorithm and a selection-based sorting algorithm Example: S: 6 4 5 6 7 1 5 3 8 2 1 0 3 4 5 6 2 1 7 0 4 5 4 9 5

Threshold values: m0 = –∞

n/k = 25/4 ≈ 6 m1 = PRAMselect(S, 6, 5) = 2

2n/k = 50/4 ≈ 13 m2 = PRAMselect(S, 13, 5) = 4

3n/k = 75/4 ≈ 19 m3 = PRAMselect(S, 19, 5) = 6

m4 = +∞

T: - - - - - 2|- - - - - - 4|- - - - - 6|- - - - - -

T: 0 0 1 1 1 2|2 3 3 4 4 4 4|5 5 5 5 5 6|6 6 7 7 8 9

17.Parallel radix sort (84)(进行基数排序) (1)从LSB开始,轮流检查k位关键字。第i步,检查第i位()。关键字是0的所有记录都移到开头,是1的都移到序列的末尾,而与该位置具有相同值的记录的相对位置保持不变。(2)每个记录的新位置可以由两个前缀和来得到。第0位的反的

diminished prefix sum是第0位是0的记录的位置,而第0位正常的prefix sum 用来计算第0位是1的每个记录相对于所输入的原始序列的最后一条记录的位置。

18.Some low-cast sorting network Sorting network的评价参数:①Cost:设计中用到的2-sorter的总个数;②Delay:关键路径上,从输入到输出所用到的2-sorter的个数。

19.Batcher sorting networks

Batcher sorting networks可以基于(m,m’)merge,用even-odd merge方法得到。①(m,m’)是将两个长度分别为m与m’的已排序的序列合并成一个长为m+m’的排序的序列;②odd-even merge:若m=0或m’=0,不必做任何动作;若m=m’=1,只需比较一次即可完成合并;若m>1,m’>1,分别单独合并偶数序号的子列和奇数序号的子列即可得到。再对w0:v1,w1:v2,…,进行比较并交换即可得到完全排序的结果序列。

20.Searching and Dictionary Operations 用p个处理机的PRAM在n个keys中寻找y。假定输入序列x按升序排序。Key y和位于序列中间或近似中间的Key x[n/2] 比较。若y= x[n/2],则搜索结束;否则,若y x[n/2],在x[n/2]+1到xn-1上搜索。 该算法是优化的,没有另外基于搜索的算法更快。其加速比:Speed-up≈log2(p+1) 21.Mesh-Connected Computer

Mesh结构的连接度是常数4,下图是2D mesh处理机的一些线性排序模式。

22.Shearsort algorithm

(1)假定每个处理机有一个数据项,在行主序排列的2D mesh上的Shearsort 算法:

①将下面的两个操作重复次:蛇形排序各行,然后由上到下排序各列;②根据结果要求,蛇形排序各行或者行主序排序各行。

(2)通过0-1原则证明Shearsort algorithm的正确性:假定进行列排序时,先对列中的元素成对排序,再进行整列的排序,则证明过程如下图:

23.Recursive(递归)Sorting algorithm 算法步骤:①在四个小块上分别进行蛇形排序;②分别按蛇形排序各行(合并一行);③分别从上到下排列每一列;④整体上按蛇形进行奇偶交换排序,用4步。具体的,如下图所示:

24.Routing Operation (1)点对点通信:

(2)聚合通信:

(3)一些特殊的data routing操作:(步骤a)

25.Routing multiple packet on a linear array

每个包包含信息部分和目的地址部分,将其中的目的地址部分转化为一个有符号的偏移量,正号表示向右移动其绝对值个处理

机,负号表示向左移动其绝对值个处理机。当处理机接收到数据包时的处理算法如下: if offset=0

then remove the packet elseif offset>0

then offset:=offset-1 ; send to right neighbor

else offset:=offset+1; send to left neighbor endif endif

在线性数组上路由多个包时,需要根据同时在同一处理机上存在的包数来设置每个处理机的缓冲区的数目。

26.Data routing on a 2-D array

(1)如图所示,2D mesh上数据的路由按如下方式进行:①按照目标列号的顺序以列主序排列各包,„(?);②向右移动包,使得每条记录都在正确的列上,由于每行最多有一条记录向相应的列移动,所以不会有冲突;③在每一列中路由各包。

(2)该算法并非最短路径路由算法。

27.Greedy Routing algorithm

Greedy是指每步中都沿着向目标地址前进了最大距离的方向移动。2D mesh上以行主序的贪婪路由算法: if 包不是在目的列上

then 沿着行向目标列路由该包(处理机有足够的缓冲区容纳输入的信息数据) else 沿着列向目的节点路由该包

(在需要用到向上或向下的连接信息中,路由需要移动最大距离的包优先使用这些连接)endif

时间复杂度:T=2P1/2-2(但是需要最大的缓冲区)

Routing algorithms thus far(迄今为止)

Slow 6p1/2, but with no conflict (no additional buffer)

Fast 2p1/2, but with large node buffers

28.sorting on a 3D mesh, Mesh Netaork, Data routing on a 3D mesh(171-173)

sorting on a 3D mesh: 在m*m*m mesh中,处理机(i,j,k)表示是在第i行,第j列和第k层的处理机,并且先按层(z)排序,同一层再按列(y)为主排序,即按照zyx的顺序排序(最小的m2个元素在Layer 0上,且按列序为主排序,次小的m2个元素在Layer 1上,且按列序为主排序),下面是排序算法:

Phase1.求出各个submeshes的部分结

果,结果存在每个子mesh的左上角的处理机上

Phase2.在一个处理机上用串行算法对部分结果做结合运算,用全局总线传输数据 Phase3.用全局总线广播结果。 30.Embedding an algorithms embedding concept (195):

Fig. 13.2. Embedding a seven-node binary tree into

2D meshes of various sizes.

Mesh Netaork: 网格是利用互联网把地理上广泛分布的各种资源(包括计算资源、存储资源、带宽资源、软件资源、数据资源、信息资源、知识资源等)连成一个逻辑整体,就像一台超级计算机一样,为用户提供一体化信息和应用服务(计算、存储、访问等),虚拟组织最终实现在这个虚拟环境下进行资源共享和协同工作,彻底消除资源“孤岛”,最充分的实现信息共享。

Data routing on a 3D mesh:

Embeding of array and tree(196)

29.semigroup computation on 2D Mesh with a global bus 带有一个全局总线的在

)mesh能

时间内完成semigroup computation,

31.Sorting(208-212)

Bitonic sorting on a hypercube:

Sort lower (xq–1 = 0) and upper (xq–1 = 1) subcubes in opposite directions; yields a bitonic sequence

而不是用O()steps.假定半群操作时可交换的,把共

的mesh分为

的小mesh,

个,一行一列均有

Shifting the halves takes one

compare-exchange step B(q) = B(q –

1) + 1 = q

Bitonic sorting algorithm

T(q) = T(q – 1) + B(q) = T(q – 1) + q = q(q + 1)/2 =

log2p (log2p + 1)/2

32.Dimension order routing(215-217) 先q-1维,再q-2维,逐渐靠近目的节点。它是2D mesh上行优先路由贪婪算法的一般化。在行优先路由中,调整数据包的列号直到和目的地址的列号相同,然后再调整行号。

有时只需依次将源点的标号逐位的变为目的地址的标号即可,差几位就需变换几次。 Route from node 01011011 to node 11010110 ^ ^^ ^

01011011, 11011011, 11010011,11010111, 11010110

1.SMPArchitecture:SymmetriaclMlti-Processing对称多处理机架构,就是允许2个或者2个以上的处理机同步数据处理的结构,多个处理机共享资源,提高处理速度。 2.Hypercube network超级立方体网络①一个1-cube包括2个结点标记为0和1,且二者之间有一个连接②一个q-cube由q-1个cube构成0和1 subcube,q-cube结点有前面的subcube用0和1标识,并且结点0x和1x相连。

3.Bisection bandwidth:The minimum number of communication looks that have to be removed to partition the nerwork into equal halves.

A.Given two graphs,G1(V1E1)and G(VE)

1.Interpret the concept of embedding G1 into G,

①结点的映射(结点的映射可是多个或一个)

②边的映射(G1的边uv映射到G的从结点u’到v’的一条路,其中u’到v’是由结点的映射得到的)。

2.Interpret the following four concepts that is dilation(扩张),Congestion(填充),LoadFactor(负荷系数),Expansion(膨胀). Dilation:一条边映射到一条路的最大长度 Congestion:多条边映射到一条边的最大数目

LoadFactor:映射到一个结点的多个结点的最大数目

Expansion:新图结点与原图结点数的比值 B.Given k*k torus

1.Design a point to point routing algorithms

If 原节点在偶数行then

先将数据路由到目的结点的所在的列,再将数据路由到目的结点所在的行

Else先将数据路由到原节点在同一列中最近的偶数行结点,再将数据路由到目的结点所在的列,将数据路由到目的结点所在的行。

2.esign a broadcasting routing algorithms

If原节点在偶数行then

先将数据广播到同一行各个处理器,再将数据在每一列上同时广播

Else先将数据路由到原节点在同一列中最近的偶数行结点,再将数据广播到同一行处理机,将数据路由在每一列上同时广播。 3.Analyze the complexity of the about algorithm O(3/2)K)

38综述P2P 、无线传感器网络、复杂网络 P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源(服务和内容)提供者(Server),又是资

源(服务和内容)获取者(Client)。P2P

技术的特点 :非中心化,可扩展性,健壮性,高

性能/价格比,隐私保护,负载均衡. P2P分类:

提供文件和其它内容共享的P2P网络,例如

Napster、Gnutella、eDonkey、emule、BT。

挖掘P2P对等计算能力和存储共享能力,例

如SETI@home、Avaki、Popular Power;

无线传感器网络是大量的静止或移动的传

感器以自组织和多跳的方式构成的无线网络,其目的是协作地感知、采集、处理和传输网络覆盖地理区域内感知对象的监测信

息,并报告给用户。 它的英文是Wireless

Sensor Network, 简称WSN。 大量的传感器

节点将探测数据,通过汇聚节点经其它网络

发送给了用户。在这个定义中,传感器网络

实现了数据采集、处理和传输的三种功能,

而这正对应着现代信息技术的三大基础技术,即传感器技术、计算机技术和通信技术。 复杂网络(Complex Network),具有自组织、自相似、吸引子、小世界、无标度中部

分或全部性质的网络称为复杂网络。 37 MPI Bucket 排序 #include "mpi.h" #include #include #include TOTAL_NUMBER 100 #include TOTAL_PROCESS 10 #include SWAP(x,y) { int t; t = x ; x = y ; y = t; } float calcMax(float*, int); //

计算最大值

float calcMin(float*, int); //

计算最小值

void selsort(float*,int); //各个basket排序用

//MPI BucketSort 的Main函数

void main( int argc, char *argv[]) { MPI_Status status; int iMyRank; int iSize; float *basketBuf=0; float *totalBuf=0; float fSubMax; float fSubMin; float fTotalMax; float fTotalMin; float fblank; int countInBasket=TOTAL_NUMBER/TOTAL_PROCESS; FILE *dataFile; MPI_Init(&argc, &argv); //MPI程序初始化

MPI_Comm_rank(MPI_COMM_WORLD, &iMyRank); MPI_Comm_size(MPI_WORLD, &iSize); if ( iMyRank == 0) //如果是进程,则进行数据从文件的输入,并分配其他进程的工作

{ totalBuf = (float*) malloc( TOTAL_NUMBER*sizeof(float)); //进程分配内存 if (totalBuf == NULL) { fprintf(stderr, "totalBuf malloc failed!!\n"); MPI_Abort(MPI_COMM_WORLD,99); return;

} dataFile = fopen("data","rh"); if (dataFile == NULL) { fprintf(stderr, "cannot open data!!\n"); MPI_Abort(MPI_COMM_WORLD,99); return; } freed(totalBuf,,sizeof(float),TOTAL_NUMBER,dataFile); fclose(dataFile);

} basketBuf = (float*)malloc(count InBasket*sizeof(float));

if (basketBuf ==NULL) {

fprintf(float*)malloc(count InBasket*sizeof(float));

MPI_Abort(MPI_COMM_WORLD,99); return; }

//数据从分散到各个进程 MPI_Scatter(totalBuf, countInBasket, MPI_FLOAT, basketBuf,

countInBsaket,MPI_FLOAT, 0, MPI_COMMWORLD); //个进程同事求最值 fSubMax = calcMax(basketBuf, countInBasket); fSubMin = calcMin(basketBuf, countInBasket);

//等待所有进程结束

MPI_Barrier( MPI_COMM_WORLD); //通过reduce操作根据局部最值获得全局最值

MPI_Reduce(&fSubMax,&fTotalMax,1,MPI_FLOAT,MPI_MAX,

0,MPI_COMM_WORLD);

MPI_Reduce(&fSubMax,&fTotalMin,1,MPI_FLOAT,MPI_MIN,

0,MPI_COMM_WORLD); //把最值广播到各个进程

MPI_Bcast(&fTotalMax,1,MPI_FLOAT,0,MPI_COMM_WORLD);

MPI_Bcast(&fTotalMin,1,MPI_FLOAT,0,MPI_COMM_WORLD); //最值之差

fBlank=fTotalMax-fTotalMin; float *temp=NULL;

//把数据分配到各个进程 if(iMyRank==0) {

for(int i=0;i

{//按照该范围进行发送(MIN+L*/n)~MIN+L*(k+1)/n)

if(totalBuf[i]>=fTotalMin+fBlank*k/iSize&&

totalBuf[i]

MPI_Send(temp,1,MPI_FLOAT,k,k,MPI_COMM_WORLD); break;} }}}} // 等待分配结束

MPI_Barrier(MPI_COMM_WORLD); for(int i=1;i

{ //从ANY_SOURCE接受数据

MPI_Recv(basketBuf+i,1,MPI_FLOAT,MPI_ANY_SOURCE,

i,MPI_COMM_WORLD,&status); }

// 等待接受完成

MPI_Barrier(MPI_COMM_WORLD); // 各个basket进行排序

selsort (basketBuf, countInBasket); // 从进程组中收集信息 MPI_Gather(basketBuf, countInBasket, MPI_FLOAT, totalBuf, countInBasket, MPI_FLOAT, 0, MPI_COMM_WORLD); if(0==iMyRank) {

dataFile=fopen("dataAfter","wb"); fwrite(totalBuf, sizeof(float), TOTAL_NUMBER, dataFile); fclose(dataFile); free(totalBuf); }

free(basketBuf); MPI_Finalize();

} //MPI 程序结束 //计算各组最大值 //参数说明:入参:basketBuf 指向一组float的数

// total指向的数组内float 数的个数 // 返回值:该组数的最大值

float calcMax(float* baksetBuf, int total) {

float maxInBasket;

maxInBasket=basketBuf[0]; for ( int i=1; i

if (maxInBasket

return maxInBasket; }

//计算各组最小值 //参数说明:入参:basketBuf 指向一组float的数

// total指向的数组内float 数的个数 //返回值:该组数的最小值

float calcMin(float* basketBuf, int total) {

float minInBasket;

minInBasket=basketBuf[0]; for ( int i=1; i

if (minInBasket>basketBuf[i]) minInBasket=basketBuf[i]; }

return minInBasket; }

//选择排序算法(对改组进行递增排序) void selsort(float *buf,int count) {

int i,j,k,m;

for(i=0;i

m=i;

for(j=i+1;j

if(buf[j]

}

if(i!=m) {

SWAP(buf[i],buf[m]); } } }

33. Matrix-Vector multiplication on a linear

array (151-152)

With p = m processors, T = 2m – 1 = 2p – 1

34. Triangular system of equation (154-156)

35. Graph Algorithm (164-166)

36. Pyramid system(182)

37. Hypercube(192-195)

20110712考试内容 一、1.0-1 principle

0-1原理:如果一个排序网络能够正确地对任何0-1序列排序,那么它就能对任意数组成的任意序列正确排序。

这条原理的作用是很大的,为了验证一个n输入排序网络的正确性,我们不必检验

所有数字构成的任意长为n的序列,而只需

检验 个0-1序列就足以验证排序网络是否能正确排序了。 2. PRAM cycle

一个PRAM cycle 包含以下三个阶段: ① 各个处理器访问存储器,通常不同处理器对应存储器的不同地址; ② 各个处理器执行计算步骤;

③ 各个处理器将运算结果保存到存储器中。

在实际应用中,存储器被分成不同的模块,并且对一个模块的同时访问是不允许的。 处理机i在一个cycle内可以完成以下3个

工作:①在共享存储器si处取出操作指令;②在本地寄存器中对数据执行 计算操作;③将结果存在共享内存的地址di处。

3.bitonic sequence

所谓双调序列(Bitonic Sequence)是指由一个非严格增序列X和非严格减序列Y(其中X的最小元素正好是Y的最大元素)构

成的序列,比如序列(23,10,8,3,5,7,11,78)。 定义:一个序列a1,a2,„,an是双调序列(Bitonic Sequence),如果:

(1)存在一个ak(1≤k≤n), 使得a1≥„≥ak≤„≤an成立;或者

(2)序列能够循环移位满足条件(1) 4.speedup

In parallel computing, speedup refers to how much a parallel algorithm is faster than a corresponding sequential algorithm.

Speedup is defined by the following formula: where:

p is the number of processors

is the execution time of the sequential algorithm

is the execution time of the parallel algorithm with p processors 二、even-odd 线性数组奇偶排序算法及复杂度

当所有的关键值已经存储在各个处理机上,且一个处理机存一个数据时,可用Odd-even Sort。

以升序排列为例,在奇数步骤,标号为奇数的处理器同其右侧的处理器进行比较,如果大于于其右侧处理器的数据,则进行交换,否则不做处理;在偶数步骤,标号为偶数的处理器同其右侧的处理器进行比较,如果大于于其右侧处理器的数据,则进行交换,否则不做处理。这样处理的结果就是将数据按升序排列。

对这种排序,有如下性能度量指标:

(1)假定每个处理机有一个数据项,在行主序排列的2D mesh上的Shearsort 算法:

①将下面的两个操作重复次:蛇形排序各行,然后由上到下排序各列; ②根据结果要求,蛇形排序各行或者行主序排序各行。

(2)通过0-1原则证明Shearsort algorithm的正确性:假定进行列排序时,先对列中的元素成对排序,再进行整列的排序,则证明过程如下图:

2.递归sort算法:

算法步骤:①在四个小块上分别进行蛇形排序;②分别按蛇形排序各行(合并一行);③分别从上到下排列每一列;④整体上按蛇形进行奇偶交换排序,用4步。具体的,如下图所示:

p

最坏情况下,最大值在P0上,从而一直移动到最右边。

x ≥ b + c + (a – b)/2 + (d –

A similar inequality for x' leads to:

x + x' ≥ b + c + (a – b)/2+ (d –

+ a' + d' + (b' – a')/2 + (c' –

≥ b + c + a' + d' + (a–b)/2 + (d–c)/2

三、根下p*根下p mesh:1.shearsort算法 2.递归sort算法

1.shearsort算法:

+ (b' – a')/2 + (c' – d')/2 – 4 × 1/2

= (a + a')/2 + (b + b')/2 + (c + c')/2 + (d + d')/2 – 2 ≥

p– 4

The number of dirty rows after Phase 3:

p– x – x' ≤ 4

Thus, at most 4

p of the p elements are out

3.将一个2的q次方的ring embedding到q维的超级立方体中:

of order along the overall snake

四、超级立方体网络 1.定义2.concept of embedding 3.将一个2的q次方的ring embedding到q维的超级立方体中 1.定义:

2.concept of embedding:

Fig. 13.2. Embedding a seven-node binary

tree into 2D meshes of various sizes.

五、MPI编程:p个Process n个整数最大最小值,最后从Process 0中输出结果

范文五:软件开发环境论文设计要求 投稿:段靻靼

《软件开发环境》论文设计要求

一、 性质与目的:

C#是全球最著名的专业软件工具开发商Microsoft公司的产品,和Microsoft Visual C++并肩,为当今最流行的C++集成开发工具之一。C++ Builder具有最强的C功能、C++面向对象特性、GUI可视化程序设计快捷性、可移植性以及与Visual C++、Delphi的无缝接口和强大的网络与数据库应用功能, 最适合C++爱好者学习,研究和应用开发,也是步入C++应用程序设计殿堂的首选。 力争使学生掌握一些计算机应用编程的知识和技术,主要包括面向对象的编程技术、可视化设计、网络和数据库应用等;建立良好、正确的计算机应用开发思维方式和观念,培养具体实际的开发能力,并在有限的时间内,突破难点,快速掌握软件项目的开发设计过程和方法。

学习C#课程后,熟悉C、C++和C#的特点和基本语法,掌握其中的OOP和GUI思想和设计方法,熟练编写面向对象、VCL可视化程序,了解C#网络和数据库应用程序的设计方法,熟悉使用C#开发软件的全过程等。并通过课堂教学、演示、辅导、网上答疑,上机实践、作业和考试,最终达到能够比较熟练地编写中档规模的C++ Builder应用程序。

二、 设计内容:

1. 客户管理系统

2. 图书馆管理系统

3. 图书俱乐部管理系统

4. 学生管理系统

5. 社会养老保险系统——在职人员管理部分

6. 教务管理系统

7. 其他管理系统

任务简介:

课题一:客户管理系统

客户管理系统通过对企业营销、客户服务和支持等与客户关系有关的业务流程的合并,对各个环节的自动化程度的不断改善,从而提升企业核心竞争力,本系统的功能主要有客户信息的输入、客户信息的添加、删除、更改和查询、业务员信息的输入、业务员信息的添加、删除、更改和查询、订单信息的输入、订单的审核、产品信息的输入、区域信息的添加、删除、业务员业绩考核分析、客户采购情况分析、销售记录的查询打印、数据维护等

课题二:图书馆管理系统

图书管理系统是图书馆的重要组成部分,一般分为分为两大部分,流通系统和采购系统。采购系统分为订单管理、图书入库、图书著录、图书上架、新书上报和书目审查、系统设置。流通系统为为图书管理、读者管理、借阅证管理、图书借阅、图书归还、系统设置模置。其中核心模块为,采购系统:图书入库、图书上架;流通系统:图书管理、读者管理、借阅证管理、图书借阅、图书归还等。

课题三:图书俱乐部管理系统

本系统与图书馆图书管理系统不同,是针对一般图书俱乐部管理的特征和要求,充分利用计算机技术、网络与数据库技术等来实现图书和会员的科学管理。本系统包括对图书编码入库、图书调整、图书销售、会员管理等功能。 课题四:学生管理系统

学生管理系统是学生工作部对从招生到学生注册、分班、学籍管理、操行管理、毕业审核的一个全面的管理过程。

课题五:社会养老保险系统——在职人员管理部分

社会养老保险是我国重要的社会保障制度之一。作好社会养老保险管理工作,至关重要。社会养老保险管理系统主要是为了实现社会保险养老金的征收、发放、审计、单位管理等功能的信息化。主要包括征收管理、离退管理、审计管理、财务管理、信息分析、系统管理等功能。

课题六:教务管理系统

教务管理系统主要为学院的教学、教务管理的职能部门的日常工作提供计算机管理服务、教务管理系统包括成绩管理、教学计划管理、公选课管理,毕业成绩审核、重修管理、网上学生成绩查询、网上公选课等。

课题七:其他管理系统

其他管理系统必须涉及数据库。

三、设计内容要求

1、完成问题陈述中所提到的所有需求功能。

2、要求撰写不少于3000个文字(汉字)的文档。

3、文档中至少要包括:ER模型图、系统功能图、表关系的详细说明。使用微软Visio绘图。

4、用户界面设计:采用窗口式,色彩要柔和,界面要友好,操作要简单。

5、用户手册,描述软件系统所具有的功能及基本的使用方法。使用户能了解该软件的用途,并能确定在什么情况下、如何使用它。

四、设计内容文档格式

1、概述

包括项目背景、编写目的、开发环境等内容。

2、需求分析

问题陈述、需完成的功能。

画出ER模型图

3、数据库逻辑设计

把ER模型图转换为关系表。

描述每一个基本表关系。要求所有关系达到BCNF 范式。

定义视图、定义索引、主关键字、定义权限。

4、软件功能设计

画出软件功能图。

描述每一个功能所完成的任务情况。

5、界面设计

界面设计要合理

6、结束语

写出完成本课程设计的心得,领会数据库理论与软件开发实践的关系。有哪些收获。软件还需要哪些改进。

五、最终提交物

学生需要上交的内容:

1、满足上页要求的3000字以上文档的打印稿:A4纸打印,文档格式参照毕业设计论文格式。要求有封皮,用钉书器上方装订好。

2、班级整体上交一张光盘(如果文件较大也可以交多张),光盘中包括每个学生学号,名字命名的文件夹,比如:001_张三。文件夹中包括:该同学设计的源程序、可执行文件、安装文件、使程序能够正常安装运行的说明性文档和3000字以上文档的电子稿。

范文六:软件开发环境与工具教程 投稿:曾慢慣

软件开发环境与工具教程 1实验目的

运行博饼小游戏

2实验环境

New Beans IDE 2.0

3方法描述

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace _1

{

class Program

{

private static void type(int[] a)

{

int[] num = new int[6];

for (int i = 0; i

{

num[a[i] - 1]++;

}

if (num[0] == 6)

Console.WriteLine("遍地锦");

else if (num[3] == 6)

Console.WriteLine("满堂红");

else if (num[1] == 6 || num[2] == 6 || num[4] == 6 || num[5] == 6) Console.WriteLine("云扑黑");

else if (num[3] == 5)

Console.WriteLine("五红");

else if (num[0] == 5 || num[1] == 5 || num[2] == 5 || num[4] == 5 || num[5] == 5) Console.WriteLine("五子");

else if (num[3] == 4 && num[0] == 2)

Console.WriteLine("状元插金花");

else if (num[3] == 4)

Console.WriteLine("状元");

else if (num[0] == 4 || num[1] == 4 || num[2] == 4 || num[4] == 4 || num[5] == 4) Console.WriteLine("四进");

else if (num[3] == 3)

Console.WriteLine("三红");

else if (num[3] == 2)

Console.WriteLine("二举");

else if (num[0] == 1 & num[1] == 1 && num[2] == 1 && num[4] == 1 && num[5] == 1)

Console.WriteLine("对堂");

else if (num[3] == 1)

Console.WriteLine("一秀");

else

Console.WriteLine("什么也没有");

}

static void Main(string[] args)

{

int[] a = new int[6];

int i;

char[,] number = new char[3, 33];

Console.WriteLine("是否开始博饼Y/N");

string c;

c = Console.ReadLine();

while (c == "y")

{

Console.WriteLine("您所投掷的筛子为:");

Random ran = new Random();

for (int o = 0; o

for (int j = 0; j

number[o, j] = ' ';

for (i = 0; i

{

//a[i] = Convert.ToInt32(Console.ReadLine());

a[i] = ran.Next(6) + 1;

}

for (i = 0; i

{

//test(i+1,a[i]);

switch (a[i])

{

case 1:

number[1, (i) * 6 + 1] = '●'; break;

case 2:

number[0, (i) * 6 + 1] = '●';

number[2, (i) * 6 + 1] = '●'; break;

case 3:

number[0, (i) * 6 + 1] = '●';

number[1, (i) * 6 + 1] = '●';

number[2, (i) * 6 + 1] = '●'; break;

case 4:

number[0, (i) * 6] = '●';

number[0, (i) * 6 + 2] = '●';

number[2, (i) * 6] = '●';

number[2, (i) * 6 + 2] = '●'; break;

case 5:

number[0, (i) * 6] = '●';

number[0, (i) * 6 + 2] = '●';

number[1, (i) * 6 + 1] = '●';

number[2, (i) * 6] = '●';

number[2, (i) * 6 + 2] = '●'; break;

case 6:

number[0, (i) * 6] = '●';

number[0, (i) * 6 + 2] = '●';

number[1, (i) * 6] = '●';

number[1, (i) * 6 + 2] = '●';

number[2, (i) * 6] = '●';

number[2, (i) * 6 + 2] = '●'; break;

}

}

for (i = 0; i

{

for (int j = 0; j

{

if (j % 6 == 0)

Console.BackgroundColor = ConsoleColor.White;

if (j % 6 == 3)

Console.ResetColor();

if ((number[0, (j / 6) * 6 + 1] != '●' && number[1, 6 * (j / 6)] != '●' && number[1, 6 * (j / 6) + 2] != '●' && number[2, 6 * (j / 6) + 1] != '●') && !(number[1, 6 * (j / 6) + 1] == '●' && number[0, 6 * (j / 6)] == '●'))

Console.ForegroundColor = ConsoleColor.Red;

else

Console.ForegroundColor = ConsoleColor.Black;

if (number[i, j] == '●')

Console.Write(number[i, j]);

else

Console.Write(" "); }

Console.WriteLine(); }

Console.ResetColor();

type(a);

Console.WriteLine("是否继续Y/N"); c = Console.ReadLine();

}

//Console.ReadLine();

}

}

}

4调试过程

总结

基本了解博饼小游戏运行

范文七:MODTRAN软件集成环境开发 投稿:贾却卵

第28卷第3期应用光学Vol.28,No.3

                            

2007年5月JournalofAppliedOpticsMay,2007文章编号:1002-2082(2007)03-0317-04

MODTRAN软件集成环境开发

刘广达,江月松

(北京航空航天大学电子信息工程学院,北京100083)

摘 要:MODTRAN是目前流行的红外辐射传输计算模型。应用FORTRAN语言编写的MODTRAN源代码,集成MODRAN计算软件,设计了MODTRAN软件图形界面。针对FORTRAN语言计算效率高而图形功能弱,VisualBasic(VB)计算效率低而图形功能强的特点,用VB和FORTRAN2种语言混合编程,实现FORTRAN计算程序资源的再利用。将FORTRAN程序转化为动态链接库函数,通过函数参数传递使VB程序和FORTRAN动态链接库函数之间交换数据,将FORTRAN的计算结果在VB窗体上显示并进行作图处理,从而实现MODTRAN计算程序的图形界面及计算结果的可视化。设计出MODTRAN的汉化使用界面,有利于MODTRAN在国内推广应用。

关键词:FORTRAN语言;MODTRAN;LOWTRAN;动态链接库

中图分类号:O536      文献标志码:A

GraphicintegrationinterfacedesignforMODTRAN

LIUGuang-da,JIANGYue-song

(ElectronicEngineeringSchool,BeihangUniversity,Beijing100083,China)

Abstract:MODTRANisapopularcalculationmodelforatmosphereinfraredradiation

transmission.ThegraphicinterfaceforMODTRANbasedonthecodecompiledwithFORTRANisdesignedforprojectapplications.SincecalculationefficiencyofFORTRANlanguageishigh,butitsgraphicfunctionisweak,whilethecalculationefficiencyofVisualBasic(VB)islow,butitsgraphicfunctionispowerful,theiradvantagesareutilizedadequately,andtheconceptofreusingtheresourcesofFORTRANcalculationprogramisrealized.ThemethodistochangetheFORTRANprogramintothedynamiclinklibrary(DLL)functions,exchangedatabetweenVBprogramandFORTRANprogrambytransferringfunctionparameters,thenshowsthecalculationresultsofFORTRANDLLfunctionsonVBformanddrawthegraphs.ThusthegraphinterfaceofMODTRANcalculationprogramisaddedandtheresultsofcalculationarevisualized.Therefore,theChinesegraphicinterfaceforMODTRANwasdesignedfortheusersinChina.

Keywords:FORTRANlanguage;MODTRAN;LOWTRAN;dynamiclinklibrary

引言

MODTRAN(中频谱分辨率传输)是一种大气传输模型,可以达到很高的精度。MODTRAN改

进了LOWTRAN(低频谱分辨率传输)的光谱分辨率,将光谱的半高全宽度(FWHM,fullwidth

-1

halfmaximum)由LOWTRAN的20cm减少到[1]

收稿日期:2006-08-25; 修回日期:2006-10-28

基金项目:国家自然科学基金(40571097);航天创新基金资助。

作者简介:刘广达(1982-),男,河南濮阳人,北京航空航天大学电子信息工程学院研究生,主要从事红外传输、被动式毫米

・318・

-1

 应用光学 2007,28(3) 刘广达,等:MODTRAN软件集成环境开发

2cm。在程序处理中,MODTRAN基本保持了LOWTRAN结构,可作为中分辨率光谱计算能力的选择项而不干扰原来的执行。MODTRAN比LOWTRAN能更好地适用于高度高于30km以上的路径[2]。因课题需要,笔者在已经拥有MODTRAN源代码(FORTRAN语言编写)的基础上,使用VisualBasic(VB)设计可视化界面,有利于MODTRAN的使用和推广。VB作为一种可视化编程语言,既具有编程简单和界面友好的特点,又能胜任一般计算软件的开发。针对FORTRAN语言计算效率高而图形功能弱,VB计算效率低而图形功能强的特点,采用VB和FORTRAN2种语言混合编程,实现FORTRAN计算程序资源的再利用[3]。在设计传输模型时,参照了大气泡散射的几何物理模型数值计算方法[4]。

文章第一部分简要讲述软件各个窗体和模块的设计,并通过向相应的控件写入相应代码,实现相应功能。第二部分重点讲述图形曲线的实现过程。

编辑下的子菜单包括剪切、复制、粘贴、取消;“帮助”下为关于。各菜单分别执行相应功能;

2)Toolbar1控件用于设置4个快捷键(“新建”、“打开”、“保存”、“关于”),分别执行相应功能;

3)Picture1控件用于buttone1大气透射比曲线计算结果的显示(图中有标线查找准确数据);

4)Richtxt控件用于输出计算结果,以及相对应的大气模型、大气参数;

5)Label1,2,3控件和text1,2,3控件分别用于设定透射距离,计算范围内的最小波长和最大波长;

6)Button1“重新计算”控件用于计算在相应大气模型和大气参数之下的,按照透射距离,在最小波长和最大波长之间的光波的透射比;

7)Label4,5,6控件和frame1,2控件分别用于设定“标线数据”、“波长”、“透射比”;

8)Imagelist控件用于设置toolbar1的关联图标;

9)Commondialog1控件用于支持显示“打开”、“保存”等对话框;

10)Statusbar1控件用于状态栏,显示关于MODTRAN的相关信息、系统时间等,其中最为重要的是3个控件,即“重新计算”、picture1和richtxt。

1.2 大气模型窗体

大气模型窗体中设定了若干大气模型及相关参数,所有的控件都包含在一个frame控件中,其界面如图2所示。

1 软件各个窗体,模块的设计

整个软件工程包括4个窗体和1个公共模块,分别是主窗体(MODTRAN.frm)、大气模型窗体(modes.frm)、大气参数窗体(parameters.frm)、关于窗体(about.frm)和公共模块(module1.bas)。1.1 主窗体

整个软件设计的主体部分设计了MODTRAN的主界面,如图1

所示。

图1 主窗体设计界面Fig.1 Mainform

图2 大气模型窗体设计界面Fig.2 Atmosphericmodelform

主界面中从上到下的控件分别是:

1)菜单项包括“文件”、“大气透射比”、“编辑”、“帮助”、“退出”。“文件”下的子菜单包括新建、打开、保存、另存为、退出;“大气透射比”下的子

大气模型窗体中从上到下的控件是:

1)“大气模型”标签及“选择气象学数据”comboBox1控件,后者设置了6种大气模型,分别是“热带大气条件”、“中纬度夏季条件”、“中纬度冬

 应用光学 2007,28(3) 刘广达,等:MODTRAN软件集成环境开发・319・

“1962美国标准大气”;

2)“衰减类型”标签及comboBox2控件,后者设置了9种衰减类型,分别是“乡村衰减,能见度23km”,“计算中无气溶胶衰减”,“乡村衰减,能见度5km”,“海上衰减,能见度自设”,“海上衰减,能见度23km”,“城市衰减,能见度5km”,“对流层衰减,能见度5km”,“对流平移雾衰减,能见度0.2km”,“辐射状衰减,能见度0.5km”;

3)“路径”框中设定了传输路径,分别是“水平路径”、“倾斜路径”、“垂直路径”;再往下的标签和文本框依次设定了“起始海拔”、“地球温度”、“天顶角”和“能见度”;

4)“地域影响”框中设定modtran使用的环境条件,分别是“陆地”和“海洋”;

5)最下面的“确定”和“取消”按钮用于保存更改后的大气模型设置。1.3 大气参数窗体

大气参数窗体中包含了6个大气参数设置,分别是大气压、环境温度、露点温度、相对湿度、水蒸气密度和臭氧密度,其界面如图3

所示。

1.5 公共模块

公共模块中定义了4个窗体中的公用变量、声明及功能。

2 调用FORTRAN源代码实现透射比图形曲线

利用MicrosoftFORTRANPowerStation4.0将FORTRAN源程序编译成VB的动态链接库(DLL),用DLL实现VB和FORTRAN之间的数据传递,从而实现FORTRAN计算程序图形界面,其原理如图5所示。

[5]

图5 VB调用FORTRAN动态链接库Fig.5 FORTRANDLLcalledbyVB

MODTRAN的源代码共包含256个F90文件。逐个打开并阅读、编译、查找其中的错误,然后找到对应于每一种大气模型和参数的计算方法,在MicrosoftFORTRANPowerStation4.0上将它们编译成VB动态链接库,再在VB中调用画图。此过程比较繁琐,不再详细介绍(方法详见文献[6])。最终得到的透射比曲线如图6所示。

图3 大气参数窗体设计界面Fig.3 Atmosphericparameterform

[6]

1.4 关于窗体

关于窗体中设计有制作者的相关信息,并添加“系统信息”,写入相应代码,使得软件运行时可以

查看系统信息。

图6 透射比曲线计算结果Fig.6 Transmissionratecurve

3 结束语

利用VB设计界面和FORTRAN在科学计算中的高效率,实现了FORTRAN计算程序资源的

图4 关于窗体设计界面

再利用。将FORTRAN程序转化为动态链接库函,

・320・ 应用光学 2007,28(3) 刘广达,等:MODTRAN软件集成环境开发

etal.

Mix-language

programming

of

VB

and

态链接库函数之间交换数据,并将FORTRAN的计算结果在VB窗体上显示,以便做图处理,从而实现MODTRAN计算程序的图形界面及计算结果可视化。我们最终设计出MODTRAN的汉化使用界面,界面简洁,操作方便,有利于MODTRAN的推广使用。在画图过程中,通过直接读取FORTRAN源代码,然后用VB的语法格式写入代码也可以达到做图的目的,本文对此不再探讨。

参考文献:

[1] BARKA,BERNSTEINLS,ROBERTSONDC.

MODTRAN:amoderateresolutionmodelforLOWTRAN7,

US

Air

Force

Geophysics

Laboratory,TechnicalReportGL-TR-89-0122[R].MA:HanscomAirForceBase,1989.

[2] 吴北婴,李卫,陈洪滨,等.大气辐射传输实用算法

[M].北京:气象出版社,1998.

WUBei-ying,LIWei,CHENHong-bin,etal.at-mosphereinfraredradiationtransmissionarithmetic[J].Beijing:ChinaMeteorologicalPress,1998.(inChinese)

[3] 王文珂,陈倩,郭忠海,等.通过动态链接库实现VB

和FORTRAN的混合编程[J].电脑开发与应用,2002,15(2):1-3.

WANGWen-ke,CHENQian,GUOZhong-hai,

FORTRANbydynamiclinklibrary[J].ComputerDevelopment&Applications,2002,15(2):1-3.(inChinese)

[4] 李旭东,杨鸿儒,吴磊,等.大气泡散射的几何物理模

型数值计算[J].应用光学,2006,27(6):16-18.LIXu-dong,YANGHong-ru,WULei,etal.Numericalcalculationoflightscatteringbylargesphericalbubblesbasedongeometrical-physicaltheory[J].JournalofAppliedOptics,2006,27(6):16-18.(inChinese)

[5] 朱从旭.混合编程和FORTRAN计算程序图形界面

的实现[J].中南工业大学学报,2000,31(6):1-4.ZHUCong-xu.ProgrammingwithmixedlanguageontherealizationofgraphinterfaceofFORTRANcalculationprogram[J].JournalofCentralSouthUniversityofTechnology,2000,31(6):1-4.(inChinese)

[6] 朱从旭,邓宏贵.用VB和FORTRAN混合编程开发

科学计算与作图软件[J].计算机应用,2000,20(4):1-4.

ZHUCong-xu,DENGHong-gui.Developscientificcalculation

and

graphic

software

by

mixed-programmingofVBandFORTRAN[J].JournalofComputerApplications,2000,20(4):1-4.(inChinese)

(上接第304页)

[8] SINORTW,ESTERAJP.Ananalysisofelectron

scatteringinthindielectricfilmsusedasionbarriersingenerationⅢimagetube[J].SPIE,2003,4796:23-32.

[9] OLAFKosch󰀁lzke.TheGenerationGap:GenⅡvs

GenⅢvsUltravis[EB/OL].DarmstadtGermany,LOT-OrielGroupEurope,istagaprdeen.pdf.

[10]THENA,PANTANOC.Formationandbehavior

ofsurfacelayersonelectronemissionglasses[J].J.

2005/[2006-12-28].

down/cc

http://www.lot-oriel.com/site/site

Non-CrystallineSolids,1990,120:178-187.

[11]KULOVSK,KESAEVSA,BUGULOVAIR,

etal.

Quality

of

microchannelplatesworking

surfaces[J].SPIE.2005,5834:203-206.

[12]潘京生,苏德坦,刘术林,等.一种玻璃成份优化的微

通道板[J].应用光学,2007,28(1):16-19.

PANJing-sheng,SUDe-tan,LIUShu-lin,etal.Themicrochannelplatewithoptimizedcompositionglass[J].JournalofAppliedOptics,2007,28(1):16-19.(inChinese)

范文八:编程开发软件和环境 投稿:方傼傽

(3) 客户端零维护。对系统数据库进行维护的工作是服务器端的任务,客户端用户不用担心系统维护的事情。

根据上述系统的特点和要求,本次设计的学生宿舍管理系统采用微软 ASP.NET 脚本语言来开发 Web 应用程序。ASP.NET 方便上手,网页可视化程度高,容易和 HTML 配合成丰富 的动态网页。在各种数据库软件中, SQL Server 是大型的数据库,对于宿舍管理系统而言,SQL完全能够用作本系统的后台数据库。

2.1.2系统开发工具

本学生宿舍管理系统的用的开发环境与开发语言为Microsoft Visual Studio 2008和Microsoft SQL Server 2005.

作为Microsoft公司多年潜心研究的结果,Microsoft.NET是Microsoft公司推出的新一代Internet计算模型,它由XML、Web Service、.NET Framework等三大核心组建组成。.NET Framework是新一代的开发平台,它提供了统一的类库Base Class Library和通用语言运行库(CLR),创建了一套跨编程语言的通用API。引用Microsoft.NET技术开发宿舍管理系统,必将大大提升宿舍管理系统的系统层次。

SQL Server 2005数据库系统是一个精致的信息管理环境,它是一个大量数据的储藏所,能够给用户提供对这些数据的快速访问。SQL Server 2005服务器允许应用系统之间共享数据,信息存放在一个地方并有许多系统来使用。 2.1.3 硬件设备

系统大部分在个人电脑上设计完成,基本配置如下: 主板:方正飞越V5系列主板 cpu : AMD 3200+ 内存:金士顿 DDR512M 显卡:盈通 ATI X1650 128M 硬盘:金钻7200转 160G 显示器:17”液晶

其它:DVD光驱,普通机箱与电源。 2.1.4 软件环境

设计中涉及到的主要软件和开发环境: 操作系统:Windows xp sp2,安装IIS 5.0

开发环境:服务器:Windows 2000/XP、Internet Information Server、SQL Server 2005,Microsoft.NET Framework 1.1

客户机:Windows98/2000/XP、IE6.0 2.1.5 软件工具

编程与页面制作:Macromedia Dreamweaver MX 2004 图片处理:Macromedia Fireworks MX2004, Photoshop cs Flash制作:Macromedia Flash MX 2004 文件上传管理:FlashFXP3.2等。 2.2 项目规划

2.2.1 任务描述

整个系统开发过程分为六个任务,具体任务如图1所示:

图1 宿舍管理系统设计与开发任务树

范文九:ucos软件开发环境介绍 投稿:陈鋤鋥

Uc/os-II软件开发环境介绍

何树生

针对即将使用的uc/os操作系统的LPC2478芯片,周立功公司给的软件样例都是基于ADS12的开发环境,由于其J-TAG仿真器使用的是并口,且 ADS12这个环境使用相对麻烦,因此,不是很适合我们的开发工作,我们前期尝试并成功将开发环境切换到realview中,realview这个IDE的集成度较高,且与配套的ulink2调试器配合开发比较稳定,更适合我们的开发工作,以下针对LPC2478这个芯片,介绍使用realview进行软件开发的环境配置。可参考附件的样板,为我们从ADS12到realview的移植版本。

LPC2478片内带有512K的flash及64K的SRAM,开发板外部带2M的NOR FLASH和32M的SDRAM;由于flash具有擦除寿命的限制,因此,我们的调试主要在SDRAM中进行。

一.创建工程:

1) 新建工程,打开realview,选择 projectnew uvision projects,如图:

2) 输入自己定义的工程名称,确定后,选择芯片的类型(LPC2478):

弹出是否将LPC2478的启动代码添加到工程中,我们选择“否”,因为,我们要使用周立功提供的启动代码:

这样我们就建立了一个空的工程;

3) 添加工程文件,点击图示按纽,弹出对话框可配置我们的工程文件,在图示的对话

框中,第一项为,不同的工程目标,如:我们可区分为在片内FLASH调试或者片外SDRAM调试等不同的配置;第二项为组,即该项目下一个比较大的目录,第三个为具体的文件;它是指定组的具体的文件;可见,从左到右是主到从的依附关系; 通过点击右下方的Add Files,来添加每个组指定的文件(可编译文件,C,汇编);

下图为我们配置好了的文件的一个样例:

在按“确定”后,可以在左边的工作区中看到我们的文件树:

这样就完成了工程的文件树创建;

二.主要功能及操作:

下面是我们比较经常使用到的realview的一些基本的功能:

如图所示:

1

图2

三.选项配置:

对于每一个创建目标,(在片内FLASH上调试或者片外SDRAM调试)如何实现他们

的区分呢?这就是每一个创建目标的选项的功能;

1) 点击图示按键或者在工作区中右键工程目标,选择“options for target…”:

2)显示如下的对话框,通过对这些配置选项进行配置,可实现各个目标的区别;

以下介绍几种调试方式的具体配置:

片外SDRAM调试配置:realview运行一段我们指定的SDRAM初始化脚本,并将调试代码拷贝到片外SDRAM中,进行调试,这将是我们在调试系统时的主要调试方式;

1) 配置输出文件的选项,如图,选择 选项的output页,选择“select folder for object”

弹出选择输出路径的对话框,一般情况下,我们对于每一个不同的目标都会选择一个独立的输出目录,以区别不同的目标;选择“create executable…”用以生成的目标是可执行文件,并勾上生成HEX文件的选项;

2) 选择用户程序配置,它能完成在指定编译连接完成后,再执行用户指定的程序,由

于realview编译出来的是axf文件,而我们在以后的生产过程中用的是bin文件,因此有必要进行一次转化:

将生成的axf文件转化为(注意路径的选择):

D:\Keil\ARM\BIN31\fromelf.exe --bin --output D:\keilwnl\RTCmbox_Data\DebugInExDRAM\DebugInExDRAM11.bin

D:\keilwnl\RTCmbox_Data\DebugInExDRAM\DebugInExDRAM.axf

将bin文件添加信息头,生成发行版本文件(build.exe是我们自己写的程序,请自己拷贝到keil目录下),主要是考虑到发行版本的特殊性:

D:\Keil\ARM\BIN31\build.exe -I D:\keilwnl\RTCmbox_Data\DebugInExDRAM\DebugInExDRAM11.bin -O D:\keilwnl\RTCmbox_Data\DebugInExDRAM\DebugInExDRAM2.bin

3)编译器选项配置。分别选择c/c++和Asm,在“Preprocessor Symbols”指定预定义的宏,在Include Paths中指定头文件的路径:

4) 连接器选项配置,去除“use Memory layout from target dialog”,我们使用指定的

加载连接文件,在“Scatter File”中,指定SDRAM配置的scf文件(由周立功软件提供):

5)JTAG调试器配置,在该页中,左边是软件仿真,右边是调试器仿真,我们选择右边的调试器仿真,并选择正确的调试器“ULINK ARM Debugger”,而SDRAM在调试之前需要先初始化,我们在“Initialization”中指定“DebugInExDRAM.ini”的初始化脚本,实现SDRAM的初始化:

点击图中“settings”,弹出选项对话框,按照如下图所示,配置JTAG:

片内FLASH调试 将调试代码拷贝到片内FLASH中,并在片内FLASH进行调试。这时候我们需要配置片内FLASH的擦除和编写;

1) 参照片外FLASH调试的步骤1-4,这时候的“scatter file”应该选择

ChipFlash.scf,即片内FLASH连接对应的脚本;

2) JTAG调试器配置,在该页中,左边是软件仿真,右边是调试器仿真,我们选

择右边的调试器仿真,并选择正确的调试器“ULINK ARM Debugger”,片内

FLASH不需要我们去初始化,我们在“Initialization”中不用指定任何文件:

点击图中“settings”,弹出选项对话框,按照如下图所示,配置JTAG,需要指定其进行下载程序:

3) 配置FLASH烧写;选择“Utilities”选项,配置FLASH的烧写,勾上“update target

before debugging”,在调试前更新FLASH上面的数据。选择“Setting”进行FLASH的选择配置;在弹出的对话框中,按如图所示配置,并点击“Add”添加FLASH类型:

按照下图,找到LPC2400系列对应的片内512K的FLASH;

添加完后,片内FLASH调试的环境也就配置好了;

四.仿真调试

1)点击编译按纽进行编译,没有错误后,可进行调试;

2)将ULINK与PC和目标板连接,并启动目标板电源;

3)点击调试按纽,开始进行调试,片内调试时,会显示擦除和写入数据的过程,通过图示按扭进行操作:

以上是针对LPC2478芯片的开发环境从ADS12到realivew的切换,由于接触realivew的时间也不是很长,所以,有些方式也不过完好,希望大家的交流和沟通。

范文十:软件开发环境实验报告 投稿:任聑聒

软件开发环境 大作业

班级: 学号: 姓名: 教师:

2012 2012 孟宇龙、李晋

2015年6月

一、文挡规范(F0) 5分

二、Project项目管理工具(F1) 10分

完成本次作业的项目管理(包括任务名称,任务计划时间,分配资源,完成情况,实际用时) 至少20个任务点,有前置任务,分级, 任务升降级。人力资源为自己学号+前后两个学号

截图至少包含:

1.甘特图 5分

2.跟踪甘特图 1分

3.任务分配状况图 2分

4.成本视图 2分(申请优秀必做

)

三、建模工具(Visio) (F2) 20分

1. 业务流程图(visio) 4分

2. 功能结构分解图(visio) 4分

商品库存管理模块功能划分图

:

商品管理模块功能划分

:

商品采购管理模块功能划分图:

档案管理模块划分

:

分析模块:

3. ER图(visio或ERwin) 2分(实体和联系,少量属性)

4. 系统结构图 2分

5. 绘制软件功能界面 3分(申请优秀必做)

使用visio的“软件”的windows xp 用户界面(窗口和对话框,公共控件形状)

登陆界面:

主功能:

商品进货管理界面:

6. 时序图 5分(申请优秀必做) 进货信息查询时序图:

销售信息查询时序图:

四、Power Designer设计(F3) 10分

1. 绘制CDM模型 5分

(2个实体,1个联系,主属性必须有,少量属性)

Staff

*#**

姓名

职工编号性别

身份证号...

Characters (20)Characters (20)Characters (10)Characters (20)

Stock

Product

*商品名称Characters (20)#商品编号Characters (20)*价格Characters (20)...

2. 生成PDM模型 3分

3. 生成SQL脚本 2分

/*==============================================================*/

/* DBMS name: MySQL 5.0 */ /* Created on: 2015/6/17 9:11:18 */

/*==============================================================*/

drop table if exists Product;

drop table if exists Staff;

drop table if exists Stock;

/*==============================================================*/ /* Table: Product */

/*==============================================================*/

create table Product (

ProName char(20) not null, ProNo char(20) not null, Price char(20) not null, primary key (ProNo) );

/*==============================================================*/ /* Table: Staff */

/*==============================================================*/

create table Staff (

Name char(20) not null, StaID char(20) not null, Sex char(10) not null, IDNumber char(20) not null, primary key (StaID) );

/*=============================================================

=*/ /* Table: Stock */

/*==============================================================*/

create table Stock (

StaID char(20) not null, ProNo char(20) not null, primary key (StaID, ProNo) );

alter table Stock add constraint FK_Stock foreign key (StaID) references Staff (StaID) on delete restrict on update restrict;

alter table Stock add constraint FK_Stock2 foreign key (ProNo) references Product (ProNo) on delete restrict on update restrict;

五、MyEclipse工具开发Struts (F4) 40分

(报告中包含截图和核心代码,页面和代码包含学号后4位) 使用Struts开发邮件管理系统.

1. herbernate使用 5分

2. 用户登陆功能 5分 3. 用户注册功能(包含多个不同类型的Struts标签) 5分 4. 表格浏览邮件功能(收邮件) 5分(申请优秀必做)

5. 查找邮件功能 5分(申请优秀必做) 6. 新建邮件功能 5分

7. 删除邮件功能 5分 (申请优秀必做) 8. 修改个人资料功能 5分

(视频录制操作过程作为附件,包含各功能的操作演示) 六、SVN版本控制(F5) 10分

对开发过程中的代码进行版本控制.(所有操作要体现包含学号后四位) 1.创建新版本库 1分

2.创建用户 1分

3.导入数据到版本库 1分

4.在客户端检出副本 2 分(两次检出不同版本)

检出两个文件夹

5.检出副本后,在本地进行修改,将修改提交到版本库 5 分 (两次提交,产生2个新版本)(申请优秀必做)

修改文件内容:

检出错误:

再次修改,检出错误:

提交后无误。

八、测试工具(F7) 5分

1.使用学号作为用户,进行登陆bugfree 1分

2.Bug录入填写详细信息。 2分

3.查看被指派的bug 2分

站点地图