SCM Report Final
SCM Report Final
A REPORT
submitted by
ABHISHEK.S.B (22MIS1114)
SUKHESH KANNA (22MIS1065)
ROHINTH( 22MIS1084)
of
Completed under
November 2024
Introduction
The student volunteer system is a web application designed to facilitate networking among students and
local volunteers. It incorporates features akin to social media platforms, including login, home, profile,
messaging, and connection functionalities. The platform aims to create a seamless and user friendly
experience while adhering to robust software construction principles to ensure scalability,maintainability,
and reliability.This report integrates key concepts from Code Complete and software construction
management,demonstrating how these principles have been applied to the development and maintenance
of the web application.
The proposed system for the Ocean App aims to build a platform that connects local volunteers, enabling
them to share content, schedule virtual meetings, and collaborate effectively. It addresses limitations in
existing systems by emphasizing user-centric design, scalability, and seamless integration of essential
features.
1. Enhanced Connectivity:
Provide a centralized platform where volunteers can interact, share resources, and organize events
effectively.
2. Ease of Use:
Offer an intuitive interface with minimal learning curve, ensuring accessibility for users of all
technical backgrounds.
3. Content Sharing:
Enable users to post, like, and comment on content, fostering engagement and collaboration within
the community.
4. Virtual Collaboration:
Facilitate scheduling and joining virtual meetings with reminders and notifications for improved
productivity.
5. Scalability:
Ensure the platform can handle increasing users and content without compromising performance.
The maintenance of the Ocean App ensures that the system operates seamlessly post-deployment, adapts to
user needs, and remains reliable and secure over time. This maintenance strategy encompasses corrective,
adaptive, perfective, and preventive maintenance activities.
1. Corrective Maintenance:
o Objective: Address and resolve any issues or bugs that arise in the system after deployment.
o Examples:
Resolving issues with user authentication, such as login failures or session expiration.
2. Adaptive Maintenance:
o Objective: Modify the app to adapt to changes in the external environment, including
updates to technology or user needs.
o Examples:
Ensuring compatibility with the latest web browsers and mobile devices.
3. Perfective Maintenance:
o Objective: Enhance the app by adding new features or improving existing ones based on user
feedback.
o Examples:
4. Preventive Maintenance:
o Objective: Proactively prevent potential issues by improving the app’s reliability and reducing
future risks.
o Examples:
Maintenance Workflow
o Users can report bugs or issues through a feedback form or a support email.
o Monitoring tools like error logs and server performance metrics help identify technical
problems.
2. Prioritization:
o Issues are categorized based on severity and impact (e.g., critical bugs vs. minor UI tweaks).
o High-priority issues like server downtime or login failures are addressed immediately.
3. Implementation:
o Fixes and updates are implemented in a staging environment to ensure they don’t disrupt
the live app.
Downtime Management
In the event of downtime, the following steps ensure the app is restored quickly and with minimal disruption:
1. Notification to Users:
o Display a maintenance page explaining the downtime and providing an estimated resolution
time.
o Analyze server logs, database activity, and code repositories to identify the cause of
downtime (e.g., server overload, broken code).
3. Immediate Fixes:
4. Post-Downtime Review:
o Document the issue, its resolution, and preventive measures to avoid recurrence.
Maintenance Schedule
1. Daily:
2. Weekly:
3. Monthly:
o Apply security patches to the underlying software stack (e.g., PHP, MySQL).
4. Quarterly:
o Plan and implement feature updates based on user feedback and analytics.
1. Error Monitoring:
o Tools like Sentry or custom PHP error logs capture runtime errors and alert developers.
2. Performance Monitoring:
o Use tools like Google Lighthouse for frontend performance and phpMyAdmin for database
optimization.
o Automate daily backups of the MySQL database and store them in secure locations.
4. Version Control:
o Use Git to track changes and ensure the ability to roll back to a stable version in case of
errors.
Reliability: Ensures users can access the app without interruptions or glitches.
Adaptability: Keeps the app relevant and compatible with emerging technologies.
User Satisfaction: Addresses user feedback promptly and adds features that enhance their
experience.
Security: Protects user data and maintains trust through regular updates and proactive security
measures.
By adopting a proactive and structured approach to maintenance, the Ocean App can sustain long-term
usability, scalability, and user satisfaction while adapting to evolving demands and technological landscapes.
Modular Design:
User Module: Covers user authentication, profile management, and activity tracking.
This modularity allows independent updates, ensuring new features in one module
don’t break others.
API-Driven Architecture:
o APIs act as connectors between the front end and back end:
RESTful APIs for CRUD operations (e.g., creating posts or retrieving user details).
o APIs enable seamless communication between microservices, allowing for future scalability.
Fig 1).problem reporting
Understanding Requirements
o Regular surveys and in-app feedback options allow users to suggest new features or report
bugs.
o Example: Users requested reminders for upcoming meetings, leading to the addition of
notification features.
Agile Methodologies:
Example: "As a user, I want to schedule a virtual meeting and receive reminders 10
minutes before it starts."
o Before coding, tools like Figma are used to design and validate user interfaces.
o Example: Wireframes for the content-posting screen ensure intuitive layouts before
development begins.
o Example: All variables and functions are descriptively named, e.g., validateUserInput() or
fetchMeetingData().
o Key logic sections, such as scheduling conflicts in the Meeting Module, are explained using
comments.
o API documentation is auto-generated using tools like Swagger for backend endpoints.
README Files:
o Every module has a README.md file describing its purpose, setup instructions, and usage,
aiding onboarding for new developers.
This section explains how design heuristics and metaphors guide the Ocean App's development and their
practical application.
o Implementation:
The Ocean App uses Firebase for notifications instead of building a custom solution,
ensuring faster implementation and fewer bugs.
The app’s UI is minimalistic: core actions like posting content, joining meetings, or
accessing user profiles are limited to 2-3 clicks.
o Implementation:
Advanced meeting analytics (e.g., attendance trends) were deferred until the basic
meeting module was stable.
o Implementation:
Content Module: Manages post creation, likes, and sharing, independent of the
meeting module.
4. Fail Fast:
o Implementation:
Frontend: Invalid user input (e.g., empty fields, incorrect formats) is blocked
immediately with error messages.
Backend: Any invalid data reaching the server triggers early rejection with
descriptive HTTP responses (e.g., 400 Bad Request for malformed JSON).
o Implementation:
6. Scalability by Default:
o Implementation:
The app uses AWS Elastic Beanstalk to handle increasing traffic without manual
intervention.
Databases are set up with partitioning and indexing, ensuring fast query responses
as the volume of data grows.
1. Ocean Metaphor:
o Concept: The app's workflows resemble the dynamic flow of ocean waves.
o Implementation:
Lighthouse (Monitoring): Tools like Datadog act as the lighthouse, signaling issues
before they become critical. For instance, if server response times spike, the
monitoring tool raises alerts immediately.
Tide of Growth: As user numbers increase, the app scales automatically with load
balancers, akin to adjusting for rising tides.
o Concept: The app is designed as a "town" with different buildings (features) and roads (APIs)
connecting them.
o Implementation:
Town Hall: The User Module serves as the central hub, managing user credentials
and profiles.
Bulletin Board: The Content Module acts as a shared space for users to post and
view content.
Community Center: The Meeting Module provides virtual gathering spaces for real-
time collaboration.
APIs act as roads, ensuring smooth travel of data between modules without
congestion.
o Concept: The app operates like a library where modules represent shelves, and backend
services act as the librarian.
o Implementation:
Shelves (Modules): Posts, users, and meetings are stored as independent entities in
the database, categorized for easy access.
Card Catalog (Indexes): Database indexing ensures rapid retrieval of posts or user
information.
Librarian (Backend): When a user searches for "recent posts," the backend retrieves
data in an organized manner using pre-sorted queries.
4. Ecosystem Metaphor:
o Concept: The app functions as a living ecosystem where users, features, and systems interact
dynamically.
o Implementation:
Users as Animals: Each user has unique needs, and the app adapts by personalizing
content recommendations and meeting preferences.
Environment as Servers: Servers ensure all interactions are smooth, just as a healthy
ecosystem supports all living beings. Cloud infrastructure dynamically adjusts server
resources to maintain this balance.
Ecological Balance (Maintenance): Regular updates and monitoring keep the system
stable, akin to maintaining biodiversity in an ecosystem.
Heuristics in Action:
o KISS keeps the UI and workflows simple, while DRY ensures reusable components across
features.
o Fail Fast prevents prolonged issues, and SoC organizes the app into manageable modules.
Metaphors in Action:
o The Ocean metaphor illustrates how the app scales and monitors user interactions
dynamically.
o The Library metaphor captures how data is stored and retrieved efficiently.
These heuristics and metaphors collectively guide the design, development, and maintenance of the Ocean
App, ensuring a seamless user experience while enabling scalable, reliable growth.
a. Modular Development
The Ocean App follows a modular design, where each module handles a specific functionality and is
constructed independently.
Core Modules:
1. User Module:
Built with PHP to handle user registration, login, and profile management.
Stores user data in a MySQL database, using hashed passwords for security.
2. Content Module:
Allows users to create, edit, and delete posts with HTML forms and PHP handling the
backend logic.
Supports image uploads, stored on the server with file paths saved in the database.
3. Meeting Module:
Integrates scheduling logic using PHP, storing meeting details in the database.
1. Frontend Development:
2. Backend Development:
o PHP: Handles business logic, form validation, and server-side rendering of dynamic content.
o Session Management: Utilizes PHP sessions to track user authentication and maintain state.
3. Database:
o MySQL: Used for storing structured data, such as user credentials, posts, and meeting
schedules.
o HTML wireframes are created to outline the layout of pages like the home screen, user
profiles, and post feeds.
2. Coding Standards:
o PHP and SQL follow best practices, including avoiding SQL injection through prepared
statements.
3. Incremental Builds:
a. Integration Strategy
Modules built with PHP and MySQL are integrated using server-side logic to ensure smooth communication
and data exchange.
1. Frontend-Backend Integration:
o HTML Forms: Collect user inputs (e.g., login credentials, post content) and submit them to
PHP scripts for processing.
o Dynamic Content Rendering: PHP retrieves data from the MySQL database and dynamically
generates HTML pages.
Example: A user's dashboard displays their recent posts and meeting schedules,
fetched using SQL queries.
2. Database Integration:
o Tables are designed to handle relationships between users, posts, and meetings:
o Data is accessed and updated using SQL queries executed through PHP.
3. Error Handling:
o Input validations (e.g., required fields, proper data types) are performed on both the client
side (HTML/JavaScript) and server side (PHP).
o PHP error handling captures database errors, such as connection failures or invalid queries.
1. Manual Testing:
o Frontend forms are tested to ensure they correctly submit data to the backend.
2. Integration Testing:
o End-to-end workflows, such as creating a post and viewing it on the dashboard, are verified.
3. Cross-Browser Testing:
o Ensures the app works consistently across major browsers (e.g., Chrome, Firefox, Edge).
1. Deployment Workflow:
o Caching mechanisms (e.g., server-side caching for frequently accessed pages) reduce server
load.
o Solution: Prepared statements in PHP prevent SQL injection. Passwords are hashed using
functions like password_hash().
o Solution: Files are uploaded to the server, and their paths are stored in the database to
reduce database storage overhead.
o Solution: Efficient SQL queries and optimized PHP scripts minimize latency.
Conclusion
The Ocean App represents a thoughtfully constructed platform designed to connect local
volunteers, facilitate collaboration, and foster community engagement. By leveraging modern web
technologies such as HTML, CSS, PHP, and MySQL, the app ensures a seamless user experience,
scalability, and reliability. The proposed system outlines the app’s core features, including content
sharing, virtual meetings, and user interaction, which are all geared towards improving the
volunteer experience.The construction and integration processes have been carefully planned,
using a modular approach to ensure ease of maintenance and future scalability. Through the
application of best practices, such as ensuring high code readability, maintaining robust error
handling mechanisms, and performing regular testing, the app is poised to operate efficiently even
as it grows and adapts to new requirements.The maintenance strategy emphasizes proactive issue
resolution, adaptability to new technologies, and user-driven improvements. By regularly updating
the system, optimizing performance, and responding to user feedback, the app is prepared to
continue meeting the needs of its users in a dynamic and evolving environment.Overall, the Ocean
App stands as a solid example of modern software development, combining user-centric design,
scalable architecture, and an effective maintenance strategy to create a lasting, impactful solution
for local volunteer communities.