Reactive Variability Realization with Test-Driven Development and Refactoring

Size: px
Start display at page:

Download "Reactive Variability Realization with Test-Driven Development and Refactoring"

Transcription

1 Reactive Variability Realization with Test-Driven Development and Refactoring Glauco Silva Neves Informatics and Statistics Department - INE Federal University of Santa Catarina - UFSC Florianópolis, Brazil [email protected] Patrícia Vilain Informatics and Statistics Department - INE Federal University of Santa Catarina - UFSC Florianópolis, Brazil [email protected] Abstract Software product line is a practice that has proven its advantages since it can offer to a company the reduction of time to market, the decrease of development costs, the increase of productivity and the improvement of the final product quality. However, this practice requires a high initial investment and offers long-term risks to dynamic markets where changes are difficult to predict. One of these markets is the mobile application development, which presents a growing demand, with smartphone and tablets having already surpassed sales of PCs and notebooks. Currently, proposals bring the advantages of software product line for dynamic markets through the use of agile software development practices, which is called Agile Product Line Engineering (APLE). This paper investigates the use of test-driven development (TDD) and refactoring techniques for performing reactive variability in APLE. The variability mechanism chosen is the configuration file that allows achieving more than one platform, an important problem in mobile application development. In that manner, new products can be built as needed, without the high upfront investment, but with a code easier to maintain. Keywords- Software product line, test-driven development, refactoring, variability realization I. INTRODUCTION A Software Product Line (SPL) is a set of applications that share common artifacts addressing the need of a particular market segment. This practice has already proven the advantages of reducing the time to market, decreasing development costs, increasing productivity and improving the quality of applications [1]. There are two essential activities in the SPL development: domain engineering and application engineering [1]. In domain engineering an initial planning to identify the commonalities and variability points of the applications is done and the system architecture is defined. Moreover, the resources that will be reused in applications are produced and become part of the core assets repository. Application engineering, in its turn, focuses on understanding the needs of each specific application and then reusing the resources (e.g. architecture, code, tests) in the core assets repository through the activation of variability points and selection of components necessary to satisfy the requirements. Despite its advantages, a SPL requires a high upfront and long-term investment to design and to develop the core assets repository, hindering the SPL use in dynamic markets due to the risk of unforeseen changes and the cost of developing artifacts that may no longer be reused. To overcome this difficulty, there is a proposal of combining agile software development practices with SPL, resulting in the Agile Product Line Engineering (APLE) [2]. One example of a dynamic market that has grown rapidly is the one of applications for mobile devices. Smartphones and tablets have surpassed PC and laptop sales [3]. New and different devices are constantly released with different connection capacities, pixels densities, resolutions, screen sizes, sensors (accelerometer, barometer, gyroscope), GPS and storage [4] besides using different operating systems such as ios, Android, Windows Phone, and others. Considering this scenario where changes are constant, APLE is an interesting proposal for mobile application companies that want to make use of SPL but do not want to suffer the disadvantages the traditional SPL development. This article uses the APLE approach to define a process for developing reactive SPLs using agile practices. The SPL variability is carried out on demand using Test-Driven Development (TDD) and refactoring practices. The variability mechanism used is the configuration file. This paper is organized as follows. Section 2 describes SPL combined with agile software development. In section 3 the proposed process is explained. Section 4 shows an example of a mobile application that was developed by applying the proposed process. Related work is discussed in section 5. Finally, section 6 presents some conclusions. II. AGILE PRODUCT LINE ENGINEERING There are several reasons for combining SPL practices with agile software development practices [2]. This combination can be applied when: 1. There is not much knowledge about the domain to perform domain engineering; 2. It is not possible to predict changes in product requirements; 100

2 3. There is a need to decrease the risk of developing artifacts that may not be reused, due to market modifications. According to Silva [5], Scrum and Extreme Programming (XP) are the most used agile methods in SPL development. Some studies combine Scrum and XP due to the fact that the nature of these methods has different focus. While Scrum focuses on project management, XP focuses on development practices. One of the most famous practices of XP is the Test- Driven Development (TDD). TDD is a way of programming where the coding tasks are performed in small cycles according to the mantra Red/Green/Refactor [6]. In the red phase, a failed unit test is written, which may not even compile. In the green phase, code is modified in the simplest way just to pass the test. And in the last phase, refactor, the code is modified in order to improve and maintain the behavior. It is in the refactor phase that design decisions are made, one at a time. TDD also assists in preventing bugs and may serve as documentation of the system. According to Beck [6], TDD can also aid the framework development because it focuses on what is needed instead of attempting to accommodate different features at once. As new features arise, the code is tested and refactored, eliminating duplicated code. The common code is placed in separate from the specific code, facilitating the reuse of common code later. There are two main strategies for building a SPL: proactive and reactive [1]. The more traditional approach is proactive, where scope, architecture, components, and other resources, are defined in early stages, anticipating commonalities and specificities. In the reactive approach one or more applications are developed at first, then the core assets are extracted from them. It is also possible an incremental approach, combining the ideas of both strategies at different times. In this work, we choose the reactive approach to be used in conjunction with agile practices because among its advantages is the lower cost for development, since the core assets repository is not constructed upfront [1]. In this way, the risk of developing useless components is lower since there is no need to provide the variations of products in advance and the knowledge about the domain can grow as applications are developed. III. A PROCESS FOR REACTIVE SPL DEVELOPMENT The goal of this work is to define a process for developing a reactive SPL. Such process applies TDD and refactoring agile practices to product conception and variability realization. During this process, the first application is developed focusing only on satisfying its existing requirements. This development is test-driven and its results include the application and a unit test suite that ensures its behavior. During the development of the second application, its requirements are either mapped to new features or the existing features can be modified. In the case of new features, new unit tests and production code is developed through the red/green/refactor form and then added to the core assets repository. When new requirements are variations of features previously added to the SPL, unit tests and code changes are applied to allow activating this new variability. Testing helps with making sure that the first application continues to behave properly. The new unit tests will drive the changes in the source code for the integration of variability points, which are then configured in the second application. The main mechanism to activate the variability is the configuration file. In addition to centralize the settings for building applications, the configuration file also documents the variations of each application. The file format chosen was the JavaScript Object Notation (JSON) [7], because it is a lightweight file format, easy to read and is commonly used to data-interchange. The configuration file is created when features are added as variabilities to the features that already exist in the core assets repository. This file has a key and a value to configure each feature. Along with this file a test class is created for testing the possible combinations of keys and values. It is also necessary to create a class in the code to read the configuration file and to instantiate a configurator object, which will be used to inform the application of what variability will be activated. The configuration file is modified as more variabilities are added to the SPL. Each application has its own configuration file, activating and configuring variabilities as needed. The proposed process can be described as follows: 1. The first application is developed using TDD as if it were the only one, without attempting to predict future features and variations. 2. Tests related to the first application become part of the core asset artifacts. 3. The features of the second application are gathered and described by user stories, which is a usual technique to define requirements in agile methods. 4. The features of the second application that are not related to existing features are developed with TDD. 5. The features of the second application that are variations of existing features follow a slightly different path: 5.1. Identify where the existing feature is tested Add new(s) test(s) to include the new expected behavior and refactor the existing code to pass these tests Refactor the existing code to use the configurator object that is modified Add new tests to verify the behavior of the new entries in the configurator object. IV. EXAMPLE To illustrate the use of our proposed process, the application developed in the book Test-Driven ios Development [8] was chosen as the first application of a reactive SPL. The choice of an existing application, which was test-driven developed, has been made to reduce the bias of 101

