A software architecture for self updating life cycle building models