Software Design & Development Project

Spring 2024

This course provides the students with a significant and iterative software development process experience in which they integrate much of the knowledge they learned in their program. Groups of students tackle real-world problems that require the development of a software solution, thereby applying fundamentals of software engineering; software requirements engineering; software design; software construction; software testing; and software project management.

Prerequisites. Department consent.

 

Handbook  


Instructor:
 Mamdouh Alenezi
 malenezi@psu.edu.sa
 Office Hours:
   S T TH 8-9 am
 (Email me for an appointment)

Learning Outcomes  

This course has eight learning outcomes:

  • CLO1: An ability to iteratively elicit, analyze, specify, validate, and manage software requirements to address real-world problems.
  • CLO2: An ability to iteratively design a software solution to satisfy user requirements while maintaining proper quality attributes.
  • CLO3: An ability to implement a software solution using various technologies.
  • CLO4: An ability to iteratively assess the quality of a software solution using established testing techniques.
  • CLO5: An ability to effectively communicate with a wide range of audiences.
  • CLO6: An ability to assess the need for and the impact of a software solution.
  • CLO7: An ability to effectively work in a team, utilizing leadership skills where necessary, in order to successfully manage a software project.
  • CLO8: An ability to acquire new knowledge and skills as needed in order to successfully complete a software project.

Assessment  

60% Course Work

Each specific activity aligns with one or more of the course learning outcomes (CLOs).

  1. Project Documentation (15%)

    This includes all the documents generated through the project, such as project charter, design documents, user stories, and the final project report. These documents will help assess the students' ability to analyze requirements, design software solutions, and communicate effectively (CLO1, CLO2, CLO5).

    • Project Charter: 3%
    • Design Document for Each Sprint: 3% x 4 = 12%

  2. Code Quality and Implementation (20%)

    This focuses on the actual software product that the students develop, looking at factors like the quality of the code, the use of various technologies, the fulfillment of user requirements, and the robustness of the solution (CLO2, CLO3).

    • Code for Each Sprint: 5% x 4 = 20%

  3. Testing and Quality Assurance (15%)

    Here, the focus is on the students' approach to testing, how well they identify and fix bugs, and how well they manage the quality of their software product (CLO4).

    • Testing Report for Each Sprint: 3.75% x 4 = 15%

  4. Team Collaboration and Participation (10%)

    This assesses the students' abilities to work effectively as a team, make productive contributions, and demonstrate leadership skills (CLO7).

    • Peer Evaluation: 5%
    • Instructor Evaluation (based on meetings, team interactions): 5%

40% Examination Committee

The examination committee, composed of two examiners, plays a critical role in evaluating the project holistically. The evaluation conducted by the examination committee carries a weightage of 40% toward the final grade. The examination committee evaluates the project with a focus on the learning outcomes, particularly in the areas of communication, collaboration, and the quality of the delivered product. Their assessment aims to provide comprehensive feedback to the teams, highlighting strengths and areas for improvement, and ensuring that the project aligns with the intended learning goals.

 

Tentative Schedule  

Chapter Topic Notes Templates/Seminars/Sources
1
Introduction
Introduction

Peer Assessment Form

Using GitHub Desktop by Nourredin Farahat

Sprint Review and Retrospective Template
2
Projects
Projects

Project Management and working in teams by Dr. Lahouari Ghouti



3
Features
Features

The Transition from Software Requirements to Design by Dr. Mohammad Zarour



4
Architecture and Design
Architecture and Design

Software Systems Design & Architecture by Dr. Mohammad Akour



5
Development
Development

Full Stack Web-development Training Session part 1. by Engr. Anas Kanhouch
Full Stack Web-development Training Session part 2. by Engr. Anas Kanhouch

Choosing Your Technology Stack

6
Testing
Testing




7
Deployment
Deployment




8
Best Practices
Best Practices




9
Final Report
Final Report




 

Course Resources  