3 writing the first application. Moreover, this application was not developed following the SPL approach. This first application serves as a basis for the development of the second application, where new features and variabilities are inserted. The tests of the first application are refactored so that the core assets repository continues to support both applications. In the following, we initially describe the first application. Then we describe the second application and the modifications that were made to the core assets repository. 1.1 First Application The first application is an application for the ios operating system that provides to the user the latest questions of Stack Overflow 1 forum related to mobile development for ios. The questions are organized by topics, and users can also view the answers that were given to these questions. The name of this application is BrowseOverflow. Describing such application in more detail, we obtain the following user stories: List of topics. The application starts showing a list of topics related to ios. Each topic is associated with a tag from Stack Overflow. Access the latest questions. When a topic is selected, another list appears showing the 20 latest questions that have a tag associated with the selected topic. This list is sorted in chronological order, from most recent to least recent. Each item of the list shows the title of the question, the user who made the question (name and image), and the score of the question (number of people who upvoted or downvoted the question). Connection availability. To load the list of recent questions, an internet connection is necessary, but it is possible that the connection to the stackoverflow.com site fails. In the latter case, the application must then inform the user that the information cannot be loaded, either for lacking an internet connection or communication failure with the site. Get answers to one question. When selecting a question, the application opens a screen showing the question description and a list of answers. If an answer was chosen as correct, it appears first. Otherwise, if no answer is chosen, the answers are listed according to the score they have. For each answer the name and avatar of the user who answered it are also shown. The user stories were transcribed to a feature model that shows which features were developed. The resulting feature model is shown in Figure 1. As the features come from the first application, all of them are mandatory. BrowseOverflow StackOverflow API Questions Availability V 1.1 Online Topic Listing questions Answer sorting Predefined Alternative Or 20 more recent Legend Optional Mandatory Order by upvote Figure 1. Feature model of the first application Besides the development of the first application has been test-driven, it was done incrementally following a layered architecture. The model layer was developed first, followed by the controller layer. Finally the integration between both layers was done. The source of the first application is open 2 and has 24 classes and 182 unit tests. 1.2 Second Application In the second application some new user stories were added, some user stories from the first application were modified and some user stories from the first application were maintained. The following user stories are either new ones or variations of the first application stories: Access the 30 most recent questions. When a topic is selected, the list appears showing the 30 most recent questions. Using the API 2.0. The API version used to request the questions and answers should be 2.0 instead of 1.1. Access content without internet connection. The content (questions and answers) that was displayed previously must be available to the user even if there is no internet connection. Insert new topics. On the topic screen, the user can add new topics in order to look for questions. Order the answers chronologically. A list of answers to a question must be chronologically ordered, showing the most recent answers first. To exemplify the development of the SPL and its unit tests, the development of the first three user stories listed above is discussed next. 1 Available at 2 Available at 102

