=Paper=
{{Paper
|id=Vol-1564/paper8
|storemode=property
|title=Applying Layering Concept to the Software Requirements Analysis and Architectural Design
|pdfUrl=https://ceur-ws.org/Vol-1564/paper8.pdf
|volume=Vol-1564
|authors=Yunarso Anang,Yoshimichi Watanabe
|dblpUrl=https://dblp.org/rec/conf/refsq/AnangW16
}}
==Applying Layering Concept to the Software Requirements Analysis and Architectural Design==
Applying Layering Concept to the Software Requirements Analysis and Architectural Design Yunarso Anang1,2 and Yoshimichi Watanabe1 1 Interdisciplinary Graduate School of Medicine and Engineering, University of Yamanashi 4-3-11 Takeda, Kofu, Yamanashi 400-8511, Japan {g14dma01, nabe}@yamanashi.ac.jp 2 Department of Computational Statistics, Institute of Statistics Jl. Otto Iskandardinata No. 64C, Jakarta 13330, Indonesia anang@stis.ac.id Abstract. Considering software architecture concurrently and iteratively with software requirements, has been illustrated as a way to increase pro- ductivity and stakeholder satisfaction in the twin peaks model software development process. Because this model exposed only the tip of the ice- berg, and lacks of concrete definitions and techniques, an approach of utilizing this model in the real world has been proposed by applying the concept of the product development process based on Quality Function Deployment. In this paper, we will go further of giving more detail about how to define the requirements along with software architecture. In order to provide a method to define a robust software architecture but to be adaptable to the presence of changing requirements, we apply layering concept to the software requirements analysis and architectural design. Keywords: requirements analysis, architectural design, layer, volatility, abstraction, twin peaks model, quality function deployment. 1 Introduction A software development project typically starts with extracting some software requirements from the stakeholders. After that, the developer team uses those software requirements as the input for architectural design to define the archi- tecture of the software system to be built. This process is typical of software development based on the waterfall model. In such development process, the software requirements have become a con- straint in the architectural design process. In this process, rather than developing from the scratch, most projects are adopting one of the well known and explicit architectural patterns, or selecting a software architecture by reusing the already trusted components providing the framework for the software application. How- ever, since this framework also prescribe the capability such as the extensibility of the application, if improperly selected in the architectural design, it might be difficult to fix in the latter process. The constraint of architectural design can also impede the changes in the software requirement itself, when the changes cannot be implemented in the already selected architecture. As the result, the stakeholder might not have enough satisfied with the final product. Software requirements are the important elements to be considered first in software development. Software architecture, which is defined based on software requirements, is also the important thing to be thought in order to fulfill the given requirements at the time the architectural design performed. Software ar- chitecture also needs to have the flexibility to deal with future change of software or user requirements. The twin peaks model has been proposed to emphasize that developers should equally give status to the specification of requirements and ar- chitectures [7]. Compared to Boehm’s spiral life cycle model [2], the twin peaks model provides a finer-grain one, a life cycle that acknowledges the need to de- velop software architectures that are stable, but still adaptable, in the presence of changing requirements. However, though the concept is well explained, there is no detail or concrete explanation of what and how to apply, and, at the time, the software-development community has not yet recognized that such a model represents acceptable practice. Since the result of requirements analysis affects the overall result of the fi- nal product, and it is important to ensure customer will be satisfied with the final product, we will further discuss the method of requirements analysis. In our research, we propose the use of Quality Function Deployment (QFD) as a method to clarify the voices of the customer, and define the product quality as well as the business functions of the product based on them, and take them in the whole development process of the product [6]. An approach of combining the QFD based software requirements analysis with the twin peaks model has been proposed [10]. The approach provides a concrete method of defining and deploy- ing software requirements concurrently with software architecture’s components, using the QFD’s well-known two-dimensional tables. In this paper, in order to provide a more detail and concrete method in establishing stable software architecture but to have a range of flexibility over changing requirements, we apply the concept in layered architectural patterns to the software requirements analysis and architectural design. The concept is hereinafter referred to as the layering concept. The rest of this paper is organized as follows. Section 2 presents the concept in layered architectural pattern. Section 3 discusses how we apply the layering concept in requirements analysis and architectural design. In the section, we also show how we evaluate the approach using an example. Finally, we conclude this paper in Section 4. 2 The Concept in Layered Architectural Patterns Software architecture is a description of subsystems, components, and relation- ships among them, required for building a software system. Software architec- tural design is a process whose purpose is to provide a design for the software that implements and can be verified against the requirements. Among various numbers of software architectures, those that are found par- ticularly useful for families of systems are often codified into architectural pat- terns. From several architectural patterns already established [4], we chose the layered architectural pattern, because its layering concept has the benefits to separate functionalities into distinct layers, and it can support flexibility and maintainability if it appropriately defined. The layering concept helps to structure applications that can be decomposed into groups of subtasks in which each group of subtasks is at a particular level of abstraction. Layers are sorted vertically, where that having the lowest level of abstraction is placed at the bottom, and that on the uppermost level of abstrac- tion is placed on the top. The lower layer has less chance of modifying than those above it. One of software architectural designs applying the layering concept is the principal 3-layer architecture: presentation, domain, and data source [3], as summarized in Fig. 1. Presentation Layer 3 Display of information, capturing user input Domain Layer 2 Functionalities in the business logic Data Source Layer 1 Communication with the backend services Fig. 1. A diagram showing the principal 3-layer architecture. The principal 3-layer architecture has a different level of abstraction in each layer. Starting from the bottom, data source layer has the lowest level of ab- straction. It means data source should have the smallest potential to change. Changing in data source may have a big impact to the upper layers. In contrary, changes in the application layer, such as changing the color of display or even changing the user interface from desktop to web-based, do not propagate to the lower levels. However, this layer may have a bigger chance of changing compared to lower levels. 3 Applying Layering Concept to the Requirements Analysis and Architectural Design Software requirements analysis consists of activities including requirements elic- itation, requirements analysis, requirements specification, validation, and man- agement activities. The requirements analysis activity is the most important step in the overall development process, as in this activity, the requirements will be classified. The appropriateness of the classification will decide how the require- ments would be handled in the architectural design. The software requirements defined in this activity will influence how rigid or stable the software architecture will be designed, and at the same time, that will, indirectly, decide how easy to accommodate in the presence of changing requirements. We need a method of classification which can give an input to the architectural design whose result is adaptable to the future changing of requirements. In the previous section, we have discussed how the layering concept bene- fits to increase the extensibility of software development and the flexibility to accommodate changes in requirements. We propose applying the same concept in classifying requirements. We consider the volatility or chance of changing of requirements to be the base of applying the layering concept. There are few re- searches studying the volatility of software requirements such as in [5][8], but mainly they only study the impact of requirements volatility or its statistics in the development process. It is stated that some requirements will change during the life cycle of the software, and even during the development process itself. For example, in an online new student admission application, requirements for functions to make the registration online are likely to be less volatile than requirements to support integration of the admission fee payment. The former reflects a fundamental fea- ture in the admission application, while the latter may change as the payment method may vary from manual payment to automatic payment via online bank- ing application which may need a system integration with banking application. It is useful if some estimate of the likelihood that a requirement will change can be made. Flagging potentially volatile requirements can help the software engineer to establish a design that is more tolerated of change. Fig. 2 shows how we apply the layering concept to the requirements analysis and architectural design. First, the requirements will be sorted based on their degree of volatilities. The sorted requirements then will be used in architectural design, which is in this case, they are mapped into the 3-layer architecture. presentation higher layer higher level of abstraction higher degree of volatility more chance of changing domain less chance of changing data source architectural lower degree of volatility design lower level of abstraction lower layer layered requirements layered architecture Fig. 2. A process of architectural design from the layered requirements, producing a layered architecture. To illustrate the approach described above, we evaluate it using an exam- ple. The example is taken from the paper introducing the requirements analysis method using QFD [9]. The example is about the virtual software of web based system which provides management of pictures taken while the user traveling. We use the result of the method described in the paper as the input of our proposed approach as shown in left side of table in Fig. 3. Architecture Result of Requirements Analysis using QFD Layer Presentation Data Source Domain Layers of Requirements Scene Functional Requirements (obtained based on scores calculated using quantification method of type 3) Register Pictures Register Pictures ◎ △ Edit Pictures Display Pictures List △ ◎ Set Search Condition Manage Browse Pictures Pictures Display Selected Picture ◎ Select Pictures Edit Pictures △ ◎ Display Selected Picture Edit Pictures Execute Image Processing ◎ ◯ Select Pictures Presentation Display thumbnails △ ◎ Arrange Pictures Select Pictures Select Pictures ◎ Make Account Select Templates △ ◎ Display Pictures List Basic Functions Layout Manually Display thumbnails Arrange Pictures ◎ Select Templates Automatically ◎ △ Select Templates Design Album Layout Automatically Select Surprise Pattern Layout Arrange Pictures Automatically ◎ △ Set Up Order Display Layouts ◯ ◎ Display Layout Send Layout Information Correct Layouts ◯ ◎ Display Search Result Select Surprise Pattern △ ◎ Surprise Function Arrange Pictures Automatically ◎ △ Select Templates Automatically Set Up Order Set Up Order △ ◎ Arrange Pictures Automatically Register Payment Set Address ◎ △ Arrange Pictures Automatically Order Printing Information Set Payment ◎ △ Execute Image Processing Domain Send Layout Information △ ◎ Order Log Out Delete Pictures △ ◎ Delete Pictures Register Pictures to DB Register Pictures to DB ◎ △ Display Layouts Manage Set Search Condition △ ◎ Correct Layouts Search Pictures on DB Pictures Display Search Result △ ◎ User Authentication Additional Functions Database Delete Pictures from Select Pictures △ ◎ DB Delete Pictures △ ◎ Register Pictures Make Account ◎ Set Address ◎ △ Data Source Register Account Information Set Payment Register Users Register Address ◎ △ Register Pictures to DB Manage Register Payment Information ◎ △ Account Register Account Information Register User Attribute ◎ △ Register Address User Authentication △ ◎ ◯ Register Payment Information User Authentication Log Out ◎ ◯ Register User Attribute Impact: ◎ High ◯ Moderate △ Low Fig. 3. Layering requirements derived from requirements analysis using QFD. In order to arrange the requirements into layers, we have to obtain the degree of volatility. To obtain the degree of volatility, in this evaluation, we adopt the method of software system’s near decomposition which use the quantification method of type 3. This method produces the score of elements from their rela- tions in a two-dimensional table [1]. We treat the scores as scaled values of the degree of volatility. In the middle side of table in Fig. 3, we added 3 columns containing 3 layers taken from the 3-layer architecture. Then we fill in the table how strong the requirement is related to each of the layers. After converting the symbols into scaled numbers, we obtain the requirements-architecture matrix as the input of the quantification method of type 3. The result contains the scores of both requirements and architecture layers. The right side of table in Fig. 3 shows the requirements grouped into 3-layer architecture which are sorted based on the scores. Requirements are arranged from those which are not likely to be changed to those which are having bigger potential of changing. As stated in the twin peaks model, this process should be incrementally conducted in order to obtain finer-grain result. 4 Conclusions In a standard list of software life cycle processes, such as that in ISO/IEC/IEEE Standard 12207:2008, software design consists of two activities that fit between software requirements analysis and software construction. Nuseibeh has already proposed the twin peaks model by giving the equal status of the specification of requirements and architecture, and to provide more detail and concrete method, Watanabe et al. has proposed to combine the method of software requirements analysis based on QFD with the twin peaks model. In this paper, we have proposed applying the layering concept to requirements analysis and architectural design, in order to obtain layered requirements and a layered architecture. This layered structure provides a stable architecture but adaptable in the presence of changing requirements. Although we have provided illustrations for our approach, we exposed only a concept or likely an idea. More work remains to evaluate the validity of the method and the effectiveness of the approach in a real project. References 1. Anang, Y., Amemiya, A., Yoshikawa, M., Watanabe, Y., Shindo, H.: A Software Tool for Making a Two-way Table Like a Quality Table. In: Proceedings of 11th International Symposium on Quality Function Deployment 2. Boehm, B.: A Spiral Model of Software Development and Enhancement. Computer 21(5), 61–72 3. Brown, K., Craig, G., Hester, G., Pitt, D., Stinehour, R., Weitzel, M., Amsden, J., Jakab, P.M., Berg, D.: Enterprise Java Programming with IBM WebSphere. Addison Wesley (2001) 4. Bushmann, F., Meunier, R., Rohnert, H., Somerlad, P., Stal, M.: Pattern-oriented Software Architecture: A System of Patterns. John Wiley & Sons (2001) 5. Dev, H., Awasthi, R.: A Systematic Study of Requirement Volatility during Soft- ware Development Process. International Journal of Computer Science Issues 9(2), 527–533 (2012) 6. Japanese Standards Association: JIS Q 9025:2003 Performance Improvement of Management Systems – Guidelines for Quality Function Deployment 7. Nuseibeh, B.: Weaving the Software Development Process Between Requirements and Architectures. In: Proceedings of 23rd International Conference on Software Engineering, International Workshop on Software Requirements to Architectures 8. Singh, M., Vyas, R.: Requirements Volatility in Software Development Process. International Journal of Soft Computing and Engineering (4), 259–264 9. Watanabe, Y., Kawakami, Y., Iizawa, N.: Software Requirements Analysis Method using QFD. In: Proceedings of 18th International Symposium on Quality Function Deployment 10. Watanabe, Y., Yoshikawa, M., Shindo, H.: Software Development Method based on Twin Peaks Model with QFD. In: Proceedings of 19th International Symposium on Quality Function Deployment