Enhancement One: Software Design and Engineering

Abram Steinbrenner

Artifact Description

The artifact selected for this enhancement is an Android-based weight tracker mobile application originally developed during an earlier course (CS 360) in the Computer Science program. The application allows users to create an account, log weight entries, set goal weights, view progress over time, and manage personal notification preferences. The original version of the app was created in CS 360 as a functional but relatively straightforward mobile application focused primarily on core functionality.

For this milestone, the artifact was enhanced to improve its software design, usability, and overall architectural clarity. These enhancements were implemented as part of a planned improvement process following an initial code review and were focused on strengthening maintainability, reliability, and user experience rather than rewriting existing functionality.

Justification for Inclusion in the ePortfolio

This artifact was selected for inclusion in my ePortfolio because it demonstrates practical software design and engineering skills using a modern mobile development platform. The application integrates multiple core computer science concepts, including user interface design, persistent data storage, modular code organization, permission handling, and interaction with Android platform APIs.

Several specific components showcase my software development abilities, including improved architectural organization with clearer separation between UI logic, data handling, and system services; enhanced user input handling such as validated and formatted phone number input for SMS notifications; state persistence and session management using SharedPreferences; and permission-aware design that ensures SMS functionality activates only when appropriate permissions are granted. Additional user experience improvements include dynamic UI enablement, input feedback, and consistent navigation behavior.

The artifact was enhanced by extending and refactoring existing features rather than rewriting them, reflecting realistic industry practices where developers are expected to improve and maintain established codebases while preserving functionality. These changes also improve readability and maintainability for future developers who may work on the project.

Alignment With Planned Course Outcomes

This enhancement aligns with the course outcomes identified earlier in the term. The SMS notification feature required evaluating Android platform constraints, managing runtime permissions, and designing safe fallback behaviors when functionality is unavailable, demonstrating the ability to design and evaluate computing solutions. The project also makes use of well-founded tools and techniques, including Android SDK components, Material Design UI elements, SharedPreferences, and lifecycle-aware methods to implement reliable and maintainable features.

In addition, a security mindset was applied throughout the enhancement process. SMS permissions are handled defensively, user input is validated before use, and sensitive data such as phone numbers is stored in a controlled and limited manner. At this stage, no updates to the outcome coverage plan are required, as the enhancement aligns with the original scope and objectives defined earlier in the course.

Reflection on the Enhancement Process

Enhancing this artifact was a valuable learning experience that emphasized the importance of thoughtful software design beyond basic functionality. One key lesson was recognizing how architectural decisions, such as when and where user preferences are saved, can significantly impact application reliability and user experience.

A major challenge involved managing Android’s activity lifecycle correctly. Issues such as crashes caused by uninitialized UI elements and missing resources reinforced the need for defensive programming, careful initialization order, and consistent testing. Debugging these problems required interpreting runtime errors, reviewing stack traces, and systematically isolating root causes.

Another important outcome was understanding platform limitations. While SMS functionality was fully implemented and correct, testing revealed that Android emulators cannot send real SMS messages. Identifying and documenting this limitation demonstrated an understanding of real-world deployment constraints rather than a flaw in the design.

Overall, this enhancement strengthened my ability to responsibly modify existing software, apply best practices in mobile application design, and clearly communicate technical decisions. These skills are directly applicable to professional software development environments.

Evidence