4 1.2.1 Access the 30 Most Recent Questions The steps required to develop the user story that changes the amount of questions from 20 to 30 are detailed as follows. First of all, we need to find where this feature is tested inside the unit tests of the first application. In the proposed model for the first application, each topic contains between 0 and 20 questions. The class diagram corresponding to this user story, presented in [8], is shown in Figure 2. Figure 2. Relationship between Topic and Question in the first application In the class responsible for testing topics (TopicTests) is the method testlimitoftwentyquestions (Figure 3). This method ensures that the modifications made to accept the new value will not affect the behavior of first application (void)testlimitoftwentyquestions 3. Question *q1 = [[Question alloc] init]; 4. for (NSInteger i = 0; i < 25; i++) { 5. [topic addquestion: q1]; 6. } 7. XCTAssertTrue( 8. [[topic recentquestions] count] < 21); 9. } Figure 3. First application test limit of twenty questions method Since the first application had a limit of 20 questions and the second application extends this limit to 30 questions, this feature has to be modified. We can generalize the limit of questions to n, where n is defined in the configuration file responsible for building each application. Thus, a new method, called testlimitofquestions (Figure 4), is created to test the limit of questions that must be defined at compile time. A new field is created in Topic class to store this value and the signature of the constructor is refactored to accept a new limit parameter (Figure 5). These changes resulted in changes elsewhere. The method setup in the TopicTests class needed to be refactored to use the new constructor. The method addquestions, that previously stored the number 20 directly in code, now uses the limit defined for the application (Figure 6). After having passed all tests, we found out that the test testlimitoftwentyquestions was no longer necessary, and then it was removed (void)testlimitofquestions 3. Question *q1 = [[Question alloc] init]; 4. for (NSInteger i = 0; i < topic.limit; i++) { 5. [topic addquestion: q1]; 6. } 7. XCTAssertTrue( 8. [[topic recentquestions] count] < topic.limit); 9. } Figure 4. Added method testlimitofquestions limit; (id)initwithname:(nsstring *)newname 4. tag:(nsstring *)newtag 5. limit:(int)newlimit 6. { 7. if ((self = [super init])) { 8. name = [newname copy]; 9. tag = [newtag copy]; 10. limit = newlimit; 11. questions = [[NSArray alloc] init]; 12. } 13. return self; 14. } Figure 5. New class field and change in the constructor signature 1. - (void)addquestion:(question *)question 3. NSArray *newquestions = 4. [questions arraybyaddingobject: question]; 5. if ([newquestions count] > 20) { 6. newquestions = 7. [self sortquestionslatestfirst: 8. newquestions]; 9. newquestions = 10. [newquestions subarraywithrange: 11. (NSMakeRange(0, 20)]; 12. } 13. questions = newquestions; 14. } 1. - (void)addquestion:(question *)question 3. NSArray *newquestions = 4. [questions arraybyaddingobject: question]; 5. if ([newquestions count] > limit) { 6. newquestions = 7. [self sortquestionslatestfirst: 8. newquestions]; 9. newquestions = 10. [newquestions subarraywithrange: 11. (NSMakeRange(0, limit)]; 12. } 13. questions = newquestions; 14. } Figure 6. Changes in the method addquestions (before and after) Since this was the first feature modified in the SPL features model, it was necessary to create the test class responsible for testing the class that will read the configuration file and instantiate the configurator object. The configurator object is accessed by the system to enable the variability points. The necessary information to instantiate the configurator object comes from the configuration file, a JSON file that is created for each application. A JSON file to configurate the number of question is shown in Figure 7. For each variability point of the SPL there is a descriptive key in the configuration file and that key references a value that has the settings required to activate that point. 103

5 1. { 2. "limitofquestions": 30, 3. } Figure 7. Example of JSON configuration file Using the API 2.0 In the case of the API variation, the modification is more complex. In the first application, a facade [9] called StackOverflowManager is responsible for the communication with the class StackOverflowCommunicator (Figure 8). The requests to the API 1.1 are centralized in this communicator class. Now we need a class that tests the communicator that will be used independently of the API version. The tests guide the construction of an adapter [9] StackOverflowCommunicator. This adapter is responsible for calling the communicators with the API 1.1 (StackOverflowComunicatorV11, the old StackOverflowComunicator class of the first application) and with the API 2.0 (StackOverflowComunicatorV20) (Figure 9). This technique of extracting an adapter during refactoring was proposed by Kerievsky in [10]. However, other problems arise from the API change because the JSON format of the response from each API is different. Despite the PersonBuilder, QuestionBuilder and AnswerBuilder classes not knowing about the requests, they assume they will receive a JSON file with the same predefined fields. So, in this case the builder classes must receive the JSON file and also the mapping between this file and the object to be instantiated. Figure 8. Relationship between the facade and other classes [8] Figure 9. StackOverflowCommunicator new adapters Access Content Without Internet Connection The availability of the content even without internet connection leads to changes in many places, since the first application always notifies the user that a problem has occurred when there is no internet connection. The StackOverflowManager class also acts as a facade between the communicator and the builder [9] classes (PersonBuilder, QuestionBuilder and AnswerBuilder). The facade asks for the communicator to make a request to retrieve a JSON response from the Stack Overflow. When successful, the manager passes the JSON response to the builder classes. At this point, the JSON response must be saved by the application. When the request fails, the StackOverflowManager should verify if the JSON response was saved in memory before. After applying all the changes in the code, the configuration files for each application are defined as shown in Figures 10 and { 2. "limitofquestions": 20, 3. "stackoverflowapiversion": 1.1, 4. "userdefinedtopic": false, 5. "contentavailability": "online", 6. "answersorting": "upvote" 7. } Figure 10. Configuration file of the first application 1. { 2. "limitofquestions": 30, 3. "stackoverflowapiversion": 2, 4. "userdefinedtopic": true, 5. "contentavailability": "offline", 6. "answersorting": "date" 7. } Figure 11. Configuration file of the second application As a JSON file does not support comments, we need other support file to document the possible values for each key. At the end of the development of the second application, the feature model evolves including features that are mandatory, optional or mutually exclusive alternatives, as shown in Figure 12. It is important to point out that, in the case of the feature related to the quantity of questions we now have a more generic feature, and in the case of the features related to the API version and content availability we now have alternatives. V. RELATED WORK Ghanam [11] proposed the use of a test-driven approach to introduce variability through the refactoring of the existing code. Tests can guide the insertion of new forms of system variability as required. He proposed the use of the factory pattern [9] in the refactoring process in order to generate new feature alternatives and the use of the decorator pattern [9] to generate options. Then the variabilities are configured in a specific class of the code. Our work differs from Ghanam s work [11] because we explore more design patterns to generate variability. There are cases where the factory and decorator patterns are not enough or they are not the best option to insert variability. Furthermore, the solution presented in [11] is platform-dependent, whereas the configuration file of our work was designed to be used in other platforms too. 104

