Skip to content

Commit 9acdeb4

Browse files
committed
added Design Decisions to reflectandtrace doc
1 parent 18a12e7 commit 9acdeb4

1 file changed

Lines changed: 96 additions & 3 deletions

File tree

docs/ReflectAndTrace/ReflectAndTrace.tex

Lines changed: 96 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
\usepackage{booktabs}
55
\usepackage{multicol}
66
\usepackage{longtable}
7+
\usepackage{amsmath}
8+
\usepackage{hyperref}
9+
\usepackage{float}
10+
711

812
\title{Reflection and Traceability Report on \progname}
913

@@ -762,9 +766,98 @@ \section{Design Iteration (LO11 (PrototypeIterate))}
762766

763767
\section{Design Decisions (LO12)}
764768

765-
\plt{Reflect and justify your design decisions. How did limitations,
766-
assumptions, and constraints influence your decisions? Discuss each of these
767-
separately.}
769+
This section reflects on the key design decisions made during the development of the DomainX tool, organized by the limitations, assumptions, and constraints that influenced them.
770+
771+
\subsection{Limitations}
772+
773+
The primary limitation we faced was the project timeline. Development had to be completed within a single academic year, which required us to prioritize core functionality over comprehensive features. This time constraint directly influenced several architectural decisions:
774+
775+
\begin{itemize}
776+
\item \textbf{Modular Backend Architecture:} We chose a modular Django-based architecture rather than a monolithic design. This allowed team members to work on different modules (e.g., domain management, metric collection, AHP calculations) in parallel without blocking each other, accelerating development.
777+
\item \textbf{Feature Prioritization:} Due to time constraints, we prioritized essential features such as user authentication, domain management, metric collection, and AHP ranking over optional features like sensitivity analysis, bulk data upload, and logging changes. This ensured that the core research workflow remained functional while less critical features were deferred.
778+
\item \textbf{Automated Testing Focus:} While we aimed for 80\% code coverage, time limitations prevented us from achieving this target. We focused testing efforts on critical modules (e.g., AHP calculations, data validation) where failures would have the greatest impact, while lower-risk areas received less coverage.
779+
\item \textbf{Simplified Deployment:} We opted for a traditional Django + React deployment over a more complex microservice architecture to reduce setup time and maintenance overhead, given the short development window.
780+
\end{itemize}
781+
782+
\subsection{Assumptions}
783+
784+
Several assumptions guided our design decisions, based on the expected users and environment:
785+
786+
\begin{itemize}
787+
\item \textbf{User Technical Proficiency:} We assumed that users (researchers working with Dr.~Smith) have basic technical proficiency, including familiarity with web browsers, GitHub, and research methodologies. This allowed us to design a web-based interface without extensive onboarding tutorials, though we still provided tooltips and inline help for metric input fields.
788+
\item \textbf{Stable Internet Connection:} We assumed users would have reliable internet access, as the tool depends on external APIs (GitHub, PyPI) for automated data collection. This assumption influenced our decision not to implement offline caching mechanisms.
789+
\item \textbf{GitHub API Availability:} We assumed that GitHub APIs would remain accessible and within rate limits during typical usage. We implemented basic error handling but did not build complex retry or fallback mechanisms due to time constraints.
790+
\item \textbf{Researcher Collaboration:} We assumed that multiple researchers would collaborate on the same domains, requiring role-based access control. This led us to implement Contributor and Viewer roles to manage edit permissions.
791+
\end{itemize}
792+
793+
\subsection{Constraints}
794+
795+
Various external and internal constraints shaped the final design of the system:
796+
797+
\begin{itemize}
798+
\item \textbf{Time Constraint (Schedule):} The most significant constraint was the fixed capstone timeline, with a hard deadline for the final release. This forced us to make deliberate trade-offs:
799+
\begin{itemize}
800+
\item We prioritized security features (password encryption, role-based access) over sensitivity testing, as data protection was deemed more critical for user trust.
801+
\item We implemented a working AHP calculation matching the LBM paper methodology but deferred comprehensive sensitivity analysis to future work.
802+
\item We focused on stability and correctness of core features rather than exhaustive performance optimization.
803+
\end{itemize}
804+
805+
\item \textbf{Budget Constraint:} The project could not exceed \$125 in hosting costs. This constraint led us to:
806+
\begin{itemize}
807+
\item Use McMaster University's existing infrastructure when possible, rather than paid cloud services.
808+
\item Optimize database queries to reduce server load, allowing us to run on lower-cost instances.
809+
\item Avoid third-party paid APIs, relying instead on free public APIs (GitHub, PyPI) with rate limits.
810+
\end{itemize}
811+
812+
\item \textbf{Technical Constraints:} GitHub API rate limits (60 requests per hour for unauthenticated users, 5000 for authenticated) constrained how many libraries could be analyzed in a single session. We mitigated this by using authenticated requests where possible and adding status indicators for long-running analyses.
813+
814+
\item \textbf{Research Methodology Constraint:} The AHP calculations had to follow the exact methodology from the LBM research paper. This constrained our implementation to use the specific pairwise comparison formula:
815+
\[
816+
A_{jk} =
817+
\begin{cases}
818+
\min(9, x_{sub} - y_{sub} + 1) & \text{if } x_{sub} \geq y_{sub} \\
819+
1 / \min(9, y_{sub} - x_{sub} + 1) & \text{if } x_{sub} < y_{sub}
820+
\end{cases}
821+
\]
822+
We could not deviate from this formula, even if alternative approaches might have been simpler to implement.
823+
824+
\item \textbf{User Access Constraints:} The system had to support both authenticated researchers (who can edit data) and public viewers (read-only access). This led us to implement role-based access control with Django's authentication system, ensuring that unauthorized users cannot modify domain data.
825+
826+
\item \textbf{Platform Compatibility:} The tool had to run on standard desktop browsers (Chrome, Firefox, Edge) without requiring additional software installation. This constrained us to use web technologies (HTML/CSS/JavaScript for frontend, Python/Django for backend) rather than platform-specific solutions.
827+
\end{itemize}
828+
829+
\subsection{Design Decisions Summary}
830+
831+
The following table summarizes the key design decisions and their justifications:
832+
833+
\begin{table}[H]
834+
\centering
835+
\caption{Summary of Design Decisions}
836+
\label{tab:design-decisions}
837+
\begin{tabular}{p{4cm} p{4.5cm} p{5.5cm}}
838+
\toprule
839+
\textbf{Decision Area} & \textbf{Choice Made} & \textbf{Justification} \\
840+
\midrule
841+
Backend Framework & Django & Rapid development, built-in admin, ORM, and authentication \\
842+
\midrule
843+
Frontend Framework & React & Component reusability, responsive UI, large ecosystem \\
844+
\midrule
845+
Database & MySQL (production), SQLite (development) & MySQL for scalability, SQLite for local testing \\
846+
\midrule
847+
AHP Implementation & Custom pairwise formula & Required by LBM research paper methodology \\
848+
\midrule
849+
Authentication & Django built-in with role-based access & Secure, meets access control requirements \\
850+
\midrule
851+
Automated Metrics & GitHub API + GitStats + SCC & Free, well-documented, meets data collection needs \\
852+
\midrule
853+
Testing & pytest with GitHub Actions CI & Automated, integrates with development workflow \\
854+
\midrule
855+
Deployment & McMaster University infrastructure & Cost-free, meets budget constraint \\
856+
\midrule
857+
Security & Password hashing (bcrypt), role-based access & Protects user data, prevents unauthorized edits \\
858+
\bottomrule
859+
\end{tabular}
860+
\end{table}
768861

769862
\section{Economic Considerations (LO23)}
770863

0 commit comments

Comments
 (0)