Model-driven Development of Software Configuration Management Systems - A Case Study in Model-driven Engineering