6 BrowseOverflow StackOverflow API Questions Availability V 1.1 V 2.0 Online Offline Topics Listing questions Answer sorting Legend First app features Variations Adapt from first version Alternative Optional Predefined User defined Predefined User defined Or Mandatory n more recent User defined Figure 12. Feature model of the second application developed Kakarontzas [12] proposed a systematic approach to create new quality and functional variant components through the customization of existing core assets of a SPL. This work also uses the TDD to assist with the evolution of SPL software components. It suggests the creation of a new component, which is an extension of a pure component, when new features are added. Thus, when a new functionality is needed, just a pure component or a component in the higher hierarchy has to be used. The component hierarchy presented in [12] increases the complexity. With a large hierarchy, it is more difficult to select alternative and requirements options to compose a new product. The configuration file we use in our work seems to be a simpler solution to centralize the variabilities choice as well as to serve as a guide for building a new application. VI. CONCLUSIONS Traditional SPLs have the disadvantages of high initial investment, the development of artifacts that may not be used, and the difficulty of dealing with unknown segments. The APLE arises to address these disadvantages using agile practices. This paper showed how TDD and refactoring agile practices could make a reactive SPL evolve and acquire variability points on demand. This is done through a defined process and the use of the configuration file as the variability mechanism. In our proposed process the first step is the development of an application using TDD, without considering the creation of other applications belonging to the same SPL. Then new features and variations of existing features are added in the form of user stories. To develop the features we create new variability points from new tests, and we also create the configuration file to activate the desired variability of each application. Then we implement the code necessary to pass all tests. The configuration file allows visualizing the application variability points in an easy way and centralizing the variability mechanisms in a unique place. It can also be used as a guide for the construction of a new SPL application. As future work we intend to apply the proposed process practices in a company of the mobile applications segment, addressing the cross platform development challenges. We will develop one ios application using the Objective-C language and another Android application using the Java language so that the variabilities are specified in the configuration file. REFERENCES [1] Clements, P., Northrop, L. A Framework for Software Product Line Practice, Version Pittsburgh, PA, USA: Software Engineering Institute, [2] Dfaz, J., Perez, J., Alarcón, P. P., Garbajosa, J. Agile Product Line Engineering - A Systematic Literature Review. Software, Practice & Experience (Print), v. 41, p , [3] Constantinou, A., Camilleri, E., Kapetanakis, M. Developer Economics 2012: The new mobile app economy. London: Visionmobile, [4] Milano, D. T. Android Application Testing Guide. Birmingham: Packt Publishing, [5] Silva, I. F., Neto, P. A. M. S., O'Leary, P., Almeida, E. S., Meira, S. R. L. Agile Software Product Lines: A Systematic Mapping Study. Software, Practice & Experience (Print), v. 41, p , [6] Beck, K. Test-Driven Development By Example [7] JSON. Introducing JSON [8] Lee, G. Test-Driven ios Development. Crawfordsville: Addison-Wesley, [9] Gamma E., Helm R., Johnson R., Vlissides J. Design patterns: elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, [10] Kerievsky, J. Refactoring to Patterns. Crawfordsville: Addison-Wesley Professional; 1 edition, [11] Ghanam, Y. An Agile Framework for Variability Management in Software Product Line Engineering. Doctor Thesis. Calgary, Alberta, Canada: University of Calgary, [12] Kakarontzas, G., Stamelos, I., Katsaros, P. Product line variability with elastic components and test-driven development. CIMCA 08: Proceedings of the 2008 International Conference on Computational Intelligence for Modeling Control and Automation. IEEE Computer Society: Washington, DC, U.S.A., 2008:

Neglecting Agile Principles and Practices: A Case Study

Neglecting Agile Principles and Practices: A Case Study Neglecting Agile Principles and Practices: A Case Study Patrícia Vilain Departament de Informatics and Statistics (INE) Federal University of Santa Catarina Florianópolis, Brazil [email protected] Alexandre

More information

Product Derivation Process and Agile Approaches: Exploring the Integration Potential

Product Derivation Process and Agile Approaches: Exploring the Integration Potential Product Derivation Process and Agile Approaches: Exploring the Integration Potential Padraig O Leary, Muhammad Ali Babar, Steffen Thiel, Ita Richardson Lero, the Irish Software Engineering Research Centre,

More information

Basic Trends of Modern Software Development

Basic Trends of Modern Software Development DITF LDI Lietišķo datorsistēmu programmatūras profesora grupa e-business Solutions Basic Trends of Modern Software Development 2 3 Software Engineering FAQ What is software engineering? An engineering

More information

Middleware- Driven Mobile Applications

Middleware- Driven Mobile Applications Middleware- Driven Mobile Applications A motwin White Paper When Launching New Mobile Services, Middleware Offers the Fastest, Most Flexible Development Path for Sophisticated Apps 1 Executive Summary

More information

Keywords: - Software Product Lines (SPLs), Product Line Engineering (PLE), Core Assets, Software Product Line Development.

Keywords: - Software Product Lines (SPLs), Product Line Engineering (PLE), Core Assets, Software Product Line Development. Volume 4, Issue 1, January 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com Systematic Review

More information

Comparing Agile Software Processes Based on the Software Development Project Requirements

Comparing Agile Software Processes Based on the Software Development Project Requirements CIMCA 2008, IAWTIC 2008, and ISE 2008 Comparing Agile Software Processes Based on the Software Development Project Requirements Malik Qasaimeh, Hossein Mehrfard, Abdelwahab Hamou-Lhadj Department of Electrical

More information

Variation Management for Software Production Lines 1

Variation Management for Software Production Lines 1 Variation Management for Software Production Lines 1 Charles W. Krueger BigLever Software, Inc. 10500 Laurel Hill Cove Austin TX 78730 USA [email protected] Abstract. Variation in a software product

More information

Experiences with ALM tools in Software Engineering course

Experiences with ALM tools in Software Engineering course Faculty of Mathematics, University of Belgrade 1/35 Vladimir Filipović Experiences with ALM tools in Software Engineering course Outline 2/35 Software Engineering course entitled Software development 2

More information

Unification of AOP and FOP in Model Driven Development

Unification of AOP and FOP in Model Driven Development Chapter 5 Unification of AOP and FOP in Model Driven Development I n this chapter, AOP and FOP have been explored to analyze the similar and different characteristics. The main objective is to justify

More information

