Welcome to the course homepage of DIT112 V19 Mini Project: Systems Development.
The course is given by the Department of Computer Science and Engineering at Campus Lindholmen during Study Period 4, 2019. You find information about the course below.
Ivica Crnkovic (firstname.lastname@example.org)
Dimitrios Platis (email@example.com)
The course introduces a project, based on a problem based learning approach, guided by realistic and challenging customer requirements. The project course is organized as group work. Based on an idea, the students shall deliver a requirement and design specification of the system to be developed. The system, that consist of an already existing hardware and software platform shall be controlled by software.
The students shall implement the software part based on the design, test and demonstrate the results. In this course the students learn to analyze the demands of a customer, capture these in a software requirements specification including quality requirements, and to design and develop software from this analysis. The students train their skills in requirements analysis, software design, quality analysis, programming, and testing.
During the work the students will utilize modern techniques, methods and approaches for system and software development and project management. The system aspects integrated in the software implementation will be in the focus of the project.
Your customer (Dimitris) has developed a software library that enables its users to control RC and autonomous vehicles. He wants you to develop a proof of concept that demonstrates the library's capabilities, by integrating the software to a hardware platform within a multi-tier system. This will show potential buyers the wide range of problems they can solve using the library.
You will be assigned to a team of developers (fellow students) and tasked to implement a system which will satisfy the business needs of your customer. You will be expected to work in an Agile manner, abiding by software engineering best practices. On a weekly basis, there will be sprint demos in front of the classroom as well as planning meetings with your Product Owner (teaching assistant) and customer.
In this course the students will learn how to design and develop software, and to manage
projects, using the following principles:
- Define software in a system context
- Describe system requirements, system and software design, and relations between the requirements and software design
- Organize software development teams and conduct software development projects,
using modern software engineering methodologies such as agile development
- Elicit, analyze, and document requirements in the form of a requirements specification
- Design software and document outcome of design work
- Implement software according to a documented software design
- Reflect on integration between software and non-software components
- Evaluate traceability between requirements, design, and implementation artefacts
After passing the course, the students will be able to participate in agile projects, use test and quality driven development, analyze the software and system requirements.
- Ivica Crnkovic (Examiner)
- Dimitrios Platis (Course coordinator)
- Oliver Manzi - firstname.lastname@example.org - (Hardware responsible)
- Ranim Khojah - email@example.com - (Hardware responsible)
- Ilja Pavlov - firstname.lastname@example.org
- M Nazeeh Alhosary - email@example.com
- Jacob Olsson - firstname.lastname@example.org
Teaching assistants will act as product owners (PO) to the project groups. Each group will be assigned to 2 teaching assistants for redundancy, as shown below:
- Group 1 - Oliver Manzi, M Nazeeh Alhosary
- Group 2 - Jacob Olsson, Ilja Pavlov
- Group 3 - M Nazeeh Alhosary, Jacob Olsson
- Group 4 - Ranim Khojah, M Nazeeh Alhosary
- Group 5 - Ilja Pavlov, Oliver Manzi
- Group 6 - Ilja Pavlov, M Nazeeh Alhosary
- Group 7 - Ranim Khojah, Jacob Olsson
- Group 8 - M Nazeeh Alhosary, Ilja Pavlov
- Group 9 - Jacob Olsson, Ilja Pavlov
- Group 10 - Jacob Olsson, M Nazeeh Alhosary
- Group 11 - Ilja Pavlov, Jacob Olsson
The course will be examined by a the delivered system, a group and a personal report, active participation to the course and the group activities and a series of weekly tasks. The following elements will be taken into consideration when grading:
- Timely delivery of all submissions (including weekly backlog refinement tasks)
- Two-tier system where a client with a GUI receives/sends data to/from the miniature vehicle that provides adequate value to the customer
- Single-tier system could be considered (but not suggested) provided the value it provides is intricate enough
- Basic requirements tracing (i.e. Requirements are documented and one can more or less loosely understand how they are implemented via the code commits)
- Accurate, valuable and continuously improving Features / Requirements / Milestones
- Traceability from requirements to user stories and code commits and vice versa
- Automated testing / continuous integration
- Pristine development process, documentation, modeling, work tracking
- Technically advanced deliverable system
In the DIT112 course we will fully utilize GitHub's tracing features, specifically the issues, the labels, the milestones, the wiki pages and the project board.
- Issues will be representing bugs or user stories. They can be referenced via commit messages.
- Labels will be representing sprints. For example, a label called "Sprint 2" should be added to all stories planned to be worked on during Sprint 2. Using labels for other purposes (e.g. showing what type of work is included in an issue) is also allowed.
- Milestones should be representing features and each story should be added to a feature/milestone. They should contain a short high-level description and a link to a version controlled wiki page with the full-set of related requirements. A story can only belong to one sprint, as a story can only belong to one feature. If you think that a story belongs to two features then it is very possible that you need to slice down your features and their common part to be a new feature of its own.
- Wiki pages
- Wiki pages should be used to describe features/milestones and link back to them. They can also optionally be used for other documentation purposes.
- Project board
- The project board should be used for illustrating the current progress of the team.
The above setup enables the development team to have two-way traceability between the code and the requirements as well as enable every stakeholder to monitor the current progress.