It Begins…
The first steps in my pursuit of well-rested off-Friday mornings was to define the requirements and high level system design.
Requirements
Software design begins with defining requirements and identifying high-level system components.
User Settings
| Setting | Description |
|---|---|
| Time and Date | Set the current time. |
| Week Schedule | Toggle the week type (on or off Friday). |
| Weekday Alarm | Configure the standard daily alarm. |
| Friday Alarm | Set a specific alarm for “On-Friday” schedules. |
Hardware Components
| Functionality | Description |
|---|---|
| Core Platform | Raspberry Pi. |
| Audio | Speaker for alarm. |
| Visual | LED display for time readout. |
| Timing | Real-time clock module for accurate timekeeping. |
Software Architecture
| Functionality | Description |
|---|---|
| Main Driver | Coordinates system operations. |
| Time Controller | Manages clock logic and synchronization. |
| Display Controller | Handles visual output to the LED. |
| Alarm Manager | Controls setting and triggering logic. |
Nice-to-Haves
| Feature | Description |
|---|---|
| Gradual Wake Light | Integrated lighting that brightens as the alarm approaches. |
| Nightlight Mode | Multi-purpose illumination similar to the ColorClock project. |
User Experience Considerations
| Consideration | Notes |
|---|---|
| Simplified Interaction | Prioritize intuitive user programming while maintaining a minimal set of physical controls. |
| Audio Balance | Select an alarm sound that is effective for waking but remains pleasant rather than abrasive. |
The Environment
I decided to use QNX due to the accessibility to the software development package, and its utility in industry. QNX is a common framework used in automotive design and they offer a free license for non-commercial purposes.
Keeping in line with my learning style, the first steps to learning the QNX framework was to get a minimal “Hello World” project working. And of course documenting the process for future reference 👩🏫

Let’s Do This the Right Way
Now that I have gained some familiarity with the development environment, I need to take a step back and think about the design process.
Since this project is a skill-building exercise, I want to focus on software design and follow the proper steps for architecting the system. I aim to create the software architecture using the 4+1 View Model as described in Philippe Kruchten’s 1995 IEEE paper, “The 4+1 View Model of Architecture”.
The First View: The Use Case
While complex systems often require multiple use case diagrams, this project’s simplicity warrants only a single illustration.
Next Steps
I have yet to implement a minimal application on a physical target, so in the coming weeks I plan to run Hello World on a Raspberry Pi. Additionally, the next step in software design will be to diagram the Logical View using UML.