Skip to content

02 Software Development Lifecycle DevSecOps AttendanceTrack

Andres Leon Rangel edited this page Jul 13, 2024 · 5 revisions

AttendanceTrak SDLC Phases

Software Delivery Lifecycly The Software engineering lifecycle phases are defined for the class attendance app. A focus is given in DevSecOps and SRE. The goals is to make the app a SaaS product. This page presents a high level view of the DevSecOps stages. The next page includes the detailed aspects of the DevSecOps lifecycle.

graph TD
    A[Planning] -->|Define goals requirements| B[Development]
    B -->|Write code build applications| C[Testing]
    C -->|Automated testing and CI| D[Integration]
    D -->|Code integration and CI| E[Deployment]
    E -->|Automated deployment and CD| F[Monitoring]
    F -->|Continuous monitoring| G[Feedback]
    G -->|Collect feedback execute improvements| A
Loading

Attendance WebApp

  • Use of Primefaces as the UX framework with JEE MVC
  • local development with docker-compose for the LDAP, NonSQL DB

Security considerations

This involves identifying the security risks and vulnerabilities that your application might face, and setting goals for how you will mitigate them.

  • Versioning of Java and vulnerabilities in it
  • a pipeline can be set up in ADO to run security scans
  • pipeline Conducts threat modeling as a proactive process of identifying and understanding potential threats to the system (local and prod)

CI/CD Processes

Planning:

Define the goals and requirements of the project. Plan the development and deployment processes.

Goals

  1. A responsive webapp to mark attendance of classes and mandatory training sessions
  2. Automate session/class report generation
  3. Automate process of following up with student when absent

Software Requirements

Use Cases

Lecturer Student Admin Staff Application Factual Implementation
generate class attendance register attendance Obtain report attendance after each class Screen that allows students to mark attendance live with a timer under 30 seconds and an unique code
see reports see absence report see all reports
manually update attendance records manually update attendance records
get notified about absent students get notification of failure to attend trigger process of following up to understand class absence Screen with mini-process view follow-up

Admin Module

  • Enable students
  • Start Class Attendance
  • List Professors
  • Confirmation notifications via email and SMS
  • The system could send notifications to students as a reminder to confirm their attendance within the specified timeframe.
  • Notifications could also be sent to students who haven't confirmed attendance after a certain period to ensure they are aware of their status

Attendance Tracking and Reporting

  • The system should maintain a record of attendance data for each class and each student
  • The system should generate attendance reports for lecturers and administrative staff to review and analyze attendance patterns.
  • The system should present a screen to handle Absence Management. Absent students will be followed up. students to provide reasons for their absence, along with supporting documents if necessary. There must be a valid reason on failure to attend the class.

Role-Based Access Control

Implement role-based access control to ensure that only authorized users, such as lecturers and administrative staff, have access to certain features and functionalities.

Development:

CI/CD pipelines for code and build applications. GitHub Version control system is used to manage code changes.

  • Emphasize TDD Test Driven development testing paradigm in java: code the system requirements described in this page.
  • Document smoke testing of the system
  • Test locally with docker compose
  • Deploy to Azure cloud Compute VM with docker compose
  • Write the IaaC module for the App, User directory and No SQL DB
  • Generate QR code and attendance number for a specific class
  • Provide one-time authentication code for students to log their class attendance.
  • Time Limit for Confirmation: It is mandatory for the students to confirm their attendance within a 1-minute timeframe from entering the code
  • Mark attendance in a Non SQL DB
  • Generate Reports related to attendance and classes
  • Application must be responsive and accessible via PC, Laptop, Tablet and mobile devices

security standards and guidelines

  • vulnerability scanning tools

Coding practices

Local Development

Windows development process

  • leverage WSL
  • IDE VSCode and IntelliJ

Linux development process

  • vsCode with integrated terminal
  • run scripts to create and run the docker container with local changes
  • run fully automated testing in java with gradle

Testing:

Automated testing ensures the quality and functionality of the code.

Test cases

mapping requirements with the test cases

General Functionality:

User Login:
  • Login with valid credentials for different user roles (student, lecturer, admin).
  • Attempt login with invalid credentials.
  • Logout functionality.
Responsive Design:

Test website layout and functionality on different devices and screen sizes. Ensure optimal user experience across various platforms.

User Interface:

Test navigation between different screens and features. Validate UI elements are displayed correctly and function as expected.

Marking Attendance:

Student:

Mark attendance live within 30 seconds using a unique code. Verify time limit enforcement for attendance marking. Attempt marking attendance with an invalid code.

Lecturer:

Start session/class attendance. Verify attendance is recorded for registered students. Manually update attendance records if needed.

Reports and Attendance Tracking:

Lecturer and admin staff

View attendance reports for specific classes and time periods. Verify reports include accurate attendance data. Download reports in different formats (e.g., PDF, CSV).

Student:

View individual attendance records. Verify accuracy of personal attendance data.

Absence Management:

System:

Identify and flag absent students automatically. Send automated email and SMS notifications to absent students for confirmation. Trigger follow-up process for unconfirmed absences.

Student:

Receive and respond to attendance confirmation notifications. Provide reasons for absence with supporting documents. Submit absence explanations and documents.

Admin Module:

Admin:

Enable and manage student accounts. List and manage registered lecturers. Configure notification settings for attendance confirmation and reminders. View comprehensive attendance reports and data across all classes.

Role-Based Access Control:

System:

Verify only authorized users can access specific features based on their roles. Restrict unauthorized access attempts to sensitive functionalities.

Performance Testing:

Test application performance under various loads and user concurrency. Ensure response times are acceptable and application remains stable.

Security Testing:

Conduct security tests to identify vulnerabilities and potential security risks. Implement necessary security measures to protect user data and system integrity.

Integration Testing:

Test integration between the webapp and other systems it interacts with LDAP, NoSQL database, any external party Ensure data exchange and communication functions smoothly.

Release Management strategy

Git Branching Strategy

Automated deployment tools deploy the application to different environments. Continuous Deployment (CD) automates the release process.

Versioning

gradle tracks the webapp version.

use git tags and semantic versioning to manage the composite app version

  1. Installation process: project a Java project JEE. Import in any IDE and build with gradle or maven. Build docker image and run
  2. Software dependencies: dependencies are described in the gradle file
  3. Latest releases by using git tags
  4. API references. API docs

CI

Continuous Integration (CI) tools automate the testing process. Integration:

Code changes are integrated into a shared repository. CI tools automatically build and test the integrated code.

Deployment processes

Monitoring:

Continuous monitoring of application performance and infrastructure. Detect and address issues in real-time.

Incident response procedures

Feedback:

Collect feedback from users and stakeholders. Use feedback to improve future development cycles.

Clone this wiki locally