Subscribe by Email


Sunday, May 24, 2009

Data Flow Diagram - Some template locations

There are numerous locations on the internet where data flow templates can be found. Here are a few of the sites where you can find and use DFD templates.

Flowcharttools (depiction of what a template should look like) - Click here

Sample of what a Data Flow Diagram looks like (click here)

Sample DFD at docstoc (click here)

Samples at Gene Sarson (click here)

Templates at smartdraw (click here)

Example of DFD at conceptdraw (click here)

Visio and Word templates for DFD (click here)

Flowchart samples at edrawsoft (click here)


Thursday, May 14, 2009

Software design concepts

Design Concepts

A set of software design concepts have evolved over a period and are important for software personnel / architects to know.
Each concept helps the software engineer to answer the following questions:
1. What criteria can be used to partition software into individual components?
2. How is function or data structure detail separated from a conceptual representation of software?
3. Are there uniform criteria that define the technical quality of a software design?

Abstraction : It allows designers to focus on solving a problem without being concerned about irrelevant lower level details. As we move through different levels of abstraction we work to create procedural abstraction which refers to a named sequence of instructions in a specific function. A data abstraction is a named collection of data that describes a data object. It means that procedural abstraction uses the information contained in the attributes of the data abstraction.

Refinement : It is a process of elaboration. It is a top-down design strategy. A macroscopic statement is decomposed and a hierarchy is developed in a stepwise fashion until programming language statements are reached.

Abstraction and refinement are complimentary concepts. Abstraction suppress low level details whereas Refinement helps the designer to reveal low level details.

Modularity : Software is divided into separately named and addressable components called modules that are integrated to satisfy problem requirements. There are five criteria that enable us to evaluate a design method with respect to its ability to define an effective modular system:

- Modular decomposability : A design method provides a systematic mechanism for decomposing the problem into sub-problems, hence, reduce the complexity and achieve the modularity.

- Modular composability : A design method enables existing design components to be assembled into a new system.

- Modular understandability : A module can be understood as a standalone unit it will be easier to build and easier to change.

- Modular continuity : Small changes to the system requirements result in changes to individual modules, rather than system-wide changes.

- Modular protection : An aberrant condition occurs within a module and its effects are constrained within the module.


Design Guidelines and Design Principles

Continuing on the earlier post about design processes in software engineering:

Design Guidelines:

The criterion for a good design in order to evaluate the quality is as follows:
- It should have a good architectural structure.
- It should be modular in nature.
- It should lead to interfaces properly.
- It should contain distinct representations of data, architecture, interfaces, components.
- It should lead to data structures that are appropriate for the objects that are to be implemented.
- It should lead to components that have independent functional characteristics.
- A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis.


Design Principles

A set of principles for software design are ::

- The design process should not suffer from “tunnel vision”.
- The design should be traceable to the analysis model.
- The design should not reinvent the wheel.
- The design should “minimize the intellectual distance” between the software and the problem in the real world.
- The design should exhibit uniformity and integration.
- The design should be structured to accommodate change.
- The design should be structured to degrade gently.
- Design is not coding.
- The design should be assessed for quality.
- The design should be reviewed to minimize conceptual errors.


Thursday, May 7, 2009

A brief summary of Design Models

This post is just a brief summary of design models, this is a huge topic, and will cover in future posts in parts.

Data Design Model: In order to implement the software we need to convert the analysis class models into the data structures and design classes and this is accomplished using data/class designs. For data design activity we need to have classes and relationships that are defined by CRC index cards and data content depicted by class attributes.

Architectural Design: It defines the relationship between the structural elements, the architectural styles and design patterns, and the constraints that affect the way in which architectural can be implemented.

Interface Design: It describes how the software elements communicate with each other, with other systems and with human users.

Component Level Design: Structural elements of the software architecture need to be converted into a procedural description of software components and this is accomplished through component level design.

These models collectively form the design model, which is represented diagrammatically as a pyramid structure with data design at the base and component level design at the pinnacle. Each level produces its own documentation, which collectively form the design specifications document, along with the guidelines for testing individual modules and the integration of the entire package.


A brief summary of design engineering

