ASBEL KIBET ROTICH
SCT211-0087/2022
Question 1
(a) Definitions and Examples:
1. Agile – Agile is a s/w development methodology where a s/w is developed with
iterative improvements. The improvements are done in sprints.
Example: we follow agile principles by developing the system in weekly sprints and
improving the ML model and the S/W iteratively.
2. DevOps – This is the integration of s/w development and business operations to make
the deployment efficient through automation and CI/CD.
Example: we use GitHub Actions to automate testing and deployment of our Django
application.
3. Lean Software Development – this methodology involves the implementation of
necessary features only, ensuring software is shipped efficiently and fast.
Example: Avoiding unnecessary features and optimizing data storage by ensuring the
database only holds essential value addition methods and classification results.
(b) Integration of these paradigms ensures adaptability, efficiency and streamlined
workflows.
Question 2
(a) The Model-View-Controller (MVC) architecture:
• Model – Handles data logic (e.g., ValueAdditionMethod model stores processing
techniques).
• View – Displays data to users (e.g., a webpage listing value addition techniques).
• Controller – Manages communication between Model and View (e.g., Django views
handling API requests).
(b) Scalability Considerations
1. Database optimization – Using indexes in Django ORM to speed up queries for
storing and retrieving ripeness classification results.
2. Load balancing – Deploying on AWS with load balancing to handle multiple user
requests efficiently.
Security Considerations
1. Authentication & Authorization – Implementing JWT authentication in Django REST
Framework to secure access to the API.
2. Input Validation – Ensuring image uploads for classification are restricted to valid file
formats to prevent injection attacks.
Question 3
(a) CI/CD improves software by automating testing, reducing errors, and speeding up
releases. In our project, GitHub Actions automates testing of the classification API.
(b) Using Git/GitHub:
• Git tracks code changes.
• GitHub facilitates collaboration through pull requests and issues.
• Branching Strategy:
▪ main branch – Stable production code.
▪ dev branch – Feature development.
(c) CI/CD Tools:
1. Jenkins – Automates testing and deployment.
2. GitHub Actions – CI/CD for GitHub-hosted projects.
3. Docker – Enables containerization for consistent deployment.
Question 4
(a) Comparison:
• Frontend – Manages user interface (HTML, CSS, JavaScript, React).
• Backend – Manages business logic, database (Django, PostgreSQL).
• Team roles:
▪ Frontend: UI/UX Developer.
▪ Backend: API Developer.
(b) API Documentation helps developers understand how to use an API. Tools:
1. Swagger – Auto-generates interactive API docs.
2. Insomnia – API testing and documentation.
Section B
Question 5: GitHub & CI/CD Pipelines
(a) Steps to Initialize GitHub Repository:
1. Create a repository.
2. Initialize Git (git init).
3. Add .gitignore file.
4. Create dev and feature branches.
5. Push initial commit (git push origin main).
6. Use Pull Requests (PRs) for code review.
(b) CI/CD Pipeline Using GitHub Actions:
1. Commit Code – Developer pushes code.
2. Automated Testing – Tests run on GitHub Actions.
3. Build & Deploy – Docker container is built and deployed.
(c) Common Version Control Mistakes & Fixes:
1. Committing sensitive data – Use .gitignore.
2. Not using branches – Follow a branching strategy.
3. Ignoring merge conflicts – Resolve conflicts properly.
Question 6: Microservices & Database Design
(a) Microservices Architecture for Patient Management System:
• Authentication Service – Manages user logins.
• Patient Records Service – Stores medical data.
• Appointment Scheduling Service – Handles bookings.
• Notification Service – Sends SMS/email alerts.
(b) Microservices vs. Monolithic:
• Microservices allow independent scaling and deployment.
• Monolithic apps can be harder to scale.
(c) SQL vs. NoSQL for Performance & Scalability:
• SQL (PostgreSQL) – Best for structured patient data.
• NoSQL (MongoDB) – Good for flexible, unstructured data storage.
Question 7: UI Design & UX in Software Architecture
(a) Best Practices for Wireframing:
1. Keep it simple – Avoid unnecessary details.
2. Use grids/layouts – Ensure UI consistency.
3. Indicate interactions – Show buttons, links.
4. Get feedback early – Validate with users.
(b) Key UI Wireframes for an Online Bookstore:
• Homepage: Search bar, book categories.
• Search Page: Filter results, book previews.
• Checkout Page: Cart summary, payment options.
(c) UX Considerations in Software Architecture:
1. Loading Speed Optimization: Fast response times improve engagement.
2. Accessibility Features: Ensuring all users, including disabled individuals, can
navigate the system.