Otto-von-Guericke-Universität Magdeburg. Faculty of Computer Science Department of Technical and Business Information Systems.

Size: px
Start display at page:

Download "Otto-von-Guericke-Universität Magdeburg. Faculty of Computer Science Department of Technical and Business Information Systems."

Transcription

1 Otto-von-Guericke-Universität Magdeburg Faculty of Computer Science Department of Technical and Business Information Systems Master Thesis Stepwise-Development Case Study with Refactoring Feature Modules Author: Jing Ouyang December 2, 2009 Advisor: Prof. Dr. rer. nat. habil. Gunter Saake, Dipl.-Inform. Martin Kuhlemann, University of Magdeburg Faculty of Computer Science Postfach 4120, D Magdeburg Germany

2 Ouyang, Jing: Stepwise-Development Case Study with Refactoring Feature Modules Master Thesis Otto-von-Guericke-Universität Magdeburg, 2009.

3 i Acknowledgements I would like to thank Prof. Dr. Gunter Saake for giving me the opportunity to work on master thesis in his group. I have been indebted in the preparation of this thesis to my advisor, Martin Kuhlemann, whose patience and kindness, as well as his academic experience, have been invaluable to me. I would like to especially thank Martin Kuhlemann for his helpful reviews and suggestions. I would to thank my parents because of whom this education is made possible for me. Lastly, I wish to thank my boy friend Xiaowei, who supported me and helped me to take care of my family.

4 ii

5 CONTENTS iii Contents Contents List of Figures List of Tables List of Abbreviations iii vii xi xiii 1 Introduction Motivation Goals Structure of the Thesis Background Software Development Process Software Development Activities Software Development Models Stepwise Development Feature Oriented Programming Feature Module GenVoca and AHEAD ATS The Jak Language Refactoring Feature Modules Refactoring Refactoring Feature Modules Summary

6 iv CONTENTS 3 Stepwise Development with FOP and RFM Tool Support Introduction of Cases Stepwise Development with FOP Software Program Pre-Processing Construction of Feature Diagram Typical process of FOP in Case Study Stepwise Development with RFM Combination of RFM and FOP Encountered Problems Summary Case Study Results Study Results for the Program JHotDraw Study Results for other Programs New Refactorings Evaluation Jak Extension Basic Concept Extension for multiple Layers Benefit from the Extension Related Work, Conclusion and Further work Related Work Conclusion and Further Work Bibliography 69 A Information for JHotDraw 75 A.1 Refinements Frequency in JHoDraw A.2 RFM in Step JHotDraw A.3 RFM Frequency in JHoDraw A.4 Problems in JHoDraw

7 CONTENTS v B Information for other Programs 81 B.1 Beck XML Mapper B.2 POJava B.3 ZK-Google Maps B.4 Euclide B.5 Cobertura B.6 TrueZip B.7 Java DjVu Viewer B.8 HyperSQL

8 vi CONTENTS

9 LIST OF FIGURES vii List of Figures 1.1 Stepwise Refinement Refinement chain Waterfall model Iterative model Classes and Refinements Relationships of Features Feature Diagram GenVoca constant and function GenVoca model Constant and function sets Composer tool Composing and Translating Jak files Mixin and Jampack Examples of Jak keywords Example of constructor refinement Error with new modifier RenameClassRefactoring in RFM Feature diagram with refactoring features The class List Refactoring feature modules R1,R2,R Refactored class LinkedList Example of added class Rename variable parent Feature diagrams of JHotDraw

10 viii LIST OF FIGURES 3.4 Class DrawApplet Class DrawApplet in FOP Composition of DrawApplet Composed DrawApplet RFM of RenameMethodRefactoring Result of RenameMethodRefactoring Refactoring modules in class LineConnection Schematic diagram of EncapsulateFieldRefactoring Refactoring and Refinement methods Feature Modules Annotation problem Constructor refinement in DrawApplicaton Example of Super problem Override Method Override Class Interesting perspective of overrides Change Actual Parameter Change Formal Parameter Type Encapsulated by Conditional Change within conditional statement Genericity Change Condition of Conditional Rename Formal Parameter Change Super Class Extract Method Remove Catch Exception Replace Conditional with Ternary Operator Inline Import Path Remove Implemented Interfaces Change For Loop to While Loop Consolidate methods Replace Interface with Class

11 LIST OF FIGURES ix 5.1 Sentence Keyword insert Keyword delete Keyword replace Insert sequential Sentences Insert in multiple layers Delete in multiple layers Replace in multiple layers Application of Jak Extension SWD with more Techniques

12 x LIST OF FIGURES

13 LIST OF TABLES xi List of Tables 3.1 Tools list of development Environment Projects for cast study Refinement features RenameMethodRefactoring in step JHotDraw Frequently Problems Implemented steps in case study Count of refinements and RFM in case study Method refinements and Overrides method Situations can be implemented by overrides Count of RFM and other refactorings Number of RFM and other refactorings Irrealizable Situations Steps introduce Genericity A.1 Refinements Frequency in JHoDraw A.2 RFM Frequency in JHoDraw A.3 Problems in JHoDraw B.1 Refinements Frequency in Beck XML Mapper B.2 RFM Frequency in Beck XML Mapper B.3 Problems in Beck XML Mapper B.4 Refinements Frequency in POJava B.5 RFM Frequency in POJava B.6 Problems in POJava B.7 Refinements Frequency in ZK-Google Maps

14 xii LIST OF TABLES B.8 RFM Frequency in ZK-Google Maps B.9 Problems in ZK-Google Maps B.10 Refinements Frequency in Euclide B.11 RFM Frequency in Euclide B.12 Problems in Euclide B.13 Refinements Frequency in Cobertura B.14 RFM Frequency in Cobertura B.15 Problems in Cobertura B.16 Refinements Frequency in TrueZip B.17 RFM Frequency in TrueZip B.18 Problems in TrueZip B.19 Refinements Frequency in Java DjVu Viewer B.20 RFM Frequency in Java DjVu Viewer B.21 Problems in Java DjVu Viewer B.22 Refinements Frequency in HyperSQL B.23 RFM Frequency in HyperSQL B.24 Problems in HyperSQL

15 xiii List of Abbreviations XP RUP SWD OOP FOP AHEAD RFM IDE SPL ATS AOP Extreme Programming Rational Unified Process Step-Wise Development Object Oriented Programming Feature Oriented Programming Algebraic Hierarchical Equations for Application Design Refactoring Feature Modules Integrated Development Environment Software Product Lines AHEAD Tool Suite Aspect Oriented Programminge

16 xiv

