Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge and developing software systems in the service of mankind. Software engineering research is concerned with improving our ability to systematically and predictably analyze and develop sophisticated software that must satisfy complex, ill-specified requirements and that must evolve during its lifetime.
At Carnegie Mellon, our software engineering research is distinguished by our blend of formal analysis with engineering and economics. Our research interest in software engineering is principally of two kinds: developing improved models and techniques for the design and implementation of large complex software systems that must satisfy rich, often under-specified, requirements in their operating environments; and developing improved models and techniques for formal analysis of software components to ensure or determine specific formalizable properties. Our work is divided into four research thrusts: software architecture; self-healing systems; value-based design; and security, programming language design, and program analysis software engineering.