Software Development
Methodology
The MSIS Capstone Project at Northwestern School of Professional Studies guided each project team through the software development cycle. My team and I developed an idea from proposal to minimum viable product, achieving milestones and gaining approvals along the way. The project, documents, and the client demonstration are below. As Lead Designer and Developer, I co-authored all documents, focusing on technology and effort planning while teammates focused on the concept, business case, requirements, testing, and project management.
Learning Analytics Dashboard
Launch the dashboard | View the project on github
This project responds to the need of organizations to see in detail the results of online learning.
I chose to showcase an open source technology, called Experience API (xAPI), and to illustrate its potential as a solution for learning analytics. I started with an existing online course developed by Rustici Software, the creators of xAPI. I connected their course to a Learning Record Store (LRS) on Scorm Cloud. My team and I ran 50 learners through the course in May 2022 to obtain a dataset.
Each learner produced click data, from launching the course, to viewing each page, responding to each question, and exiting the course, which were sent to the LRS. To create the dashboard, I coded a request to the LRS API and retrieved the data in JSON format. Locally, I built a data transformation pipeline that (1) read the JSON, normalized it, and wrote the result to a flattened master table, and (2) created custom tables with engineered features to support interactive graphs, sortable tables, and traditional statistics. I used Dash and Plotly with Python, Pandas, and Numpy to create the interface and displays.
Project Proposal and Business Case
Our proposal outlined a limitation in typical Learning Management Systems (LMS) and a potential solution for online learning. Whereas many SaaS LMS technologies capture only course launch, progress, and completion, most organizations need, and would prefer, to capture and understand much more. xAPI is a learning technology that offers a potential solution. It enables learning designers to get the results of any learning event or interaction that they deem meaningful and important. This creates a more robust set of data for more insightful learning analytics. View the proposal [PDF].
Detailed Requirements
Our requirements analysis assessed the gap between the current state and a desired future state in order to arrive at the features of a minimum viable product (MVP). The MVP would require usage, course, and quiz analytics and a data pipeline to prepare data from a trial of 50 learners over a one month period. View the detailed requirements [PDF].
Solution Design and Architecture
The solution design document compared solution options in terms of a SWOT analysi, ROI, and Weighted Score Analysis across five criteria:
Complexity, Extensibility, Maintainability, Comprehensiveness, Cost, and Security. I detailed the assumptions, outlined the software and technologies to be used, created a data dictionary, and drew a system blueprint, pictured below. View the solution design and architecture [PDF].
User Interface Design
I used Adobe XD to envision the UI, which was a valuable part of the pitch and understanding. When presented to teammates and stakeholders, it enabled them to quickly grasp the concept, spot gaps, suggest solutions, and approve with minor additions. View wireframes in the carousel below.
Project Plan
The project plan outlined risks, resources, budget, governance, and enablement. View the project plan [PDF].
Work Breakdown Structure and Critial Path Analysis
Next was the work breakdown structure. For each task, I added an owner, start date, and end date. I grouped related tasks, and at the group level, I analysed dependencies. Each dependency was specifically described: "cannot start until predecessor/successor starts", "cannot start until predecessor/successor finishes", "cannot finish until predecessor/successor starts", or "cannot finish until predecessor/successor finishes", etc. The analysis of dependecies informed a critical path analysis, pictured below. View the work breakdown structure (WBS) [Google Sheet].
Development and DevOps
As lead developer, I started by establishing a simple Continuous Integration and Continuous Deployment (CI/CD) process using Github Actions, Secrets, and Workflow. CI included linting and unit testing. The CD process pushed qualified code to a Google Cloud Project using App Engine to serve the application. View the Github workflows.
Development proceeded in VS Studio Code with Dash/Plotly and Python libraries in a virtual environment.
Testing Plan
Testing was mainly functional, matching test scripts to the requirements document and demonstrating the application to the client. While the CI process included a space for unit testing, doing so was not required for success of the MVP in this context. View the test plan [PDF].
Production Support Guide
Not only does documentation enable production support, documented methods and procedures support reproducibility in software engineering. I was also sure to include Google Cloud monitoring and logging capabilities to stay abreast of costs, budget, and application performance. View the production support guide [PDF].
Client Demo
My team and I delivered the client demo on June 4, 2022. Highest grade in our cohort.