17 Chapter 1. Introduction 1 Chapter 1 Introduction 1.1 Motivation In software engineering, the software development process is the model imposed on the development of a software product. The first software development model is Waterfall Model, which is proposed by Winston Royce in 1970 [56]. In the past decades, along with the software becoming larger and more complex, many different models have been developed, such as Spiral Model [16], Iterative Model [42], Top-down and Bottom-up design [18], Agile Software Development [45], Extreme Programming(XP) [28] [11], Dynamic Systems Development Method [59], V-model [57]. In particular, the rapid change of requirements and the emergence of large development teams promote the development of iterative model [41]. There are many development models that have been built on the foundation of iterative development, and the notable are Rational Unified Process (RUP) [37] and Agile Software Development Process [45]. Each model has its own advantages, it is very important to choose a suitable software development model to the success of a software project. In this thesis, we will study another iterative and incremental development method: Stepwise Development (SWD). SWD is the program development process with stepwise refinement, which was proposed by Niklaus Wirth in his influential paper Program Development by Stepwise Refinement [71]. Stepwise refinement is a structured programming method and is also the synonym of top-down method. Structured programming can be seen as a subdiscipline of imperative programming, which is the major programming paradigms [73]. Top-down methods were favored in software engineering until the late 1980s, the object-oriented programming (OOP) assisted in demonstrating the idea that, in the stepwise refinement process both aspects of top-down and bottom-up programming could be utilized [55]. The concept of stepwise refinement is not new and has been used in many areas. Architects and engineers have used the method stepwise refinement successfully in manufacturing and engineering areas for many years as a method to control product complexity [70]. Architects used the stepwise refinement approach because they found out that, they can not go from the general to the specific at one time, but in steps. In the last thirty years people try to use the technique to develop systems and software. stepwise refinement is used to develop an object from a general overview to specific details gradually, and the development process of the project can be constructed with a series of refinement steps. In each step the given task can be decomposed into many subtasks.

18 Motivation Niklaus Wirth first brought stepwise refinement in programming classes in 1971 [71]. Stepwise refinement is about producing programs by sequence of refinement steps. The main idea of this method is to divided the one-step compilation of an executable program into several steps, which are carried out with stepwise refinement. First step edits a program with the highest abstraction, second step edits the program with relative lower abstraction, then repeats the second step until an executable program is edited. As shown in Figure 1.1, the producing process of a program can be expressed as a tree. On the top (Node 0) of the tree is a procedure or function, which can be written in a programming language or pseudo code. In each step, the instructions of the given programs are defined or divided into more detailed instructions. Every refinement step implies some design decisions, which must be explicit, such that the programmer knows the criteria of those decisions and all the existent solutions. The tree grows until all the given problems can be solved. Each leave of the tree is a possible solution to a given problem. Figure 1.1: Stepwise Refinement In this thesis, SWD is studied as top-down development method. SWD develops a complex program from a simple program by incrementally adding features [10]. It aims at evolving software over time without changing the existing modules. Since 1968 the software crisis is recognized, the software engineering has made a great progress [35]. But the crisis did not disappear [32] [67]. In the face of more and more complex software systems, the software reuse is considered the best solution to solve the software crisis [49]. Software reuse is the process of building new software systems using the existing software components [26]. In the recent ten years, OOP technology has appeared and provided elemental technology support for software reuse [19]. Software reuse can improve the efficiency and quality of software development. One of the most important goals of software engineering is the higher software reusability [58]. SWD develops software without changing the existing modules, that greatly enhances the reusability of software. So SWD is a significant method that is worth to study. As a software development method, SWD develops a complex program from a simple program by gradually adding increments, which is called feature refinements [10]. Refinements are modules that encapsulate the implementation of features, which can be composed to yield an entire application. With the concept of stepwise refinement, feature modules gradually add classes to a program, or add members to classes, or extend

19 Chapter 1. Introduction 3 members of classes. There are many different implementations of feature refinements, such as layers [5], feature modules [40], collaborations [54] [72], subjects [69], aspects [30] and concerns [65]. In this thesis we use the feature modules to implement features, this is called Feature Oriented Programming (FOP) [52]. FOP is a software development paradigm that refers to feature modularity, and inosculates programming language technology, program generation techniques, and SWD [10] [6]. FOP can improve the productivity of software development projects through standardizing the production process and realizing a software product line (SPL), which is a set of software-intensive systems that share a common, managed set of features satisfying the specific needs of a particular domain [50]. There are many languages and tools, that support the specification and composition of features in FOP, such as AHEAD [7], FSTComposer [63], FeatureC++ [3]. AHEAD is a theory of FOP that expresses a set of programs and all representations (e.g. make files, documents, HTML files) as algebraic expressions [7]. AHEAD Tool Suite (ATS) is a suite of tools to implement the theory of AHEAD. Refactoring is also a SWD technique, which can transform the system architecture of a program without modifying its external functional behavior [46]. Refactoring can restructure the members and classes in the programs to remove conflicts that are caused by classes and members in order to increase their reusability. Refactoring is a disciplined, methodical technique, which can reduce conflicts during the process of restructure, and it has been widely used in the software development process [8]. Refactoring Feature Modules (RFM) are special feature modules that combine this refactoring technique and feature-oriented design [39]. In RFM a refactoring is defined in a refactoring unit. Each refactoring feature module encapsulates a refactoring unit or sequences of refactoring units. Users can select feature modules and RFM without distinguishing them to create a program. RFM can reduce the conflicts between applications and raise the reusability of software. Users can restructure a program by selecting according refactoring feature modules in a feature model. In this thesis we will use a case study to analyze the efficiency and practicality of RFM. Our primary intent is to evaluate the consequences of using the SWD techniques, like FOP and RFM, in the process of software evolution. We will choose open source software projects as our case studies, such as JHotDraw, TrueZip and Euclide, use SWD techniques to reconstruct a series of successive releases of these software. 1.2 Goals In this thesis we will analyze and evaluate the consequences of applying SWD to evolve software over time without changing existing modules. On the basis of a series of open source software projects we will use SWD techniques, like refactoring and FOP, to reconstruct successive releases of that software. The procedure can be divided into the following steps: (1) For a case project, we at first encapsulate all class files in Version1 (see Figure 1.2) as a basic feature module.

20 Structure of the Thesis (2) Version1 and Version2 of the software are compared to find out the difference between them. Afterwards SWD techniques, FOP and RFM, are used to reconstruct the successive release Version2. All incremental functions in Version2 are encapsulated in a feature module. (3) Use the same method as step (2) to reconstruct more successive releases of the software, that forms a refinement chain, as shown in Figure 1.2. Figure 1.2: Refinement chain In the case study, we should evaluate the consequences of applying SWD techniques, and summarize and analyze the problems occurred when applying SWD techniques to different non-trivial software products. 1.3 Structure of the Thesis Chapter 2 In this chapter we introduce the theoretical background of the whole thesis, includes software development process and models, SWD, FOP, RFM and the related concepts, such as features, feature modules, refactoring, AHEAD s theory and the tool set AST. Chapter 3 In this chapter, we present the stepwise development process with FOP and RFM. We will take the open source project JHotdraw as the example to display the process of SWD with FOP and RFM, and the combination format of FOP and RFM. We will realize the reconstructions of ten successive releases of JHotDraw. We will also analyze and summarize the implementation issues existing in the process. Chapter 4 In this chapter we at first analyze and summarize the interesting situations in the evolution processes of different programs. Then we will evaluate the consequences of using SWD techniques in the process of software evolution based on the results of different programs. Chapter 5 According to the case study, we present the concept of an extension of Jak language, with which many limitation of Jak could be eliminated. Chapter 6 Finally, we will present the related work, conclusions and the further work about the SWD with FOP and RFM.

