CB.

Systeemontwikkelingsmethoden (INFOB2SOM)

Completed: 28-01-2025 | 7.5 EC | Universiteit Utrecht

What I Learned

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:

Software Development Techniques

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.

 

Software Development Methodologies

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.

 

Design and Modeling

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 and Integration

DevOps: Investigated integrating development and operations, focusing on automation and collaboration.

 

Practical Application

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.