Make your own free website on
InfoCity4u - The City of Information

Systems Development


1. Data Flow Diagrams (DFD)

Data Flow Diagrams show how data flows through a system and what data stores are used. DFDs are an important aspect of analyzing systems and they can be used for any system as the parts of a DFD are not language specific and can represent processes and stores etc... in any physical or computerized system. There are four main symbols used in the construction of DFDs:

1     2     3     4

The Data Flow arrow shows the flow of data between processes, data stores, and different entities. Labels can be added to the arrow to show what type of data is involved.

A Data Store can be in the form of either a file held on disk or a physical batch of documents.

An External Entity is an external source of data such as a group of people (e.g. customers).

The Process box shows any processes carried out on the data. The two horizontal lines inside the shape are optional but the spaces created by them can be used to label the process (top) or specify where it takes place (bottom).



2. Data Modeling

Most people involved in application development follow some kind of methodology. This is a prescribed set of processes through which the developer analyses a client's requirements and develops an application. Major database vendors and computer gurus all practice and promote their own methodology. Some database vendors even make their analysis, design, and development tools conform to a particular methodology.

One technique commonly used in analyzing a client's requirements is data modeling. The purpose of data modeling is to develop an accurate model, or graphical representation, of the client's information needs and business processes. The data model acts as a framework for the development of the new or enhanced application. There are almost as many methods of data modeling as there are application development methodologies.

As time goes by, applications tend to gain new "layers" of functions and features. Soon it gets to the point where the core of the application is obscured by all these "layers". Data modeling encourages both the developer and the client to tear off these excess layers and to explore the ultimate purpose of the application once more.



3. Logical Design Methods

Logical Data Design

Data design selects logical representations for the data objects identified during the requirements definition and specification phase of analysis. A data dictionary is established and used to define both data objects and the relationships between them. A process of step-wise refinement of data structures is used to ensure anomalies and exclusions are catered for. For relational databases, this is the process of data normalisation identified and refined by Date and Codd. The resulting data structures must apply the concept of data hiding. Among the graphical representations used in data design are Jackson Structured diagrams and Warnier-Orr diagrams. (Both these are also used in process design, too.)

Logical Process Design

A process design is created which can then be transformed into a procedural description of the software. The early techniques of flowcharting were developed into the simple logical constructs of structured programming (sequence, selection and iteration). They have the advantage of limiting procedural design to structures consisting of a small number of predictable operations. Graphical notations used to express these structures include flowcharting, Nassi-Shneidermann diagrams, decision tables, program design language (PDL), sometimes referred to as pseudocode, and control structure diagrams.



4. Object Oriented Design

Object oriented design creates a representation of a real-world problem domain and maps it into a software solution domain. The design interconnects data objects and processing operations that include information and processing modularisation. It builds on three software design concepts: abstraction, information hiding and modularity.

The notation invented by Grady Booch combines four distinct diagrams: a class diagram that depicts classes and their relationships; an object diagram shows specific instances of classes and the messages that pass between them; the module diagram illustrates the software components to which classes and objects are allocated; a process diagram depicts how processes are allocated to processors within the distributed processor system upon which the overall system executes.

This has subsequently been implemented in the UML (Unified Modelling Language). UML is a standard notation for modelling of real-world objects preparatory to developing an object-oriented design. Its notation is derived from three earlier object-oriented design and analysis methodologies:

UML arose out of efforts by Booch, Rumbaugh, Jacobson, and others, to combine their ideas, working under the sponsorship of Rational Software. UML is an accepted standard of the Object Management Group (OMG), which also promotes Common Object Request Broker Architecture (CORBA), the leading industry standard for distributed object programming. Computer-aided software vendors support UML and it is endorsed by IBM and Microsoft. Although UML is a notation system that enables universal communication about a model, it is developed from methodologies that also describe the processes in creating and using the model. Because there is no one accepted process that follows on from UML, the approaches of each of the contributors to UML are usually described alongside their tutorials on UML. Among the modelling concepts for which UML specifies description are: class (of objects), object, association, responsibility, activity, interface, use case, package, sequence, collaboration, and state.


5. Prototyping

When a detailed set of information regarding the input or output requirements of the required product is not available, then in order to clarify those requirements, a pilot model called a "prototype" is constructed. Prototypes allow the customer to experiment with the requirements and discover requirement errors and omissions early in the software development process. Other advantages of using this method are:

On the other hand, some possible disadvantages are as follows: There are two main methods of prototyping: For any prototyping process to be successful, the customers should be committed to the evaluation and refinement of the prototype and they should be capable of making requirement decisions quickly.

If a prototype system is implemented using the same tools as the final system, this can be very expensive. An argument against prototyping is that the cost of prototyping is very large compared to the total development cost, but since requirements and design decisions are clarified during the prototyping process, prototyping results in long-term savings.

Evolutionary Prototyping

In this type of prototyping, a working but incomplete system is delivered to the user. The developer is then employed in modifying it as the user's requirements become clear. It is the only realistic way to develop systems where it is difficult or impossible to establish a detailed system specification at the outset.

Some disadvantages to using this type of prototyping are:

Throwaway Prototyping

This type of prototyping is used to discover the system specification so that the output of the prototype development is that (initially unknown) specification. The principal function of the prototype is to clarify requirements and provide additional information for assessing process risks. This approach substantially reduces overall lifecycle costs by not only saving the efforts in developing the final product but also the resources involved in the development of the final product. After evaluation, the prototype is thrown away. It is not used as a basis for further system development.



6. Rapid Application Development (RAD)

RAD is based upon the concept that products can be developed faster and of higher quality through:

Some companies offer products that provide some or all of the tools for RAD software development. These products include requirements gathering tools, prototyping tools, computer-aided software engineering tools, language development environments such as those for the Java platform, groupware for communication among development members, and testing tools. RAD usually embraces object oriented programming methodology, which inherently fosters software re-use. The most popular object-oriented programming languages, C++ and Java, are offered in visual programming packages often described as providing rapid application development.

VirtualWorld ®