Software Models

Class Models
Class Model

Class diagrams are fundamental to object-oriented analysis and design. These diagrams show the static structure of object classes and important relationships between them. The Unified Modeling Language (UML) is the industry standard notation for class diagrams.

Data Models
Data Model

An entity-relation diagram, called an ERD illustrates the data structure of an information system. A database can be designed using logical and physical data models that highlight primary and foreign keys. Martin's Information Engineering notation is typically used for data models.

Process Models
Process Model

Process models, also called data flow diagrams (DFDs) start with a top level context diagram for a system. The system is represented as a named process with data flows in and out to the external world. The most popular notations are Yourdon/DeMarco for technical software and Gane & Sarson for business systems.

The system process explodes to a child diagram where its split into smaller processes connected by flows and stores to illustrate data flow and transformation.

Flows in and out of the system process must balance with flows in and out of its child diagram. This diagram leveling process continues until primitive processes yield a short textual description.

State Models
State Model

The essential behavior of systems can often be expressed with a state model. State diagrams show events, states and actions in various notations including Mealy, Moore and UML/Harel.

States and events can be shown with tables including the Hatley/Pirbhai Process Activation Table, Decision Table, State Transition Matrix, State Transition Table, Shlaer/Mellor State Transition Table and Event List.

Causal Loop diagrams show causal affects between system variables. Apply this model to any dynamic system to enable parameterization and time simulations.

A Flow Chart uses different named box styles connected by arrowed lines to show how an algorithm or process works.

Structure Models
Structure Model

Structure Chart diagrams illustrate the organization of procedural programs. Each thread of execution begins with a root module at the top of an inverted tree of called modules.

When programs become large, functional branches of a tree get pushed down to a child diagram creating a linked stack of diagrams that highlight the program's structure.

Object Models
Object Model

An object model shows object instances, their operations and messages between objects to document the mechanisms within an object-oriented design. Each diagram illustrates part of the design with a collection of communicating objects.

Popular notations include UML Sequence diagrams, UML Collaboration, Booch, Fusion and Shlaer/Mellor.

Task Models
Task Model

The Task window shows system architecture and task interactions in a multi-tasking environment. The UML Deployment diagram shows the configuration of run-time processing elements.

Specification
Specification

The Specification window is used to create textual specifications of design elements and diagram objects. Click to the specification editor for a selected diagram object.

Code
Code

The Code or Browse window is used to view or edit code. Click to associated source code for a selected diagram object. Use the integrated Browse window to navigate through classes, attributes and operations in an object-oriented project.

Test
Test

The Test window is used to view or edit test designs and procedures. Click to the test editor for a selected diagram object or requirement entry. Test files can be edited with the built-in test editor or with a configured custom editor.

HTML
HTML

Popular web browsers like Safari, Chrome, Firefox or Internet Explorer can be used to view HTML files linked to selected diagram objects. Scriptable HTML reports make your diagrams, specifications, requirements, dictionary and code or test files easily accessible to any web browser.

Dictionary
Dictionary

The Dictionary window is used to create textual specifications of design elements and diagram objects. Designers can work with dictionary information directly from the Dictionary window or indirectly by editing diagrams.

Requirements
Requirements

The Requirement window defines functional requirements of a system or product. Data is entered through a dialog controlled by a user-defined template of fields. The textual description of each use case is also defined here. Requirement entries can be linked to models, specifications or code files with two-way traceability.

CRC Models
CRC Model

CRC cards are an agile technique for modeling each class in an object-oriented system. Each card identifies the class name, its attributes, responsibilities (operations) and collaborations with other classes. Design scenarios can be identified and simulated.

Charts
Charts

Dynamic tables, charts and graphs present project statistics or simulation results.

Data Files
Data Files

Data files are used to drive system models during simulation or store generated results. Data items of type Variable, Array or List can be imported or exported to other applications like spreadsheets and databases.

Team Data Dictionary
Team Data Dictionary

The Team Dictionary allows multi-user access to dictionary information. Use the Team window for viewing active users and change records.

Team Requirements
Team Requirements

The Team Requirements document allows multi-user access to requirement information.

MacA&D Box WinA&D Box

Modeling Tools

MacA&D and WinA&D are integrated modeling tools designed for team development, distributed projects, multiple methods and large systems.

Get a complete solution for system modeling and simulation, requirements management, software design, code generation and flexible reports.

MacA&D and WinA&D support UML 2.2 and BPMN 2.0.


QuickUML Box QuickUML implements a core set of models from the Unified Modeling Language notation. This highly integrated UML design tool is easy to learn and well suited for Agile methods. QuickCRC Box QuickCRC implements responsibility-driven design with CRC cards.

Create CRC cards and design scenarios for an object-oriented software design project.