- Forward


Software Product Design
A Definition


Prof. David Bernstein
James Madison University

Computer Science Department
bernstdh@jmu.edu

Print

Definitions
Back SMYC Forward
  • Software Design:
    • Software design is the process of specifying the nature and composition of a software system that satisfies client needs and desires, subject to constraints. (Fox, 2006)
  • Software Product Design:
    • Software product design is the process of specifying software product features, capabilities and interfaces to satisfy client needs and desires. (Fox, 2006)
Product Design Phases
Back SMYC Forward
  • Analysis:
    • Understanding the problem
  • Resolution:
    • Solving the problem
Product Design Phases (cont.)
Back SMYC Forward
  • Analysis results in Needs:
    • A statement of the "problem"
    • For example, "The user needs to ..."
  • Resolution results in Requirements:
    • A statement of the "solution"
    • For example, "The product must..."
Product Design in Context
Back SMYC Forward
  • In Heavyweight/Non-Incremental Software Processes:
    • Product design is (mostly) completed "up front" and the result is (mostly) "set in stone"/"non-negotiable" (as would be the case for a manufactured product)
    • Analysis is (mostly) completed before resolution begins (though there is often some iteration)
  • In Agile/Incremental Processes:
    • Product design is a "just in time" activity (i.e., just enough of the users' needs are identified to create requirements that allow construction to begin/continue)
    • The product is modified continuously (based on conversations and negotiations with stakeholders)
There's Always More to Learn
Back -