Manny DaSilva | Computer Science ePortfolio

Security+ Certified Software Engineer at Arcfield | Computer Science Graduate from Southern New Hampshire University | Master's Student in Artificial Intelligence | Focused on secure, scalable, high-performance software development.

View on GitHub

Enhancement 1 – Software Engineering and Design

Overview

The artifact selected for this enhancement is PowerScale, an Android weight-tracking mobile application originally developed in CS 360 Mobile Architecture and Programming. The application was built using Java, XML, and SQLite and allows users to create accounts, log in, record weight entries, set a goal weight, and track their progress over time.

This artifact was chosen because it demonstrates core software engineering concepts, including user interaction, data persistence, and full application flow from the user interface to the database layer.



Enhancement Description

The original PowerScale application used a tightly coupled design where Activities handled user interface logic, business logic, and database operations. This made the application harder to maintain, test, and expand.

To improve the structure of the application, it was refactored to follow the Model-View-ViewModel (MVVM) architecture. This introduced a clear separation between the UI, business logic, and data access layers.

A Repository layer was also implemented to act as a single source of truth for data operations. This removed direct database access from Activities and centralized data handling logic.

In addition, DAO-style separation was introduced for database operations, and input validation and error handling were standardized across the application.


Key Improvements


Architectural and Design Screenshots

The following figures illustrate the design and implementation of the software engineering improvements introduced in Enhancement 1. These include the planned system architecture and the resulting project structure after applying the Model-View-ViewModel (MVVM) pattern.

Figure 3. Enhancement 1 design diagram illustrating the planned MVVM architecture and separation of concerns.


Figure 4. Refactored project structure demonstrating implementation of the MVVM architecture and layered design.


Skills Demonstrated

This enhancement demonstrates:


Course Outcomes Alignment

Outcome 1

Employ strategies for building collaborative environments that enable diverse audiences to support organizational decision making in the field of computer science.

This enhancement improves collaboration by restructuring the codebase into clearly defined layers, making it easier for other developers to understand, maintain, and extend the application.


Outcome 2

Design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound, and appropriately adapted to specific audiences and contexts.

This enhancement is supported through clear documentation, structured narratives, and organized presentation within the ePortfolio, allowing both technical and non-technical audiences to understand the improvements made.


Outcome 4

Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices to implement solutions that deliver value and accomplish industry-specific goals.

This enhancement applies industry-standard practices such as MVVM architecture, Repository pattern, and structured data handling, improving the overall quality and long-term value of the application.


Challenges and Solutions

One of the main challenges during this enhancement was ensuring that all existing functionality continued to work after refactoring the application.

A specific issue occurred with weight entry and goal evaluation logic. Because LiveData updates asynchronously, the application sometimes evaluated goal completion before the latest data was fully updated, leading to inconsistent behavior with notifications and UI feedback.

This was resolved by restructuring when and where goal evaluation logic occurred, ensuring it was based on the most current observed data from the ViewModel.


Reflection

This enhancement significantly improved the structure and quality of the PowerScale application. It reinforced the importance of designing software with maintainability and scalability in mind rather than focusing only on functionality.

By applying MVVM and separating responsibilities across layers, the application now reflects a more professional and industry-standard approach to software development. This experience has influenced how I approach system design moving forward, especially in professional environments where clean architecture and maintainability are critical.


Summary

This enhancement transformed PowerScale from a tightly coupled application into a modular, maintainable system aligned with modern development practices. It demonstrates growth in software design, architecture, and professional development standards, and provides a strong foundation for future enhancements.