Design Engineering is a process used by software engineers which encompass the set of principles, concepts and practices that result in the development of a high quality system or product. Design Engineering is the point which actually has a great role in determining the quality of the software, and a careful review of the design process is useful in ensuring that the quality of the software remains high. Software design serves as the foundation for all software engineering steps that follow regardless of which process model is being employed. Without a proper design we risk building an unstable system – one that will fail when small changes are made (and we all know how likely small (or even big) changes can happen, one that may be difficult to test; one whose quality cannot be assessed until late in the software process, perhaps when critical deadlines are approaching and much capital has already been invested into the product. Making changes later down in the cycle to compensate for problems in the design process is not guaranteed to succeed, and is expensive.

Steps Involved In Design Engineering:

1. Identifying the need.
2. Defining the problem.
3. Conducting Research.
4. Narrowing Research
5. Analyzing set criteria
6. Finding alternative solutions
7. Analyzing possible solutions
8. Making a decision.
9. Presenting the product.
10. Communicating & selling the product.

During the design process the software specifications are transformed into design models that describe the details of the data structures, system architecture, interface, and components. Each design product is reviewed for quality before moving to the next phase of software development. At the end of the design process a design specification document is produced. This document is composed of the design models that describe the data, architecture, interfaces and components.


Saturday, May 2, 2009

Data Flow Diagram Tools

The Data Flow Diagram (DFD) is an important part of the overall software document architecture. Here are some tools that will help in the generation of Data Flow Diagrams:

SmartDraw (link): Select a template, input your information, and SmartDraw does the rest—aligning everything automatically and applying professional design themes for professional-quality results every time.

Artiso Visual Case (link): Can clearly and effectively document the flow of data through your system and its interaction with elements external to the system. A commercial tool.

Edraw Flowchart (link): Edraw is a rapid and powerful data flow diagram software, novel, small and exquisite, which creates data flow diagrams and business charts with minimum time loss. It includes some data flow diagram examples such as students information data flow diagram, human resources data flow diagram, physical data flow diagrams and functional data flow diagram. A commercial tool.

ConceptDraw PRO Data Flow Diagram (link): ConceptDraw PRO allows you to quickly create data flow diagrams with data storages, external entities, functional transforms, data flows, as well as control transforms and signals. A commercial license.

Edge Diagrammer (link): Create a wide variety of technical, presentation, and design flowcharts efficiently and with the highest quality results. EDGE Diagrammer is all you need for block diagrams, org charts, family trees, Data Flow Diagrams and more. Free extension packs are available to provide support for many different diagramming methodologies. A commercial tool.

IBMS/DFD tool (link): The tool helps the users drawing a standard data flow diagram (a process-oriented model of information systems) for systems analysis and mapping it into a SER model (a data-oriented model of information systems) for database design.

JUDE/Professional (link): JUDE/Professional is the Design and Communication Tool lets you draw UML, ER, Flowchart, CRUD, Data Flow Diagram and Mind Map. It has enriched features, such as input-output and diagram creation guidance. It is suitable for business use, large-sized models, and document creation. A commercial tool.


Wednesday, April 8, 2009

DFD: data flow diagram

Not everybody who has worked in the software development cycle has heard of what a Data Flow Diagram is, or what it does. So, for example, somebody who makes applications such as Windows or Office or PhotoShop may not need to know what a DFD is. However, for a team that is designing an application for a bank or for a shopping application that involves a lot of data, it is essential to map the data flow. Hence, a Data Flow Diagram (DFD) is an essential component for the design of a large number of software applications, and if you don't do the DFD well, then the system may not end up having been designed well, and may end up being less efficient than it was supposed to be.
So, what is a DFD ? A brief definition and description:
DFDs were first used in the software engineering field as a notation for studying systems design issues. A data-flow diagram (DFD) is a graphical representation of the "flow" of data through an information system. DFDs show the flow of data from external entities into the system, showed how the data moved from one process to another, as well as its logical storage. A data-flow diagram can also be used for the visualization of data processing (structured design).
Data flow diagrams can be used to provide a clear representation of any business function. The technique starts with an overall picture of the business and continues by analyzing each of the functional areas of interest. This analysis can be carried out to precisely the level of detail required, leading to a data flow diagram that is strong in illustrating the relationship of processes, data stores and external entities in business information system.
Complicated information systems have lots of data flows which can be presented in a form of a data flow diagram. Without such data flow diagram you just can't visualize all data flows and won't be able to analyze and improve the whole system. Data flow diagrams represent data flows in a clear visual way as arrows between blocks which represent parts and processes of the system. Identifying the existing business processes, using a technique like data flow diagrams, is an essential precursor to business process re-engineering, migration to new technology, or refinement of an existing business process.
Sounds complicated, so the next few posts will detail the steps to making a data flow diagram, what are the benefits for this diagram, and some tools that will help in generating a data flow diagram.


Facebook activity