当前位置:文档之家› 12 软件 孙利娜

12 软件 孙利娜

12 软件   孙利娜
12 软件   孙利娜

TileView.java

1.package com.example.android.snake;

2.

3.import android.content.Context;

4.import android.content.res.TypedArray;

5.import android.graphics.Bitmap;

6.import android.graphics.Canvas;

7.import android.graphics.Paint;

8.import android.graphics.drawable.Drawable;

9.import android.util.AttributeSet;

10.import android.view.View;

11.

12.

13./**

14. * TileView: a View-

variant designed for handling arrays of "icons" or other

15. * drawables.

16. *

17. */

18.

19.public class TileView extends View {

20.

21. /**

22. * Parameters controlling the size of the tiles and their range withi

n view.

23. * Width/Height are in pixels, and Drawables will be scaled to fit to

these

24. * dimensions. X/Y Tile Counts are the number of tiles that will be d

rawn.

25. */

26.

27. protected static int mTileSize; //每个tile的边长的像素数量

28.

29. protected static int mXTileCount; //屏幕内能容纳的 X方向上方块的总数量

30. protected static int mYTileCount;//屏幕内能容纳的 Y方向上方块的总数量

31.

32. private static int mXOffset; //原点坐标,按pixel计。

33. private static int mYOffset;

34.

35.

36. /**

37. * A hash that maps integer handles specified by the subclasser to th

e

38. * drawable that will be used for that reference

39. * 存储着不同种类的bitmap图。通过resetTiles,loadTile,将游戏中的方块加

载到这个数组。

40. * 可以理解为砖块字典

41. */

42. private Bitmap[] mTileArray;

43.

44. /**

45. * A two-

dimensional array of integers in which the number represents the

46. * index of the tile that should be drawn at that locations

47. * 存储整个界面内每个tile位置应该绘制的tile。

48. * 可看作是我们直接操作的画布。

49. * 通过setTile、clearTile 进行图形显示的修改操作。

50. *

51. */

52. private int[][] mTileGrid;

53.

54. //画笔,canvas的图形绘制,需要画笔Paint实现。

55. private final Paint mPaint = new Paint();

56.

57.

58. public TileView(Context context, AttributeSet attrs, int defStyle) {

59. super(context, attrs, defStyle);

60. //使用TypedArray,获取在attrs.xml中为TileView定义的新属性

tileSize 。参考: https://www.doczj.com/doc/c616972048.html,/1556324/311453

61. TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.

TileView);

62. mTileSize = a.getInt(R.styleable.TileView_tileSize, 12);

63. a.recycle();

64. }

65.

66. public TileView(Context context, AttributeSet attrs) {

67. super(context, attrs);

68. TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.

TileView);

69. mTileSize = a.getInt(R.styleable.TileView_tileSize, 12);

70. a.recycle();

71. }

72.

73.

74.

75. /**

76. * Rests the internal array of Bitmaps used for drawing tiles, and

77. * sets the maximum index of tiles to be inserted

78. * 重置清零mTileArray,在游戏初始的时候使用。

79. * 即清空砖块字典

80. * @param tilecount

81. */

82. public void resetTiles(int tilecount) {

83. mTileArray = new Bitmap[tilecount];

84. }

85.

86.

87. /*

88. * 当改变屏幕大小尺寸时,同时修改tile的相关计数指标。

89. */

90.

91.@Override

92. protected void onSizeChanged(int w, int h, int oldw, int oldh) {

93. mXTileCount = (int) Math.floor(w / mTileSize);

94. mYTileCount = (int) Math.floor(h / mTileSize);

95.

96. //mXOffset mYOffset是绘图的起点坐标。

97. mXOffset = ((w - (mTileSize * mXTileCount)) / 2);

98. mYOffset = ((h - (mTileSize * mYTileCount)) / 2);

99.

100. mTileGrid = new int[mXTileCount][mYTileCount];

101. clearTiles();

102. }

103.

104.

105. /**

106. * Function to set the specified Drawable as the tile for a parti cular

107. * integer key.

108. * 加载具体的砖块图片到砖块字典。

109. * 即将对应的砖块的图片对应的加载到 mTileArray数组中

110. * @param key

111. * @param tile

112. */

113. public void loadTile(int key, Drawable tile) {

114. //这里做了一个 Drawable 到 bitmap 的转换。由于外部程序使用的时候是直接读取资源文件中的图片,

115. //是drawable格式,而我们的数组是bitmap格式,方便最终的绘制。所以,需要进行一次到 bitmap的转换。

116. Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, Bit map.Config.ARGB_8888);

117. Canvas canvas = new Canvas(bitmap);

118. tile.setBounds(0, 0, mTileSize, mTileSize);

119. tile.draw(canvas);

120.

121. mTileArray[key] = bitmap;

122. }

123.

124. /**

125. * Used to indicate that a particular tile (set with loadTile and referenced

126. * by an integer) should be drawn at the given x/y coordinates du ring the

127. * next invalidate/draw cycle.

128. * 在相应的坐标位置绘制相应的砖块

129. * 记得哦,mTileGrid其实就是我们直接操作的画布。

130. * @param tileindex

131. * @param x

132. * @param y

133. */

134. public void setTile(int tileindex, int x, int y) {

135. mTileGrid[x][y] = tileindex;

136. }

137.

138. /**

139. * Resets all tiles to 0 (empty)

140. * 清空图形显示。

141. * 用以更新画面。

142. * 调用了绘图的setTile()。

143. */

144. public void clearTiles() {

145. for (int x = 0; x < mXTileCount; x++) {

146. for (int y = 0; y < mYTileCount; y++) {

147. setTile(0, x, y);

148. }

149. }

150. }

151.

152./*

153. * 将我们直接操作的画布绘制到手机界面上!

154. * @see android.view.View#onDraw(android.graphics.Canvas)

155. */

156.@Override

157. public void onDraw(Canvas canvas) {

158. super.onDraw(canvas);

159. for (int x = 0; x < mXTileCount; x += 1) {

160. for (int y = 0; y < mYTileCount; y += 1) {

161. if (mTileGrid[x][y] > 0) {

162. canvas.drawBitmap(mTileArray[mTileGrid[x][y]], 163. mXOffset + x * mTileSize,

164. mYOffset + y * mTileSize,

165. mPaint);

166. }

167. }

168. }

169. }

170.

SnakeView.java

1.package com.example.android.snake;

2.

3.import java.util.ArrayList;

4.import java.util.Random;

5.

6.import android.content.Context;

7.import android.content.res.Resources;

8.import android.os.Handler;

9.import android.os.Message;

10.import android.util.AttributeSet;

11.import android.os.Bundle;

12.import android.util.Log;

13.import android.view.KeyEvent;

14.import android.view.View;

15.import android.widget.TextView;

16.

17./**

18. * SnakeView: implementation of a simple game of Snake

19. */

