Tải bản đầy đủ (.docx) (16 trang)

COMP1640M02202324 Enterprise Web Software Development

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (136.84 KB, 16 trang )

<span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>1. Introduction</b>

Project Context:

In the rapidly evolving landscape of educational technology, the need for dynamic and interactive platforms that facilitate academic contributions has never been more critical. This project, aimed at developing a web-based system for collecting student contributions for an annual university magazine, addresses a pressing need for a structured, efficient, and scalable solution. The opportunity lies in harnessing the power of web technologies to create a platform that not only streamlines the submission process but also enhances the visibility and accessibility of student work across the university community.

Project Objectives

The primary goal of this project is to design and implement a secure, role-based web system that simplifies the process of submitting, managing, and reviewing academic articles and high-quality images for an annual university magazine. Success will be measured by the system’s ability to:

Enable students to submit their contributions easily and securely.

Provide marketing coordinators and managers with robust tools for managing and reviewing submissions.

Facilitate effective communication and feedback between students and faculty coordinators. Ensure all contributions are securely stored and easily accessible by authorized personnel only.

Implement a responsive design that is accessible on a variety of devices, including desktops, tablets, and smartphones.

Motivation for Using Jira

Jira was selected as the project management tool for this project due to its comprehensive suite of features that support agile project management methodologies. The decision was motivated by several key benefits that Jira offers, including:

Task Management: Jira’s intuitive interface allows for the easy creation, assignment, and tracking of tasks. This ensures that all project activities are well-organized and that team members are clear on their responsibilities.

Progress Tracking: With Jira, the progress of the project can be visually tracked through dashboards and boards, providing a clear overview of the current status and highlighting any areas that require attention.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Team Communication: Jira facilitates seamless communication among team members. Its integrated commenting system and notifications ensure that everyone is kept up-to-date with the latest developments and can collaborate effectively, regardless of their location.

Flexibility: The ability to customize workflows and adapt to the changing needs of the project is a critical aspect of Jira. This flexibility supports the agile development process, allowing the team to iterate rapidly and respond to feedback efficiently.

<b>2. Requirement Analysis</b>

Technical Requirements

The technical requirements for this project encompass a range of considerations essential for the development and deployment of the web-based system. These requirements are designed to ensure that the system is secure, scalable, and capable of handling a high volume of submissions. The development environment will leverage modern web technologies such as HTML5, CSS3, JavaScript (with frameworks like React or Angular for the frontend), and Node.js or Django for the backend. The product environment is targeted for deployment on cloud services like AWS or Azure, providing the necessary scalability and reliability.

Database Design: A relational database management system (RDBMS), such as PostgreSQL or MySQL, will be used to store user data, submission records, and comments. The database schema will be designed to support complex queries and ensure data integrity.

Security: Implementing HTTPS for secure communication, data encryption for sensitive information, and compliance with GDPR and other relevant data protection regulations are mandatory.

Accessibility and Responsiveness: The system must adhere to WCAG 2.1 standards for accessibility and be fully responsive to ensure usability across different devices and screen sizes.

(Note: Include diagrams or screenshots of the proposed architecture and database schema here.)

User Requirements

The system is expected to cater to the needs of various user roles, including students, faculty marketing coordinators, and the university marketing manager.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Students: Must be able to register/login, submit articles and images, view the status of submissions, and receive feedback or comments on their submissions.

Faculty Marketing Coordinators: Need to review submissions from students within their faculty, provide feedback, and select contributions for publication.

University Marketing Manager: Should have the ability to view all selected contributions across faculties but not edit them. Additionally, a functionality to download all selected contributions after the final closure date is required.

Each user role requires a tailored interface that provides access to the necessary functionalities efficiently and intuitively.

(Note: Wireframes or mockups of user interfaces for each role should be included here.)

Using Jira for Requirement Gathering

Jira is utilized extensively for the requirement gathering process. Through its issue and project tracking capabilities, Jira allows us to:

Record Requirements: Each requirement is logged as an individual issue within a dedicated project in Jira. This practice helps in maintaining a clear and organized backlog of all requirements.

Categorize Requirements: Issues in Jira can be categorized using labels, epics, and sprints, enabling the team to group related requirements and manage them as coherent units. This categorization aids in planning and prioritization.

Prioritize Requirements: Jira’s ranking feature allows the team to prioritize requirements based on their importance and the project’s objectives. This ensures that critical functionalities are developed and delivered first.

