State of the Art of Software Architecture Design Methods Used in Main Software Development Methodologies

State of the Art of Software Architecture Design Methods Used in Main Software Development Methodologies

Reyes Delgado Paola Yuritzy (Instituto Tecnológico de Aguascalientes, Mexico), Mora Tavarez José Manuel (Universidad Autónoma de Aguascalientes, Mexico), Duran-Limon Hector Alejandro (Universidad de Guadalajara, Mexico), Rodríguez-Martínez Laura Cecilia (Instituto Tecnológico de Aguascalientes, Mexico), Mendoza González Ricardo (Instituto Tecnológico de Aguascalientes, Mexico) and Rodríguez Díaz Mario Alberto (Instituto Tecnológico de Aguascalientes, Mexico)
Copyright: © 2015 |Pages: 12
DOI: 10.4018/978-1-4666-5888-2.ch724
OnDemand PDF Download:
$30.00
List Price: $37.50

Abstract

The design Software Architecture (SA) is an essential activity in the modern development software systems. This SA design activity defines its core components, the interrelationships among them, and a set of essential attributes expected for the final software. While this design is realized in a high level of abstraction, missing this activity or a wrong conduction of it will have negative effects in further software development phases, and lately in the final software. Thus, SA design methods are relevant to be studied and applied. In this article, we review the SA design methods that are (explicitly or implicitly) included in five well-known Software Development Methodologies (SDMs). We report: (1) a brief description of the five SDMs; (2) a substantial description of the SA design methods used in each SDM; and (3) a comparative analysis among them using an evaluation template posited by well-recognized experts in this topic. Our results suggest that SA design methods, while sharing a similar design purpose and some activities, they also present a varied structured and nomenclature.
Chapter Preview
Top

Introduction

Software Architecture (SA) design methods have been studied from the early 1990’s decade given the increasing complexity and size in lines of code (LOC) of modern software systems (Garlan & Shaw, 1994). Nowadays, according to Kim & Garlan (2010), a mature area has been already reached given that: “today we find growing use of standards, architecture-based development methods, and handbooks for architectural design and documentation” (p. 1216).

However, due to the significant industrial demands toward software systems with an increasing complexity (e.g., new and multiple technologies development platforms and more technical and user-oriented demand of requirements) (Aleti, Buhnova, Grunske, Koziolek & Meedeniya, 2013), and due to the permanent need for efficient and effective software design process (Angelov, Grefen, & Greefhorst, 2011), the SA design methods are still a relevant research and academic area.

Software Architecture can be defined as: “Fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution” (ISO/IEC/IEEE 42010, 2011, p. 2). The ISO/IEC 12207 standard reports that the Software Architecture Design and the Detailed Design activities are fundamental parts of the set of activities to be realized from Requirements Analysis until Software Construction (SWEBOK, 2004). SA design consists essentially in specifying its core components, the interrelationships among them, and a set of essential attributes expected for the final software. This is realized in a high level of abstraction (Weinreich & Buchgeher, 2012) and adequate SA design methods must be used. Therefore, missing this activity or a wrong conduction of it will have negative effects in further software development phases, and lately in the final software. Hence, SA design is a relevant activity for the development of software systems, and given the current complexity of modern software systems, it can be also considered a design challenge (Aleti et al., 2013).

There are a myriad of Software Development Methodologies (SDMs) since several decades ago (Rodriguez, Mora, Vargas, O’Connor & Alvarez, 2008; Vavpotic & Vasilecas, 2011). All of them provide either an explicit or implicit guidance for a SA design. Nevertheless, their real utilization in the software development practice is scarcely reported (Chatzoglou, 1997; Fitzgerald, 1998). Furthermore, implicit and explicit SA design methods use a varied structure of activities and artifacts, as well as a particular non-standard nomenclature. This dual problem: the lack of utilization of SA design methods and the non-standardization of them precludes their correct application by software professionals.

Thus, in this article we review and compare the implicit and explicit SA design methods included in four well-known international Software Development Methodologies plus a recently reported SDM for service-oriented software engineering. These Software Development Methodologies are:

  • 1.

    Model-Based (System) Architecting and Software Engineering (MBASE), (MBASE, 2000, 2003).

  • 2.

    IBM Rational Unified Process for Systems Z (Cantor, 2003; Péraire, Edwards, Fernandes, Mancin, & Carroll, 2007).

  • 3.

    Unified Process for Education (UPEDU) (Robillard, Kructen & d'Astous, 2004, 2012).

  • 4.

    Team Software Process (TSP) (Humphrey, 1998; Humphrey, Chick, Nichols & Pomeroy-Huff, 2010; Donald, 2000).

  • 5.

    Service-oriented Software Development Methodology (SoSDM) (Rodríguez et al., 2009a).

Key Terms in this Chapter

Activities: It is a set of tasks that take place in a software process.

Software Lifecycle: It is a series of steps or stages, for the construction of a software system; these phases in general are: requirements analysis, design, coding, implementation and maintenance.

Artifacts: It is a product or result of one or more activities of a software process.

Software Architecture Design Methods: Is a method for defining the above software architecture.

Software Development Methodologies: It is a formal framework for working to plan, organize, develop, manage and control the development process of software systems.

Software Architecture: The overall structure of a system at a high level of abstraction, composed of organized elements that relate to and interact with each other to ensure the understanding and implementation of the system.

Complete Chapter List

Search this Book:
Reset