part 2 software architecture