Methods & Tools Software Development Magazine

Software Development Magazine - Project Management, Programming, Software Testing

 

Understanding the Unified Modeling Language (UML) - Part 2

Sinan Si Alhir, http://sites.google.com/site/salhir/

The Big Picture

To successfully leverage the UML, we must first understand the overall context in which the UML applies.

Problems, Solutions, and Problem Solving

Organizations produce and deliver products and services that address customer needs and requirements. Requirements may be characterized as problems (often referred to as as-is situations). Products and services that address requirements are characterized as solutions (often referred to as to-be situations). To deliver valued solutions, organizations must apply knowledge in problem-solving efforts; therefore, knowledge and the ability to apply it is the determining factor of success.

  • Projects are problem-solving efforts that involve stakeholders and deliverables or work products in order to formalize the "work hard and hope for the best" approach to problem solving.
  • Programs are collections of problem-solving efforts.
  • Methods specify how to conduct problem-solving efforts.
  • Processes are realizations of methods.
  • Methodologies are taxonomies, or well-organized collections, of related methods.

The role of the UML is to enable and facilitate the following:

  • Specifying, visualizing, understanding, and documenting problems.
  • Capturing, communicating, and levering knowledge in problem solving.
  • Specifying, visualizing, constructing, and documenting solutions.

However, the UML does not prescribe any particular problem-solving approach, but is very flexible and customizable to fit any approach. It enables and promotes (but does not require nor mandate) a use-case-driven, architecture-centric, iterative, and incremental process that is object oriented and component based.

  • Use cases are used to manage and provide focus for a problem-solving effort.
  • Architecture is used to manage complexity and maintain integrity and focus as a solution to a problem evolves.
  • Iterations and increments are used to repeatedly apply a process to evolve a solution to a problem.

Fundamentally, the UML provides a means for addressing issues and risks concerning problems, solutions, and problem solving.

Problems and Solutions

Problems and solutions occur within a context (domain or space). The problem (system) must be understood in order to be solved. The solution (system) to a problem must be understood in order to be constructed and used. The solution must be organized (architecture) in order to facilitate its realization and adhere to the various constraints of the context in which it will be realized. To solve the problem, appropriate knowledge about the problem and solution must be captured (models), organized around decisions regarding the problem and solution (architectural views), and depicted (diagrams) using some language that enables it to be communicated and leveraged in the problem-solving process.

Therefore, the following concepts are critical to problems and solutions:

  • Domains or spaces are organized collections of related elements in a self-contained situation or area of interest.
  • Systems are organized collections of interacting and connected elements cooperating to accomplish a purpose.
  • Architectures are schemes involving the structural and behavioral organization of systems within contexts (domains or spaces).
  • Models are complete abstractions of systems or contexts. Abstraction involves focusing on those things that are relevant (essential) while avoiding those things that are irrelevant (incidental) to understanding something.
  • Architectural views are abstractions of models.
  • Diagrams are graphical projections of sets of model elements.

Problem Solving

Problem-solving approaches are organized (life cycles) to offer a management perspective and a development perspective. The two perspectives enable the effort to be managed and performed.

Problem solving requires being able to view the problem (paradigm) for the purpose of understanding it, and being able to view the solution (paradigm) for the purpose of realizing it. The problem-solving process involves leveraging knowledge to derive the solution (artifacts) to the problem through a series of (possibly concurrent) steps (activities) in which knowledge and rules of thumb (heuristics) gained from other problem-solving efforts may be used.

Therefore, the following concepts are critical to problems solving:

  • Life cycles are collections of phases that divide efforts into several more manageable and controllable subordinate efforts.
  • Paradigms are organized, self-contained collections of related components that form the basis for models.
  • Artifacts are work products or deliverables resulting from efforts.
  • Activities are efforts or collections of tasks directed at producing or developing artifacts. Workflows are collections of activities that are performed by specific roles.
  • Heuristics are empirical or experience-based guidelines or rules of thumb.

System development may be characterized as problem solving, including understanding or conceptualize a problem, solving the problem, and implementing or realizing the solution. Conceptualizing a problem involves representing the problem using representational constructs (mental notions or ideas). Solving the problem involves manipulating representational constructs from the problem domain and the solution domain to derive a representation of the desired solution. Realizing a solution involves mapping those representational constructs of the solution unto the solution world, that is, constructing the solution. The use of representational constructs is a very natural process that often occurs subtly and sometimes unconsciously in problem solving. Underlying this scheme is the use of a paradigm in determining the possible types of representations utilized in problem-solving efforts.

  • The object-oriented paradigm focuses on constructing reusable units and encompasses the conceptualization and specification principles of abstraction, encapsulation, inheritance, and polymorphism.
  • The component-oriented paradigm focuses on the assembly of reusable units and encompasses the specification and realization principles of components, interfaces, and infrastructure.

Go to part 1    Go to part 3    Back to the archive list

Software Testing
Magazine


The Scrum Expert