This sequence of courses provides significant flexibility to each team to self-direct much of their project. In order to be successful, students are expected to take ownership and drive their project forward. In completing the project, each team must demonstrate that their work addresses key elements of software engineering in a competent way and each student must demonstrate technical contributions and work effectively within the team and process.
Each team must demonstrate that their project addresses the following elements of software engineering in a competent way:
- Requirements - Definition and analysis including selecting at least one stakeholder. You will need to become familiar with the domain.
- Software Architecture and Modeling - It should involve some interesting elements of software system design, including thoughtful exploration of the architecture to support iterations.
- Design - Strategies employed, such as the use of patterns and allowances for evolution of the product.
- Testing - Building it to be testable and testing it. How good is the automation of the testing and was it considered from the beginning?
- Security and Privacy - How are you addressing security and privacy? Are you using best practices?
- Tools - Good use of development, testing, and management tools (including GitLab).
- Experimentation and Prototyping - Applied to unknown technology to improve knowledge and reduce risks. As the architecture is developed and key mechanisms are determined, what risks arise and how will you address them in the development process?
- Third Party Components - Demonstrate your skill in discovering and employing third party components.
- Documentation - This takes many forms including continuous documentation such as, notes associated with tasks that our updated regularly, weekly reviews, sprint reviews, and other artifacts such as a technology report, discussions of where you achieved specific course outcomes, project presentations, poster, and final report.
- Managing Risks - Strategies employed to manage risk.
- Standards Used - Identify industry standards used in the project.
Each team will be required to document how they have addressed the elements listed above.
Students are responsible for demonstrating achievement of the course learning outcomes which, over the senior design sequence include:
- Identify constraints in open ended problems
- Justify tradeoffs to a member of management
- Deliver an elevator pitch for a software project to a non-technical audience
- Improve communication among teammates, ask for feedback, and use suggestions
- Self-critique knowledge in a relevant area and identify relevant skills that need to be obtained to complete a project
- Evaluate a project's design for whether it achieves the desired quality attributes, including an analysis of the required tradeoffs
- Communicate in a timely way with the team
- Develop and conduct software usability experiments and recommend user experience improvements based on experimental results
- Identify a personal knowledge gap when developing a problem solution and learn the necessary content to solve the problem and implement the solution
- Identify the impact of a software product on society including aspects such as public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
Each student will be required to document his/her achievement of a selection of the outcomes listed above.
Each advisor may have different grading criteria. Dr. Taylor plans to weight grades as follows:
|60%||Sprint: Results and Process|
|40%||Deliverables (including documented achievement of selected outcomes and other items that vary by quarter)|
The grade for each sprint will consist of an individual portion and a team portion. The individual portion will include an assessment of 1) contribution to the team, 2) effort, 3) communication (e.g., status report entries, comments on tasks, commit messages, pull requests, code reviews, etc...), 4) appropriate use of tools, 5) process discipline, and 6) student outcomes reflections. The group portion will include an assessment of 1) sprint work-product, 2) sprint artifacts (e.g., plan, PBIs, tasks, sprint review, retro, etc...), 3) process improvements (both identification and execution), and 4) reflections on how the team addressed the software engineering elements.
A significant portion of the composite grade is based on team submissions. However, in most teams their are typically performance variations among individual team members. Therefore, after preliminary individual totals are computed according the the table shown above, assigned course grades may be adjusted by up to two full letter grades (e.g., C to A or C to F) to account for these performance differences. Individual performance consists of instructor evaluation of: project contributions, demonstration and level of engineering skills, participation in meetings, and professionalism as well as peer evaluation forms.