Skip to content

Latest commit

 

History

History
87 lines (58 loc) · 5.89 KB

File metadata and controls

87 lines (58 loc) · 5.89 KB

PROJECT REPORT

1. INTRODUCTION

This report provides an overview of the learning process, challenges encountered, and the role GitHub played in managing the software project. The project involved [designing a web-based Risk Analysis System], which was developed over a period of [3 weeks] using various technologies such as [Django, SQL, Tom's Obvious and Minimal Language].

2. LEARNING PROCESS

2.1 Initial Learning Phase

At the beginning of the project, the focus was on understanding the core technologies and tools that would be used. This included:

  • Learning Django packages, Database and ORM (Object-Relational Mapping)
  • Understanding software development methodologies like Agile.
  • Familiarizing with version control using Git and GitHub.

2.2 Development Phase

During the development phase, the learning process was continuous as new challenges arose. Key learning points included:

  • Implementing best practices in coding and software design.
  • Learning how to write effective documentation.
  • Mastering Git commands for version control.
  • Collaborating effectively with team members using GitHub.

2.3 Review and Iteration

As the project progressed, code reviews and iterations were a significant part of the learning process. This phase involved:

  • Reviewing and refactoring code based on feedback.
  • Learning to write and run tests to ensure code quality.
  • Understanding the importance of continuous integration and deployment (CI/CD) pipelines.

3. CHALLENGES FACED

3.1 Technical Challenges

Several technical challenges were encountered during the project, including:

  • Debugging Complex Issue: Encountered several bugs that were difficult to reproduce and fix, particularly those related to Django.
  • Performance Optimization: Ensuring the application performed efficiently under load was challenging and required learning about performance profiling tools and techniques.
  • Integration Issues: Integrating third-party APIs and ensuring compatibility with existing codebases posed significant challenges.

3.2 Project Management Challenges

Managing the project timeline and deliverables presented its own set of challenges:

  • Scope Creep: There were instances where additional features were requested mid-project, leading to challenges in maintaining the original timeline.
  • Collaboration Difficulties: Coordinating between team members with different time availability was challenging and required better planning and communication.
  • Maintaining Consistency: Ensuring that all team members followed the same coding standards and practices was a challenge, especially in the early stages of the project.

4. ROLE OF GITHUB IN PROJECT MANAGEMENT

GitHub played a crucial role in the successful management and execution of the project. Its features facilitated various aspects of the project, including:

4.1 Version Control

GitHub’s version control system allowed for:

  • Tracking Changes: Every change made to the codebase was tracked, making it easy to identify when and where issues were introduced.
  • Branching and Merging: Multiple branches were used for different features, allowing parallel development and easier integration of new features.
  • Pull Requests: Pull requests were used to review code before merging it into the main branch, ensuring code quality and consistency.

4.2 Collaboration

GitHub enhanced collaboration among team members by:

  • Issue Tracking: Issues were used to track bugs, feature requests, and tasks, providing a clear view of what needed to be done.
  • Project Boards: Project boards helped in organizing tasks, assigning them to team members, and tracking their progress.
  • Team Communication: Comments on commits, pull requests, and issues facilitated asynchronous communication and ensured everyone was on the same page.

4.3 Documentation

GitHub provided a platform for maintaining comprehensive project documentation:

  • README.md: The README file was used to provide an overview of the project, setup instructions, and usage details.
  • CHANGELOG.md: This was used as a detailed record of all significant changes made to the project over time.
  • CONTRIBUTING.md: This served as a guide for contributors who wanted to participate in the development of a project. It outlined the procedures, guidelines, and best practices that contributors would follow to ensure that their contributions are consistent, effective, and align with the project's goals.
  • REQUIREMENTS.txt: The file is a crucial component in managing the project's dependencies. It lists all the Python packages and their specific versions that are required to run the project.
  • Commit Messages: Descriptive commit messages were maintained to provide context for each change, aiding in understanding the history of the project.

4.4 Continuous Integration and Deployment (CI/CD)

GitHub’s integration with CI/CD tools such as [Travis CI, GitHub Actions, etc.] allowed for:

  • Automated Testing: Tests were automatically run on each commit, ensuring that new changes did not break existing functionality.
  • Automated Deployments: The project was automatically deployed to [production environment] whenever changes were merged into the main branch, streamlining the deployment process.

5. CONCLUSION

The project was a significant learning experience, with GitHub playing a central role in managing the challenges associated with software development. The use of GitHub’s features for version control, collaboration, documentation, and CI/CD greatly contributed to the project's success. Moving forward, the knowledge gained from this project will be invaluable in tackling future projects more effectively and efficiently.

Project Contributors: [Malvin Masiye, Brian Tumbare, Tendai Gadagah, Vimbai Mukwekwezeke and Godknows Muwandi]

Date: [28 August 2024]