Agile Software Development Methodologies and Its Quality Assurance

Agile Software Development Methodologies and Its Quality Assurance Agile Software Development Methodologies and Its Quality Assurance Aslin Jenila.P.S Assistant Professor, Hindustan University, Chennai Abstract: Agility, with regard to software development, can be expressed

More information

Agile Techniques for Object Databases

Agile Techniques for Object Databases db4o The Open Source Object Database Java and.net Agile Techniques for Object Databases By Scott Ambler 1 Modern software processes such as Rational Unified Process (RUP), Extreme Programming (XP), and

More information

Software Architecture

Software Architecture Cairo University Faculty of Computers and Information Computer Science Department Premasters Studies Software Architecture Report on Software Product Line Submitted to: Dr. Hany Ammar Submitted by: Hadeel

More information

Building a Flexible Software Factory Using Partial Domain Specific Models

Building a Flexible Software Factory Using Partial Domain Specific Models Building a Flexible Software Factory Using Partial Domain Specific Models Jos Warmer 1, Anneke Kleppe 2 3 1 Ordina SI&D, The Netherlands [email protected] 2 University Twente, Netherlands [email protected]

More information

REST Client Pattern. [Draft] Bhim P. Upadhyaya ABSTRACT

REST Client Pattern. [Draft] Bhim P. Upadhyaya ABSTRACT REST Client Pattern [Draft] Bhim P. Upadhyaya EqualInformation Chicago, USA [email protected] ABSTRACT Service oriented architecture (SOA) is a common architectural practice in large enterprises. There

More information

Evaluating OO-CASE tools: OO research meets practice

Evaluating OO-CASE tools: OO research meets practice Evaluating OO-CASE tools: OO research meets practice Danny Greefhorst, Matthijs Maat, Rob Maijers {greefhorst, maat, maijers}@serc.nl Software Engineering Research Centre - SERC PO Box 424 3500 AK Utrecht

More information

Test Driven Development with Continuous Integration: A Literature Review

Test Driven Development with Continuous Integration: A Literature Review Test Driven Development with Continuous Integration: A Literature Review Sheikh Fahad Ahmad Deptt. of Computer Science & Engg. Mohd. Rizwan Beg Deptt. of Computer Science & Engg. Mohd. Haleem Deptt. of

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2007 Vol. 6, No. 1, January-February 2007 CM Configuration Change Management John D.

More information

How to Choose Right Mobile Development Platform BROWSER, HYBRID, OR NATIVE

How to Choose Right Mobile Development Platform BROWSER, HYBRID, OR NATIVE How to Choose Right Mobile Development Platform BROWSER, HYBRID, OR NATIVE Solutions Introduction: Enterprises around the globe are mobilizing mission-critical services. Businesses get streamlined due

More information

A Variability Viewpoint for Enterprise Software Systems

A Variability Viewpoint for Enterprise Software Systems 2012 Joint Working Conference on Software Architecture & 6th European Conference on Software Architecture A Variability Viewpoint for Enterprise Software Systems Matthias Galster University of Groningen,

More information

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying

More information

Tool Support for Software Variability Management and Product Derivation in Software Product Lines

Tool Support for Software Variability Management and Product Derivation in Software Product Lines Tool Support for Software Variability Management and Product Derivation in Software s Hassan Gomaa 1, Michael E. Shin 2 1 Dept. of Information and Software Engineering, George Mason University, Fairfax,

More information

Salion s Experience with a Reactive Software Product Line Approach

Salion s Experience with a Reactive Software Product Line Approach Salion s Experience with a Reactive Software Product Line Approach Ross Buhrdorf Dale Churchett Salion, Inc., 720 Brazos St., Ste. 700 Austin TX 78701 USA [email protected] [email protected]

More information

A Configuration Management Model for Software Product Line

A Configuration Management Model for Software Product Line A Configuration Management Model for Software Product Line Liguo Yu 1 and Srini Ramaswamy 2 1 Computer Science and Informatics Indiana University South Bend South Bend, IN 46634, USA [email protected] 2 Computer

More information

Managing Variability in Software Architectures 1 Felix Bachmann*

Managing Variability in Software Architectures 1 Felix Bachmann* Managing Variability in Software Architectures Felix Bachmann* Carnegie Bosch Institute Carnegie Mellon University Pittsburgh, Pa 523, USA [email protected] Len Bass Software Engineering Institute Carnegie

More information

SOPLE-DE: An Approach to Design Service-Oriented Product Line Architectures

SOPLE-DE: An Approach to Design Service-Oriented Product Line Architectures SOPLE-DE: An Approach to Design -Oriented Product Line Architectures Flávio M. Medeiros, Eduardo S. de Almeida 2, and Silvio R.L. Meira Federal University of Pernambuco (UFPE) 2 Federal University of Bahia

More information

Choosing a Mobile Application Development Approach

Choosing a Mobile Application Development Approach ASEAN Journal of Management & Innovation Vol. 1 No. 1, 69 74 by Stamford International University DOI: 10.14456/ajmi..4 ajmi.stamford.edu Choosing a Mobile Application Development Approach Phyo Min Tun

More information

Structured Content: the Key to Agile. Web Experience Management. Introduction

Structured Content: the Key to Agile. Web Experience Management. Introduction Structured Content: the Key to Agile CONTENTS Introduction....................... 1 Structured Content Defined...2 Structured Content is Intelligent...2 Structured Content and Customer Experience...3 Structured

More information

The WebShop E-Commerce Framework

The WebShop E-Commerce Framework The WebShop E-Commerce Framework Marcus Fontoura IBM Almaden Research Center 650 Harry Road, San Jose, CA 95120, U.S.A. e-mail: fontouraalmaden.ibm.com Wolfgang Pree Professor of Computer Science Software

More information

An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications

An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications Germán Harvey Alférez Salinas Department of Computer Information Systems, Mission College,