21 Chapter 2. Background 5 Chapter 2 Background In this chapter, we describe the theoretical background for the remaining part of work. We first review the software development process and SWD. Then we review FOP and its related concepts, such as AHEAD model, Jak language and ATS. Afterwards we will explain what RFM are and the related theory. 2.1 Software Development Process SWD is a software development method, so we at first review the relative concepts of software development, such as the software development activities and models for software development process Software Development Activities A software development process is a structure imposed on the development of a software product [53]. It involves the following activities [1]: (1) Requirements analysis: The most important task in creating a software product is extracting the requirements of the desired software product. Customers typically have an abstract idea of what they want, but not what software should do. The skilled and experienced software engineers can recognize incomplete, ambiguous or contradictory requirements [15]. (2) Specification: Specification is the task of writing the precisely description of the software. Specifications are most important for external utilities that must remain stable. [33] (3) Architecture: Software architecture is an abstract representation of a system. Architecture is concerned with ensuring the software system will satisfy the requirements of the product, as well as making sure that future requirements and the interfaces between the software system and other software products can be addressed. [17] (4) Implementation: Implementation is the process of transforming a design to code based on a programming language. It may be the most obvious part of the software engineering, but it is not the largest portion. [51]

22 Software Development Process (5) Documentation:Documenting is an important task to record the internal design of software for the purpose of future maintenance and enhancement. [25] (6) Testing: Software testing is an important part of the software development process. The testing process ensures bugs are recognized as early as possible. [14] (7) Maintenance: Software maintenance is the modification of a software product after delivery to cope with newly discovered problems, to improve performance or other attributes, or to adapt the product to a modified environment. [31] Software Development Models Software development process is a systematic process consisting of various stages during which software is developed. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process. The following enumeration introduces some process models. Waterfall Model Figure 2.1: Waterfall model The waterfall model is a sequential software development process, in which the progress is seen as flowing from the top to the bottom, like a waterfall. The original Waterfall Model was proposed in 1970 by Winston W. Royce [56]. The waterfall Model shows a software development process with the phases of Requirements, Design, Implementation, Integration, Testing, Installation and Maintenance, as shown in Figure 2.1. The Waterfall Model maintains that one should proceed to the next step only when a step is completed. The waterfall model is the most

23 Chapter 2. Background 7 structured of the methods, stepping through pre-planned sequence in a strict, so that it is difficult to react to changes in requirements. Iterative process Iterative development is also called incremental development [42]. It is a cyclic software development process. Iterative development is developed in response to the weaknesses of the waterfall model, and has higher success rate and productivity [41]. As shown in Figure 2.2, it starts with an initial planning and ends with deployment with the cyclic interaction in between. The main idea of iterative development is to develop a software system incrementally, and the developer can benefit from what was being learned during the development of earlier, incremental, deliverable versions of the system. The main steps in the iterative development process are to start with a initiative simple implementation of a part of the software requirements and incrementally increase the evolving sequence of versions until the whole system is implemented. At each iteration, the design of software is modified and new functions are added. Figure 2.2: Iterative model Iterative development is the foundation of many software development methodologies, such as the Extreme Programming [28], the Agile Software Development [45], the Rational Unified Process [37] and the Dynamic Systems Development Method [59]. In this thesis, we study on the method SWD, which belongs to the Agile Software Development. In the following items, we introduce the Agile Software Development and one of the agile methods Extreme Programming, which also uses refactorings in the software development process [61]. Agile Software Development Agile Software Development is a software development method, which was coined along with the formulating of Agile Manifesto in the year 2001 [34]. Agile Software Development Processes involves a group of a software development methodologies that are built on the foundation of iterative development. In agile processes developers not use planning, but using feedback, which is driven by regular tests and releases of the evolving software, as their primary control method [41]. Most agile methods have more efficient than older iterative methodologies. As opposed to non-agile, agile methods more emphasis on the close collaboration

24 Feature Oriented Programming between programmers and business experts, face to face communication (that is more efficient than written documentation), frequent delivery of new software versions, compact and self-organization team, coding and team organizational methods that can be well adapted to the changing requirements [45]. In this models development periods are measured in weeks rather than moths, agile methods even more emphasis on software development as a human role and emphasize the high cooperation of teams. Agile methods are applicable to the software that demand the rapid reaction to changes in requirements and the high cooperative of people and developers. Extreme Programming Extreme Programming (XP) is one of several popular Agile Processes. Its intention is to improve software quality and responsiveness to changing customer requirements [28]. It advocates frequent releases in short development periods. Coding, Testing, Listening and Designing are four basic activities of XP. Compared with traditional methods of project development, XP emphasizes that many of its practices (such as practice of test-first development, planning and writing tests before each micro-increment [41]) are made to extreme levels, and the other practices (such as the overall design in the earlier period of development etc.) that XP are not promoted will be totally ignored [11]. XP is similarly to spiral development approach, it decomposes the complex development process into several small cycles through active communication, feedback and a range of other methods. Programmers and customers can clearly hold the progress, change, potential difficulty of development, so that they can adjust the development process according to the influential issues [12] Stepwise Development In this thesis, we focus on the step of implementation. SWD is a powerful paradigm for developing a complex program from a simple program by gradually adding increments, which are called feature refinements [10]. A feature refinement usually encapsulates not sets of complete classes, but fragments of multiple classes. Figure 2.3 shows the relationship between classes and refinements. b is a base feature, which includes three classes c1, c2, c3, and r1, r2, r3 are three feature refinements, which cross-cut the three classes c1, c2, c3. Each of the refinements r1, r2, r3 encapsulates fragments of c1,c2,c3. According to SWD, we can incrementally add feature refinements r1, r2, r3 to b to develop a new program. There are many SWD techniques, such as component, refactoring, FOP, AOP. In this thesis, we focus on refactoring and FOP, which will be introduced in next sections. 2.2 Feature Oriented Programming Informally, a feature is a salient part of an object. There are many kinds of expressions for what a feature is in the software engineering literature. All these expressions of features are valid and relevant for different stages of software development [29] [40][20]. In this

25 Chapter 2. Background 9 Figure 2.3: Classes and Refinements thesis we focus on the definition: a feature is an increment in program functionality, which in feature-oriented design is implemented by a feature module Feature Module With the concept of stepwise refinement feature modules gradually add classes to a program, or add members to classes, or extend methods of classes. A set of feature modules, which are combined together is a feature model. A feature model can be represented as a feature diagram, in which all the features of a domain and the relationship of the features can be described. The relationship between a parent feature and a child feature is either mandatory or optional. Furthermore, when a feature has multiple child features, there are three different relationship types between them: and, alternative, or. Figure 2.4 shows the notations of the relationships in feature diagram. The following is a simple description of the relationships [44]. Optional - features that are optional Mandatory - features that are indispensable And - all child features must be selected Alternative - only one child feature can be selected Or - one or more child features can be selected Figure 2.4: Relationships of Features A feature diagram is a tree with the leaves and interior nodes. Figure 2.5 is a simple feature diagram. It defines a product-line rooted from A. A is a compound feature that contains two mandatory features B and D, and a optional feature C. B is an alternative

26 Feature Oriented Programming feature that only one of E, F, and G can be present in an application. D is a or feature that one or more features of H, I, and J can be present. Figure 2.5: Feature Diagram GenVoca and AHEAD GenVoca is a model where transformations are functions incrementally applied on programs [9]. GenVoca defines feature refinements as increments, and a complete program is composed of a set of refinements. Figure 2.6: GenVoca constant and function In GenVoca, Programs are constants and refinements are functions that add features to programs [10]. A program can be converted into a new program through the action of refinements. Figure 2.6 shows the representation of constant and function. A GenVoca constant (like e) is a set of classes. The constant e represents a program with feature e, if we add feature f to program e, it can be represented as: f(e), where e is a constant and f is a function. Furthermore, we can express a multi-featured application app as an equation, e.g., app=g(f(e)), denotes the program app has features g, f and e. Figure 2.7: GenVoca model Figure 2.7 shows the result of applying function f to e, and function g to f(e). The constant e encapsulates three classes a1, b1, c1. The function f(e) refines the classes

