Managing Software in Higher Education James Lambert Ian Rifkin Brandeis University #NC11_SESS36
Who We Are Software Systems Administrator Enterprise Architect Your role? Why are you here?
Release Management What is release management? Managing change by understanding what software is on your server(s).
How? How to accomplish goals of release management?
Applications at Brandeis apx. 7 million lines of code Many are created in-house Some open source products Some proprietary products
Our Starting Point Software management practices apx. 4 years needed improvement Long, unmanageable application files Mixing of code, design, user information, IPs, etc all hard-coded in long files Limited usage of any version control (some CVS, some RCS) Code was often edited on the fly 3rd party software problems too (dependencies, upgrades)
Environments Sandbox: Individual developer’s area to create/edit Development: Unit testing Test: Integration testing Production: It’s live!
Environment Builds What should you do with underlying software? Apache, Java, libraries, class files, etc
Versioning Software Files Version control software Version Control Sandbox Commit Changes Get Updates
Versioning Software Files We use Subversion (svn) Directory structure of repositories: Trunk, releases, branches Directory structure within applications: .control (encrypted password files) bin (cron scripts) conf (configuration files) perllib (custom application code) templates (HTML templates) website (images, CSS, JavaScript)
Software Kits/Builds Builds/kits Our builds take files from svn (trunk or a branch), groups them together with a version number, enabling them to be released. Build Server Version Control System Get files Group files Software Kit
Release Scripts What should happen when you release a software build? Kit Send software kit, unpack and prep for application use Application Server
Releases Practices Set standards Don’t “release and run” (esp. to production) Consider downtime implications Major versus minor release? What constitutes a critical (urgent) release and what should that mean? Who tests? Where are bugs recorded?
Communication Communication between developers is critical Esp. when working together on a single product
Communication Don’t rely on version control for all of your communication Branches of code are needed at times, but add complications that need to be communicated
Questions? Ian Rifkin: irifkin@brandeis.edu James Lambert: jlambert@brandeis.edu