More information

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6 The Researches on Unified Pattern of Information System Deng Zhonghua,Guo Liang,Xia Yanping School of Information Management, Wuhan University Wuhan, Hubei, China 430072 Abstract: This paper discusses

More information

Ontological Representations of Software Patterns

Ontological Representations of Software Patterns Ontological Representations of Software Patterns Jean-Marc Rosengard and Marian F. Ursu University of London http://w2.syronex.com/jmr/ Abstract. This paper 1 is based on and advocates the trend in software

More information

The WebShop e-commerce framework

The WebShop e-commerce framework The WebShop e-commerce framework Marcus Fontoura 1, Wolfgang Pree 2, and Bernhard Rumpe 3 1 Cyberspace and Web Technology Department, IBM Almaden Research Center 650 Harry Rd., San Jose, CA, 91520, U.S.A

More information

JUnit. Introduction to Unit Testing in Java

JUnit. Introduction to Unit Testing in Java JUnit Introduction to Unit Testing in Java Testing, 1 2 3 4, Testing What Does a Unit Test Test? The term unit predates the O-O era. Unit natural abstraction unit of an O-O system: class or its instantiated

More information

www.expaway.com Offerte del 10 maggio 2013

www.expaway.com Offerte del 10 maggio 2013 www.expaway.com Offerte del 10 maggio 2013 On behalf of our client, a leading Internet Company in Berlin, we are currently accepting resumes for the following professional opportunity: PS007D SENIOR BACKEND

More information

Umbrella: A New Component-Based Software Development Model

Umbrella: A New Component-Based Software Development Model 2009 International Conference on Computer Engineering and Applications IPCSIT vol.2 (2011) (2011) IACSIT Press, Singapore Umbrella: A New Component-Based Software Development Model Anurag Dixit and P.C.

More information

Tailoring the Scrum Development Process to Address Agile Product Line Engineering

Tailoring the Scrum Development Process to Address Agile Product Line Engineering Tailoring the Scrum Development Process to Address Agile Product Line Engineering Jessica Díaz, Jennifer Pérez, Agustín Yagüe and Juan Garbajosa Technical University of Madrid (UPM) - Universidad Politécnica

More information

Basic Unified Process: A Process for Small and Agile Projects

Basic Unified Process: A Process for Small and Agile Projects Basic Unified Process: A Process for Small and Agile Projects Ricardo Balduino - Rational Unified Process Content Developer, IBM Introduction Small projects have different process needs than larger projects.

More information

Applying Agile Methods in Rapidly Changing Environments

Applying Agile Methods in Rapidly Changing Environments Applying Agile Methods in Changing Environments 7/23/2002 1 Applying Agile Methods in Rapidly Changing Environments Peter Kutschera IBM Unternehmensberatung GmbH Am Fichtenberg 1, D-71803 Herrenberg Steffen

More information

Chapter 13: Program Development and Programming Languages

Chapter 13: Program Development and Programming Languages 15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning

More information

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda Xtreme RUP by Ne t BJECTIVES Lightening Up the Rational Unified Process 2/9/2001 Copyright 2001 Net Objectives 1 RUP Overview Agenda Typical RUP Challenges Xtreme Programming Paradigm Document driven or

More information

Managing Variability in ALPR Software

Managing Variability in ALPR Software Managing Variability in ALPR Software Dr. Marco Sinnema Product Manager Video and ALPR, Q-Free ASA P.O. Box 180, 9410 AD Beilen, The Netherlands tel. +31 593 542055, fax. +31 593 542098 [email protected]

More information

Investigation of Adherence Degree of Agile Requirements Engineering Practices in Non-Agile Software Development Organizations

Investigation of Adherence Degree of Agile Requirements Engineering Practices in Non-Agile Software Development Organizations Investigation of Adherence Degree of Agile Requirements Engineering Practices in Non-Agile Software Development Organizations Mennatallah H. Ibrahim Department of Computers and Information Sciences Institute

More information

Ubiquitous, Pervasive and Mobile Computing: A Reusable-Models-based Non-Functional Catalogue

Ubiquitous, Pervasive and Mobile Computing: A Reusable-Models-based Non-Functional Catalogue Ubiquitous, Pervasive and Mobile Computing: A Reusable-Models-based Non-Functional Catalogue Milene Serrano 1 and Maurício Serrano 1 1 Universidade de Brasília (UnB/FGA), Curso de Engenharia de Software,

More information

Software Development Process

Software Development Process Software Development Process A software development process, also known as software development lifecycle, is a structure imposed on the development of a software product. Similar terms include software

More information

The Suitability of Native Application for University E-Learning Compared to Web-Based Application

The Suitability of Native Application for University E-Learning Compared to Web-Based Application The Suitability of Native Application for University E-Learning Compared to Web-Based Application Maya Novia Sari 1, Noor Azian Bt. Mohamad Ali 2 Department of Information Systems, Kulliyyah of Information

More information

Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C

Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C Flávio Medeiros 1, Thiago Lima 2, Francisco Dalton 2, Márcio Ribeiro 2, Rohit Gheyi 1, Baldoino Fonseca 2

More information

Towards Software Configuration Management for Test-Driven Development

Towards Software Configuration Management for Test-Driven Development Towards Software Configuration Management for Test-Driven Development Tammo Freese OFFIS, Escherweg 2, 26121 Oldenburg, Germany [email protected] Abstract. Test-Driven Development is a technique where

More information

CodeDroid: A Framework to Develop Context-Aware Applications

CodeDroid: A Framework to Develop Context-Aware Applications CodeDroid: A Framework to Develop Context-Aware Applications Lillian B. R. de Oliveira Antonio A. F. Loureiro Department of Computer Science Federal University of Minas Gerais 31270-010 Belo Horizonte,

More information

SOA REFERENCE ARCHITECTURE: WEB TIER

SOA REFERENCE ARCHITECTURE: WEB TIER SOA REFERENCE ARCHITECTURE: WEB TIER SOA Blueprint A structured blog by Yogish Pai Web Application Tier The primary requirement for this tier is that all the business systems and solutions be accessible

