Tasks and Duties
Objective: In this task, you are required to develop a comprehensive project plan and system architecture for a simple software application that addresses a real-world problem. This assignment aims to simulate the initial phase of software development, where proper planning and design lay the foundation for a successful project.
Expected Deliverables: A detailed planning document and an architecture diagram submitted in a single file (PDF or DOCX). The document should include the project overview, requirements analysis, design strategies, and a clear roadmap for development.
Key Steps:
- Conduct a brief research on a chosen real-world problem and define the scope of your software application.
- Create a list of functional and non-functional requirements.
- Design an overall system architecture that includes high-level components, data flow diagrams, and interactions between modules.
- Develop a project timeline with milestones and deliverables, ensuring that each stage of the project is clearly defined.
- Document assumptions, constraints, and potential risks.
Evaluation Criteria:
- Clarity and completeness of the project requirements.
- Quality and detail in the architecture diagram and design documentation.
- Feasibility of the proposed timeline and risk mitigation strategies.
- Professional presentation and organization of the document.
This assignment should take approximately 30-35 hours, allowing you to simulate a real-world scenario where careful planning and design are critical. Use any publicly available resources for guidance without relying on proprietary datasets.
Objective: The goal of this assignment is to engage you in the actual coding process by implementing a mini software module based on a set of defined requirements. This task simulates the execution phase in software development where code quality, efficiency, and adherence to best practices are pivotal.
Expected Deliverables: Submit a zip file containing the complete source code of your module along with a README file that explains the installation and usage instructions. The code should be well-documented and include a brief explanation of the development decisions.
Key Steps:
- Define a specific feature or module (e.g., user authentication, CRUD operations) that you will implement.
- Design a small system or module architecture, detailing how components interact.
- Write clean, modular, and documented code following industry best practices.
- Include comments and an explanation of the logic for key sections.
- Create a README file that describes the project, installation steps, and usage details.
Evaluation Criteria:
- Functionality of the implemented module.
- Code quality, structure, and adherence to best practices.
- Quality of documentation and clarity in the README file.
- Successful demonstration of the module according to the requirements stated.
This task is estimated to take 30-35 hours. It is self-contained and should be completed using publicly available tools and libraries.
Objective: This task is designed to give you hands-on experience in testing strategies and debugging techniques. You will be required to create unit tests and simulate a debugging session on an intentionally flawed software segment. This practice is crucial to prepare you for real-world scenarios where testing and debugging are part of the daily tasks.
Expected Deliverables: A submission in the form of a zip file containing the source code, test cases, and a debugging report. The debugging report should document the errors found, the strategies you used to fix them, and lessons learned during the process.
Key Steps:
- Select or create a small piece of software that contains deliberate bugs (syntax issues, logical errors, etc.).
- Write comprehensive unit tests that detect at least 80% of the potential issues.
- Use debugging tools to step through the code, identify errors, and document your approach to resolving them.
- Refactor the code post-debugging to improve its maintainability and performance.
- Compile a detailed report outlining each bug, the testing strategy, and the fixes implemented.
Evaluation Criteria:
- Effectiveness and coverage of unit tests.
- Identification and resolution of bugs.
- Quality and thoroughness of the debugging report.
- Overall improvement in code quality after debugging.
This task is expected to take approximately 30-35 hours and must be completed using public debugging and testing frameworks.
Objective: The purpose of this assignment is to simulate a peer code review and refactoring process. You will receive an existing codebase (of your choice, created by yourself earlier or a new one that implements a similar functionality). Your task is to conduct a detailed code review, identify opportunities for improvement, and refactor the code to enhance its clarity, performance, and maintainability.
Expected Deliverables: Deliver a single file that includes a documented code review report and the refactored code base. The report should detail areas of improvement, justifications for changes, and before-and-after comparisons.
Key Steps:
- Perform an in-depth review of the provided or self-created code base focusing on structure, readability, and adherence to best practices.
- List common issues such as code smells, duplicate logic, or inefficient procedures.
- Propose and implement refactoring improvements to address the identified issues.
- Document all changes made with appropriate comments in your code.
- Compile a comprehensive review report including suggestions, observations, and detailed before-and-after analysis.
Evaluation Criteria:
- Depth and thoroughness of the code review report.
- Effectiveness of the refactoring efforts in improving code quality.
- Clarity and quality of documentation in both the report and the modified code.
- Adherence to industry best practices in coding and refactoring.
This project is estimated to take 30-35 hours and should be fully self-contained without relying on any proprietary resources.
Objective: In this final task, you will simulate a performance evaluation and deployment process for a developed software application. This exercise focuses on real-world challenges such as performance tuning, monitoring, and preparing a codebase for deployment. It emphasizes the importance of bringing a project from development to a production-like environment seamlessly.
Expected Deliverables: Submit a package that includes the final version of your application code, performance testing scripts, a deployment plan, and a detailed report summarizing your performance evaluations. The report should cover the tests performed, metrics observed, and recommendations for further improvement.
Key Steps:
- Prepare your application for performance testing by identifying critical operations and potential bottlenecks.
- Create scripts or use available tools to simulate load and measure performance metrics such as response time, memory usage, and CPU utilization.
- Analyze the test results to pinpoint performance issues.
- Develop a deployment plan that covers documentation, server setup, and rollback procedures.
- Compile a comprehensive report that details your testing methodology, findings, and proposed performance optimizations.
Evaluation Criteria:
- Comprehensiveness of performance testing methodology.
- Accuracy and depth of performance analysis and metrics presented.
- Practicality and thoroughness of the deployment plan.
- Overall quality of the final code submission and supporting documentation.
This assignment is designed to take approximately 30-35 hours. It is fully self-contained and based on publicly available resources and methodologies to simulate a production environment.