22nd November, 2023

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.

By Emma Horton, Aayaan Ilyas, Chunhavudh Kecharananta, Jingda Li, Qianhui Lin, and David Nkwo.

Introduction

In a world increasingly shaped by technology, the design and functionality of software influence how we connect, work, and solve problems. From everyday applications to complex systems, software has the power to transform industries and impact society — including areas like civic engagement, where our project aimed to make a difference. Through the Software Design Modeling and Analysis project, we explored the complexities of software engineering, addressing both technical challenges and ethical considerations. This blog post highlights our journey, outlining the process, the obstacles we overcame, and the lessons learned along the way.

Project Overview

As part of the Software Engineering Principles module at our university, our project centered around developing a software system to enhance civic engagement. Working as a team of five students, we aimed not only to meet academic requirements but also to create a solution that would promote community participation through the power of technology.

The Agile Approach

To navigate the complexities of this project, we adopted a hybrid Scrum approach that combined structured planning with agile execution. This method gave us the flexibility to manage multiple tasks concurrently while ensuring that every project requirement was met with precision. Although each team member had defined roles and responsibilities, regular sprints and retrospectives allowed us to continuously refine our strategies, adapting dynamically to the project’s evolving needs. Additionally, we implemented a Kanban board to efficiently track and manage tasks throughout each sprint.

Project Timeline
Project timeline.
Scrum Board
Snapshot of Kanban board used to manage project tasks.

User Stories and Ethical Considerations

At the heart of our project were user stories, which guided the development process and were tailored to meet the real needs of potential users. These stories focused on key features such as registration, interaction, and active participation in civic initiatives. Upholding ethical standards was equally essential, as we adhered to the eight principles set forth by the ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices. These principles—emphasizing public interest, product quality, professional judgment, and lifelong learning—ensured that our team maintained high ethical standards throughout the project lifecycle, creating a product that responsibly serves the community.

User Stories
User story map of the software system.

System Design

Building on the core user stories and ethical foundations of our project, we now turn to the structural and operational aspects of our software design. In the following sections, we will explore the architectural and interactional blueprints that form the backbone of our civic engagement platform. These blueprints highlight our meticulous approach to crafting a robust, user-centered system that meets the needs of the community while adhering to high standards of design and functionality.

Software Architecture Overview

At the core of our project lies the Software Architecture Diagram, which serves as the foundation of our system. This diagram provides a comprehensive overview of the major components that make up the platform and illustrates how these components interact. It plays a crucial role in understanding the structural framework of our software, highlighting the relationships between various modules and external systems, and offering insights into how the system operates as an integrated whole.

Software Architecture
Software Architecture diagram.

Understanding User Interactions

With the structural framework established, we now shift focus to how users will interact with the system. The UML Use Case Diagram plays a critical role in this, mapping out all potential interactions between users and our software. From basic registration to more complex, user-driven operations, this diagram provides stakeholders with a clear understanding of the system’s full range of functionalities and how it accommodates diverse user needs.

UML Use Case
UML use case diagram for the system.

Diving into System Design

To bridge the gap between user needs and system operations, we turn to the Class Diagram. This diagram provides a detailed view of the system’s internal design, showcasing the classes, their attributes, operations, and, most importantly, the relationships among them. For developers, it serves as a critical blueprint, offering a clear framework for implementing the system’s software components and ensuring seamless functionality.

UML Class Diagram
UML Class Diagram of the significant parts of the system.

Detailing Interactions through Sequences

Finally, the Sequence Diagram offers a detailed view of the system’s dynamic behavior. It depicts how various components interact over time in response to user actions, outlining the sequence of messages exchanged between objects to execute specific functionalities. This diagram is especially valuable for developers, providing a clear understanding of the exact flow of operations within the system and ensuring that interactions are implemented accurately.

UML Sequence Diagram
UML Sequence Diagram of the significant parts of the system..

Challenges and Solutions

During the course of the project, we faced several challenges, ranging from integrating diverse software components to ensuring compliance with strict ethical standards. One major hurdle was achieving full accessibility for all users. To address this, we followed WCAG guidelines, implementing features that support various forms of disabilities, ensuring that our system is inclusive and accessible to all.

Reflections and Growth

Looking back on our journey, this project was more than just a technical challenge—it was a profound learning experience in teamwork, ethical computing, and agile methodologies. Each phase gave us the opportunity to apply theoretical knowledge in real-world scenarios, significantly enhancing both our skills and our understanding of software development.

Want to learn more?

Click here to view our full report

Team Roles

Student Role
Aayaan Ilyas Software Architect
David Nkwo Software Engineer
Emma Horton Project Manager
Jingda Li UX/UI Designer
Chunhavudh Kecharananta Business Analyst
Qianhui Lin UX/UI Designer

Address

1234 Somewhere Road #87257
Nashville, TN 00000-0000

Phone

(000) 000-0000

Email

info@untitled.tld

Social