Course Syllabus

Welcome

Welcome to the course homepage of DIT112 V20 Mini Project: Systems Development.

The course is given by the Department of Computer Science and Engineering at Campus Lindholmen during Study Period 4, 2020. You find information about the course below.

Course Examiner

Ivica Crnkovic (ivica.crnkovic@chalmers.se)

Course Coordinator

Dimitrios Platis (dimitris@platis.solutions)

Course evaluation results

The results from the course evaluation questionnaire is now published. 

Protocol: https://canvas.gu.se/courses/30372/files/folder/Course%20evaluation%20results?preview=3418378

Results: https://canvas.gu.se/courses/30372/files/folder/Course%20evaluation%20results?preview=3418381


CSE Student Pages

Course Syllabus

Literature list

Schedule

Course PM

Course Description

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.

Theme

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.

Learning outcomes

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 artifacts

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.

Teachers

  • Ivica Crnkovic (Examiner)
  • Dimitrios Platis (Course coordinator)

Teaching Assistants

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 - Shab Pompeiano, Konrad Otto
  • Group 2 - Shab Pompeiano, Hannah Maltkvist
  • Group 3 - Shab Pompeiano, Osman Osman
  • Group 4 - Shab Pompeiano Jonatan Vaara
  • Group 5 - Jonatan Vaara, Konrad Otto
  • Group 6 - Jonatan Vaara, Hartmut Fischer
  • Group 7 - Jonatan Vaara, Hannah Maltkvist
  • Group 8 - Osman Osman, Konrad Otto
  • Group 9 - Osman Osman, Hartmut Fischer
  • Group 10 - Osman Osman, Hannah Maltkvist
  • Group 11 - Hartmut Fischer, Hannah Maltkvist

Examination

The course will be examined by the delivered system, a group and a personal report, active participation to the course and the group activities and a series of weekly tasks. As a group, the following elements will be taken into consideration when grading:

  • G
      • 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)
  • VG
    • 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

Grading is individual but your group's performance will be used as a baseline for your personal grade. For example, you are deemed to have exceeded the expectations you may receive a better grade than your group. Similarly, if your performance is poor then you could receive a worse grade or even fail.

We try to keep the criteria for grading as transparent and objective as possible. These include, but are not limited to:

  • Your technical contributions to the product
    • Measured by the committed code, produced documents, authored documentation, created stories and milestones etc
    • You must write some code to pass the course, but only code will not be enough
  • How well you facilitated and were engaged into the development process
    • Measured by the peer reviews, teaching assistant input, valuable participation in meetings etc
  • Individual submissions
    • Measured by the quality and timeliness of the submitted material (e.g. final report)

Tools

GitHub

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
    • Issues will be representing bugs or user stories. They can be referenced via commit messages.
  • Labels
    • 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
    • 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.

Arduino IDE

The development team will have to program the microcontroller found on the miniature vehicle. In order to do so, it is suggested they use the Arduino IDE. A good alternative is PlatformIO on VSCode.

Course Summary:

Date Details Due