Carnegie Mellon University

17-653 Managing Software Development

Managing Software Development is a 12 unit full semester course.

Large scale software development requires the ability to manage resources—both human and computational—through control of the development process. This course provides the knowledge and skills necessary to lead a project team, understand the relationship of software development to overall product engineering, estimate time and costs, and understand the software process.

Course topics:

  • life cycle models
  • requirements elicitation
  • configuration control
  • environments
  • quality assurance

More course details can be found in the Managing Software Development syllabus.

After completing this course, students will:

  • be able to write a software project management plan, addressing issues of risk analysis, schedule, costs, team organization, resources, and technical approach.
  • be able to define the key process areas of the Capability Maturity Model and the technology and practices associated with each and a variety of software development life cycle models and explain the strengths, weaknesses, and applicability of each.
  • be able to understand the relationship between software products and overall products (if embedded), or the role of the product in the organizational product line.
  • be able to understand the legal issues involved in liability, warranty, patentability, and copyright.
  • be able to understand the purpose and limitations of software development standards and be able to apply sensible tailoring where needed.
  • be able to use software development standards for documentation and implementation.
  • be able to apply leadership principles.
  • be able to perform requirements elicitation.


  • Industrial software engineering experience with a large project, or a comprehensive undergraduate course in software engineering. All (non-MSE/MSIT) applicants need to submit a one page description of their prior industrial software experience to the instructor.