Software Design

Software Design

Rachita Misra (C.V. Raman College of Engineering, India), Chhabi Rani Panigrahi (C.V. Raman College of Engineering, India), Bijayalaxmi Panda (C.V. Raman College of Engineering, India) and Bibudhendu Pati (C.V. Raman College of Engineering, India)
DOI: 10.4018/978-1-4666-8823-0.ch014


This chapter on “Software Design” emphasizes the role of modeling, prototyping, and simulation in software design. The chapter introduces the principles of software design, issues and challenges. Modeling techniques used in procedural and object oriented methodologies is presented along with the Unified Modeling Language (UML). The suitability of prototyping, as a design artifact and a simulation method is briefly discussed. Software processes such as Rapid Application Development (RAD), Rational Unified Process (RUP) and Agile methodologies which influence the design process have been discussed and recommended. The chapter then deals with Design Metrics for Quality Analysis, Software Risk Analysis and Threat Modeling for design of secure software. Finally, some of the recent research topics such as Model Driven Architecture (MDA), Model Driven Development (MDD), Meta Object Facility (MOF), and Model Driven Testing (MDT) have been covered.
Chapter Preview


In this section, we discuss the basic principles which guide the software design for traditional procedure oriented and object oriented systems. It may be noted that the concepts behind these two principles are similar but they are tuned to the two development methodologies.

Key Terms in this Chapter

Meta Model Architecture: This depicts OMG’s model driven approach in a pyramidal fashion. The top layer refers to Meta Object Facility (MOF), while the bottom layer consists of the UML specifications for the software system. MOF provides UML like meta-models.

Agile Methods: It refers to a group of software development methods that provide higher flexibility and visibility to the software user while the product is still being developed as opposed to conventional software development methods where visibility and use is available only after the complete product is developed.

Structured System Analysis and Design Method (SSADM): This is a SDLC with a procedural approach. It was introduced to analyze and design software systems in 1980, and is based on some of the early approach to design such as; logical data modelling, data flow modeling, and entity event modelling developed around 1975.

Unified Modeling Language (UML): Many different methods and notations were developed by analysts and researchers to perform object oriented analysis and design and software development which created communication problems. These were combined to the unified modelling language in 2002. While providing visual modelling tools independent of the programming language, it encouraged the object-oriented development approach and marketing of tools for software design and development.

Software Development Life Cycle (SDLC): This refers to the process of developing the software following well defined phases starting from collecting the software requirements, designing, developing, performing validations and verifications and implementing it.

Model Driven Approach (MDA): It refers to the model driven design, development, and testing approach released by the Object Management Group (OMG) in 2001. As per MDA, abstractions and modelling is used to visualize the structure and behaviour of the system independent from the underlying implementation technology. It helps in validating the software design against the requirements before developing and implementing the software product.

Design Metrics: This refers to quantitative measures to verify the quality of software design. These metrics are defined by following the basic principles of software design and ensure use of good practice while performing the software design activities.

Object Oriented Design (OOD): It refers to the current practice of software development where real life objects form the basic blocks of software design and subsequent development using object oriented languages such as Java. Object properties such as abstraction, encapsulation, inheritance, polymorphisms, and message-passing describe the structure and behaviour of the underlying objects.

Business Process Modeling: It refers to the process of defining and documenting the business process flow along with associated artifacts and the business users in a graphical form. Business Process Modelling Notations (BPMN) and Business Process Execution Languages (BPEL) have been developed by analysts and vendors in an effort to provide tools which also helps the software development team to determine the software requirements.

Threat Modeling: It refers to the methodologies followed in modeling different types of risks to the software from potential malicious attackers and hackers, and validating the security aspects of the software.

Prototyping: This refers to building a working model or a prototype of the software product to be developed depicting its look and feel and some basic functionality. It is a dynamic technique which is often used as a tool to evaluate a design, or validate user requirements by simulating the work flow of the software on the prototype.

Complete Chapter List

Search this Book: