From Code to Community: Our Journey in Civic Engagement Software Design
A software design project developed to streamline and enhance civic engagement through a user-friendly software platform.
Created by: Aayaan, Chunhavudh, David., Emma, Jingda, and Qianhui
Introduction
In today's technology-driven world, software shapes how we connect, work, and solve problems, transforming industries and impacting society from everyday apps to complex systems. Our project sought to explore and contribute to this potential in the area of civic engagement, where software can play a crucial role in increasing voter turnout, and facilitating community feedback. In our Software Design Modeling and Analysis project, we explored the complexities of software engineering, tackling both the technical challenges and ethical considerations. This blog post recounts our journey, outlining the process, the obstacles we overcame, and the lessons learned.
Project Overview
As part of the Software Engineering Principles module, our team of six students developed a software system to enhance civic engagement. Our goal was not just to meet academic requirements, but to create a solution that would genuinely promote community participation through technology.
The Agile Approach
To manage the project's inherent complexities, we adopted a hybrid Scrum approach, blending structured planning with agile execution. This allowed us to manage multiple tasks concurrently while ensuring every requirement was met. Each team member had defined roles (listed at the end), but regular sprints and retrospectives allowed us to continuously refine our strategies, adapting dynamically to the project's evolving needs. A Kanban board helped us efficiently track and manage tasks within each sprint.


User Stories
User stories were central to our development, guiding us to meet user needs. Stories focused on registration (including electoral register verification), interaction (viewing, joining, proposing initiatives), and participation (forums, polls, petitions, events). For example, "As a community member, I want to be able to easily register for local events so that I can participate in civic initiatives.” drove streamlined signup, while "As a registered user I want to propose new initiatives so that I can help to address issues important to my community” shaped the initiative proposal feature. Initially, stories covered core functionalities and accessibility (e.g., tailored interfaces). Through agile development, we iteratively added features (filtering, managing initiatives) and enhanced control (removing items within initiatives, interface switching). This iterative approach, using a user story map, ensured a comprehensive, user-centered, and accessible platform.
Ethical Considerations
Ethical considerations were equally important to our project. We adhered to the eight principles of the ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices, emphasising public interest, product quality, professional judgment, and lifelong learning. These principles guided our team and ensured we maintained high ethical standards throughout the project lifecycle. However, we went beyond these general principles to address specific ethical challenges inherent in developing a civic engagement platform.
Privacy, Data Protection, and Security: Recognising the sensitivity of user data, we prioritised data protection and security. Our system complies with the Data Protection Act 2018 and the UK GDPR, ensuring that user information (name, address, email, etc.) is collected and processed lawfully, for a specific purpose, and limited to what is necessary. We implemented robust security measures to protect this data, including encryption, access controls, and regular security audits. Furthermore, we established clear guidelines for reporting any potential data breaches or unethical practices ("whistleblowing"), reinforcing our commitment to data integrity.
Inclusivity and Accessibility: To ensure accessibility to all users, including young people, older adults, and individuals with disabilities, we followed WCAG guidelines to ensure perceivable, operable, understandable, and robust design. Specific accessibility features include alternative text for images, keyboard navigation, screen reader compatibility, adjustable font sizes, different interface options. This aligns with the Equality Act 2010 and reflects our belief that everyone should have equal access to civic engagement tools.
Transparency: Transparency regarding data usage and system functionality is paramount. In our system, users are informed about what data is collected, how it is used, and their rights regarding their data (access, correction, erasure, etc.). The system maintains activity logs for accountability and traceability. This transparency fosters trust and ensures that the platform is used ethically and responsibly.
System Design
With user needs and ethical considerations as our foundation, we designed the following system architecture to bring our vision to life.
Software Architecture Overview
Our Software Architecture Diagram illustrates the system's layered structure, comprising the Web Browser Interface, Core Business Components, User Management, and Central Database. The Web Browser Interface provides user access to key functionalities like initiative proposals, petitions, polls, forums, and user management. The Core Business Components layer houses managers like InitiativeCreationManager, PetitionsManager, and others, handling specific aspects of the system and directly interacting with the database for real-time data management. User Management handles registration, authentication (including electoral register verification), and user profiles. The Central Database stores all persistent data, including initiatives, petitions, polls, forum posts, user profiles, and authentication credentials.
Key architectural decisions include HTTPS for secure communication, direct database interaction for real-time updates (indicated by solid lines), and a dedicated User Management component to enforce registration and authentication requirements. This layered architecture ensures efficient data flow, secure communication, and support for the system's core functionalities.
Understanding User Interactions
The UML Use Case Diagram details user interactions with the system, from registration (including electoral register verification and confirmation emails) to complex operations like initiative management and council oversight. It caters to diverse users, including sub-classifications like Young People, Older People, and People with Disabilities. Key functionalities include viewing, joining, and proposing initiatives, along with managing petitions, discussions, polls, and events. <<Include>> and <<Extend>> relationships (e.g., "Access Council-Managed Initiatives" and "Submit a Petition") illustrate system flexibility. The diagram also highlights the Local Council's administrative role and interaction with existing systems. Critically, the "Use Accessible Features" use case emphasises inclusivity, covering screen readers, keyboard navigation, and alternative text. This diagram demonstrates the system's focus on user diversity, accessibility, and core functionalities.
Diving into System Design
The Class Diagram provided a detailed blueprint of the system's core components and their interrelationships, revealing the intricate connections between key classes such as CouncilDepartment, Event, DiscussionForum, Poll, and Petition. This diagram was crucial for ensuring data consistency across the platform and facilitating efficient interaction between different modules. It clarified, for example, how Event instances are associated with specific CouncilDepartment instances, reflecting the real-world organisation of civic initiatives. Furthermore, it illustrated how user interactions with Poll and Petition instances are recorded and stored, demonstrating the system's ability to capture and manage community feedback.
Specifically, the diagram highlighted:
- The relationship between CouncilDepartment and CivicInitiative: A CouncilDepartment can manage multiple CivicInitiative instances (one-to-many), ensuring that initiatives are properly categorised and overseen. This relationship is essential for organising and filtering initiatives based on departmental responsibilities.
- The relationship between CivicInitiative and Event: A CivicInitiative can have multiple associated Eventinstances (one-to-many), allowing for the scheduling and management of various activities related to a specific initiative. This supports the platform's ability to promote and coordinate community participation.
- The connection between CivicInitiative and DiscussionForum: Each CivicInitiative is linked to a dedicated DiscussionForum instance (one-to-one), providing a space for community members to discuss and share their views on the initiative. This fosters open communication and facilitates feedback gathering.
- The relationship between User and Poll/Petition: User instances can interact with multiple Poll and Petitioninstances (many-to-many), enabling users to participate in various civic engagement activities. The diagram also showed how the results of these interactions are stored, allowing for analysis and reporting on community sentiment. This direct connection between users and these engagement tools underscores the platform's focus on empowering community participation.
- The role of the InitiativeCreationManager: The diagram illustrated how the InitiativeCreationManagerclass orchestrates the creation and management of CivicInitiative instances, interacting with both the User class (for authorisation) and the CivicInitiative class (for data persistence). This clarifies the system's support for user-generated initiatives.
Detailing Interactions through Sequences
The Sequence Diagram illustrates the system's dynamic behavior, depicting how components interact over time in response to user actions. It outlines the sequence of messages exchanged between objects to execute specific functionalities, such as proposing a civic initiative. This process begins with the user navigating to the "Propose Initiative" section, triggering the Initiative Creation Manager to present the initiative form. Upon form submission, a CivicInitiative instance is created and optionally linked to relevant council departments, showcasing the system's adaptability for integration. This instance is then persistently stored in the Central Database, ensuring secure record-keeping for future analysis and reporting. The Database confirms the successful (or unsuccessful) storage to the Manager, completing the interaction and allowing for the CivicInitiative object's destruction.
Challenges and Solutions
Designing our system presented several key challenges. Integrating diverse software components required meticulous planning, detailed interface specifications, and a modular design approach to facilitate future development and minimise integration friction. Ensuring accessibility for all users, particularly compatibility with assistive technologies like screen readers, demanded strict adherence to WCAG guidelines, informing the design of features like alternative text for images, keyboard navigation for all interactive elements, and semantic HTML to ensure proper interpretation. Another design challenge involved balancing desired functionality with ease of use for a diverse user base. Our solution to this was iterative prototyping and user testing, allowing us to gather feedback and refine the user interface to strike the right balance. These experiences highlighted the importance of user-centered design and iterative development, and ultimately strengthened our design and collaborative skills.
Reflections and Growth
This project was a profound learning experience in teamwork, ethical computing, and agile methodologies. Applying theoretical knowledge in a real-world context significantly enhanced our skills and understanding of software design. We learned the crucial importance of clear communication and effective collaboration within a team, navigating diverse perspectives to achieve a common goal. Furthermore, the project solidified our understanding of ethical considerations in software engineering, from data privacy to accessibility, guided by the ACM/IEEE-CS principles. This experience wasn't just about designing software; it was about building our skills, understanding, and ethical compass for future endeavors.
Team Roles
Student | Role |
---|---|
Aayaan | Software Architect |
David | Software Engineer |
Emma | Project Manager |
Jingda | UX/UI Designer |
Chunhavudh | Business Analyst |
Qianhui | UX/UI Designer |