中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

現代軟件工程 結對編程 (II) 電梯調度

發布時間:2020-06-11 07:45:11 來源:網絡 閱讀:188 作者:鄒欣 欄目:軟件技術

現代軟件工程 結對編程 (II) 電梯調度

Pair Project II: Elevator Scheduler

<現代軟件工程> 的結對編程作業,  作者: 鄒欣

 

怎樣設計API?  怎樣從不同角度考慮需求?  怎樣對不同的設計進行評估? 

怎樣做設計一個測試框架來測試眾多解決方案?  如何驅動這樣的測試框架?

怎樣和伙伴合作,  快速有效地完成這些挑戰?

 

這就是我們這次小項目要練習的。

 

 

Design and implement an Elevator Scheduler to aim for both correctness and performance, in managed code.

Skills to practice:

  1. a) Requirement Analysis

    需求分析   

  1. b) High level design (interface, information hiding, loose coupling)

    程序API 設計,  信息隱藏, 耦合

 

  1. c) Test Framework Design

    設計測試框架, 模擬測試數據

  1. d) Implementation skills

    設計的實現

 

  1. e) Algorithm design

    算法設計

1. Background

 

Imagine we’re building a tall office building,   We need to have design an efficient elevator system to carry people to their destinations.    the following is a example of the configuration about elevators:

 

  • The Building has 21 floors, 4 elevators, many passengers use these elevators everyday (passenger weight: average 70kg. max 120kg, min 40g).

  • Other constant data: Elevator speed, door open/close time, passenger time for going in/out of the elevator. We can make reasonable assumptions about these.

  • The building has 21 floors, from floor 0, 1, ... to 20. Floor 0 is the underground parking level, floor 1 is the lobby level. Most people come in/out the building via these 2 floors.

Elevator name

Service floor list

Passenger limit

Weight limit

1

All floors

10

800 kg

2

floor 1..10

10

800 kg

3

floor 0,1,2..10

20

1600 kg

4

floor 0,1, 11-20

20

2000 kg

*note: in our test program, the configuration of elevators can be changed,  the scheduler need to read the configuraiton at the initialization time via the API.

2. Requirement to Student pairs

  1. 2.1 Each pair of students will design a set of interface and class definition so that an algorithm provider can provide his/her implementation to the “elevator scheduler” class.

  2. 2.2 We will discuss the student’s submission in the class,  pick the best design.

  3. 2.3 after the API is decided,  we will focus on the design of test framework

  4. 2.4  1-2 volunteers will implment a “test framework” app,  and the rest student pairs will each pair will focus on the implementation of the “elevator scheduler” program.

 

consideration for the API:

  1. a) how to keep it simple.

  2. b) how to provide enough info for the scheduler to finish the scheduling work,  without knowing too much info?

  3. c) which component is actually driving the elevator?

  4. d) how to regulate proper passenger behavor?  (e.g. if a passenger needs to go to floor 3 from floor 20, but the current elevator can’t go there directly, what should the passenger do?)

 

consideration for the test framework:

  1. a) how to make sure it generates the same result for the same test cases on a given scheduler?

  2. b) how to check the correctness of the scheduler?

  3. c) how to prevent “cheating” by the scheduler? 

  4. d) how to emulate the “real world” efficiently?  (e.g. if 2 passengers are 30 minutes away, does the test framework need to wait for 30 minutes?)

 

TA will come up with a consistent testing model to test your program according to the “rush hour” scenario (see below), and record the total travel time of all passengers.

You (student pair) have:

 

2.5 Explanation of BUS program:

We can have a worst case algorithm called “bus”. This algorithm treats an elevator as a bus, it goes from bottom to top, stops at every floor, open the door, to let people in and out, then close the door and move on. After it reaches the top floor, it will go down. This algorithm can serve all requests, but it’s apparently not the fastest algorithm.

Your code is required to be managed code (C#, managed C++, etc).

 

  • It has to generate 0 (zero) Code Analysis warnings and errors. ( link for Code Analysis in Visual Studio)

  • It has to be correct,  all passengers can reach their destinations

  • It should be as fast as possible. 

  • It should not have randomness in scheduling (this is to avoid randomness in testing).

Score guideline: TA will evaluate the “average total travel time” for all passengers in the same test case, the lower, the better. If your performance is lower than “bus” solution, you get 0 points; if your program can’t deliver any passenger to the correct destination, you get 0 points.

 

One hint about elevator scheduling: When total weight is within 40 kg of the max limit, or the number of passengers is already at maximum, the elevator doesn’t need to stop for more external requests.

The elevator scheduler program doesn’t know how many passengers are waiting on each floor, it doesn’t know how many passengers will show up either. This is the same with the real world situation.

3. Testing

TA will simulate a “rush hour” test. The “rush hour” test is to simulate the come-to-work and leave-work scenario in a business building, which has the following 2 parts (they can be run next to each other).

20 people going thru random floors within 5 minutes.

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芜湖县| 正阳县| 滕州市| 饶平县| 杂多县| 卢龙县| 巴青县| 九龙县| 五莲县| 永兴县| 天台县| 岫岩| 兴山县| 滦南县| 邢台市| 定远县| 延吉市| 潍坊市| 长岭县| 玛曲县| 秦安县| 吴江市| 南郑县| 裕民县| 永宁县| 龙海市| 施秉县| 治多县| 牟定县| 句容市| 鹤山市| 广汉市| 房产| 靖安县| 柘荣县| 乌恰县| 正宁县| 河源市| 隆林| 辽宁省| 元阳县|