Real-Time Scheduler Simulator - A Software Development Project in C++
MetadataShow full item record
In this project, a software called the Scheduler Simulator was created to simulatetask executions given a specified real-time scheduler. Existing similar simulatorswere examined and evaluated, reusable functionality best fitted to be adoptedby this projects simulator software was identified. Whereas all the existing solutionshave strengths and weaknesses, the following properties were extracted:limit the end-users responsibilities, create thorough documentation, use Ganttcharts with clearly marked deadline misses, and provide relevant and readablesimulation results. Best practices related to software development, such as softwaredevelopment methods, documentation development and software design, have beenresearched. In addition, other relevant theory related to real-time systems andschedulers was also examined. To develop the Scheduler Simulator, the best practiceswere evaluated. For the Scheduler Simulator project, the development wasconducted using mainly iterative and incremental methods, influenced by sprintsfrom Scrum development, emphasizing the flexibility and simplicity described byAgile development methodologies.The Scheduler Simulator allows a user to implement new scheduling policies,create and generate task sets and conduct simulations to generate relevant reports.The resulting reports contain CPU idle time, the number of reached and misseddeadlines, the number of completed tasks, and a Gantt chart, visually presentingthe simulated task executions. Four schedulers were implemented in the software:FIFO, RR, RM and EDF. A series of test runs of the Scheduler Simulator wereconducted and evaluated. The simulator behaved as expected. It was discoveredthat when simulating more than 20 tasks, the Gantt chart overshot the page size ofthe result report. As a reaction to this, the simulator was altered to not produceGantt charts for simulations where the task set exceeded 20 tasks. The documentationcreated for the system consists of three main parts; one for requirements,one describing the architectural design of the software, and one for the users. "Theusers" here refers to both maintenance personnel and end-users.As the project was conducted by one person, the social benefits from usingScrum and other Agile development methodologies diminished greatly. Instead, thedevelopment work converged towards a waterfall shaped structure, as a sequentialwork model can be more appealing and natural when working alone than a paralleland cyclic model. The iterative way of working still helped the developer to learnfrom mistakes along the way and create a functional system.