The use of Jira for requirement gathering not only streamlines the process but also ensures transparency and collaboration among all project stakeholders. It provides a dynamic platform for capturing, discussing, and refining the project requirements throughout the development lifecycle.

(Note: Screenshots of Jira boards showing the categorization and prioritization of requirements can be included here.)

<b>3. System Design</b>

System Architecture

The architecture of the system is designed to be robust, scalable, and flexible, accommodating the various functionalities required by the project. It is based on a three-tier model:

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Presentation Layer: Utilizes modern web technologies such as HTML5, CSS3, and JavaScript frameworks (React.js or Angular) to create a responsive and accessible user interface.

Business Logic Layer: Implemented using Node.js or Django, this layer handles the application's core functionality, including request processing, authentication, and authorization.

Data Layer: A relational database management system (RDBMS) like PostgreSQL or MySQL is used for data storage. This layer ensures data integrity and supports complex queries.

The system also integrates external services for email notifications and cloud storage for image uploads, ensuring a comprehensive solution for the project's needs.

(Note: Include a system architecture diagram here.)

Database Design

The database is structured to efficiently store and manage user profiles, submission records, comments, and feedback. The design focuses on normalization to eliminate redundancy and ensure data consistency.

Entities: Include Users, Submissions, Comments, and Feedback, each designed with relationships to support efficient data retrieval and updates.

Relationships: Defined to reflect the real-world interactions between different entities. For example, a one-to-many relationship between Users and Submissions signifies that a user can submit multiple articles or images.

The Entity-Relationship Diagram (ERD) provides a visual representation of the database schema, highlighting entities, their attributes, and relationships.

(Note: Include the ERD here.)

User Interface Design

The user interface (UI) and user experience (UX) design prioritize simplicity, intuitiveness, and accessibility. The design process involves:

Wireframes: Early-stage wireframes outline the layout and structure of the web pages for different user roles.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Mockups: High-fidelity mockups offer a more detailed visual representation, including color schemes, typography, and element styling.

Prototypes: Interactive prototypes are developed to simulate the user experience, facilitating usability testing and feedback collection.

User interfaces are designed to be responsive, ensuring optimal viewing and interaction across a wide range of devices.

(Note: Include wireframes, mockups, and links to prototypes here.)

Design Management in Jira

Jira is instrumental in managing the design process, offering a collaborative platform for tracking design tasks, iterations, and feedback. Key practices include:

Task Tracking: Design tasks are created as issues in Jira, assigned to designers, and tracked through various stages of completion.

Feedback Loop: Jira’s commenting system enables the collection and incorporation of feedback directly on design tasks, fostering an iterative design process.

Version Control: Design attachments in Jira tasks help maintain version history, ensuring that the team is always working on the latest designs.

Using Jira for design management enhances transparency and ensures that design decisions are documented and accessible to all team members.

(Note: Screenshots of Jira setup for design management, including tasks, feedback, and version control, can be included here.)

<b>4. Implementation and Development</b>

Development Process

The development process adopted for this project is Agile Scrum, which emphasizes iterative development, flexibility, and team collaboration. The process is divided into several key stages:

Sprint Planning: At the beginning of each sprint, the team meets to plan the work for the upcoming iteration, selecting tasks from the product backlog in Jira based on priority and estimated effort.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Daily Stand-ups: Short daily meetings help the team to synchronize their work and address any impediments quickly.

Development: Team members work on their assigned tasks, utilizing technologies such as HTML5, CSS3 for the frontend, and Node.js or Django for the backend. Version control is managed through Git, with code reviews ensuring quality and consistency.

Sprint Review and Retrospective: At the end of each sprint, the team reviews completed work and discusses ways to improve the next sprint.

Feature Implementation

Several key features were implemented during the development phase, including:

User Registration and Login: Secure authentication mechanisms were established, allowing users to create accounts and access the system.

Article and Image Submission: Users can submit articles and images through a user-friendly interface. Challenges included ensuring file security and implementing efficient storage solutions.

Feedback and Notification System: A system for marketing coordinators to provide feedback on submissions and automatic email notifications to users upon submission or comment. Implementing real-time notifications posed a technical challenge, which was addressed using web sockets.

Using Jira in Development

Jira played a crucial role in managing the development process, offering tools for task assignment, progress tracking, and issue management:

