Analysis & Modeling | modeling software effectively requires craftsmanship
Software analysis and modeling

It is important to examine and represent a problem domain so that functionality can be understood more completely before development begins. However, problem domains are often too large and complex to be understood as a whole. Partitioning reveals detail in a hierarchical fashion, decomposing such problem domains into constituent parts separated by interfaces so that the overall functionality is still accomplished. These constituent parts can be more easily modeled to depict the system information, function, and behavior that have to be developed.

Software modeling provides a better understanding of a system in the context of the problem domain, and often exposes opportunities for simplification and re-use. Using the UML (Unified Modeling Language), the models produced are abstractions of reality that help visualize and communicate structural properties that emphasize the architecture and organization of a system, or the behavioral properties that emphasize the dynamics of a system.

Using techniques for object-oriented analysis (OOA), the constituent parts of the problem domain, modeled separately to reduce complexity but still inter-related, can be connected into one semantic whole. But no single model with a specific view of a system is sufficient. A non-trivial system is best modeled using a set of complementary and inter-locking models that use different views:

  • Use case view exposing the system's requirements
  • Design view capturing the vocabulary of the problem domain and the solution domain
  • Process view demonstrating the distribution of the system's processes and threads
  • Implementation view addressing the physical realization of the system
  • Deployment view focusing on system engineering issues

Each of these views may have structural, as well as behavioral aspects. Together they represent the blueprints of a software system and can be used to guide the development efforts.

The first step to developing quality software is to craft the right models

Our systematic approach to software analysis engages the customer, users, and other stakeholders in a disciplined fashion, to expose the real requirements of a system. We use software modeling to partition the problem domain so that we can focus on one aspect at a time. Properly chosen models help us understand the structure and behavior of the system, contributing key information to the requirements analysis on an ongoing basis.

The choice of what models to create has a profound influence on how a problem is solved. The right models will identify the most awkward development problems; the wrong models will deceive, drawing focus to irrelevant issues. Our experience enables us to select the most appropriate models for the required level of abstraction, so that we can employ the correct amount of precision to suit the intended audience.

Working collaboratively with the customer, users, and other stakeholders, we will discover and design the right objects, connecting them together in a way that does not result in excessive inter-dependencies, to produce an effective object-oriented design (OOD) that serves as a blueprint from which the software can be developed.

To discuss our analysis and modeling services further, please email or contact us.

Back to top ^^

This page is valid XHTML 1.0 This page uses valid CSS

Requirements Analysis | OOA & OOD | Design Patterns | Agile Modeling

Methodologies | Project Management | Analysis & Modeling | Development | Testing | Quality Assurance

Home | Services | Contact Us