100 likes | 207 Views
Configuration Management. Ernest Williams. OUTLINE. Introduction Scope Software Development and Deployment Standards CVS/Subversion + Relational Database System Monitoring/Maintenance EPICS IOC Software and Extensions. Introduction.
E N D
Configuration Management Ernest Williams
OUTLINE • Introduction • Scope • Software Development and Deployment Standards • CVS/Subversion + Relational Database • System Monitoring/Maintenance • EPICS IOC Software and Extensions
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
SCOPE • The Focus in this talk is on Software Configuration Management
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
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)
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
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.
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
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