Course Plan

  • Week 1 - Project Kick-off & Team Formation
    • Define team roles and responsibilities
    • Establish team norms and expectations
    • Decide on a project idea and outline the software's intended functionality
  • Week 2 - Project Planning & Initial Documentation
    • Develop a project charter including project objectives, stakeholders, risks, constraints, and key performance indicators
    • Construct a high-level system architecture diagram
    • Create a backlog of user stories in GitHub
  • Week 3 - Sprint 1 Planning & Design
    • Prioritize user stories for the first sprint
    • Develop a detailed design document including class diagrams, sequence diagrams, and database schema
  • Week 4 - Sprint 1 Implementation
    • Begin coding and regularly commit changes to GitHub
    • Conduct daily stand-up meetings to discuss progress and roadblocks
  • Week 5 - Sprint 1 Testing & Review
    • Perform unit testing, integration testing, and system testing
    • Conduct a sprint review and retrospective
  • Week 6 - Sprint 2 Planning & Design
    • Reflect on the outcome of Sprint 1 and plan for Sprint 2
    • Prioritize user stories for the second sprint
    • Develop a detailed design document including class diagrams, sequence diagrams, and database schema
  • Week 7 - Sprint 2 Implementation
    • Continue coding and regularly commit changes to GitHub
    • Conduct daily stand-up meetings to discuss progress and roadblocks
  • Week 8 - Sprint 2 Testing & Review
    • Perform unit testing, integration testing, and system testing
    • Video demonstration of the finished product
    • Conduct a sprint review and retrospective
  • Week 9 - Sprint 3 Planning & Design
    • Reflect on the outcome of Sprint 2 and plan for Sprint 3
    • Prioritize user stories for the third sprint
    • Develop a detailed design document including class diagrams, sequence diagrams, and database schema
  • Week 10 - Sprint 3 Implementation
    • Continue coding and regularly commit changes to GitHub
    • Conduct daily stand-up meetings to discuss progress and roadblocks
  • Week 11 - Sprint 3 Testing & Review
    • Perform unit testing, integration testing, and system testing
    • Video demonstration of the finished product
    • Conduct a sprint review and retrospective
  • Week 12 - Sprint 4 Planning & Design
    • Reflect on the outcome of Sprint 3 and plan for Sprint 4
    • Prioritize user stories for the fourth sprint
    • Develop a detailed design document including class diagrams, sequence diagrams, and database schema
  • Week 13 - Sprint 4 Implementation
    • Continue coding and regularly commit changes to GitHub
    • Conduct daily stand-up meetings to discuss progress and roadblocks
  • Week 14 - Sprint 4 Testing & Review
    • Perform unit testing, integration testing, and system testing
    • Video demonstration of the finished product
    • Conduct a sprint review and retrospective
  • Week 15 - Final Review & Delivery
    • Conduct a final full-system test and fix any last-minute bugs
    • Prepare a final project report and presentation
    • Deliver the final software product and all project documentation

Project Documents

  1. Project Charter
    • This is the initial document that outlines the project objectives, identifies the main stakeholders, and defines the project's scope.
    • It also includes information about project risks, constraints, and key performance indicators.
  2. System Architecture Diagram
    • This is a visual representation of the system's architecture, showing how different components of the system interact with each other
  3. Backlog of User Stories
    • This is a list of features or tasks that the software needs to perform, written from the perspective of an end user.
    • This backlog is typically prioritized and tackled over the course of several sprints.
  4. Design Document
    • This document includes detailed design information about the software, such as class diagrams, sequence diagrams, and database schema.
    • It serves as a blueprint for the development team during the coding phase.
  5. Sprint Plans and Retrospectives
    • At the beginning of each sprint, a plan is made that details which user stories will be tackled.
    • At the end of each sprint, a retrospective is held to discuss what went well, what didn't, and how the team can improve in the next sprint.
  6. Testing Reports
    • These reports document the results of unit testing, integration testing, and system testing conducted at the end of each sprint.
    • They help identify any bugs or issues that need to be addressed.
  7. Final Project Report
    • This comprehensive report summarizes the entire project, including the project charter, system architecture, design, sprint retrospectives, testing reports, and any other relevant information.
    • It also includes a section on lessons learned and suggestions for future improvements.

Software Development Tools and Technology

You can use state-of-the-art tools and technologies for this project:

Purpose Technology Description
Communication Slack Slack is an industry standard for team messaging in software development teams. It replaces email and IM with a unified channel based communication system. Slack can also be used to upload and share documents and links. We will use Slack for all project-related communication and collaboration.
Revision Control & Issue Management Github Github is a cloud-hosted Git version control provider. In this course, we will use Github as the version control system, for code reviews, as the issue tracker, and to host Wiki pages.
Design Diagrams Google Drawings You will use Google Drawings as an online collaborative whiteboard to share design sketches.
UML Design Draw.io Draw.io is based on Google Drive and it will allow you to create your UML designs and share them with the team.
UI Design Balsamiq Balsamiq is a tool for creating UI mockups.
IDE Cloud9 Cloud9 is an online IDE, enabling multiple developers to edit code and interact with a single workspace at the same time.
UI Framework Bootstrap 3 Bootstrap is a UI framework offering UI components and styling.
Visualization Framework D3 D3 is a framework for creating visualizations.
Cloud Database Firebase Firebase is a NoSQL cloud database, enabling real-time synchronization and storage of JSON data between between browser clients. We will use Firebase as a backend for storing system data and as a hosting platform for hosting the system itself.

Academic Integrity

Students are expected to know and abide by PSU's policies on academic integrity. Academic integrity violations will be prosecuted aggressively. If you are not sure what constitutes an academic integrity violation, please ask.