Task Assignment: Each development task, derived from the project’s requirements, was created as an issue in Jira and assigned to team members based on their expertise.

Progress Tracking: The team utilized Jira boards to visually track the progress of tasks through different stages, from "To Do" to "Done," providing a clear overview of the sprint’s progress.

Issue Management: Any bugs or issues discovered during development were logged in Jira. The team prioritized and addressed these issues, ensuring they were resolved promptly.

Jira's integration with development tools and its flexible workflow capabilities significantly enhanced the efficiency and transparency of the development process.

(Note: Screenshots of the Jira board showing the sprint progress, task assignments, and issue tracking can be included here.)

<b>5. Testing</b>

Testing Strategy

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

The testing strategy for this project is comprehensive, designed to ensure the system's functionality, security, usability, and performance meet the highest standards. It encompasses both automated and manual testing methods across various stages of development:

Unit Testing: Conducted to test individual components for correctness, typically automated to speed up the development process. Technologies such as Jest (for JavaScript) and PyTest (for Python) are used. Integration Testing: Focuses on the interactions between different parts of the application to identify any inconsistencies or failures in the integration of components.

System Testing: A holistic testing approach to evaluate the complete system's compliance with its specified requirements.

User Acceptance Testing (UAT): Conducted with actual users to ensure the system meets their needs and expectations. This stage often reveals usability issues not previously identified.

Security Testing: Specific tests designed to uncover vulnerabilities in the system, ensuring that user data is protected against unauthorized access.

Performance Testing: Tests to assess the system's behavior under various conditions, including load testing and stress testing to ensure it can handle high traffic and data volume.

Test Management with Jira

Jira is extensively used for organizing and managing the testing process, enabling efficient tracking of test cases, bug reporting, and issue resolution:

Test Case Management: Test cases are created as issues in Jira, detailing the test steps, expected outcomes, and acceptance criteria. This organization helps in ensuring that all functional areas are covered.

Bug Reporting: When testers identify bugs, they report these directly in Jira, providing detailed descriptions, steps to reproduce the issue, and, if possible, screenshots. This information is crucial for developers to understand and fix the issues efficiently.

Issue Tracking and Resolution: Jira’s dashboard and reporting tools are used to track the status of reported bugs and monitor resolution progress. It allows the team to prioritize bug fixes based on severity and impact on the project timeline.

Regression Testing: After bugs are resolved, regression tests are conducted to ensure that recent changes have not adversely affected existing functionalities. Jira’s integration with continuous integration tools can automate this process, running tests automatically after each code commit.

Using Jira for test management not only streamlines the identification and resolution of issues but also provides a transparent overview of testing progress to all stakeholders. This integrated approach ensures that the final product is of high quality and meets the project's requirements and user expectations.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

(Note: Including screenshots or reports from Jira showing the testing progress, bug reports, and resolution status can provide valuable insights into the testing process.)

<b>6. Deployment</b>

Deployment Process

The deployment process for the system is carefully planned to ensure a smooth transition from the development environment to the production environment. It involves several key steps:

Pre-Deployment Checklist: A comprehensive review of the system to ensure all functionalities are working as expected, security measures are in place, and the system is fully tested.

Environment Setup: Setting up the production environment, including server configuration, database setup, and ensuring that all necessary services are operational.

Data Migration: If applicable, migrating data from the development or staging environment to the production database with minimal downtime.

Application Deployment: Deploying the application code to the production server. This step often uses automated deployment tools like Jenkins, GitLab CI/CD, or GitHub Actions to streamline the process. DNS Configuration: Updating DNS settings to point to the new server, making the system accessible to users.

Monitoring Setup: Implementing monitoring tools to track the system’s performance and health in real-time, allowing for quick identification and resolution of any issues that arise post-deployment.

Usage and Maintenance Guide

A comprehensive guide is provided to users and system administrators, covering:

User Guide: Instructions on how to use the system, including how to submit articles/images, review submissions, and access feedback. The guide is designed to be user-friendly, with screenshots and step-by-step instructions.

Maintenance Guide: Detailed documentation for system administrators on maintaining the system, including regular backup procedures, security updates, and troubleshooting common issues. This guide also covers the process for applying updates to the system without causing downtime.

Deployment Tracking with Jira

Jira is utilized to track and manage deployment-related tasks and ongoing maintenance activities:

</div>

×