software architecture project