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 Jira).
- 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.
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:
- Work effectively and demonstrate initiative as a project team member
- Communicate project status and technical content in oral and written form to coworkers and management
- Capture requirements in user stories that describe incremental business value
- Create user stories with unambiguous completion criteria
- Apply analysis and synthesis in the design process to produce software that meets specified completion criteria
- Use principles from engineering, science, and mathematics to design and construct software that meets multiple realistic constraints
- Investigate, evaluate, integrate, and apply technologies and standards beyond previous coursework to support design and planning
- Develop and execute experiments to minimize uncertainty and use the results to justify design decisions
- Employ software engineering processes to develop software
- Use modern software engineering tools for process management, source control, and continuous integration
- Identify, track, and mitigate technical and process risks
- Verify and validate that software developed functions as expected and meets requirements
- Identify and address security concerns related to the software project
- Recognize ethical and professional responsibilities related to the software developed and make informed judgments that account for global, economic, environmental, and/or societal contexts
- Communicate appropriate project aspects in a public forum
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:
|25%||Documented achievement of selected outcomes (vary by quarter)|
|50%||Sprint: Results and Process|
|25%||Deliverables (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 address 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.