More information

REVIEW OF AGILE METHODOLOGIES IN SOFTWARE DEVELOPMENT

REVIEW OF AGILE METHODOLOGIES IN SOFTWARE DEVELOPMENT REVIEW OF AGILE METHODOLOGIES IN SOFTWARE DEVELOPMENT 1 MALIK HNEIF, 2 SIEW HOCK OW 1 Department of Software Engineering, University of Malaya, Kuala Lumpur, Malaysia-50603 2 Assoc. Prof., Department of

More information

100% NO CODING NO DEVELOPING IMMEDIATE BUSINESS -25% -70% UNLIMITED SCALABILITY DEVELOPMENT TIME SOFTWARE STABILITY

100% NO CODING NO DEVELOPING IMMEDIATE BUSINESS -25% -70% UNLIMITED SCALABILITY DEVELOPMENT TIME SOFTWARE STABILITY 100% UNLIMITED SCALABILITY TOTAL COST OF OWNERSHIP -25% +50% EFFICENCY INCREASE -70% +65% DEVELOPMENT TIME SOFTWARE STABILITY NO CODING NO DEVELOPING IMMEDIATE BUSINESS FlexyGo Rapid Application Builder

More information

Designing and Developing Performance Measurement Software Solution

Designing and Developing Performance Measurement Software Solution Designing and Developing Performance Measurement Software Solution Bekim Fetaji, and Majlinda Fetaji Abstract The focus of the research study is the development of a software solution for performance evaluation

More information

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note Text book of CPET 545 Service-Oriented Architecture and Enterprise Application: SOA Principles of Service Design, by Thomas Erl, ISBN

More information

Structuring Product-lines: A Layered Architectural Style

Structuring Product-lines: A Layered Architectural Style Structuring Product-lines: A Layered Architectural Style Tommi Myllymäki, Kai Koskimies, and Tommi Mikkonen Institute of Software Systems, Tampere University of Technology Box 553, FIN-33101 Tampere, Finland

More information

Architecture Centric Development in Software Product Lines

Architecture Centric Development in Software Product Lines Architecture Centric Development in Software Product Lines Aurangzeb Khan DCE, College of E & ME National University of Science and Technology (NUST), Pakistan Farooque Azam DCE, College of E & ME National

More information

ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS

ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS Lech MADEYSKI *, Michał STOCHMIAŁEK Abstract. Architectural design is about decisions which influence characteristics of arising system e.g. maintainability

More information

Test Driven Development Part III: Continuous Integration Venkat Subramaniam [email protected] http://www.agiledeveloper.com/download.

Test Driven Development Part III: Continuous Integration Venkat Subramaniam venkats@agiledeveloper.com http://www.agiledeveloper.com/download. Test Driven Development Part III: Continuous Integration Venkat Subramaniam [email protected] http://www.agiledeveloper.com/download.aspx Abstract In this final part of the three part series on

More information

Easing the Transition to Software Mass Customization 1

Easing the Transition to Software Mass Customization 1 Easing the Transition to Software Mass Customization 1 Charles W. Krueger BigLever Software, Inc., 10500 Laurel Hill Cove, Austin, TX, 78730, USA. Tel: +1 (512) 426.2227. Fax: +1 (512) 795.9854. [email protected]

More information

Automated Virtual Cloud Management: The need of future

Automated Virtual Cloud Management: The need of future Automated Virtual Cloud Management: The need of future Prof. (Ms) Manisha Shinde-Pawar Faculty of Management (Information Technology), Bharati Vidyapeeth Univerisity, Pune, IMRDA, SANGLI Abstract: With

More information

Code Qualities and Coding Practices

Code Qualities and Coding Practices Code Qualities and Coding Practices Practices to Achieve Quality Scott L. Bain and the Net Objectives Agile Practice 13 December 2007 Contents Overview... 3 The Code Quality Practices... 5 Write Tests

More information

HTML5 : carrier grade

HTML5 : carrier grade HTML5 : carrier grade Alex Rutgers / CTO@Momac / February 2013. Introduction Since HTML5 became mainstream media around April 2010 and I decided to create an overview article on HTML5 in the mobile space,

More information

An Automatic Reversible Transformation from Composite to Visitor in Java

An Automatic Reversible Transformation from Composite to Visitor in Java An Automatic Reversible Transformation from Composite to Visitor in Java Akram To cite this version: Akram. An Automatic Reversible Transformation from Composite to Visitor in Java. CIEL 2012, P. Collet,

More information

ios Dev Crib Sheet In the Shadow of C

ios Dev Crib Sheet In the Shadow of C ios Dev Crib Sheet As you dive into the deep end of the ios development pool, the first thing to remember is that the mother ship holds the authoritative documentation for this endeavor http://developer.apple.com/ios

More information

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW Year 2014, Vol. 1, issue 1, pp. 49-56 Available online at: http://journal.iecuniversity.com TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW Singh RANDEEP a*, Rathee AMIT b a* Department of

More information

Native mobile apps: The wrong choice for business?

Native mobile apps: The wrong choice for business? Native mobile apps: The wrong choice for business? Why businesses should think twice before building native mobile applications A white paper from Introduction Native mobile applications are popular with

More information

MENDIX FOR MOBILE APP DEVELOPMENT WHITE PAPER

MENDIX FOR MOBILE APP DEVELOPMENT WHITE PAPER MENDIX FOR MOBILE APP DEVELOPMENT WHITE PAPER TABLE OF CONTENTS Market Demand for Enterprise Mobile Mobile App Development Approaches Native Apps Mobile Web Apps Hybrid Apps Mendix Vision for Mobile App

More information

SPLConfig: Product Configuration in Software Product Line

SPLConfig: Product Configuration in Software Product Line SPLConfig: Product Configuration in Software Product Line Lucas Machado, Juliana Pereira, Lucas Garcia, Eduardo Figueiredo Department of Computer Science, Federal University of Minas Gerais (UFMG), Brazil

