In (INFOB2SOM), I explored a comprehensive set of software development methods, building on foundational programming skills to design, implement, and evaluate software systems. Below is a breakdown of the topics covered:
Object-Oriented Programming in Python: Basic OOP concepts like inheritance and encapsulation.
Testing: Learned unit testing and coverage analysis using Python’s unittest framework.
Refactoring: Studied code restructuring techniques to improve design.
Software Reuse: Explored frameworks and microservices for building modular systems.
Code Reviews: Practiced evaluating code quality with static analysis tools.
Waterfall and Rational Unified Process (RUP): Analyzed traditional, phased development approaches.
Agile Methods and Scrum: Studied iterative development and Scrum practices.
Requirements Engineering: Learned to elicit and specify requirements using use cases and domain models.
Object-Oriented Design and GRASP: Applied General Responsibility Assignment Software Patterns for robust design.
Unified Modeling Language (UML): Designed class diagrams to document software architecture.
Design Patterns: Implemented/analyzed patterns like Façade, Adapter, Bridge, Abstract Factory, and Observer.
Architectural Patterns: Explored high-level system structures like MVC.
OO Design Principles: Studied SOLID principles for writing maintainable code.
DevOps: Investigated integrating development and operations, focusing on automation and collaboration.
Assignment 1: Reused existing frameworks and the Gemini LLM api to build a system, tested it with unit tests, conducted a code review, and reflected on design improvements.
Assignment 2: Performed requirements elicitation and analysis for a software system, creating a design and use cases.
Assignment 3: Implemented the design from Assignment 2 in Python, evaluating correctness, applying design patterns and verifying functionality.