27 Chapter 2. Background 11 a2 and c2, and adds class d2. The function g(f(e)) refines the class c3. The linear chain e, f, g is called refinement chain, in which only the bottom-most classes (shaded in Figure 2.7) are instantiated, because these classes implement all capabilities. For example, the bottom-most class of the c refinement chain implements the capabilities defined in c1, c2, and c3 from features e, f, and g respectively. Stated another way, c1 is a class (constant) and c2 and c3 are class refinements (functions). So the classes can be expressed respectively as a=a2(a1), b=b1, c = c3(c2(c1)), d=d2. AHEAD (Algebraic Hierarchical Equation for Application Design) is the generalization of GenVoca. It generalizes GenVoca by considering features as hierarchical modules that can include other artifacts besides source code [10]. GenVoca expresses only the code representation of an individual program as an equation. As the successor of GenVoca, AHEAD expresses a set of programs and all representations as nested sets of equations. Generally, a program has many artifacts except source code, such as makefiles, documents, HTML files. AHEAD is the model to deal with all these representations. Figure 2.8 depicts an AHEAD model with constant i and function j. In consideration of the artifacts in AHEAD models, the constants are not only programs, but a set of base artifacts with different types (e.g. a i, b i, c i ), and the functions are refinements of the different artifacts. So the constant can be defined as a set of constants: i={a i, b i, c i } The function can be defined as a set of functions: j={a j, b j, d j } The notations of AHEAD are also extended to represent the constant and function sets. We use j i to denote the composition of j with i instead of j(i) in GenVoca. So j i can be represented as nested sets of equations: j i={a j, b j, d j } {a i, b i, c i }={{a j a i }, {bj b i }, c i, d j }. Figure 2.8: Constant and function sets In AHEAD model, a set of artifacts are composed by composition operators, and the artifact types are different, each representation of the artifact is written in its own language or Domain-Specific Language (DSL). For example, the code representation of a program may be represented in an programming language, a makefile representation may be an XML file. When a refinement is applied on a program, many or all of the

28 Feature Oriented Programming program s artifacts may be updated. It is undesirable to build a big generator to deal with all possible artifacts. Figure 2.9 shows a tool-composer, that can submit the whole equations to separate type-specific composition tools to generate the artifacts of the target system. Figure 2.9: Composer tool ATS ATS is a collection of java-based tools that implement the AHEAD theory [7]. ATS features also contain several types of non-code artifacts, but in this thesis, we focus on.jak files, which are written by Jak language. For example in Figure 2.11, there are four.jak files. composer is a tool of ATS, it invokes a variety of tools to compose different artifacts. jampack and mixin are two tools to compose the.jak files of different layers. Figure 2.10 shows the process of using jampack or mixin to compose.jak files, and then using jak2java to translate.jak file to.java file. We will specifically introduce the usages of these tools in the practical application process. Figure 2.10: Composing and Translating Jak files jampack and mixin are two composition tools. Figure 2.11 shows the different composition results with jampack and mixin. The class constants and functions are defined inside Jak files. Figure 2.11(a) shows a class Animal, which belongs to layer F1. Figure 2.11(b) shows the refinement of the class Animal, which belongs to layer F2. The refinement of the class Animal adds a new data member weight and a new method eat, and extends the method sleep. The composition result of using jampack is shown in Figure 2.11(d). All the package imports, data members, and methods are composed in one class. The composition result

29 Chapter 2. Background 13 of using mixin is shown in Figure 2.11(c). All the package imports, data members, and methods that in the refinement chain are composed in a.jak file, which has an inheritance hierarchy. The bottom-most declaration (like class Animal in layer F2) is concrete and all others are abstract (like class Animal in layer F1). The different composition results of jampack and mixin will cause different programs in practice, that will be referred in our case study. Figure 2.11: Mixin and Jampack The Jak Language The programs in FOP are written in Jak language, which is an extension of Java language [10]. In the following the extended features in Jak are illustrated. Refinement: Jak uses the keyword refines to indicate the incremental feature code of a class. In Figure 2.12, Base/figure.jak defines a base interface Figure, the keyword refines in Zvalue/figure.jak indicates it is a refinement of the interface

30 Feature Oriented Programming Figure. Figure 2.12: Examples of Jak keywords Feature containment: Jak uses the keyword layer to define which feature an incremental function belongs to. In Figure 2.12, Base/figure.jak belongs to layer base, Zvalue/figure.jak belongs to layer zvalue. Super construct: This construct has two kinds of explanations: (1) Super appears in a base class and has the same meaning as in Java. super can not be recognized by ATS tools. Both jampack and mixin will report an error whenever super is used. (2) Super appears in a class refinement as a keyword of Jak language. Its form is as follows: Super(paramtypes).method(actparams) Super(paramtypes) prefaces a Super call, that invokes the previously defined method in the refinement chain, paramtypes lists the argument types of the method to be called, actparams lists the actual parameters of method. Constructor refinement: As a special method, constructor can be extended with a special declaration in Jak. Figure 2.13 shows a extension of the class Figure. It adds a new member test and refines the integer constructor to initialize this member. Figure 2.13: Example of constructor refinement New modifier: A refinement with the modifier new means that the refinement introduces a new method, and the name of the new method should not be used by any

31 Chapter 2. Background 15 previously defined method in a refinement chain. The expression in Figure 2.14 is not correct, because the method draw is already defined, jampack will report an error. Unlike jampack, mixin ignores the new modifiers, and does not report errors. Figure 2.14: Error with new modifier Overrides modifier: A refinement with the modifier overrides means that the refinement overrides an existing method. When the method has not been defined, jampack will report an error, while mixin ignores the overrides modifiers. 2.3 Refactoring Feature Modules Refactoring is an important SWD technique. It is widely used in the evolution process of software to reconstruct successive releases. In this section, we introduce the concepts of refactoring [46] and RFM [39] Refactoring Refactoring is a process of transforming the architecture of program without modifying its external functional behavior. It can improve software s quality, performance, extensibility and maintainability [46]. The major factor affects software is: demands transformation. Software always is produced to meet some kind of specific demands, but the customer s demands are transforming all the way. In the software s life cycle, some demands are relative stable, but some demands transformation is quite large, and even some demands have vanished or transformed to other new demands. In these cases, the software must be transformed correspondingly to the transformed demands. This lead to a bad phenomenon: the software product, which was elaborate designed with good structure, must be transformed to meet new demands, and it will cause problems for the software architecture, such as some new bugs are difficult to remove, the new demands are difficult to be achieved. Finally the development cost for the new demands will exceed the cost of developing new software. Refactoring is one method that can avoid the above-mentioned phenomenon. Refactoring is a kind of transformation that maintains the behavior of the software. It is a method to improve the internal structure of software. Refactoring process involves remove the duplication, simplify the complex logic and clarify the ambiguous code and so on. In the process of refactoring, the main task is to determine code smells of the program [46]. We should find out those code smells and then reconstruct the code with refactorings, and in this process ensure the visible behavior of software does

