Maintenance and SupportActivities & Teaching Strategies
Active learning works well for maintenance and support because this topic requires students to engage with the messy, iterative reality of software rather than idealized development. Students need hands-on practice analyzing incomplete systems, making judgment calls with imperfect information, and experiencing the consequences of their decisions.
Learning Objectives
- 1Classify software maintenance tasks into corrective, adaptive, and perfective categories based on provided scenarios.
- 2Analyze the potential long-term costs and challenges associated with neglecting software maintenance for a given application.
- 3Design a tiered support plan for a hypothetical software application, outlining response times and escalation procedures for different issue severities.
- 4Evaluate the trade-offs between patching existing software and developing a new solution when faced with obsolescence or significant bugs.
- 5Synthesize user feedback and system logs to propose specific perfective maintenance improvements for a software product.
Want a complete lesson plan with these objectives? Generate a Mission →
Role Play: Maintenance Triage
Groups receive a backlog of ten fictional bug reports and feature requests for a deployed app. Teams must categorize each item (corrective, adaptive, or perfective), assign a priority, and estimate relative effort. Groups then compare their triage decisions and defend their prioritization to the class.
Prepare & details
Explain the different types of software maintenance (e.g., corrective, adaptive, perfective).
Facilitation Tip: During the Maintenance Triage role play, provide students with sticky notes in three colors to physically sort scenarios into corrective, adaptive, or perfective maintenance categories.
Setup: Open space or rearranged desks for scenario staging
Materials: Character cards with backstory and goals, Scenario briefing sheet
Think-Pair-Share: Legacy Code Analysis
Students individually read a short, unfamiliar code snippet and list everything they would need to understand before safely modifying it: dependencies, assumptions, side effects, and undocumented behavior. Partners compare lists and identify the most critical unknowns before sharing with the class.
Prepare & details
Analyze the challenges of long-term software maintenance and support.
Facilitation Tip: For Legacy Code Analysis, give students 10 minutes to silently annotate a provided code snippet with questions and concerns before discussing in pairs.
Setup: Standard classroom seating; students turn to a neighbor
Materials: Discussion prompt (projected or printed), Optional: recording sheet for pairs
Structured Academic Controversy: Patch vs. Rewrite
Present a scenario: a five-year-old system that works but is difficult to maintain. Pairs argue for incremental patching, then switch to argue for a full rewrite, before synthesizing a recommendation. Debrief focuses on what information would change the decision.
Prepare & details
Design a basic support plan for a deployed software application.
Facilitation Tip: In the Patch vs. Rewrite structured controversy, assign roles explicitly and require students to argue from the assigned perspective for two minutes before switching.
Setup: Pairs of desks facing each other
Materials: Position briefs (both sides), Note-taking template, Consensus statement template
Gallery Walk: Support Plan Designs
Groups draft a basic support plan for their capstone project covering bug reporting, update frequency, dependency monitoring, and end-of-life. Plans are posted and peers leave sticky notes identifying gaps or risks the team did not consider.
Prepare & details
Explain the different types of software maintenance (e.g., corrective, adaptive, perfective).
Facilitation Tip: During the Support Plan Gallery Walk, post guiding questions on the walls and ask students to add sticky-note comments to each plan as they circulate.
Setup: Wall space or tables arranged around room perimeter
Materials: Large paper/poster boards, Markers, Sticky notes for feedback
Teaching This Topic
Teachers should treat maintenance as a mindset shift rather than a technical skill. Avoid presenting maintenance as a lesser form of development. Instead, emphasize the problem-solving nature of working with legacy systems and the importance of documentation as a communication tool. Research shows that students grasp maintenance concepts better when they experience the frustration of unclear code or broken dependencies firsthand.
What to Expect
Successful learning looks like students recognizing maintenance as an ongoing, skilled process rather than a one-time task, and confidently categorizing maintenance needs and proposing solutions. They should articulate why maintenance requires different skills than writing new code, and design basic support frameworks that address real-world constraints.
These activities are a starting point. A full mission is the experience.
- Complete facilitation script with teacher dialogue
- Printable student materials, ready for class
- Differentiation strategies for every learner
Watch Out for These Misconceptions
Common MisconceptionDuring Role Play: Maintenance Triage, watch for students defaulting to 'bug fixing' as the only maintenance type. Redirect them to consider how operating system updates or new user requests change software needs.
What to Teach Instead
After distributing scenarios, ask students to identify which maintenance type each represents before they begin role-playing, and require them to justify their choices using the scenario details.
Common MisconceptionDuring Think-Pair-Share: Legacy Code Analysis, watch for students assuming well-written code requires no maintenance. Redirect them to examine dependencies and environment changes.
What to Teach Instead
Provide student pairs with a legacy code snippet that includes hardcoded file paths or deprecated API calls, and ask them to identify what would break if the operating system or libraries were updated.
Common MisconceptionDuring Structured Academic Controversy: Patch vs. Rewrite, watch for students dismissing patching as inferior work. Redirect them to consider the risks and costs of each approach.
What to Teach Instead
Require students to calculate estimated hours for both patching and rewriting during their debate, using provided scenarios that include user base size and criticality of the feature.
Assessment Ideas
After Role Play: Maintenance Triage, present students with three brief descriptions of software issues. Ask them to identify which type of maintenance each scenario represents and briefly explain their reasoning, then collect responses to check for accuracy.
During Think-Pair-Share: Legacy Code Analysis, pose the question: 'Imagine your capstone project software is now five years old. What are three specific challenges you might face in keeping it running smoothly, and how would you address them?' Facilitate a class discussion on their responses, noting whether students identify adaptive, corrective, or perfective maintenance needs.
After Gallery Walk: Support Plan Designs, have students draft a basic support plan for a simple application they developed. They then exchange plans with a partner and provide feedback using a checklist: Does the plan include contact information? Are issue severity levels defined? Is there a clear escalation path? Partners sign off on feedback provided.
Extensions & Scaffolding
- Challenge: Ask students to research a real-world software failure caused by poor maintenance and prepare a 2-minute presentation on how it could have been prevented.
- Scaffolding: Provide sentence starters for the Legacy Code Analysis activity, such as "I notice..." and "This might cause problems because..."
- Deeper exploration: Have students interview a local software developer about maintenance challenges they face and report back to the class.
Key Vocabulary
| Corrective Maintenance | The process of fixing defects or bugs discovered in software after it has been deployed to users. |
| Adaptive Maintenance | Modifying software to remain functional and compatible with changes in its operating environment, such as new operating systems or hardware. |
| Perfective Maintenance | Enhancing software performance, usability, or adding new features based on user feedback or evolving requirements. |
| Software Obsolescence | The state where software components or the entire application become outdated, unsupported, or incompatible with modern systems. |
| Support Plan | A document outlining the strategy for providing assistance to users of a software application, including issue reporting, response times, and resolution processes. |
Suggested Methodologies
More in Capstone Software Development
Introduction to Software Development Lifecycle (SDLC)
Students will learn about the phases of software development from conception to deployment.
2 methodologies
Agile Methodologies and Scrum
Managing a project using iterative cycles and constant feedback loops.
2 methodologies
Requirements Gathering and Analysis
Defining what the software needs to do by understanding user needs and project goals.
2 methodologies
User Experience (UX) Design Principles
Prototyping and testing software from the perspective of the end user.
2 methodologies
User Interface (UI) Prototyping
Creating wireframes and mockups to visualize the software's interface.
2 methodologies
Ready to teach Maintenance and Support?
Generate a full mission with everything you need
Generate a Mission