Configuration Management Ernest Williams Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu OUTLINE Introduction Scope Software Development and Deployment Standards CVS/Subversion + Relational Database System Monitoring/Maintenance EPICS IOC Software and Extensions Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu Introduction In order to meet the reliability and availability requirements placed on the control system; a solid configuration management system is needed. Configuration management also supports the long term maintenance and security of control systems. Configuration management applies to: Hardware Software Documentation (e.g. procedures and drawings) Plan to hire a Database Software Architect and Engineer Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu SCOPE The Focus in this talk is on Software Configuration Management Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu Software Configuration Management (Wiki-Pedia) Configuration identification - What code are we working with? Configuration control - Controlling the release of a product and its changes. Status accounting - Recording and reporting the status of components. Review - Ensuring completeness and consistency among components. Build management - Managing the process and tools used for builds. Process management - Ensuring adherence to the organization's development process. Environment management - Managing the software and hardware that host our system. Teamwork - Facilitate team interactions related to the process. Defect tracking - Making sure every defect has traceability back to the source Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu Software Development Software Development Multi-user Server/Workstation environment (e.g. linux) Software development standards/guidelines will provide some consistency and lead to code maintainability. Use common frameworks and software tools Compiler/build environment must be kept in synch with production server. Test, test, test on development server Build/Construct reusable test harness for software components. Use debugging tools: gdb, valgrind, purify, etc… Practice software version control using such as CVS or Subversion:. Development of shared IOC software modules such as EPICS IOC device/driver support should undergo small informal software design reviews. Internal/External peer review) Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu Software Deployment Software Deployment Multi-user Server/Workstation environment (e.g. linux) Strong software release procedures/standards. Production releases for deployment should be tagged and/or marked with a clear versioning scheme. The version and all dependencies could be captured in a relational database. Mark/Embed all shared libraries with some version string or tag. Create/Implement a reliable and sound “roll-back” scheme. Develop a deployment checklist (manual/automated) Test on the production side before turning over to operations Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu CVS/Subversion + Relational Database What do we need to capture in an RDB? Location of software documentation Author’s information Email address, phone number, etc… Release/Version versus machine operating period Version numbers associated with an IOC but maintained with different versioning software or methods Examples: FPGA code, LabView, MATLAB A relational database can tie all of this together and produce useful reports. We are planning to join the IRMIS Collaboration. Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu System Monitoring/Maintenance Configuration management also means keeping tabs on the status of what is running on our systems. Is caRepeater running? Who is monitoring that? Does someone get paged if it is down? What about iocLogServer or some other important service that our software relies on? Configuration management means bug tracking and resolution. What about patch management? Investigating some options now. Bugzilla Mantis RequestTracker (RT) Again, we should integrate this in with a relational database to help us monitor/maintain our systems Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu Concerns/Issues Many disparate Database systems here at SLAC. Critical Database servers outside the control system network could reduce availability. Hardware configuration management requires a solid plan for developing/releasing drawings, firmware, etc… Need to hire Database Engineer/Architect Control Systems Software Section FAC November 2008 Ernest L. Williams Jr. ernesto@slac.stanford.edu