32 Refactoring Feature Modules not make changes. In the following are some code smells that need to be refactored [46]. Existing duplicate code Duplicate code will cause to produce inefficient software. So we need to refactor the code to remove the duplication. If two methods have the same code block in the same class, the code block can be refined as an independent method of the class. Too large classes or methods Too large classes are often caused by an irrational definition of class, which may reduce the reusability of the code. Too long methods are often caused by complex logic, and it may raise the error rate and decrease the readability. Briefly, too large classes or methods may reduce the flexibility of the software. Thus, we need to use the relative refactoring methods to divide a large class into small classes or divide a long method into small methods. Too many communications between classes When class A needs to call too many methods of class B to access the internal data of class B, the relationship between the two classes is too close. Perhaps the communication of these classes is better than separation of these classes. Of course, there are also many situations need to be refactored, and each situation has a corresponding refactoring method. Martin Fowler proposed software refactoring rules based on summing up his related works. According to his relevant experience he summarized 72 classics refactoring methods in his book Refactoring: Improving the Design of Existing Code [46]. These refactoring methods involve many aspects, such as reorganization of function, characteristic migration between the objects, reorganize the data, simplify condition expression, simplify function call, handle the generalized and the specialized questions. We can achieve many purposes through refactorings, such as improve software design, make code easier to understand, discover hidden defect Refactoring Feature Modules In FOP, a feature is an increment in program functionality, which is implemented by a feature module. Customers can synthesis a set of feature modules to derive a efficient program without knowing the program s implementation. But there may be conflicts when the program is combined with another program, and the programs need to be reconstructed in the process of software evolution [39]. Object-oriented refactoring is a method to remove conflicts caused by classes and members in the software evolution process and to improve the software s extensibility and maintainability [46]. RFM are to define refactorings in refactoring units and encapsulate these refactoring units in feature modules, which are special feature modules that combine refactoring technique and feature-oriented design [39]. Each refactoring unit in feature modules is a class-like entity that implements a refactoring interface. Figure 2.15 shows a RFM with a refactoring unit RenameClassRefactoring, which rename the class List to LinkedList. It implements

33 Chapter 2. Background 17 Figure 2.15: RenameClassRefactoring in RFM the refactoring interface RenameClassRefactoring and declares the getter methods getoldclassid() and getnewclassname(). The method getoldclassid() returns the identifier of the class to rename and getnewclassname() returns the new class name. Figure 2.16: Feature diagram with refactoring features Figure 2.17: The class List Figure 2.16 shows a feature model with refactoring features. M1 and M2 are two feature modules, M3 is a refactoring feature module. In a feature model, we can select them but not distinguish between them. A feature module can encapsulate one or more refactoring feature modules. In the Figure 2.16 the feature module M3 is a composite feature module, R1 and R2 are nested in the feature module M3. We use a simple example to introduce the usage of RFM. Figure 2.17 shows the class List, which is encapsulated as basic feature. Figure 2.18 shows three refactoring feature modules, which will apply in the basic feature. R1 renames the method get() in class List to pop(). R2 renames the class List to LinkedList. R3 renames the method pop() in LinkedList to topmost(). Figure 2.19 shows the composition result of the basic class List and the RFM R1, R2, R3, we can see that all the three refactorings are achieved successfully.

34 Refactoring Feature Modules Figure 2.18: Refactoring feature modules R1,R2,R3 Figure 2.19: Refactored class LinkedList

35 Chapter 2. Background Summary We have reviewed the software development process and SWD. We have also introduced two SWD techniques FOP and RFM, which are the focus of this thesis. For FOP, we have introduced the models GenVoca and AHEAD, and showed how to develop an individual program with the theories of the models. We also introduced the ATS and the Jak language. Then we introduced the concept RFM and showed how the refactoring feature modules are integrated into FOP.

36 Summary

37 Chapter 3. Stepwise Development with FOP and RFM 21 Chapter 3 Stepwise Development with FOP and RFM Following the software development process, developers usually at first develop a prototype system, then modify and improve the system by adding next features according to the users requirement [43]. In this chapter, we will introduce the SWD process with FOP and RFM, and at the same time we pay attention to the existing problems in the evolution process. 3.1 Tool Support In this section we will introduce the program development environment of FOP. We will also introduce a comparison tool, which is useful for the case study. ATS is a suite of tools that base on the AHEAD model of FOP. the programs of FOP are written in Jak language. In order to build the program development environment, we need to install a set of tools. As shown in Table 3.1, JDK 1 is a development environment for building applications, applets, and components using the Java programming language; Cygwin 2 makes the Linux-like environment in Windows; Ant 3 is the Java building tool; AHEAD tool suite 4 provides the support of ATS tools. Beyond Compare 5 is a folder and file comparison tool. It can be used to compare two folders or files and find out the difference between them. In our case study, we need to compare the source code of different versions

38 Introduction of Cases Table 3.1: Tools list of development Environment Name Version Function 1 JDK ea Java Development Kit 2 Cygwin Linux-like environment for Windows 3 Ant Pure Java build tool 4 AHEAD Support ATS commands 5 Beyond Compare 3.0 Professional folder and file comparison tool 3.2 Introduction of Cases In order to obtain a reasonable result, we evaluate the consequences of using SWD techniques in different non-trivial software products. The cases should include various scales software products, not only large software but also small software. Table 3.2 lists the open source software projects that will be taken as study objects. Table 3.2: Projects for cast study Project Release-Steps Nr. of LOC steps 1 Beck XML Mapper 2 POJava ZK-Google Maps Euclide Cobertura TrueZip Java DjVu Viewer JHotDraw b1 5.4b2 6.0b HyperSQL rc4 rc Beck XML Mapper constructs Java objects from an XML document, or generates an XML document from Java objects. The mapping is configurable (via XML) and customizable (in Java)

39 Chapter 3. Stepwise Development with FOP and RFM 23 POJava is a simple, light-weight Java-based API for rapid application development 7. ZK-Google Maps has integrated the Google Maps into a gmaps ZK component, so developers can now use this originally javascript component with pure Java code 8. Euclide is a dynamic geometry application written in Java. It allows the creation of geometric shapes (lines, points, circles, conics...) and transform actions (rotation, symmetry...), which depend on each other 9. Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of a Java program lacks test coverage 10. TrueZIP is a Java based Virtual File System, which enables client applications to access ZIP, TAR and derivative archive types transparently as if they were just directories in a file s path name 11. Java DjVu Viewer is an open source implementation of DjVu viewer, which has different functions including an applet and standalone viewer 12. JHotDraw is a GUI-based editor, which includes lots of functionality of the tool palette, different views, user-defined graphic elements, as well as the save, load and print images. Users can customize the application framework through inheriting or combining components 13. HyperSQL is like a doxygen for SQL, hypermapping SQL views, packages, procedures, and functions to HTML source code listings and showing all code locations where these are used

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

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

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design Session # 3 Contents Systems Analysis and Design 2 1 Tiers of Software Development 10/4/2013 Information system development project Realistic behavior 3 Information system development project System Development

More information

Fourth generation techniques (4GT)