More information

Lecture 4 Cross-Platform Development. <lecturer, date>

Lecture 4 Cross-Platform Development. <lecturer, date> Lecture 4 Cross-Platform Development Outline Cross-Platform Development PhoneGap Appcelerator Titanium Xamarin References Native Development Represents the baseline for comparisons You

More information

Java Application Developer Certificate Program Competencies

Java Application Developer Certificate Program Competencies Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle

More information

Mobile Learning Application Based On Hybrid Mobile Application Technology Running On Android Smartphone and Blackberry

Mobile Learning Application Based On Hybrid Mobile Application Technology Running On Android Smartphone and Blackberry Mobile Learning Application Based On Hybrid Mobile Application Technology Running On Android Smartphone and Blackberry Djoni Haryadi Setiabudi, Lady Joanne Tjahyana,Winsen Informatics Department Petra

More information

Big Data Solutions. Portal Development with MongoDB and Liferay. Solutions

Big Data Solutions. Portal Development with MongoDB and Liferay. Solutions Big Data Solutions Portal Development with MongoDB and Liferay Solutions Introduction Companies have made huge investments in Business Intelligence and analytics to better understand their clients and

More information

The Central Role of APIs in Mashup and Cloud Platforms and Need for an Agile API Development Method

The Central Role of APIs in Mashup and Cloud Platforms and Need for an Agile API Development Method The Central Role of APIs in Mashup and Cloud Platforms and Need for an Agile API Development Method Valeh H. Nasser Department of Computer Science University of Calgary Calgary, Canada [email protected]

More information

Mapping Business Process Modeling constructs to Behavior Driven Development Ubiquitous Language

Mapping Business Process Modeling constructs to Behavior Driven Development Ubiquitous Language Mapping Business Process Modeling constructs to Behavior Driven Development Ubiquitous Language Rogerio Atem de Carvalho, Fernando Luiz de Carvalho e Silva, Rodrigo Soares Manhaes Emails: [email protected],

More information

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53 Preface xvi Part I Introduction and System Engineering 1 Chapter 1 Introduction 2 1.1 What Is Software Engineering? 2 1.2 Why Software Engineering? 3 1.3 Software Life-Cycle Activities 4 1.3.1 Software

More information

A Modular Approach to Teaching Mobile APPS Development

A Modular Approach to Teaching Mobile APPS Development 2014 Hawaii University International Conferences Science, Technology, Engineering, Math & Education June 16, 17, & 18 2014 Ala Moana Hotel, Honolulu, Hawaii A Modular Approach to Teaching Mobile APPS Development

More information

Advanced Software Engineering. Software Development Processes

Advanced Software Engineering. Software Development Processes Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Advanced Software Engineering Software Development Processes Prof. Agostino Poggi Software Development

More information

Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1

Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1 Collaborative Large scale Integrating Project Open Platform for EvolutioNary Certification Of Safety critical Systems Methodology: Agile development of safety critical systems to deliverable D1.1 Work

More information

AGILE BUSINESS INTELLIGENCE

AGILE BUSINESS INTELLIGENCE AGILE BUSINESS INTELLIGENCE OR HOW TO GIVE MANAGEMENT WHAT THEY NEED WHEN THEY NEED IT Evan Leybourn Author Directing the Agile Organisation Melbourne, Australia [email protected] INTRODUCTION

More information

Client Overview. Engagement Situation

Client Overview. Engagement Situation Client Overview Our client is a key provider of software solutions for ensuring safety and quality standards of the supply chain of consumable goods manufacturers. Client's dedicated software platform

More information

Accelerating Business Value by

Accelerating Business Value by Accelerating Business Value by Mobilizing Backend Enterprise Applications To find out how GAVS can be engaged as your dedicated co-sourcing partner to improve business outcomes, please write to us at [email protected].

More information

Development/Maintenance/Reuse: Software Evolution in Product Lines

Development/Maintenance/Reuse: Software Evolution in Product Lines Development/Maintenance/Reuse: Software Evolution in Product Lines Stephen R. Schach Vanderbilt University, Nashville, TN, USA Amir Tomer RAFAEL, Haifa, Israel Abstract The evolution tree model is a two-dimensional

More information

Different Approaches used in Software Product Families

Different Approaches used in Software Product Families Different Approaches used in Software Product Families Rafia Inam Mälardalens University. [email protected] Abstract The use of software in consumer products is growing tremendously in current era. Further

More information

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software... 1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering Software is intangible Hard to understand

More information

On the Agile Development of Virtual Reality Systems

On the Agile Development of Virtual Reality Systems 10 Int'l Conf. Software Eng. Research and Practice SERP'15 On the Agile Development of Virtual Reality Systems F. Mattioli 1, D. Caetano 1, A. Cardoso 1, and E. Lamounier 1 1 Faculty of Electrical Engineering,

More information

Quality Ensuring Development of Software Processes

Quality Ensuring Development of Software Processes Quality Ensuring Development of Software Processes ALEXANDER FÖRSTER,GREGOR ENGELS Department of Computer Science University of Paderborn D-33095 Paderborn, Germany {alfo engels}@upb.de ABSTRACT: Software

More information

Frameworks & Android. Programmeertechnieken, Tim Cocx

Frameworks & Android. Programmeertechnieken, Tim Cocx Frameworks & Android Programmeertechnieken, Tim Cocx Discover thediscover world atthe Leiden world University at Leiden University Software maken is hergebruiken The majority of programming activities

More information

APPLYING CASE BASED REASONING IN AGILE SOFTWARE DEVELOPMENT

APPLYING CASE BASED REASONING IN AGILE SOFTWARE DEVELOPMENT APPLYING CASE BASED REASONING IN AGILE SOFTWARE DEVELOPMENT AIMAN TURANI Associate Prof., Faculty of computer science and Engineering, TAIBAH University, Medina, KSA E-mail: [email protected] ABSTRACT

More information