Methods: Deciding What to Design

Credits: 12 units

Semester: Fall

Length: full semester


Practical development of software requires an understanding of successful methods for bridging the gap between a problem to be solved and a working software system. This includes understanding of the business domain and business processes, identifying key stakeholders, frame the problem and define the boundaries, collect and document the requirements, manage requirements related risks and communicate this with the stakeholders. Important part of requirements elicitation is creative design and prototyping. A lot of planning and development work depends on requirements. Therefore this part of software development process plays a key role for success of other software development activities.

In this course, you will study a variety of ways to understand the problem you're solving, the various factors that constrain the possible solutions, and approaches to deciding among alternatives. You will also learn methods to document the requirements elicitation process for different stakeholders, manage risks and communicate requirements related decisions with end-users, investors, designers and members of the development team.

Course topics:

  • how to frame a software engineering problem, challenges and approaches
  • the aim of requirements elicitation and documentation
  • interviewing, focus groups and walkthroughs
  • personas, goal analysis and conflicts resolution
  • creative design, user centered design and prototyping
  • use cases and use case modeling
  • business modeling

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

After completing this course, you will be able to:

  • Interact with potential users in order to gather data about work contexts
  • Analyze user data and bring it to bear on system design
  • Frame the problem and communicate it with key stakeholders
  • Collect requirements and document them efficiently
  • Identify requirements conflicts, then reconcile using functional alternatives
  • Adjust development to reflect an appropriate level of agility in your project.
  • Manage requirements related risks.
  • Work with graphical designers to develop efficient prototypes.


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

Сайт находится в технической разработке