Fourth generation techniques (4GT) Fourth generation techniques (4GT) The term fourth generation techniques (4GT) encompasses a broad array of software tools that have one thing in common. Each enables the software engineer to specify some

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

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

Aspectual Mixin Layers

Aspectual Mixin Layers Aspectual Mixin Layers Sven Apel, Thomas Leich, and Gunter Saake Department of Computer Science University of Magdeburg, Germany email: {apel,leich,saake}@iti.cs.uni-magdeburg.de Abstract. Feature-Oriented

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

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

Development models. 1 Introduction. 2 Analyzing development models. R. Kuiper and E.J. Luit

Development models. 1 Introduction. 2 Analyzing development models. R. Kuiper and E.J. Luit Development models R. Kuiper and E.J. Luit 1 Introduction We reconsider the classical development models: the Waterfall Model [Bo76], the V-Model [Ro86], the Spiral Model [Bo88], together with the further

More information

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed. CS 389 Software Engineering Lecture 2 Chapter 2 Software Processes Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed. Topics covered Software process models Process activities Coping

More information

A Review of an MVC Framework based Software Development

A Review of an MVC Framework based Software Development , 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

More information

Karunya University Dept. of Information Technology

Karunya University Dept. of Information Technology PART A Questions 1. Mention any two software process models. 2. Define risk management. 3. What is a module? 4. What do you mean by requirement process? 5. Define integration testing. 6. State the main

More information

Test Cases Design for Software Database Provisioning Development

Test Cases Design for Software Database Provisioning Development Test Cases Design for Software Database Provisioning Development Sunguk Lee Research Institute of Industrial Science and Technology Pohang, Gyeongbuk, South Korea sunguk@rist.re.kr Abstract This paper

More information

Software Development Life Cycle (SDLC)

Software Development Life Cycle (SDLC) Software Development Life Cycle (SDLC) Supriyo Bhattacharjee MOF Capability Maturity Model (CMM) A bench-mark for measuring the maturity of an organization s software process CMM defines 5 levels of process

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

The most suitable system methodology for the proposed system is drawn out.

The most suitable system methodology for the proposed system is drawn out. 3.0 Methodology 3.1 Introduction In this chapter, five software development life cycle models are compared and discussed briefly. The most suitable system methodology for the proposed system is drawn out.

More information

A Capability Maturity Model (CMM)

A Capability Maturity Model (CMM) Software Development Life Cycle (SDLC) and Development Methods There are some enterprises in which a careful disorderliness is the true method. Herman Melville Capability Maturity Model (CMM) A Capability

More information

TOGAF usage in outsourcing of software development

TOGAF usage in outsourcing of software development Acta Informatica Pragensia 2(2), 2013, 68 76, DOI: 10.18267/j.aip.25 Section: Online: aip.vse.cz Peer-reviewed papers TOGAF usage in outsourcing of software development Aziz Ahmad Rais 1, Rudolf Pecinovsky

More information

COMP 354 Introduction to Software Engineering

COMP 354 Introduction to Software Engineering COMP 354 Introduction to Software Engineering Greg Butler Office: EV 3.219 Computer Science and Software Engineering Concordia University, Montreal, Canada Email: gregb@cs.concordia.ca Winter 2015 Course

More information

Chapter 13: Program Development and Programming Languages

Chapter 13: Program Development and Programming Languages Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented

More information

Chapter 3. Technology review. 3.1. Introduction

Chapter 3. Technology review. 3.1. Introduction Technology review Chapter 3 3.1. Introduction Previous chapter covers detail description about problem domain. In this chapter I will discuss the technologies currently available to solve a problem in

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

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 fb@sei.cmu.edu Len Bass Software Engineering Institute Carnegie

More information

Alternative Development Methodologies

Alternative Development Methodologies Alternative Development Methodologies The Software Development Process described in the course notes and lecture is a generalized process that been in use for decades. Over this time, scholars in the IT

More information

Surveying and evaluating tools for managing processes for software intensive systems

Surveying and evaluating tools for managing processes for software intensive systems Master Thesis in Software Engineering 30 Credits, Advanced Level Surveying and evaluating tools for managing processes for software intensive systems Anuradha Suryadevara IDT Mälardalen University, ABB

More information

Java (12 Weeks) Introduction to Java Programming Language

Java (12 Weeks) Introduction to Java Programming Language Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short

More information

Automated Modeling of Legacy Systems Using the UML

Automated Modeling of Legacy Systems Using the UML Automated Modeling of Legacy Systems Using the UML by Pan-Wei Ng Software Engineering Specialist Rational Software Singapore Poor documentation is one of the major challenges of supporting legacy systems;

More information

Component Based Development in Software Engineering

Component Based Development in Software Engineering Component Based Development in Software Engineering Amandeep Bakshi, Rupinder Singh Abstract--In today s world, Component Based development is an active research area for more than a decade in software

More information

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements Questions? Assignment Why is proper project management important? What is goal of domain analysis? What is the difference between functional and non- functional requirements? Why is it important for requirements

More information

9 Research Questions Resolved

9 Research Questions Resolved 217 9 Research Questions Resolved "All truths are easy to understand once they are discovered; the point is to discover them." Galileo Galilei. 9.1 Main Contributions In section 1.6 the thesis introduced

More information

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0 1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level

More information

Increasing Development Knowledge with EPFC

Increasing Development Knowledge with EPFC The Eclipse Process Framework Composer Increasing Development Knowledge with EPFC Are all your developers on the same page? Are they all using the best practices and the same best practices for agile,

More information

Quotes from Object-Oriented Software Construction

Quotes from Object-Oriented Software Construction Quotes from Object-Oriented Software Construction Bertrand Meyer Prentice-Hall, 1988 Preface, p. xiv We study the object-oriented approach as a set of principles, methods and tools which can be instrumental

More information

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur School of Computing, Department of IT 1 2 Process What is it? A series of predictable steps

More information

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks

More information

Management. Project. Software. Ashfaque Ahmed. A Process-Driven Approach. CRC Press. Taylor Si Francis Group Boca Raton London New York

Management. Project. Software. Ashfaque Ahmed. A Process-Driven Approach. CRC Press. Taylor Si Francis Group Boca Raton London New York Software Project Management A Process-Driven Approach Ashfaque Ahmed CRC Press Taylor Si Francis Group Boca Raton London New York CRC Press is an imprint of the Taylor St Francis Croup, an Informa business

More information

Requirements Analysis Concepts & Principles. Instructor: Dr. Jerry Gao

Requirements Analysis Concepts & Principles. Instructor: Dr. Jerry Gao Requirements Analysis Concepts & Principles Instructor: Dr. Jerry Gao Requirements Analysis Concepts and Principles - Requirements Analysis - Communication Techniques - Initiating the Process - Facilitated

More information

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology Peter Mileff PhD SOFTWARE ENGINEERING The Basics of Software Engineering University of Miskolc Department of Information Technology Introduction Péter Mileff - Department of Information Engineering Room

More information

PHP Code Design. The data structure of a relational database can be represented with a Data Model diagram, also called an Entity-Relation diagram.

PHP Code Design. The data structure of a relational database can be represented with a Data Model diagram, also called an Entity-Relation diagram. PHP Code Design PHP is a server-side, open-source, HTML-embedded scripting language used to drive many of the world s most popular web sites. All major web servers support PHP enabling normal HMTL pages

More information

(Refer Slide Time: 01:52)