20.public class SnakeView extends TileView {

21.

22. private static final String TAG = "SnakeView";

23.

24. /**

25. * Current mode of application: READY to run, RUNNING, or you have al

ready

26. * lost. static final ints are used instead of an enum for performanc

e

27. * reasons.

28. * 游戏的四种状态。初始时为预备开始的状态。

29. */

30. private int mMode = READY;

31. public static final int PAUSE = 0; //暂停

32. public static final int READY = 1; //准备好了,预备开始

33. public static final int RUNNING = 2;//正在运行

34. public static final int LOSE = 3; //结束,输了游戏

35.

36. /**

37. * Current direction the snake is headed.

38. * 蛇体运动的方向标识。

39. */

40. private int mDirection = NORTH;

41. private int mNextDirection = NORTH;

42. private static final int NORTH = 1;

43. private static final int SOUTH = 2;

44. private static final int EAST = 3;

45. private static final int WEST = 4;

46.

47. /**

48. * Labels for the drawables that will be loaded into the TileView cla

ss

49. * 游戏中仅有的三种砖块对应的数值。

50. */

51. private static final int RED_STAR = 1;

52. private static final int YELLOW_STAR = 2;

53. private static final int GREEN_STAR = 3;

54.

55. /**

56. * mScore: used to track the number of apples captured mMoveDelay: nu

mber of

57. * milliseconds between snake movements. This will decrease as apples

are

58. * captured.

59. */

60. private long mScore = 0; //记录获得的分数。

61. private long mMoveDelay = 600; //每移动一步的延时。初始时设置为600ms,

以后每吃一个果子,打个9折

62. //造成的结果是速度越来越快。

63.

64. /**

65. * mLastMove: tracks the absolute time when the snake last moved, and

is used

66. * to determine if a move should be made based on mMoveDelay.

67. * 记录上次移动的确切时间。

68. * 同mMoveDelay一起处理与用户的异步操作的协同问题。

69. */

70. private long mLastMove;

71.

72.

73. /**

74. * mStatusText: text shows to the user in some run states

75. * 用来显示游戏状态的TextView

76. */

77. private TextView mStatusText;

78.

79. /**

80. * mSnakeTrail: a list of Coordinates that make up the snake's body

81. * mAppleList: the secret location of the juicy apples the snake crav

es.

82. * 两个链表,分别用来存储蛇体和果子的坐标。

83. * 每次蛇体的运动,蛇体的增长,产生新的苹果,被吃掉苹果,都会在这里记录。

84. */

85. private ArrayList mSnakeTrail = new ArrayList

();

86. private ArrayList mAppleList = new ArrayList(

);

87.

88. /**

89. * Everyone needs a little randomness in their life

90. * 随机数生成器。用来产生随机的苹果。在addRandomApple()中使用。

91. */

92. private static final Random RNG = new Random();

93.

94. /**

95. * Create a simple handler that we can use to cause animation to happ

en. We

96. * set ourselves as a target and we can use the sleep()

97. * function to cause an update/invalidate to occur at a later date.

98. * 用Handler机制实现定时刷新。

99. * 为什么使用Handler呢?大家可以参考 android 的线程模型(注意UI线程不是

线程安全的~)

100. * 具体使用方法网上的资源很多,在此不赘述~

101. */

102. private RefreshHandler mRedrawHandler = new RefreshHandler(); 103.

104. class RefreshHandler extends Handler {

105.

106. //获取消息并处理

107.@Override

108. public void handleMessage(Message msg) {

109. SnakeView.this.update();

110. SnakeView.this.invalidate(); //刷新view为基类的界面

111. }

112.

113. //定时发送消息给UI线程,以此达到更新的效果。

114. public void sleep(long delayMillis) {

115. this.removeMessages(0); //清空消息队列,Handler进入对新消息的等待

116. sendMessageDelayed(obtainMessage(0), delayMillis); //定时发送新消息,激活handler

117. }

118. };

119.

120.

121.

122. public SnakeView(Context context, AttributeSet attrs) {

123. super(context, attrs);

124. initSnakeView(); //构造函数中,别忘了,初始化游戏~

125. }

126.

127. public SnakeView(Context context, AttributeSet attrs, int defStyl

e) {

128. super(context, attrs, defStyle);

129. initSnakeView();

130. }

131.

132. //初始化SnakeView类,注意,这根初始化游戏是不一样的。

133. private void initSnakeView() {

134. setFocusable(true); //设置焦点,由于存在文字界面和游戏界面的跳转。这个focus是不可或缺的。

135.

136. //取得资源中的图片,加载到砖块字典中。

137. Resources r = this.getContext().getResources();

138. resetTiles(4);

139. loadTile(RED_STAR, r.getDrawable(R.drawable.redstar)); 140. loadTile(YELLOW_STAR, r.getDrawable(R.drawable.yellowstar));

141. loadTile(GREEN_STAR, r.getDrawable(R.drawable.greenstar)); 142.

143. }

144.

145. //如果不是从暂停中回复,就绪要初始化游戏了。

146. private void initNewGame() {

147. //清空保存蛇体和果子的数据结构。

148. mSnakeTrail.clear();

149. mAppleList.clear();

150.

151. // For now we're just going to load up a short default eastbo und snake

152. // that's just turned north

153. // 设定初始状态的蛇体的位置。

154.

155. mSnakeTrail.add(new Coordinate(7, 7));

156. mSnakeTrail.add(new Coordinate(6, 7));

157. mSnakeTrail.add(new Coordinate(5, 7));

158. mSnakeTrail.add(new Coordinate(4, 7));

159. mSnakeTrail.add(new Coordinate(3, 7));

160. mSnakeTrail.add(new Coordinate(2, 7));

161. mNextDirection = NORTH;

162.

163. // Two apples to start with

164. addRandomApple();

165. addRandomApple();

166.

167. mMoveDelay = 600;

168. mScore = 0;

169. }

170.

171.

172. /**

173. * Given a ArrayList of coordinates, we need to flatten them into an array of

174. * ints before we can stuff them into a map for flattening and st orage.

175. *

176. * @param cvec : a ArrayList of Coordinate objects

177. * @return : a simple array containing the x/y values of the coor dinates

178. * as [x1,y1,x2,y2,x3,y3...】

179. * 在游戏暂停时,需要通过Bundle方式保存数据。见saveState()。

180. * Bundle支持简单的数组。

181. * 所以需要将我们的部分数据结构,如蛇体和苹果位置的数组,转换成简单的序列化的int数组。

182. */

183. private int[] coordArrayListToArray(ArrayList cvec) {

184. int count = cvec.size();

185. int[] rawArray = new int[count * 2];

186. for (int index = 0; index < count; index++) {

187. Coordinate c = cvec.get(index);

188. rawArray[2 * index] = c.x;

189. rawArray[2 * index + 1] = c.y;

190. }

191. return rawArray;

192. }

193.

194. /**

195. * Save game state so that the user does not lose anything 196. * if the game process is killed while we are in the

197. * background.

198. * 在意外情况下,暂时性保存游戏数据,在下次打开游戏时,可以继续游戏。如来电话了。

199. * @return a Bundle with this view's state

200. */

201. public Bundle saveState() {

202. Bundle map = new Bundle();

203.

204. map.putIntArray("mAppleList", coordArrayListToArray(mAppleLis t));

205. map.putInt("mDirection", Integer.valueOf(mDirection));

206. map.putInt("mNextDirection", Integer.valueOf(mNextDirection)) ;

207. map.putLong("mMoveDelay", Long.valueOf(mMoveDelay)); 208. map.putLong("mScore", Long.valueOf(mScore));

209. map.putIntArray("mSnakeTrail", coordArrayListToArray(mSnakeTr ail));

210.

211. return map;

212. }

213.

214. /**

215. * Given a flattened array of ordinate pairs, we reconstitute the m into a

216. * ArrayList of Coordinate objects

217. * 是coordArrayListToArray()的逆过程,用来读取保存在Bundle中的数据。

218. * @param rawArray : [x1,y1,x2,y2,...]

219. * @return a ArrayList of Coordinates

220. */

221. private ArrayList coordArrayToArrayList(int[] rawArra y) {

222. ArrayList coordArrayList = new ArrayList();

223.

224. int coordCount = rawArray.length;

225. for (int index = 0; index < coordCount; index += 2) { 226. Coordinate c = new Coordinate(rawArray[index], rawArray[i ndex + 1]);

227. coordArrayList.add(c);

228. }

229. return coordArrayList;

230. }

231.

232. /**

233. * Restore game state if our process is being relaunched

234. * 回复游戏数据。是saveState()的逆过程

235. * @param icicle a Bundle containing the game state

236. */

237. public void restoreState(Bundle icicle) {

238. setMode(PAUSE);

239.

240. mAppleList = coordArrayToArrayList(icicle.getIntArray("mApple List"));

241. mDirection = icicle.getInt("mDirection");

242. mNextDirection = icicle.getInt("mNextDirection");

243. mMoveDelay = icicle.getLong("mMoveDelay");

244. mScore = icicle.getLong("mScore");

245. mSnakeTrail = coordArrayToArrayList(icicle.getIntArray("mSnak eTrail"));

246. }

247.

248. /*

249. * handles key events in the game. Update the direction our snake is traveling

250. * based on the DPAD. Ignore events that would cause the snake to immediately

251. * turn back on itself.

252. * 按键的监听。

253. * 现在大多数的android手机都没有按键了。

254. * 笔者就是在自己的模拟机上才能正常的使用这款小游戏的 - -#

255. * @see android.view.View#onKeyDown(int, android.os.KeyEvent) 256. */

257.@Override

258. public boolean onKeyDown(int keyCode, KeyEvent msg) {

259. //这里是游戏的基本逻辑。如果你还没尝试一下它,先玩玩再说吧。那有助于你对代码的理解~

260. if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {

261. if (mMode == READY | mMode == LOSE) {

262. /*

263. * At the beginning of the game, or the end of a prev ious one,

264. * we should start a new game.

265. */

266. initNewGame();

267. setMode(RUNNING);

268. update(); //update()实现了对游戏数据的更新,是整个游戏的推动力。

269. return (true);

270. }

271.

272. if (mMode == PAUSE) {

273. /*

274. * If the game is merely paused, we should just conti nue where

275. * we left off.

276. */

277. setMode(RUNNING);

278. update();

279. return (true);

280. }

281.

282. if (mDirection != SOUTH) { //如果按键的方向跟蛇本身的运动方向完全相反,则无法执行

283. mNextDirection = NORTH;

284. }

285. return (true);

286. }

287.

288. if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {

289. if (mDirection != NORTH) {

290. mNextDirection = SOUTH;

291. }

292. return (true);

293. }

294.

295. if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {

296. if (mDirection != EAST) {

297. mNextDirection = WEST;

298. }

299. return (true);

300. }

301.

302. if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {

303. if (mDirection != WEST) {

304. mNextDirection = EAST;

305. }

306. return (true);

307. }

308.

309. return super.onKeyDown(keyCode, msg);

310. }

311.

312. /**

313. * Sets the TextView that will be used to give information (such as "Game

314. * Over" to the user.

315. * 起初不明白这个方法有什么作用。删除了以后才发现错误。Snake类会调用到它,来绑定到相应的textview.

316. */

317. public void setTextView(TextView newView) {

318. mStatusText = newView;

319. }

320.

321. /**

322. * Updates the current mode of the application (RUNNING or PAUSED or the like)

323. * as well as sets the visibility of textview for notification 324. *

325. * @param newMode

326. */

327. public void setMode(int newMode) {

328. int oldMode = mMode;

329. mMode = newMode;

330.

331. if (newMode == RUNNING & oldMode != RUNNING) {

332. mStatusText.setVisibility(View.INVISIBLE); //游戏开始后,将TextView的文字显示设置为不可见。

333. update(); //注意到,在initGame中也有update(),不过放心~多次重复 update不会影响效果的,

334. //蛇的移动有mLastMove 和 mMoveDelay 来校验。这会在Update()中体现。

335. //当然,经过实验,注释掉这个update()似乎不会影响结果噢。

336. return;

337. }

338.

339. Resources res = getContext().getResources();

340. CharSequence str = "";

341. if (newMode == PAUSE) {

342. str = res.getText(R.string.mode_pause);

343. }

344. if (newMode == READY) {

345. str = res.getText(R.string.mode_ready);

346. }

347. if (newMode == LOSE) {

348. str = res.getString(R.string.mode_lose_prefix) + mScore 349. + res.getString(R.string.mode_lose_suffix); 350. }

351.

352. mStatusText.setText(str);

353. mStatusText.setVisibility(View.VISIBLE);

354. }

355.

356. /**

357. * Selects a random location within the garden that is not curren tly covered

358. * by the snake. Currently _could_ go into an infinite loop if th

e snake

359. * currently fills the garden, but we'll leave discovery of this prize to a

360. * truly excellent snake-player.

361. * 在地图上随机的增加果子。注意苹果的位置不可以是蛇体所在噢~这里有个小bug,没有检测

362. * 产生的果子位置可能与另一个果子位置重合。

363. * 新产生的果子的坐标会增加到mApplist的数组上。

364. */

365. private void addRandomApple() {

366. Coordinate newCoord = null;

367. boolean found = false;

368. while (!found) {

369. // Choose a new location for our apple

370. //注意别产生在边框上的果子

371. int newX = 1 + RNG.nextInt(mXTileCount - 2);

372. int newY = 1 + RNG.nextInt(mYTileCount - 2);

373. newCoord = new Coordinate(newX, newY);

374.

375. // Make sure it's not already under the snake

376. boolean collision = false;

377. int snakelength = mSnakeTrail.size();

378. for (int index = 0; index < snakelength; index++) { 379. if (mSnakeTrail.get(index).equals(newCoord)) { 380. collision = true;

381. }

382. }

383. // if we're here and there's been no collision, then we h ave

384. // a good location for an apple. Otherwise, we'll circle back

385. // and try again

386. found = !collision;

387. }

388. if (newCoord == null) {

389. Log.e(TAG, "Somehow ended up with a null newCoord!"); 390. }

391. mAppleList.add(newCoord);

392. }

393.

394.

395. /**

396. * Handles the basic update loop, checking to see if we are in th

e running

397. * state, determining if a move should be made, updating the snak e's location.

398. * 刷新游戏状态。每次游戏画面的更新、游戏数据的更新,都是依靠这个update()来完成的。

399. */

400. public void update() {

401. if (mMode == RUNNING) {

402. long now = System.currentTimeMillis();

403.

404. if (now - mLastMove > mMoveDelay) { //这里是对蛇体游戏刚开始时连续的两个移动速率的控制

405. //主要作用应该是mMode变化时,对update()正确效果的保障。

406. clearTiles(); //清空界面画布。

407. updateWalls(); //重新绘制墙壁

408. updateSnake(); //对蛇的游戏逻辑的处理以及绘制409. updateApples(); //对果子的游戏逻辑的处理以及绘制410. mLastMove = now;

411. }

412. mRedrawHandler.sleep(mMoveDelay); //利用Handler进行定时刷新的控制

413. }

414.

416.

417. /**

418. * Draws some walls.

419. * 用setTile绘制墙壁

420. */

421. private void updateWalls() {

422. for (int x = 0; x < mXTileCount; x++) {

423. setTile(GREEN_STAR, x, 0);

424. setTile(GREEN_STAR, x, mYTileCount - 1);

425. }

426. for (int y = 1; y < mYTileCount - 1; y++) {

427. setTile(GREEN_STAR, 0, y);

428. setTile(GREEN_STAR, mXTileCount - 1, y);

429. }

430. }

431.

432. /**

433. * Draws some apples.

434. * 绘制果子

435. */

436. private void updateApples() {

437. for (Coordinate c : mAppleList) {

438. setTile(YELLOW_STAR, c.x, c.y);

439. }

440. }

441.

442. /**

443. * Figure out which way the snake is going, see if he's run into anything (the

444. * walls, himself, or an apple). If he's not going to die, we the n add to the

445. * front and subtract from the rear in order to simulate motion.

If we want to

446. * grow him, we don't subtract from the rear.

软件配置管理规定

软件配置管理规定? 为进一步加强软件配置管理工作,明确软件配置原则,规范软件配置流程,制定本规定。 一、配置原则? 1、软件配置遵循安全性、适用性、 2、单经济性与正版化得原则,不得配置非正版软件。? 位使用得商业软件、OEM软件、免费软件均需纳入配置管理,不得配置与工作无关得各类软件。?3、优先采用场地授权(许可)方式配置软件。 二、配置流程 1、软件使用部门根据本部门各岗位工作需要,编制岗位软件需求清单,填写《软件使用需求申请表》(附件1)。 2、信息化部门统计、汇总软件使用部门报送得《软件使用需求申请表》,对软件使用部门需要得相关软件进行统一测试与试用,综合考虑软件得价格、兼容性、安全性与售后服务等因素,确定软件选型,明确软件名称与版本.涉及使用免费软件得,更新《可使用免费软件清单》(附件2)。 3、信息化部门依据单位软件使用管理台账,梳理单位软件需求与现有软件许可得差异。单位软件许可不足得,编制《软件采购计划表》(附件3)。 4、财务部门要将软件采购纳入单位年度预算。财务、资产管理部门指导信息化部门完成软件采购。软件采购合同要明确软件名称、版本、授权方式、许可数量、使用年

限、兼容性与售后服务等要求。?5、财务、资产管理部门指导信息化部门做好软件采购相关资料管理工作,重点就是软件采购合同、软件授权证书、软件安装序列号等资料得管理工作。? 6、信息化部门负责软件使用管理日常工作。?7、单位采购得软件,因以下情况申请报废得,需经过信息化部门鉴定,严格履行资产处置报批手续:?(1)已经达到规定得最低使用年限,且无法继续使用得.?(2)未达到规定得最低使用年限,因技术进步等原因无法继续使用得。?(3)未达到规定得最低使用年限,因计算机硬件报废,且无法迁移到其她计算机上继续使用得. 8、信息化部门在单位新采购软件、报废软件与调整可使用免费软件清单后,更新《软件使用情况汇总表》(附件4)。

各大仿真软件介绍

各大仿真软件介绍(包括算法,原理) 随着无线和有线设计向更高频率的发展和电路复杂性的增加,对于高频电磁场的仿真,由于忽略了高阶传播模式而引起仿真的误差。另外,传统模式等效电路分析方法的限制,与频率相关电容、电感元件等效模型而引起的误差。例如,在分析微带线时,许多易于出错的无源模式是由于微带线或带状线的交叉、阶梯、弯曲、开路、缝隙等等,在这种情况下是多模传输。为此,通常采用全波电磁仿真技术去分析电路结构,通过电路仿真得到准确的非连续模式S参数。这些EDA仿真软件与电磁场的数值解法密切相关的,不同的仿真软件是根据不同的数值分析方法来进行仿真的。通常,数值解法分为显示和隐示算法,隐示算法(包括所有的频域方法)随着问题的增加,表现出强烈的非线性。显示算法(例如FDTD、FIT方法在处理问题时表现出合理的存储容量和时间。本文根据电磁仿真工具所采用的数值解法进行分类,对常用的微波EDA仿真软件进行论述。2.基于矩量法仿真的微波EDA仿真软件基于矩量法仿真的EDA 软件主要包括A D S(Advanced Design System)、Sonnet电磁仿真软件、IE3D和Microwave office。 2.1ADS仿真软件Agilent ADS(Advanced Design System)软件是在HP EESOF系列EDA软件基础上发展完善起来的大型综合设计软件,是美国安捷伦公司开发的大型综合设计软件,是为系统和电路工程师提供的可开发各种形式的射频设计,对于通信和航天/防御的应用,从最简单到最复杂,从离散射频/微波模块到集成MMIC。从电路元件的仿真,模式识别的提取,新的仿真技术提供了高性能的仿真特性。该软件可以在微机上运行,其前身是工作站运行的版本MDS(Microwave Design System)。该软件还提供了一种新的滤波器的设计引导,可以使用智能化的设计规范的用户界面来分析和综合射频/微波回路集总元滤波器,并可提供对平面电路进行场分析和优化功能。它允许工程师定义频率范围,材料特性,参数的数量和根据用户的需要自动产生关键的无源器件模式。该软件范围涵盖了小至元器件,大到系统级的设计和分析。尤其是其强大的仿真设计手段可在时域或频域内实现对数字或模拟、线性或非线性电路的综合仿真分析与优化,并可对设计结果进行成品率分析与优化,从而大大提高了复杂电路的设计效率,使之成为设计人员的有效工具[6-7]。2.2Sonnet仿真软件Sonnet是一种基于矩量法的电磁仿真软件,提供面

软件开发项目配置管理工具的选择

软件开发项目配置管理工具的选择 通过软件配置管理,将对软件系统中的多重版本实施系统的管理;全面记载系统开发的历史过程,包括为什么修改,谁作了修改,修改了什么;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。并对开发过程进行有效地管理和控制,完整、明确地记载开发过程中的历史变更,形成规范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护宝贵的代码资源,积累软件财富,提高软件重用率,加快投资回报…… 每一个软件项目,无论是工程类项目,还是产品类项目,都必须经历需求分析、系统设计、编码实现、集成测试、部署、交付、维护和支持的过程。在这个过程中,将生成各种各样不同的工件,包括文档、源程序、可执行代码、支持库。更可怕的是,频繁出现的变更是不可避免的,因此面向如此庞大且不断变动的信息集,如何使其有序、高效地存放、查找和利用就成为了一个突出的问题。 针对这一问题,最早的开发人员尝试过的解决办法是通过手工来实现: 1)文档:每次修改时都另存为一个新的文件,然后通过文件名进行区分,例如"XXX 软件需求说明书V1.0,XXX软件需求说明书V1.1,XXX 软件需求说明书V2.0.",并且在文件中注明每次版本变化的内容; 2) 源代码:每次要修改时就将整个工程目录复制一份,将原来的文件夹进行改名,例如"XX 项目V1.0、XX 项目1.01、.",然后在新的目录中进行修改; 但是这种方法,不仅十分繁琐,容易出错,而且会带来大量的垃圾数据。如果是团队协同开发或者是项目规模较大时,还是会造成很大的混乱。很显然,这样简陋的方法是无法应对这一问题的。后来,有人尝试从制造工业领域引入了"配置管理"这一概念,通过不懈的研究与实践,最终形成了一套管理办法和活动原则,这也就是软件配置管理。 通过软件配置管理,将对软件系统中的多重版本实施系统的管理;全面记载系统开发的历史过程,包括为什么修改,谁作了修改,修改了什么;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。并对开发过程进行有效地管理和控制,完整、明确地记载开发过程中的历史变更,形成规范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护宝贵的代码资源,积累软件财富,提高软件重用率,加快投资回报。 常见的配置管理工具 正如前面所述,由于软件配置管理过程十分繁杂,管理对象错综复杂,如果是采用人工的办法不仅费时费力,还容易出错,产生大量的废品。因此,引入一些自动化工具是十分有裨益的,这也是做好配置管理的必要条件。 正是因为如此,市场上出现了大量的自动化配置管理工具,这些工具的实现原理与基本机制

几种常用软件开发工具比较

几种常用软件开发工具比较(2008-10-27 10:11:59) 标签:职场it [转]近日和公司的系统分析员探讨了几种开发工具的特性,由其总结了下面的内容。 文章客观评价了各种开发工具的优缺点,本人把文章拿来和大家一起讨论一下,欢迎专业人事补充和指正。 一、跨平台特性 VB:无★ PB:WINDOWS家族, Solaris,Macintosh ★★★ C++ Builder/Dephi:WINDOWS家族,Linux ★★★ VC:无★ JAVA:所有能够运行JAVA虚拟机的操作系统★★★★ 二、组件技术支持 VB:COM,ActiveX ★★★ PB:COM,JavaBean,Jaguar,UserObject使用:CORBA+Acti veX ★★★ C++ Builder/Dephi:COM, ActiveX CORBA(本身自带CORBA中间件VisiBroker,有丰富向导)★★★★★ VC:COM,ActiveX,CORBA(没有任何IDE支持,是所有C编译器的功能,需要CORBA中间件支持) ★★★ JAVA:JavaBean,CORBA;ActiveX ★★★★ 三、数据库支持级别 数据访问对象: VB:DAO,ADO,RDO功能相仿;★ PB:Transaction,DwControl,可绑定任何SQL语句和存储过程,数据访问具有无与比拟的灵活性★★★★ C++ Builder/Dephi:具有包括DataSource,Table,Query,Midas,ADO在内的二十多个组件和类完成数据访问★★★ VC:同VB,但有不少类库可供使用,但极不方便,开发效率很低★★ JAVA:JAVA JDBC API,不同的IDE具有不同的组件★★ 数据表现对象: VB:DBGriD,与数据库相关的数据表现控件只有此一种,只能表现简单表格数据,表现手段单一★ PB:DataWindow对象(功能异常强大,其资源描述语句构成类似HTML的另外一种语言,可在其中插入任何对象,具有包括DBGrid在内的数百种数据表现方法),只此一项功能就注定了PB在数据库的功能从诞生的那 一天起就远远超过了某些开发工具今天的水平★★★★★ C++ Builder/Dephi:具有包括DBGrid,DBNavigator,DBEdit,DBLookupListBox在内的15 个数据感知组件,DecisionCube,DecisionQuery在内的6个数据仓库组件和包括QRChart, QRExpr在内的20多个报表组建,可灵活表现数据★★★

软件配置管理流程

配置管理流程规定 (Ver1.0) 拟制:___________________ 审核:___________________ 签发:___________________

目录 1.配置管理流程 (3) 1.1概述 (3) 1.2总体流程图 (3) 1.3软件需求分析阶段 (4) 1.4软件设计阶段 (4) 1.5制定配置管理计划 (4) 1.6配置库管理 (4) 1.6.1相关人员分配权限 (4) 1.6.2配置项 (5) 1.7版本控制 (6) 1.8变更控制 (6) 1.9配置审计 (8) 1.9.1配置审核的类别 (8) 1.9.2配置审核执行的时机 (8) 1.9.3不符合项的处理 (8) 2.0.0配置状态报告 (8) 2.0.1配置状态报告的目的 (8) 2.0.2配置状态报告记录的内容 (8) 2.0.3配置状态报告的生成 (9) 2.1.0发行管理 (9) 2.1.1交付管理 (9) 2.软件基线化规范 (10) 2.1正常开发期 (10) 2.2版本发布期 (11) 2.3项目发布期 (13) 3.Jira配置管理 (14)

1.配置管理流程 1.1概述 规范配置管理活动,确保配置项正确地唯一标识并易于存取,保证基准配置项的更改受控,明确基线状态,在贯穿整个软件生命周期中建立和维护项目产品的完整性和可追溯性。 1.2总体流程图

1.3软件需求分析阶段 参加需求分析会议,配置管理负责人记录,有关文档提交归档。如《需求分析》。 1.4软件设计阶段 参加设计阶段,为了详细制定配置管理计划。针对需求分析报告进行系统设计,配置时应说明系统设计的版本与需求分析报告版本的对应关系。设计书评审通过后,建立设计基线。 1.5制定配置管理计划 配置管理员制定配置管理计划,主要内容包括配置管理软硬件资源、配置项计划、备份计划等,审批该计划。 1.6配置库管理 配置管理员为项目创建配置库,并给每个项目成员分配权限。各项目成员根据自己的权限操作配置库。 1.6.1相关人员分配权限 项目经理: 1)与(有关负责人员)协商确定项目起始基线 2)接受配置管理计划,并按相关规定贯彻执行; 3)接受配置控制委员会的报告。 4)提出配置管理计划的修改要求; 5)提出管理管理的建议和要求。 配置管理员 1)编制配置管理计划; 2)执行配置项管理; 3)执行版本控制和变更控制方案; 4)编制配置状态报告; 5)配置库的建立和权限分配; 6)配置管理工具的日常管理与维护; 7)配置库的日常操作和维护 开发人员

16软件配置管理报告

份号:001 密级: XXXXXXXX项目 软件配置管理报告 XXXX-RPB-R01.00 XXXXXXXX公司 XXXX年XX月XX日

辑要页

文档修改记录

目次 1 范围 (1) 1.1标识 (1) 1.2系统概述 (1) 1.3文档概述 (1) 2 引用文挡 (1) 3 软件配置管理情况综述 (1) 4 软件配置管理基本信息 (1) 5 专业组划分及权限分配 (1) 6 配置项记录 (1) 7 变更记录 (2) 8 基线记录 (2) 9 入库记录 (2) 10 出库记录 (2) 11 审核记录 (2) 12 备份记录 (2) 13 测量 (2) 14 主释 (2)

1 范围 1.1 标识 本条应描述本文档所适用的系统和软件的完整标识,适用时,包括其标识号、名称、缩略名、版本号和发布号。 1.2 系统概述 本条应概述本文档所适用的系统和软件的用途。它还应描述系统与软件的一般特性;概述系统开发、运行和维护的历史;标识项目的需方、用户、开发方和保障机构等;标识当前和计划的运行现场;列出其他有关文档。 1.3 文档概述 本条应概括本文档的用途和内容,并描述与其使用有关的保密性考虑。 2 引用文挡 本章应列出引用文档的编号、标题、编写单位、修订版及日期,还应标识不能通过正常采购活动得到的文档的来源。 3 软件配置管理情况综述 本章应描述软件配置管理活动进展,与软件配置管理计划的偏差;软件配置管理活动与规程是否相符;对不符合项所采取的措施;完成软件配置管理工作的工作量等。 4 软件配置管理基本信息 本章应概述软件配置管理的基本信息,包括项目负责人、各级软件配置管理机构组成人员和负责人、软件配置管理所用的资源(如计算机、软件和工具)等。 5 专业组划分及权限分配 本章应列出项目专业组的划分、各专业组的成员以及各成员的权限分配,如专业组可分为项目负责人、开发组、测试组、质量保证组、配置管理组等,权限可分为读出、增加、替换、删除等。 6 配置项记录 本章所列出项目的所有配置项,包括配置项名称、配置项最后发布日期、配置项控制力度(控制力度可分为基线管理、非基线管理(受到管理和控制))、配置项版本变更历史、配置项变更累计次数等内容。

软件配置管理计划

软件配置管理计划 案卷号 日期 ,项目名称, 软件配置管理计划 作者: 完成日期: 签收人: 签收日期: 修改情况记录: 版本号修改批准人修改人安装日期签收人 目录 1 引 言 ..................................................................... ........ 1 1.1 目的..................................................................... 1 1. 2 定义和缩写 词 ............................................................. 1 1.3 参考资 料 ................................................................. 1 2 管 理 ..................................................................... ........ 1 2.1 机

构..................................................................... 1 2. 2 任务..................................................................... 2 2. 3 职责..................................................................... 2 2.4 接口控 制 (2) 2.5 实现..................................................................... 2 2.6 适用的标准、条例和约 定 (3) 2.6.1 指明 (3) 2.6.2 内容................................................................. 3 3 软件配置管理活 动 (4) 3.1 配置标 识 (4) 3.1.1 基线 (4) 3.1.2 代码、文 档 ........................................................... 4 3.2 配置控制 .................................................................

几种软件开发工具的区别

java、c、c++、vc、vc++、vb的区别和联系 java:分三大平台java se (j2se),java ee(j2ee),java me(j2me) java se是java ee和java me的基础 java ee是目前位置企业级开发平台中最牛的 java me是用来开发移动嵌入式程序的,例如手机游戏 java 的优点是非常适合用于开发大型企业级项目,我们曾为网通公司开发过的上千万级的项目,用的后台程序就是java ee。 java的主要领域还有开源技术,那要学的东西就太多了,比如(Spring,Ibatis,DWR,Hibernate,Tapestry等) 缺点是要学的技术太多,二是在底层开发中不行 C:经久不衰的语言 主要应用在嵌入式编程,硬件驱动程序设计中,说白了是计算机底层的编程设计 优点是可以嵌入汇编,可以直接与硬件打交道,做底层开发 缺点是在企业级开发中,几乎无用武之地 我朋友是做这个的,在长沙这种小地方,年薪也能达到10万以上 与北京的java程序员收入差不多 在北京的话,年薪20万不是大问题。 c++ :我非常钦慕的语言,又AT&T的贝尔实验室研发 主要开发工具是微软的Visual C++和Borload的BCB(Borload C++ Builder) 优点在于含有大量的库,如MFC,可直接调用windows库函数干很多事情 其中的消息处理机制令我感觉尤为经典 缺点是,要想精通真不容易 主要领域一是做桌面程序,像QQ,迅雷这种桌面软件 领域二是做游戏后台开发,大部分游戏(包括魔兽等)后台语言就是使用C++ 精通的话,收入和C程序员差不多 vc :刚说过了,vc全名是(Microsoft Visual C++) 是微软研发的一种开发C++的开发工具(IDE) vc++:同vc 注意c++是语言,vc++是工具,是一门使用c++语言的工具,记清楚,以后不要问这样肤浅的话。 以上几种,对比一下学java,学的不仅仅是技术,而是一种思想,架构项目的思想 所以java是培养架构师,培养System Designer,Project Manager的 c语言和c++只能培养技术专家,资深程序员 vb:曾经很流行的一种桌面程序开发技术 微软研发的(Visual Basic)是一种工具,用的语言是Basic Basic是比尔盖兹发家致富的一大工具

软件配置管理报告

份号:001密级: XXXXXXX项目 软件配置管理报告 XXXX-RPB-R01.00 XXXXXXXX 公司 XXXX 年XX月XX日

辑要页

摘要: 主题词:

文档修改记录

1范围............................................................................................... 1.1标识.......................................................................................... 1.2系统概述...................................................................................... 1.3文档概述......................................................................... 1........... 2引用文挡........................................................................................... 3软件配置管理情况综述............................................................................. 4软件配置管理基本信息............................................................................. 5专业组划分及权限分酉己.......................................................................... 6配置项记录......................................................................................... 7变更记录........................................................................................... 8基线记录........................................................................................... 9入库记录...........................................................................................

电力系统仿真软件介绍

电力系统仿真软件 电力系统仿真软件简介 一、PSAPAC 简介: 由美国EPRI开发,是一个全面分析电力系统静态和动态性能的软件工具。 功能:DYNRED(Dynamic Reduction Program):网络化简与系统的动态等值,保留需要的节点。 LOADSYN(Load Synthesis Program):模拟静态负荷模型和动态负荷模型。 IPFLOW(Interactive Power Flow Program):采用快速分解法和牛顿-拉夫逊法相结合的潮流分析方法,由电压稳态分析工具和不同负荷、事故及发电调度的潮流条件构成。 TLIM(Transfer Limit Program):快速计算电力潮流和各种负荷、事故及发电调度的输电线的传输极限。 DIRECT:直接法稳定分析软件弥补了传统时域仿真工作量大、费时的缺陷,并且提供了计算稳定裕度的方法,增强了时域仿真的能力。 LTSP(Long Term Stability Program):LTSP是时域仿真程序,用来模拟大型电力系统受到扰动后的长期动态过程。为了保证仿真的精确性,提供了详细的模型和方法。 VSTAB(Voltage Stability Program):该程序用来评价大型复杂电力系统的电压稳定性,给出接近于电压不稳定的信息和不稳定机理。为了估计电压不稳定状态,使用了一种增强的潮流程序,提供了一种接近不稳定的模式分析方法。 ETMSP(Extended Transient midterm Stability Program):EPRI为分析大型电力系统暂态和中期稳定性而开发的一种时域仿真程序。为了满足大型电力系统的仿真,程序采用了稀疏技术,解网络方程时为得到最合适的排序采用了网络拓扑关系并采用了显式积分和隐式积分等数值积分法。 SSSP(Small-signal Stability Program):该程序有助于局部电厂模式振荡和站间模式振荡的分析,由多区域小信号稳定程序(MASS)及大型系统特征值分析程序(PEALS)两个子程序组成。MASS程序采用了QR变换法计算矩阵的所有特征值,由于系统的所有模式都计算,它对控制的设计和协调是理想的工具;PEALS使用了两种技术:AESOPS算法和改进Arnoldi 方法,这两种算法高效、可靠,而且在满足大型复杂电力系统的小信号稳定性分析的要求上互为补充。 二、EMTP/ATP 简介: EMTP是加拿大H.W.Dommel教授首创的电磁暂态分析软件,它具有分析功能多、元件模型全和运算结果精确等优点,对于电网的稳态和暂态都可做仿真分析,它的典型应用是预测电力系统在某个扰动(如开关投切或故障)之后感兴趣的变量随时间变化的规律,将EMTP 的稳态分析和暂态分析相结合,可以作为电力系统谐波分析的有力工具。 ATP(The alternative Transients Program)是EMTP的免费独立版本,是目前世界上电磁暂态分析程序最广泛使用的一个版本, 它可以模拟复杂网络和任意结构的控制系统,数学模型广泛,除用于暂态计算,还有许多其它重要的特性。ATP程序正式诞生于1984年,由Drs.

软件配置管理计划示例

软件配置管理计划示例 作者:赵文锋计划名CADCSC软件配置管理计划 项目名中国控制系统CAD工程化软件系统 项目委托单位 代表签名年月日 项目承办单位 代表签名年月日 1 引言 1.1 目的 本计划的目的在于对所开发的CADCSC软件规定各种必要的配置管理条款,以保证所交付的CADCSC软件能够满足项目委托书中规定的各种原则需求,能够满足本项目总体组制定的且经领导小组批准的软件系统需求规格说明书中规定的各项具体需求。 软件开发单位在开发本项目所属的各子系统(其中包括为本项目研制或选用的各种支持软件)时,都应该执行本计划中的有关规定,但可以根据各自的情况对本计划作适当的剪裁,以满足特定的配置管理需求。剪裁后的计划必须经总体组批准。 1.2 定义 本计划中用到的一些术语的定义按GB/T 11457 和GB/T 12504。 1.3 参考资料 ◆GB/T 11457 软件工程术语 ◆GB 8566 计算机软件开发规范 ◆GB 8567 计算机软件产品开发文件编制指南 ◆GB/T 12504 计算机软件质量保证计划规范 ◆GB/T 12505 计算机软件配置管理计划规范 ◆CADCSC 软件质量保证计划 2 管理

2.1 机构 在本软件系统整个开发期间,必须成立软件配置管理小组负责配置管理工作。软件配置管理小组属项目总体组领导,由总体组代表、软件工程小组代表、项目的专职配置管理人员、项目的专职质量保证人员以及各个子系统软件配置管理人员等方面的人员组成,由总体组代表任组长。各子系统的软件配置管理人员在业务上受软件配置管理小组领导,在行政上受子系统负责人领导。软件配置管理小组和软件配置管理人员必须检查和督促本计划的实施。各子系统的软件配置管理人员有权直接向软件配置管理小组报告子项目的软件配置管理情况。各子系统的软件配置管理人员应该根据对子项目的具体要求,制订必要的规程和规定,以确保完全遵守本计划规定的所有要求。 2.2 任务 在软件工程化生产的各个阶段中,与本阶段的阶段产品有关的全部信息在软件开发库存放,与前面各个阶段的阶段产品有关的信息则在软件受控库存放。在研制与开发阶段的阶段产品的过程中,开发者和开发小组长有权对本阶段的阶段产品作必要的修改;但是如果开发者或开发小组长认为有必要个性前面有关阶段的阶段产品时,就必须通过项目的配置管理小组办理正规的审批手续。因此,软件开发库属开发这个阶段产品的开发者管理,而软件受控库由项目的配置管理小组管理。软件经过组装与系统测试后,应该送入软件产品库,如欲对其修改,必须经软件配置管理小组研究同意,然后报项目总体组组长批准。关于软件配置要进行修改时的具体审批手续,将在第条中详细规定。 2.3 职责 在软件配置管理小组中,各类人员要互相配合、分工协作,共同担负起整个项目的软件配置管理工作。其中各类人员的分工如下: A.组长是总体组代表,他对有关软件配置管理的各项工作全面负责,特别要对更改建议的审批和评审负责; B.软件工程小组组长负责监督在软件配置管理工作中认真执行软件工程规范; C.项目的专职配置管理人员检查在作配置更改时的质量保证措施; D.各子系统的配置管理人员具体负责实施各自的配置管理工作,并参与各子系统的功能配置检查和物理配置检查;

模拟仿真软件介绍

模拟仿真软件介绍 模拟仿真技术发展至今,用于不同领域、不同对象的模拟仿真软件林林总总,不可胜数,仅对机械产品设计开发而言,就有机构运动仿真软件,结构仿真软件,动力学仿真软件,加工过程仿真软件(如:切削加工过程仿真软件、装配过程仿真软件、铸造模腔充填过程仿真软件、压力成型过程仿真软件等),操作训练仿真软件,以及生产管理过程仿真软件,企业经营过程仿真软件等等。这里仅以一种微机平台上的三维机构动态仿真软件为例,介绍模拟仿真软件的结构和功能。 DDM(Dynamic Designer Motion)是DTI(Design Technology International)公司推出的、工作于AutoCAD和MDT平台上的微机全功能三维机构动态仿真软件,包含全部运动学和动力学分析的功能,主要由建模器、求解器和仿真结果演示器三大模块组成(见图1)。 1.DDM建模器的功能 1)设定单位制。 2)定义重力加速度的大小和方向。 3)可以AutoCAD三维实体或普通图素(如直线、圆、圆弧)定义运动零件。 4)可以定义零件质量特性:

图1 DDM仿真软件模块结 ①如果将三维实体定义为零件,可以自动获得其质量特性。 ②如果用其他图素定义零件,则可人工设定质量特性。 5)可以定义各种铰链铰链用于连接发生装配关系的各个零件,系统提供六种基本铰链和两种特殊铰链。 基本铰链: ①旋转铰——沿一根轴旋转。 ②平移铰——沿一根轴移动。 ③旋转滑动铰——沿一根轴旋转和移动。 ④平面铰——在一个平面内移动并可沿平面法线旋转。 ⑤球铰——以一点为球心旋转。 ⑥十字铰——沿两根垂直轴旋转。 特殊铰链:

软件项目配置管理系统计划清单指导应用清单

中国核电集团 CHINA GUANGDONG NUCLEAR POWER GROUP 记录文件 项目编号 项目名称 CGN-IT-C3-A12-01 软件项目配置管理计划 版本编写审核审定批准生效时间A/0 注:如无受控文件标识(蓝色印章)则为非有效版本,以受控文件规定为准。 此文件属中国核电集团所有,未经许可,不得以任何方式外传。

修改记录页

目录 (一)基本信息 (4) (二)角色与职责 (4) (三)配置管理资源 (5) (四)权限分配 (5) (五)配置项计划 (6) (六)配置库基线 (7) (七)配置库备份计划 (8) (八)配置库状态报告 (8) (九)配置审核 (9) (十)审批意见 (9)

配置管理计划(一)基本信息 项目名称: 项目代号: 立项时间: 预计主要项目阶段有: 配置项目命名规则依据: (二)角色与职责

(三)配置管理资源 本项目使用配置管理工具对各配置项进行存储、版本管理,并提供更新、检索和历史版本的恢复。 提示: (1)配置管理员确定本项目的配置管理软件。例如采用Microsoft公司的TFS或者IBM公司的clearecase。 (2)配置管理员根据所采用的配置管理软件,确定计算机资源(考虑存、外存、CPU等)。 预计建库申请日期: 预计建库日期: 预计工作库需空间: (四)权限分配 项目成员访问配置库的ID及PASSWORD默认设置为与域的设置相同。 若个人要求另行设置的,由项目组配置管理员负责汇总后,提交给高级配置管理员调整设置。

(五)配置项计划 填写上面表格过程中,需要对照成果物列表逐项填写。

电磁场仿真软件简介

电磁场仿真软件简介 随着电磁场和微波电路领域数值计算方法的发展,在最近几年出现了大量的电磁场 和微波电路仿真软件。在这些软件中,多数软件都属于准3维或称为 2.5维电磁仿真软件。例如,Agilent公司的ADS(Advanced Design System)、AWR公司的Microwave Office、Ansoft公司的Esemble、Serenade和CST公司的CST Design Studio等。目前,真正意义上的三维电磁场仿真软件只有Ansoft公司的HFSS、CST公司的Mafia、CST Microwave Studio、Zeland公司的Fidelity和IMST GmbH公司的EMPIRE。从理论上讲,这些软件都能仿真任意三维结构的电磁性能。其中,HFSS (HFSS是英文高频结构仿真器(High Frequency Structure Simulator)的缩写)是一种最早出 现在商业市场的电磁场三维仿真软件。因此,这一软件在全世界有比较大的用户群体。 由于HFSS进入中国市场较早,所以目前国内的电磁场仿真方面HFSS的使用者众多,特别是在各大通信技术研究单位、公司、高校非常普及。 德国CST公司的MicroWave Studio(微波工作室)是最近几年该公司在Mafia 软件基础上推出的三维高频电磁场仿真软件。它吸收了Mafia软件计算速度快的优点,同时又对软件的人机界面和前、后处理做了根本性的改变。就目前发行的版本而言, CST的MWS的前后处理界面及操作界面比HFSS好。Ansoft也意识到了自己的缺点,在刚刚推出的新版本HFSS(定名为Ansoft HFSS V9.0)中,人机界面及操作都得到 了极大的改善。在这方面完全可以和CST媲美。在性能方面,两个软件各有所长。在 速度和计算的精度方面CST和ANSOFT成绩相差不多。值得注意的是,MWS采用的理论基础是FIT(有限积分技术)。与FDTD(时域有限差分法)类似,它是直接从Maxwell 方程导出解。因此,MWS可以计算时域解。对于诸如滤波器,耦合器等主要关心带内 参数的问题设计就非常适合;而HFSS采用的理论基础是有限元方法(FEM),这是一种微分方程法,其解是频域的。所以,HFSS如果想获得频域的解,它必须通过频域转换 到时域。由于,HFSS是用的是微分方法,所以它对复杂结构的计算具有一定的优势。 另外,在高频微波波段的电磁场仿真方面也应当提及另一个软件:ANSYS 。ANSYS是一个基于有限元法(FEM)的多功能软件。该软件可以计算工程力学、材料力 学、热力学和电磁场等方面的问题。它也可以用于高频电磁场分析(应用例如:微波辐 射和散射分析、电磁兼容、电磁场干扰仿真等)。其功能与HFSS和CST MWS类似。但由于该软件在建模和网格划分过程中需要对该软件的使用规则有详细的了解,因此, 对一般的工程技术人员来讲使用该软件有一定困难。对于高频微波波段通信、天线、器件封装、电磁干扰及光电子设计中涉及的任意形状三维电磁场仿真方面不如HFSS更专业、更理想。实际上,ANSYS软件的优势并不在电磁场仿真方面,而是结构静力/动力分析、热分析以及流体动力学等。但是,就其电磁场部分而言,它也能对任意三维结构 的电磁特性进行仿真。 虽然,Zeland公司的Fidelity和IMST GmbH公司的EMPIRE也可以仿真三维结

软件配置管理计划模板

卷号DEPLOY 卷内编号DEPLOY005 密级组内 HD20090917SR005 通用型行政审批服务协同管理平台 配置管理计划 1.2 项目承担部门:java第四组 撰写人(签名):区允文 完成日期:2010年8月4日 本文档使用部门:■主管领导■项目组 □客户(市场)□维护人员□用户 评审负责人(签名):江威龙 评审日期:2010/8/4

目录 1.简介4 1.1目的4 1.2范围4 1.3定义、首字母缩写词和缩略语4 1.4参考资料4 1.5概述4 2.项目配置4 2.1组织结构4 2.2职责和接口5 2.3工具、环境和基础设施5 3.配置管理活动6

3.1配置库6 3.1.1配置库架构6 3.1.2权限分配7 3.1.3配置库层次及开发活动说明:8 3.2配置标识9 3.2.1标识方法9 3.2.2项目基线10 3.3配置项11 3.4配置和变更控制11 3.4.1变更请求的处理和审批11 3.4.2变更控制委员会 (CCB)11 3.4.3变更过程中的活动11 3.4.4变更过程中的变更请求状态12 3.4.5保存变更历史记录13 3.4.6变更请求中受影响配置项的变更13 3.5配置状态统计14 3.5.1项目介质存储和发布进程14 3.5.2报告和审计14 4.里程碑15 5.培训和资源15 6.分包商和厂商软件控制15 7.附录15

配置管理计划 1.简介 1.1目的 为了使项目相关的各种资源便于查看,修改,不至于凌乱;为了让各个开发人员方便高效地协同合作;为了项目的版本便于管理,作出此配置管理计划。 1.2范围 项目进行中所得出的所有工件都要遵守此计划,包括文档以及源代码,以及硬件。 1.3定义、首字母缩写词和缩略语 CM:配置管理。 CCB:变更控制委员会。 CI:配置项。包含文档、程序。 Baseline:基线。 CR:变更请求。 PCA:物理审计。 FCA:功能审计。 1.4参考资料 《华南农业大学软件学院实训讲义》 《华南农业大学项目阶段评审工件》 1.5概述 此文档对项目开发过程中的配置方面作出约束,开发以及变更都要按照要求来做。 2.项目配置 2.1组织结构

流行的软件开发工具有哪些

不同的领域需要不同的图软件开发工具,这需要根据大家的需求不懂来决定。下面来跟大家介绍一些流行的软件开发工具。 1. 桌面程序:Java、C++、C#、VB、C均可。 2. 网站服务器端开发:JSP(Java语法)、PHP、ASP(C#语法)、Web App 框架等 3. 网站客户端:HTML、CSS、Javascript、Flash等等 4. 智能手机程序:安卓使用Java,iPhone使用Objective-C 5. 底层、工具开发:C、C++ 6. 多功能脚本程序:Python、Perl、Ruby等等 7. 人工智能:Prolog、PDDL 8. 工业控制:C、PLC、汇编 9. 通用应用层数据交换处理技术:标记语言XML/XPATH/XSLT、JSON、YAML等等

软件开发平台包括基础开发平台和快速开发平台,基础开发平台是从0开始写代码,而快速开发平台一般是做好了一些现成中间件,节省一定代码量。也有完全不用写代码的,直接通过配置开发软件的快速开发平台。 1、.NET底层的:天纵开发平台 2、JAVA底层的:普元开发平台、起步开发平台 3、EXCEL表格类:勤哲、云表 黑帽科技是一家集软件定制开发、软件外包、智慧信息化建设的软件开发服务商,黑帽科技拥有成熟的APP定制开发、小程序定制开发、软件项目外包开发平台。是专业的互联网产品解决方案提供商,可提供互联网产品咨询、网站设计、网站开发、手机应用开发、移动应用开发。黑帽科技为政府、企业以及团体提供行业解决方案和产品工程解决方案以及相关软件产品、平台及服务。我们通过规范的软件服务管理流程、精确的需求响应、迅捷的软件交付能力,全面构造公司的核心竞争力,并打造一支专业的技术服务团队,成功服务于数百家用户,赢得了广大客户的尊重和认可。 想要了解更多详情内容请拨打联系电话或登录浙江黑帽科技有限公司官网

软件配置管理解决方案

软件配置管理解决方案 目的: ● 通过使用配置管理软件,遵守版本控制、变更控制等规程,保证所有配置项的完整性和可跟踪性。 范围: ● 适用于公司的软件开发项目,它规定了软件配置管理活动的具体规程及其工作产品。 角色与职责: ● 配置管理员:编制项目配置管理计划;创建并维护配置库。 ● 配置变更控制委员会(SCCB):审批配置变更申请。 ● 软件开发组成员:在权限内使用配置管理工具操作配置库。 ● 项目SQA人员:审计配置管理活动的规范性。 进入准则: ● 项目计划已制定。 ● 项目软件过程已定义

● 配置管理员和SCCB人员已确定。 输入: ● 项目计划 ● 项目软件过程 结束准则: ● 对项目配置库的操作和管理持续到项目结束。 ● 只要存在用户使用配置管理就要进行。 输出: ● 配置管理计划 ● 产品配置库 ● 软件基线审计报告 主要活动: 1 在项目早期(在项目计划初稿后,并与项目计划一起评审)编制项目配置管理计划。 ● 确定项目配置管理员。 ● 项目经理和项目配置管理员共同指定项目组的SCCB。 ● 项目经理与项目配置管理员按确定的软件生命周期,识别出项目要进行控制的软件配置项和纳入配 置管理的日期。 ● 项目经理与项目配置管理员依据项目定义软件过程,共同确定项目的基线,并标识每个基线的配置项。 ● 项目经理确认由项目配置管理员制定的在软件生命周期各个阶段配置项的使用权限清单。 ● 项目配置管理员按照《配置管理计划模板》制定项目的SCM计划。 ● 项目配置管理员根据项目所使用的开发工具确定项目使用的配置管理工具。 ● 项目配置管理员根据项目计划的变动,适时调整项目的SCM计划。具体规程见《项目跟踪与监控过程》计划变更相关步骤。 ● 由项目主管主持,项目经理、公司配置管理主管、项目配置管理员、软件工程组、软件相关组参加对配置管理计划书的评 审。具体规程参见《同行评审过程》。 2 按照配置管理计划,进行项目的配置库管理。 ● 项目配置管理员规划、建立项目的目录结构。该结构支持对配置项的存储和检索功能。 ● 项目配置管理员根据项目的规模,规划和配置管理工具相关的配置库结构。 ● 项目配置管理员依据经项目经理确认的权限清单对目录结构进行权限分配,以达到在相关组之间或 配置库内部之间进行共

各种计算电磁学方法比较和仿真软件

各种计算电磁学方法比较和仿真软件 各种计算电磁学方法比较和仿真软件微波EDA 仿真软件与电磁场的数值算法密切相关,在介绍微波EDA 软件之前先简要的介绍一下微波电磁场理论的数值算法。所有的数值算法都是建立在Maxwell 方程组之上的,了解Maxwell 方程是学习电磁场数值算法的基础。计算电磁学中有众多不同的算法,如时域有限差分法(FDTD )、时域有限积分法(FITD )、有限元法(FE)、矩量法(MoM )、边界元法(BEM )、谱域法(SM)、传输线法(TLM )、模式匹配法(MM )、横向谐振法(TRM )、线方法(ML )和解析法等等。在频域,数值算法有:有限元法( FEM -- Finite Element Method)、矩量法(MoM -- Method of Moments ),差分法( FDM -- Finite Difference Methods ),边界元法( BEM --Boundary Element Method ),和传输线法 ( TLM -Transmission-Line-matrix Method )。在时域,数值算法有:时域有限差分法( FDTD - Finite Difference Time Domain ),和有限积分法( FIT - Finite Integration Technology )。这些方法中有解析法、半解析法和数值方法。数值方法中又分零阶、一阶、二阶和高阶方法。依照解析程度由低到高排列,依次是:时域有限差分法(FDTD )、传输线法(TLM )、时域有限积分法(FITD )、有限元法(FEM )、矩量法(MoM )、线方法(ML )、边界元法(BEM )、谱域法(SM )、模式匹配法

相关主题
文本预览
相关文档 最新文档