@article {14711,
	title = {Mutatis Mutandis: Safe and predictable dynamic software updating},
	journal = {ACM Trans. Program. Lang. Syst.},
	volume = {29},
	year = {2007},
	month = {2007/08//},
	abstract = {This article presents Proteus, a core calculus that models dynamic software updating, a service for fixing bugs and adding features to a running program. Proteus permits a program{\textquoteright}s type structure to change dynamically but guarantees the updated program remains type-correct by ensuring a property we call con-freeness. We show how con-freeness can be enforced dynamically, and how it can be approximated via a novel static analysis. This analysis can be used to assess the implications of a program{\textquoteright}s structure on future updates in order to make update success more predictable. We have implemented Proteus for C, and briefly discuss our implementation which we have tested on several well-known programs.},
	keywords = {capability, dynamic software updating, proteus, Type inference, updateability analysis},
	isbn = {0164-0925},
	doi = {10.1145/1255450.1255455},
	url = {http://doi.acm.org/10.1145/1255450.1255455},
	author = {Stoyle,Gareth and Hicks, Michael W. and Bierman,Gavin and Sewell,Peter and Neamtiu,Iulian}
}
@conference {14710,
	title = {Mutatis mutandis: safe and predictable dynamic software updating},
	booktitle = {Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages},
	series = {POPL {\textquoteright}05},
	year = {2005},
	month = {2005///},
	pages = {183 - 194},
	publisher = {ACM},
	organization = {ACM},
	address = {New York, NY, USA},
	abstract = {Dynamic software updates can be used to fix bugs or add features to a running program without downtime. Essential for some applications and convenient for others, low-level dynamic updating has been used for many years. Perhaps surprisingly, there is little high-level understanding or language support to help programmers write dynamic updates effectively.To bridge this gap, we present Proteus, a core calculus for dynamic software updating in C-like languages that is flexible, safe, and predictable. Proteus supports dynamic updates to functions (even active ones), to named types and to data, allowing on-line evolution to match source-code evolution as we have observed it in practice. We ensure updates are type-safe by checking for a property we call "con-freeness" for updated types t at the point of update. This means that non-updated code will not use t concretely beyond that point (concrete usages are via explicit coercions) and thus t{\textquoteright}s representation can safely change. We show how con-freeness can be enforced dynamically for a particular program state. We additionally define a novel and efficient static updateability analysis to establish con-freeness statically, and can thus automatically infer program points at which all future (well-formed) updates will be type-safe. We have implemented our analysis for C and tested it on several well-known programs.},
	keywords = {capability, dynamic software updating, proteus, Type inference, updateability analysis},
	isbn = {1-58113-830-X},
	doi = {10.1145/1040305.1040321},
	url = {http://doi.acm.org/10.1145/1040305.1040321},
	author = {Stoyle,Gareth and Hicks, Michael W. and Bierman,Gavin and Sewell,Peter and Neamtiu,Iulian}
}
@article {18431,
	title = {Software process improvement in small organizations: a case study},
	journal = {Software, IEEE},
	volume = {22},
	year = {2005},
	month = {2005/12//nov},
	pages = {68 - 75},
	abstract = {The Capability Maturity Model for software has become a major force in software development process improvement. We looked at the role of process improvement in the context of a small organization. Although the Capability Maturity Model integration is replacing the CMM, we focused on the older CMM. We had to look at more than which CMM key process areas apply to small businesses. Our overall goal was to institute good software development practices, we used the language of the CMM to gain the management{\textquoteright}s cooperation. Applying these practices is essential to managing growth, yet undertaking this effort without prior experience could impede a small company{\textquoteright}s innovative nature. This case study{\textquoteright}s purpose was to investigate the success factors of a software process improvement effort for a small software development organization.},
	keywords = {area;, aspects;, capability, CMM, development, improvement;, key, management;, Maturity, model;, organisational, organization;, process, small, software},
	isbn = {0740-7459},
	doi = {10.1109/MS.2005.162},
	author = {Dangle,K.C. and Larsen,P. and Shaw,M. and Zelkowitz, Marvin V}
}