(Refer Slide Time: 01:52) Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This

More information

Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria

Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria OBJECT-ORIENTED DOCUMENTATION C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria Abstract Object-oriented programming improves the reusability of software

More information

How To Develop Software

How To Develop Software Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) We studied the problem definition phase, with which

More information

Object Oriented Design

Object Oriented Design Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and

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

Introduction to Software Paradigms & Procedural Programming Paradigm

Introduction to Software Paradigms & Procedural Programming Paradigm Introduction & Procedural Programming Sample Courseware Introduction to Software Paradigms & Procedural Programming Paradigm This Lesson introduces main terminology to be used in the whole course. Thus,

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

Lightweight Data Integration using the WebComposition Data Grid Service

Lightweight Data Integration using the WebComposition Data Grid Service Lightweight Data Integration using the WebComposition Data Grid Service Ralph Sommermeier 1, Andreas Heil 2, Martin Gaedke 1 1 Chemnitz University of Technology, Faculty of Computer Science, Distributed

More information

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona Progress Report Aspect Oriented Programming meets Design Patterns Academic Programme MSc in Advanced Computer Science Guillermo Antonio Toro Bayona Supervisor Dr. John Sargeant The University of Manchester

More information

Chapter 8 Approaches to System Development

Chapter 8 Approaches to System Development Systems Analysis and Design in a Changing World, sixth edition 8-1 Chapter 8 Approaches to System Development Table of Contents Chapter Overview Learning Objectives Notes on Opening Case and EOC Cases

More information

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

SEEM4570 System Design and Implementation Lecture 10 Software Development Process SEEM4570 System Design and Implementation Lecture 10 Software Development Process Software Development A software development process: A structure imposed on the development of a software product Also

More information

How To Combine Feature-Oriented And Aspect-Oriented Programming To Support Software Evolution

How To Combine Feature-Oriented And Aspect-Oriented Programming To Support Software Evolution Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution Sven Apel, Thomas Leich, Marko Rosenmüller, and Gunter Saake Department of Computer Science Otto-von-Guericke-University

More information

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS) CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS) Prescriptive Process Model Defines a distinct set of activities, actions, tasks, milestones, and work products that are required to engineer high quality

More information

Difference Between Model-Driven and Traditional Iterative Software Development

Difference Between Model-Driven and Traditional Iterative Software Development Process Implications of Model-Driven Software Development Author: Jorn Bettin Version 1.0 September 2004 Copyright 2003, 2004 SoftMetaWare Ltd. SoftMetaWare is a trademark of SoftMetaWare Ltd. All other

More information

Chap 1. Introduction to Software Architecture

Chap 1. Introduction to Software Architecture Chap 1. Introduction to Software Architecture 1. Introduction 2. IEEE Recommended Practice for Architecture Modeling 3. Architecture Description Language: the UML 4. The Rational Unified Process (RUP)

More information

CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT

CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT CONTENTS 5.1 Introduction 5.2 Component based software life cycle process model 5.2.1 Rapid Application Development Model 5.2.2 The Y

More information

To introduce software process models To describe three generic process models and when they may be used

To introduce software process models To describe three generic process models and when they may be used Software Processes Objectives To introduce software process models To describe three generic process models and when they may be used To describe outline process models for requirements engineering, software

More information

Aspect-Oriented Programming

Aspect-Oriented Programming Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering

More information

The Software Development Process

The Software Development Process Systeme hoher Qualität und Sicherheit Universität Bremen WS 2015/2016 Lecture 03 (26.10.2015) The Software Development Process Christoph Lüth Jan Peleska Dieter Hutter Your Daily Menu Models of software

More information

Requirements Management

Requirements Management REQUIREMENTS By Harold Halbleib Requirements Management Identify, Specify, Track and Control Requirements Using a Standard Process About the author... Harold Halbleib has a degree in Electrical Engineering

More information

Lecture 03 (04.11.2013) Quality of the Software Development Process

Lecture 03 (04.11.2013) Quality of the Software Development Process Systeme hoher Qualität und Sicherheit Universität Bremen, WS 2013/14 Lecture 03 (04.11.2013) Quality of the Software Development Process Christoph Lüth Christian Liguda Your Daily Menu Models of Software

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

Agile Methodologies and Its Processes

Agile Methodologies and Its Processes International Journal of Computational Engineering Research Vol, 03 Issue, 9 Agile Methodologies and Its Processes 1, Akanksha, 2, Akansha Rakheja, 3, Latika Kapur, 4, Kanika Ahuja 1,2,3,, Information

More information

Design Patterns for Complex Event Processing

Design Patterns for Complex Event Processing Design Patterns for Complex Event Processing Adrian Paschke BioTec Center, Technical University Dresden, 01307 Dresden, Germany adrian.paschke AT biotec.tu-dresden.de ABSTRACT Currently engineering efficient

