Example of software architecture using design patterns