International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014), pp. 213-220 http://dx.doi.org/10.14257/ijseia.2014.8.10.19 A Review of an MVC Framework based Software Development Ronnie D. Caytiles and Sunguk Lee* Department of Multimedia Engineering, Hannam University 133 Ojeong-dong, Daeduk-gu, Daejeon, Korea rdcaytiles@gmail.com, sulee0612@hnu.kr * Correspondent Author: Sunguk Lee* (sulee0612@hnu.kr) Abstract This paper presents the concepts of model-view-controller (MVC) for the development of software systems. The different software development process methods are presented wherein they share some common methodology phases. The MVC is an approach that provides insights for software development by describing three objects in developed software in terms of model, view, and controller. A sample integration of MVC is also presented. Keywords: MVC, Software Development 1. Introduction As innovative software solutions has been rapidly emerging for software development, the need for the provision of a more defined and managed software development tools and approaches are also evolving. Over the years, a numerous software development process models have evolved recognizing its own advantages and disadvantages. Based on these advantages and disadvantages, developers can always look for available process model which is best suited for specific kinds of systems considering its requirements [1]. The MVC architectural pattern for the software development design was one of the evolving insights to describe and implement software constructs in terms of their responsibilities [5, 7]. It has been widely adopted for Internet applications and web design in major programming languages. This paper presents a review of the concepts of MVC for the development of software systems. The numerous process models for software development indicating their advantages and disadvantages are also presented. The rest of this paper is organized as follows: Section 2 discusses about the different software development process models; Section 3 outlines the concepts of MVC for software development; and the concluding remarks in Section 4. 2. Software Development Process Models The development of software or application products which includes all activities of programming refers to software or application development. The development process may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, pre-definition of specific deliverables and artifacts, or any other activities that result in software products that are created and accomplished by a project team to develop an application [1]. There are numerous types of software process models that include conventional and innovative methodologies such as waterfall, prototyping, iterative and incremental ISSN: 1738-9984 IJSEIA Copyright ⓒ 2014 SERSC International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014) development, spiral development, rapid application development, and extreme programming. These types of methodologies share some of the following stages of development: Analysis Phase Requirements Phase Design Phase Implementation (coding) Phase Testing Deployment Maintenance and bug fixing To select the best software development process always depends on the results of the analysis of the problem at hand. The next sections discuss some of the different software development process models to which both advantages and disadvantages are identified. 2.1 Linear Sequential Process Model The Linear Sequential Process Model also refers to the waterfall process model development is seen as flowing steadily downwards (like a waterfall) through the phases of requirements analysis, design, implementation, testing (validation), integration, and maintenance [2, 3]. Every phase cannot start unless the previous phase done. Some of the advantages of this model are [1, 2, 3]: Measurable. The progress for each phases in the development are easily measured. It provides a basis for other software process models. Quality. Ensured quality through the orderly sequence of development phases. Reliability. Every phase must be completed before going through the next phases, thus it ensures reliability. Some of the disadvantages of this model are [1, 2, 3]: Inflexible. Since the development strictly follows a strict sequential flow, thus changes are not allowed. Slow. Since it is difficult to decide the beginning and ending of a developmental phase, the whole development is always delayed. Missing requirements specified by the users are difficult to address. Problems or unexpected errors can only be determined during the testing phase. 2.2 Prototyping Prototyping refers to the partially development of software and applications to enable the end users and developers to examine and understand the concepts of the proposed developed system [1, 3]. Some advantages of this process model are: 214 Copyright ⓒ 2014 SERSC International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014) The users have a direct participation in defining the human-computer interaction requirements of the system. The performance of the functionalities of the system is tested early. Missing requirements and functionalities are easily addressed. Innovative and flexible software designs are encouraged. Some of the disadvantages of this process model are: Frequent significant changes of requirements are expected. Documentation for future developments is neglected. Costly. Iterations can add to project budgets and schedules, thus the added costs must be weighed against the potential benefits. 2.3 Spiral Process Model The spiral process model is a software development process combining the iterative nature of prototyping with the controlled and systematic aspects of linear sequential model. The rapid development of incremental prototypes or versions of the proposed system are provided [1]. Some advantages of this process model are: The risk avoidance is enhanced. Other process models can be incorporated. Some of the disadvantages of this process model are: Control in moving from one cycle to another is not established. Reusability is limited since it is quite complex. Schedule can be affected by the cycles if unable to determine the exact deadlines of cycle terminations. 2.4 RAD Process Model Rapid application development (RAD) is a software development process model which involves iterative development and the construction of prototypes. It is achieved through modular-based constructions approach and emphasizes extremely short development cycle [1, 2]. Some of the advantages of this process model are: Faster delivery of the finished system. Cost is minimized due to the faster delivery. Provides the ability to rapidly change system design as demanded by users. Some of the disadvantages of this process model are: Lack of scalability since the process requires a sufficient number of developers. Reusability can be difficult. Copyright ⓒ 2014 SERSC 215 International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014) Interoperability with the existing systems can be quite complex. Quality of delivered product can be affected by the lower cost and faster delivery. 2.5 Other Process Models Other methodology practices include [1, 2]: Incremental Model. This process model combines the elements of a linear sequential model with the iterative philosophy of prototyping. Linear sequences are defined where each sequence produces an increment of the software. Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve via collaboration between self-organizing cross-functional teams [8]. Concurrent Development Model. The Concurrent Development Model is also known as concurrent engineering. It makes use of state charts to represents the concurrent relationship among tasks associated within a framework of activities. It is represented schematically by a series of major technical tasks, and associated states. The user's need, management decisions and review results drive the overall progression of the development. Evolutionary Process Models. This process model recognizes that software evolves over a period of time. It enables the development of an increasingly more complicated version of the software. The approach is iterative in nature. Specific evolutionary process models are Incremental Model, Spiral Model, and Component-based Assembly Model. Unified Process (UP) is an iterative software development methodology framework, based on Unified Modeling Language (UML). One popular version of UP is the Rational Unified Process (RUP) [9]. 3. MVC Framework based Software Development The Model–View–Controller (MVC) is an architectural pattern used in a software or application development. A software application is divided into three organized objects wherein the computer representation of information is visualized by the user [4]. In MVC, the model captures the behavior of the application in terms of its problem domain, independent of the user interface. It signifies the information or data of the application and defines the logic for manipulating them. It directly manages the data, logic and rules of the application. The view corresponds to any output representation of information or elements of the user interface such as text, checkbox items, a chart or a diagram, and so on. It is possible to have multiple views of the same information, such as a bar chart for management and a tabular view for accountants [5]. The controller accepts input and converts it to commands for the model or view. It manages the communication of data and the business rules used to manipulate the data back and forth the model objects and the view objects. It acts as an intermediary between the Model and View objects. It also performs all application specific tasks, such as processing user input or loading configuration data [4, 5]. 216 Copyright ⓒ 2014 SERSC International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014) The concept of the MVC framework is depicted in the following figure. Figure 1. MVC Collaboration of Components Model is the domain-specific representation of the information on which a proposed system for development operates. The project as a whole was broken down into components called modules. These modules are based on the user requirements specified in the requirements phase of the process model. The View renders the model into a form suitable for interaction, typically a user interface element. Every model representation has its own view. For example, the different view objects for the development of a Point of Sale system is shown in Figure 2. Figure 2. View components for the MVC based Development of a Point of Sale System Copyright ⓒ 2014 SERSC 217 International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014) The Controller represents processes and responds to events (typically user actions) and may indirectly invoke changes on the model. As an example, the point of sale system controller objects are shown in Figure 3. Figure 3. Controller Components for the MVC based development of a Point of Sale System In addition, the following interactions are identified for the mo del-view-controller components as shown in Figure 1 [6]: The controller can send commands to the model to update or change the component’s status. Controllers are application specific, thus, reuse to other applications is not possible. The model notifies the associated views whenever there has been a change in its status wherein the updated output can be provided by the views. The controller is also updated with the changes in order to change the available set of commands. The model objects can be reusable, however, it is not directly displayed to the users. The view requests information from the model that it uses to generate an output representation and display it to the user. 4. Conclusions Software development process models can be chosen through their strengths and weaknesses to which is more suitable for a specific problem at hand. The MVC architecture pattern plays a vital role in the design phase of the software or application development. This paper presents a review of the concepts MVC for the development of software systems. The three types of objects in an application are defined as Model, Views and Controllers. 218 Copyright ⓒ 2014 SERSC International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014) References [1] Centers for Medicare & Medicaid Services (CMS) Office of Information Service (2008), “Selecting a development approach”, Webarticle, United States Department of Health and Human Services (HHS), Revalidated: (2008) March 27, Retrieved: (2014) September 12. [2] http://en.wikipedia.org/wiki/Software_development_process. [3] http://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Process/Methodology. [4] Trygve Reenskaug and James O. Coplien, “The DCI Architecture: A New Vision of Object-Oriented Programming”, http://www.artima.com/articles/dci_vision.html, March 20, 2009. [5] http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller. [6] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal, “Pattern-Oriented Software Architecture”, Volume 1: A System of Patterns Hardcover, Wiley, August 16, 1996, ISBN-13: 978-0471958697, ISBN10: 0471958697. [7] Model View Controller History, C2.com, (2012) May 11, Retrieved: 2014 September 8. [8] http://en.wikipedia.org/wiki/Agile_software_development [9] http://en.wikipedia.org/wiki/Rational_Unified_Process. Authors Ronnie D. Caytiles is a graduate student on the Integrated Course in College of Engineering from Hannam University. His research interests include ubiquitous ehealth care, mobility management scheme, wireless network, mobile IPv6, multimedia system, Multimedia Healthcare, and sensor network. Sunguk Lee received the B.S. degree in Electronics Engineering from Kyungpook National University, South Korea in 1998, and the M.S. and Ph.D. degrees in Electrical and Computer Engineering from University of Florida, Gainesville, USA, in 2004 and 2010, respectively. From 2013, he has been a Professor in the Department of Multimedia Engineering at Hannam University, Daejeon, Korea. Copyright ⓒ 2014 SERSC 219 International Journal of Software Engineering and Its Applications Vol. 8, No. 10 (2014) 220 Copyright ⓒ 2014 SERSC