More information

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.) The Software Process Xiaojun Qi 1 The Unified Process Until recently, three of the most successful object-oriented methodologies were Booch smethod Jacobson s Objectory Rumbaugh s OMT (Object Modeling

More information

Agile Processes and Methodologies: A Conceptual Study

Agile Processes and Methodologies: A Conceptual Study Agile Processes and Methodologies: A Conceptual Study Sheetal Sharma Amity School of Engineering & Technology Amity University Noida Sheetal.meenu@gmail.com Darothi Sarkar Amity School of Engineering &

More information

Elite: A New Component-Based Software Development Model

Elite: A New Component-Based Software Development Model Elite: A New Component-Based Software Development Model Lata Nautiyal Umesh Kumar Tiwari Sushil Chandra Dimri Shivani Bahuguna Assistant Professor- Assistant Professor- Professor- Assistant Professor-

More information

Data Modeling Basics

Data Modeling Basics Information Technology Standard Commonwealth of Pennsylvania Governor's Office of Administration/Office for Information Technology STD Number: STD-INF003B STD Title: Data Modeling Basics Issued by: Deputy

More information

In this Lecture you will Learn: Systems Development Methodologies. Why Methodology? Why Methodology?

In this Lecture you will Learn: Systems Development Methodologies. Why Methodology? Why Methodology? In this Lecture you will Learn: Systems Development Methodologies What a systems development methodology is Why methodologies are used The need for different methodologies The main features of one methodology

More information

Applying 4+1 View Architecture with UML 2. White Paper

Applying 4+1 View Architecture with UML 2. White Paper Applying 4+1 View Architecture with UML 2 White Paper Copyright 2007 FCGSS, all rights reserved. www.fcgss.com Introduction Unified Modeling Language (UML) has been available since 1997, and UML 2 was

More information

Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution

Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution Sven Apel, Thomas Leich, Marko Rosenmüller, and Gunter Saake Department of Computer Science University of Magdeburg,

More information

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering Prof. Dr. Armin B. Cremers Sascha Alda Overview Phases during Software Development

More information

AGILE vs. WATERFALL METHODOLOGIES

AGILE vs. WATERFALL METHODOLOGIES AGILE vs. WATERFALL METHODOLOGIES Introduction Agile and waterfall are two major methodologies that software developers and project managers have the option of using. Some of the goals of developers and

More information

Financial Management System

Financial Management System DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING UNIVERSITY OF NEBRASKA LINCOLN Financial Management System CSCE 156 Computer Science II Project Student 002 11/15/2013 Version 3.0 The contents of this document

More information

Total Quality Management (TQM) Quality, Success and Failure. Total Quality Management (TQM) vs. Process Reengineering (BPR)

Total Quality Management (TQM) Quality, Success and Failure. Total Quality Management (TQM) vs. Process Reengineering (BPR) Total Quality Management (TQM) Quality, Success and Failure Total Quality Management (TQM) is a concept that makes quality control a responsibility to be shared by all people in an organization. M7011

More information

Reactive Variability Realization with Test-Driven Development and Refactoring

Reactive Variability Realization with Test-Driven Development and Refactoring 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

More information

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL Sanja Vukićević 1, Dražen Drašković 2 1 Faculty of Organizational Sciences, University of Belgrade, vukicevicsanja@yahoo.com 2 Faculty

More information

The Unified Software Development Process

The Unified Software Development Process The Unified Software Development Process Technieche Universal Darmstadt FACHBEREICH IN-FORMAHK BLIOTHEK Ivar Jacobson Grady Booch James Rumbaugh Rational Software Corporation tnventar-nsr.: Sachgebiete:

More information

How To Understand And Understand The Software Development Process In Korea

How To Understand And Understand The Software Development Process In Korea Universiti Teknologi MARA Designing a Proposed Model of Software Development Practices Nor Hasikin Bt Husian Thesis submitted infiilfillmentof the requirements for Bachelor of Science (Hons) Information

More information

Lecture 03 (26.10.2015) The Software Development Process. Software Development Models. Where are we? Your Daily Menu.

Lecture 03 (26.10.2015) The Software Development Process. Software Development Models. Where are we? Your Daily Menu. Your Daily Menu Systeme hoher Qualität und Sicherheit Universität Bremen WS 2015/2016 Lecture 03 (26.10.2015) The Software Development Process Christoph Lüth Jan Peleska Dieter Hutter Models of software

More information

Abstract. 1 Introduction

Abstract. 1 Introduction Amir Tomer Amir Tomer is the Director of Systems and Software Engineering Processes at RAFAEL Ltd., Israel,with whom he has been since 1982,holding a variety of systems and software engineering positions,both

More information

Modeling Web Applications Using Java And XML Related Technologies

Modeling Web Applications Using Java And XML Related Technologies Modeling Web Applications Using Java And XML Related Technologies Sam Chung Computing & Stware Systems Institute Technology University Washington Tacoma Tacoma, WA 98402. USA chungsa@u.washington.edu Yun-Sik

More information

Masters of Science in Software & Information Systems

Masters of Science in Software & Information Systems Masters of Science in Software & Information Systems To be developed and delivered in conjunction with Regis University, School for Professional Studies Object Oriented Design Table of Contents January

More information

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University Software Engineering Introduction & Background Department of Computer Science Kent State University Complaints Software production is often done by amateurs Software development is done by tinkering or

More information

The Dynamics of Project Management

The Dynamics of Project Management The PROJECT PERFECT White Paper Collection Abstract The Dynamics of Project Management Eric Tse This white paper suggests project management methods and practices can move from a static, unidirectional

More information

Algorithms, Flowcharts & Program Design. ComPro

Algorithms, Flowcharts & Program Design. ComPro Algorithms, Flowcharts & Program Design ComPro Definition Algorithm: o sequence of steps to be performed in order to solve a problem by the computer. Flowchart: o graphical or symbolic representation of

More information

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring 1998 1

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring 1998 1 1 Software Development Processes Sequential, Prototype-based RAD, Phased, Risk-based Spiral (c) 1998 M Young CIS 422/522 1/10/99 1 Software Life-Cycle Models Breaking projects down into pieces for... Planning

More information

Chapter 10 Practical Database Design Methodology and Use of UML Diagrams

Chapter 10 Practical Database Design Methodology and Use of UML Diagrams Chapter 10 Practical Database Design Methodology and Use of UML Diagrams Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 10 Outline The Role of Information Systems in

More information

Software Engineering

Software Engineering 1 Software Engineering Lecture 2: Software Life Cycles Stefan Hallerstede Århus School of Engineering 25 August 2011 2 Contents Naive Software Development Code & Fix Towards A Software Process Software

More information

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville Software Engineering Software Processes Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To introduce software process models To describe three generic process models and when

More information

ProGUM-Web: Tool Support for Model-Based Development of Web Applications

ProGUM-Web: Tool Support for Model-Based Development of Web Applications ProGUM-Web: Tool Support for Model-Based Development of Web Applications Marc Lohmann 1, Stefan Sauer 1, and Tim Schattkowsky 2 1 University of Paderborn, Computer Science, D 33095 Paderborn, Germany {mlohmann,sauer}@upb.de

More information

Journal of Information Technology Management SIGNS OF IT SOLUTIONS FAILURE: REASONS AND A PROPOSED SOLUTION ABSTRACT

Journal of Information Technology Management SIGNS OF IT SOLUTIONS FAILURE: REASONS AND A PROPOSED SOLUTION ABSTRACT Journal of Information Technology Management ISSN #1042-1319 A Publication of the Association of Management SIGNS OF IT SOLUTIONS FAILURE: REASONS AND A PROPOSED SOLUTION MAJED ABUSAFIYA NEW MEXICO TECH

More information

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and

More information

RUP and XP, Part I: Finding Common Ground

RUP and XP, Part I: Finding Common Ground RUP and XP, Part I: Finding Common Ground by Gary Pollice Evangelist, The Rational Unified Process Rational Software extreme Programming (XP) is hot! Attend any software development conference today and

More information

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB September Case Studies of Running the Platform NetBeans UML Servlet JSP GlassFish EJB In this project we display in the browser the Hello World, Everyone! message created in the session bean with servlets

More information

Using UML Part One Structural Modeling Diagrams

Using UML Part One Structural Modeling Diagrams UML Tutorials Using UML Part One Structural Modeling Diagrams by Sparx Systems All material Sparx Systems 2007 Sparx Systems 2007 Page 1 Trademarks Object Management Group, OMG, Unified Modeling Language,

More information

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective: CS 487 Week 8 Reading: 1. Ian Sommerville, Chapter 3. Objective: 1. To check the understandibility of the students in life cycle and process model for development of a software product. 2. To check if

More information

REVIEW ON THE EFFECTIVENESS OF AGILE UNIFIED PROCESS IN SOFTWARE DEVELOPMENT WITH VAGUE SYSTEM REQUIREMENTS

REVIEW ON THE EFFECTIVENESS OF AGILE UNIFIED PROCESS IN SOFTWARE DEVELOPMENT WITH VAGUE SYSTEM REQUIREMENTS REVIEW ON THE EFFECTIVENESS OF AGILE UNIFIED PROCESS IN SOFTWARE DEVELOPMENT WITH VAGUE SYSTEM REQUIREMENTS Lisana Universitas Surabaya (UBAYA), Raya Kalirungkut, Surabaya, Indonesia E-Mail: lisana@ubaya.ac.id

More information

Extend the value of your core business systems.

Extend the value of your core business systems. Legacy systems renovation to SOA September 2006 Extend the value of your core business systems. Transforming legacy applications into an SOA framework Page 2 Contents 2 Unshackling your core business systems

More information

SOFTWARE TESTING TRAINING COURSES CONTENTS

SOFTWARE TESTING TRAINING COURSES CONTENTS SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software

More information