Feature-Based Software Design Pattern Detection a ∗ B C Najam Nazar , , Aldeida Aleti and Yaokun Zheng

Total Page:16

File Type:pdf, Size:1020Kb

Feature-Based Software Design Pattern Detection a ∗ B C Najam Nazar , , Aldeida Aleti and Yaokun Zheng Feature-Based Software Design Pattern Detection a < b c Najam Nazar , , Aldeida Aleti and Yaokun Zheng Faculty of IT, Monash University, Australia ARTICLEINFO ABSTRACT Keywords: Software design patterns are standard solutions to common problems in software design and archi- Software design patterns tecture. Knowing that a particular module implements a design pattern is a shortcut to design com- code features prehension. Manually detecting design patterns is a time consuming and challenging task; therefore, word-space-model researchers have proposed automatic design patterns detection techniques to facilitate software de- machine learning velopers. However, these techniques use complex procedures and show low performance for certain design patterns. In this work, we introduce an approach that improves the performance over the state- of-the-art by using code features with machine learning classifiers to automatically train a design pattern detection. We create a semantic representation of Java source code using the code features and the call graph, and apply the Word2Vec algorithm on the semantic representation to construct the word-space geometric model of the Java source code. DPDF then uses a Machine Learning approach trained using the word-space model and identifies software design patterns with 74% Precision and 71% Recall. Additionally, we have compared our results with two existing design pattern detection approaches namely FeatureMaps & MARPLE-DPD. Empirical results demonstrate that our approach outperforms the state-of-the-art approaches by 30% and 10% respectively in terms of Precision. The runtime performance also supports its practical applicability of our classifier. 1. Introduction graphs or other representations, they always show low ac- curacy and fail to effectively predict the majority of design Design pattern detection is an active research field and patterns (Yu et al., 2018). At the same time, capturing se- in recent years gained enormous attention by software engi- mantic (lexical) information from the source code is chal- neering professionals (Mayvan and Rasoolzadegan, 2017). lenging and has not been attempted yet in identify design pat- (Kuchana, 2004) defines software design patterns as “recur- ring solutions to common problems in a given context and terns effectively. Translating source code to natural language text has been effectively used in generating source code sum- system of forces”. Since their popularisation by the ‘Gang of Four’ maries with high accuracy (Hu et al., 2018; McBurney and (GoF) (Gamma et al., 1995) in the 1990s, many McMillan, 2015, 2016; Moreno et al., 2013), including our identified design patterns have been widely adopted by soft- own work on identifying summary sentences from code frag- ware professionals to improve the quality of software de- ments (Nazar et al., 2016). Therefore, we hypothesise that sign, architecture, and to facilitate code reuse and refactor- lexical-based (basic) code features extracted from the source ing. Recognising that a particular software module imple- code will increase the accuracy of design pattern detection. ments a design pattern can greatly assist in program compre- In this paper, we introduce Feature-Based Design Pat- hension, and consequently improve software maintenance (Prechelt tern Detection (DPDF ) that uses source code features - both et al., 2002). While design patterns can be easily detected structural and lexical, and employs machine learning classi- by looking at the source code, the complexity of software fier to predict a wider range of design patterns, with higher projects and the differences in coding styles of software de- accuracy compared to the state-of-the-art. Our approach builds velopers sometimes make it hard to find the exact locations a call graph and extract 15 source code features to gener- in code where the patterns have been implemented. ate a Software Syntactic and Lexical Representation (SSLR). arXiv:2012.01708v2 [cs.SE] 29 May 2021 Automatic detection of design patterns has shown use- The SSLR provides the lexical and syntactic information of fulness in assisting software developers to quickly and cor- the Java files as well as the relationships between the files’ rectly comprehend and maintain unfamiliar source code, ul- classes, methods etc., in the natural language form. Using timately leading to higher developer productivity (Walter and SSLR, we build a word-space geometrical model of Java Alkhaeir, 2016; Scanniello et al., 2015; Gaitani et al., 2015; files by applying the Word2Vec algorithm. We train a super- Christopoulou et al., 2012). The majority of existing meth- vised machine learning classifier, DPDF on design patterns ods reverse engineer the source code to identify the design using the labelled set and a geometrical model for recognis- patterns (Detten et al., 2010; Lucia et al., 2011) or build tools ing twelve commonly used object-oriented software design to detect design patterns in the source code e.g, (Hautamäki, patterns. 2005; Moreno and Marcus, 2012), and utilise code metrics To evaluate our approach, we label a corpus of 1,400 e.g, (Uchiyama et al., 2011). Although it is relatively easy Java files, which we refer to as ’DPDF Corpus’. DPDF cor- to obtain structural elements from the source code such as pus is extracted from a publicly available ’Github Java Cor- classes, attributes, methods etc. and transform them into pus’ (Allamanis and Sutton, 2013). To facilitate the labelling, < Corresponding author. we use an online tool ’CodeLabeller’, where expert raters [email protected] (N. Nazar) were asked to label design patterns. We statistically evalu- ORCID(s): ate the performance of DPDF by calculating the Precision, N. Nazar et al.: Preprint submitted to Elsevier Page 1 of 15 Feature based sw design pattern detect Recall and F1-Score measures and compare our approach to design patterns, code features, word-space embeddings/models two existing software design pattern detection approaches, and machine learning. ’FeatureMaps’ and ’MARPLE-DPD’. Empirical results show that our approach is effective in recognising twelve object- 2.1. Design Patterns oriented software design patterns with high Precision (74%) We consider the following twelve design patterns: Adapter, and low error rate (26%). Furthermore DPDF outperforms Builder, Decorator, Factory, Façade, Memento, Observer, the state-of-the-art methods FeatureMaps & MARPLE-DPD Prototype, Proxy, Singleton, Wrapper and Visitor that are by 30% and 10% respectively in terms of Precision. analysed by using the proposed approach. These patterns - Design pattern detection is a subjective process and in except wrapper cover all three categories of GoF patterns i.e. most cases, the decision of selecting a design pattern is based creational, structural and behavioural patterns. Creational on the context it is used. We apply machine learning tech- patterns include Builder, Factory, Prototype and Singleton niques to allow developers to pick examples of what is a patterns whereas, structural patterns include Adapter, Deco- good or bad instance of a design pattern. We foresee two po- rator, Façade and Proxy patterns. We have considered three tential advantages of using machine learning approaches for behavioural patterns for this study and that are Memento, design pattern detection over existing approaches. Firstly, a Observer and Visitor. machine learning approach is potentially much more easily 2.1.1. Adapter vs Wrapper extensible to new patterns than hand-built detectors, as the detector can be trained to recognise a new pattern merely by Though the wrapper pattern is not part of GOF patterns, providing it with sufficient exemplars of code implementing we use it as a separate pattern because a wrapper encapsu- the pattern. Secondly, a machine learning approach may be lates and hides the complexity of other code. It is intended to more robust than a hand-built classifier that may look for one simplify an interface to an external library and contains an- or two superficial features of code implementing a pattern other object and wraps around it. In other words, it has the (for instance, simply looking for name suffixes). This also sole responsibility of moving data to and from the wrapped relates to extensibility, as non-experts attempting to extend object and fulfills the need of a simplified and specific pro- a classifier may be particularly prone to writing oversimpli- gramming interface. Whereas, the Adapter allows code that fied rules for identification. has been designed for compatibility with one interface to be Contributions: In summary, this paper makes the fol- compatible with another - transforming input to match the lowing contributions: input required by another interface. It solves a problem of incompatibility the its extensive use in the corpus. In addi- • We introduce a novel approach called Feature-Based Design Pattern Detector tion, Looking at the corpus, we can see that both adapters (DPDF ) that uses 15 source and wrappers are treated differently. For example, Prepared- code features to detect software design patterns. StatementWrapper1 wraps the error messages to the stata- • We build a large corpus i.e. DPDF Corpus compris- ments. ing of 1,400 Java files, which are labelled from expert 2.1.2. Abstract Factory vs Factory Method software engineers using our online tool Codelabeller. After thoroughly observing the corpus and collecting the • We demonstrate that our approach outperforms two desired instances for experimentation we have noticed that state-of-the-art
Recommended publications
  • Ioc Containers in Spring
    301AA - Advanced Programming Lecturer: Andrea Corradini [email protected] http://pages.di.unipi.it/corradini/ AP-2018-11: Frameworks and Inversion of Control Frameworks and Inversion of Control • Recap: JavaBeans as Components • Frameworks, Component Frameworks and their features • Frameworks vs IDEs • Inversion of Control and Containers • Frameworks vs Libraries • Decoupling Components • Dependency Injection • IoC Containers in Spring 2 Components: a recap A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third party. Clemens Szyperski, ECOOP 1996 • Examples: Java Beans, CLR Assemblies • Contractually specified interfaces: events, methods and properties • Explicit context dependencies: serializable, constructor with no argument • Subject to composition: connection to other beans – Using connection oriented programming (event source and listeners/delegates) 3 Towards Component Frameworks • Software Framework: A collection of common code providing generic functionality that can be selectively overridden or specialized by user code providing specific functionality • Application Framework: A software framework used to implement the standard structure of an application for a specific development environment. • Examples: – GUI Frameworks – Web Frameworks – Concurrency Frameworks 4 Examples of Frameworks Web Application Frameworks GUI Toolkits 5 Examples: General Software Frameworks – .NET – Windows platform. Provides language interoperability – Android SDK – Supports development of apps in Java (but does not use a JVM!) – Cocoa – Apple’s native OO API for macOS. Includes C standard library and the Objective-C runtime. – Eclipse – Cross-platform, easily extensible IDE with plugins 6 Examples: GUI Frameworks • Frameworks for Application with GUI – MFC - Microsoft Foundation Class Library.
    [Show full text]
  • Principles of Design
    Principles of Design Balance Proportion/Scale Emphasis Rhythm Introduction The principles of design are essential to the development and production of clothing used by individuals and families around the world. Each principle has a specific role in creating an aesthetically pleasing garment or ensemble. The principles of design consist of: balance, proportion (also referred to as scale), emphasis, and rhythm. When a garment or ensemble uses the elements and principles of design to create a visual unity, harmony is achieved. Garments often integrate more than one principle, while drawing from the elements of design to create a cohesive look. The following discussion will present background information on each of the principles of design and applications to clothing design and construction. Balance According to Wolfe (2011) balance implies that there is an equilibrium or uniformity among the parts of a design (p. 205). To achieve balance, a garment or ensemble should have equal visual weight throughout the design. The use of structural features, added embellishments, or decorations to a garment contribute to the appearance of a garment or ensemble being balanced or not. A clothing designer can utilize surface designs on fabric to construct a garment creating visual balance. Further, color, line, and texture can impact the balance of a design. For example, cool and light colors have less visual weight than dark, warm colors. If an individual is wearing a small amount of a dark, warm color it can be balanced out with a larger amount of cool, light colors. Balance used in clothing design can be categorized into two groups: Formal and Informal Balance.
    [Show full text]
  • APPLYING MODEL-VIEW-CONTROLLER (MVC) in DESIGN and DEVELOPMENT of INFORMATION SYSTEMS an Example of Smart Assistive Script Breakdown in an E-Business Application
    APPLYING MODEL-VIEW-CONTROLLER (MVC) IN DESIGN AND DEVELOPMENT OF INFORMATION SYSTEMS An Example of Smart Assistive Script Breakdown in an e-Business Application Andreas Holzinger, Karl Heinz Struggl Institute of Information Systems and Computer Media (IICM), TU Graz, Graz, Austria Matjaž Debevc Faculty of Electrical Engineering and Computer Science, University of Maribor, Maribor, Slovenia Keywords: Information Systems, Software Design Patterns, Model-view-controller (MVC), Script Breakdown, Film Production. Abstract: Information systems are supporting professionals in all areas of e-Business. In this paper we concentrate on our experiences in the design and development of information systems for the use in film production processes. Professionals working in this area are neither computer experts, nor interested in spending much time for information systems. Consequently, to provide a useful, useable and enjoyable application the system must be extremely suited to the requirements and demands of those professionals. One of the most important tasks at the beginning of a film production is to break down the movie script into its elements and aspects, and create a solid estimate of production costs based on the resulting breakdown data. Several film production software applications provide interfaces to support this task. However, most attempts suffer from numerous usability deficiencies. As a result, many film producers still use script printouts and textmarkers to highlight script elements, and transfer the data manually into their film management software. This paper presents a novel approach for unobtrusive and efficient script breakdown using a new way of breaking down text into its relevant elements. We demonstrate how the implementation of this interface benefits from employing the Model-View-Controller (MVC) as underlying software design paradigm in terms of both software development confidence and user satisfaction.
    [Show full text]
  • The Role of Model-View Controller in Object Oriented Software Development
    Nepal Journal of Multidisciplinary Research (NJMR) ISSN: 2645-8470 Vol 2, No. 2 June 2019 The Role of Model-View Controller in Object Oriented Software Development Ram Naresh Thakur1 and U S Pandey2 1PhD Scholar, Mewar University, Chittorgarh, Rajasthan, India 2Professor, University of Delhi, India. Corresponding Author Ram Naresh Thakur Email: [email protected] Abstract Object Oriented Software Development (OOSD) is a design technique that is used before the development and design of a software. This design method makes the system appears as a collection of objects to communicate with other objects by passing messages. The Model-View- Controller (MVC) has been inherited from Object-Oriented Programming (OOP) with the integration of Graphical User Interface (GUI) and interactive program execution. The MVC is very useful for developing Interactive and Dynamic Web Applications and iOS. With MVC, developers can trust on design patterns that are widely accepted as solutions for recurring problems. MVC can be used to develop flexible, reusable and modular Software. Applying the MVC design pattern in object-oriented Software development a flexible, reliable, modular and scalable website can be built. So, it’s necessary for every developer to have the knowledge of software development using MVC design pattern. Keywords: OOSD, MVC, OOP, GUI, Dynamic, Web Application, iOS, Design Pattern. 1 Introduction In today’s era, it is very essential to develop and design a working software in an effective and efficient manner. As we know that Object Oriented software development is a designing technique that is used before the development and design of a software. Through this method the system appears as a collection of objects which communicate with other objects by passing messages.
    [Show full text]
  • The Scalable Adapter Design Pattern: Enabling Interoperability Between Educational Software Tools
    The Scalable Adapter Design Pattern: Enabling Interoperability Between Educational Software Tools Andreas Harrer, Catholic University Eichstatt-Ingolstadt,¨ Germany, Niels Pinkwart, Clausthal University of Technology, Germany, Bruce M. McLaren, Carnegie Mellon University, Pittsburgh PA, U.S.A., and DFKI, Saarbrucken,¨ Germany, and Oliver Scheuer, DFKI, Saarbrucken,¨ Germany Abstract For many practical learning scenarios, the integrated use of more than one learning tool is educationally beneficial. In these cases, interoperability between learning tools - getting the pieces to talk to one another in a coherent, well-founded manner - is a crucial requirement that is often hard to achieve. This paper describes a re-usable software design that aims at the integration of independent learning tools into one collaborative learning scenario. We motivate the usefulness and expressiveness of combining several learning tools into one integrated learning experience. Based on this we sketch software design principles that integrate several existing components into a joint technical framework. The feasibility of the approach, which we name the “Scalable Adapter” design pattern, is shown with several implementation examples from different educational technology domains, including Intelligent Tutoring Systems and collaborative learning environments. IEEE keywords: J.m Computer applications, H.5.3 Group and Organization interfaces, K.3.m Computers in Education A short version of this paper appeared in the Proceedings of the Conference on Intelligent Tutoring Systems 2008 1 The Scalable Adapter Design Pattern: Enabling Interoperability Between Educational Software Tools1 I. INTRODUCTION hypothesis and plans. In order to help the student or student In the field of educational technology, there have been groups during the different steps of this inquiry procedure, it numerous attempts in recent years to connect differently makes sense to enable them to have hypotheses, experimenta- targeted learning environments to one another.
    [Show full text]
  • Pattern Languages in HCI: a Critical Review
    HUMAN–COMPUTER INTERACTION, 2006, Volume 21, pp. 49–102 Copyright © 2006, Lawrence Erlbaum Associates, Inc. Pattern Languages in HCI: A Critical Review Andy Dearden Sheffield Hallam University Janet Finlay Leeds Metropolitan University ABSTRACT This article presents a critical review of patterns and pattern languages in hu- man–computer interaction (HCI). In recent years, patterns and pattern languages have received considerable attention in HCI for their potential as a means for de- veloping and communicating information and knowledge to support good de- sign. This review examines the background to patterns and pattern languages in HCI, and seeks to locate pattern languages in relation to other approaches to in- teraction design. The review explores four key issues: What is a pattern? What is a pattern language? How are patterns and pattern languages used? and How are values reflected in the pattern-based approach to design? Following on from the review, a future research agenda is proposed for patterns and pattern languages in HCI. Andy Dearden is an interaction designer with an interest in knowledge sharing and communication in software development. He is a senior lecturer in the Com- munication and Computing Research Centre at Sheffield Hallam University. Janet Finlay is a usability researcher with an interest in design communication and systems evaluation. She is Professor of Interactive Systems in Innovation North at Leeds Metropolitan University. 50 DEARDEN AND FINLAY CONTENTS 1. INTRODUCTION 2. THE SCOPE OF THIS REVIEW 2.1. General Software Design Patterns 2.2. Interface Software Design Patterns 2.3. Interaction Design Patterns 3. A SHORT HISTORY OF PATTERNS 3.1.
    [Show full text]
  • GREATER GOLDEN HILL COMMUNITY PLAN UPDATE CHARRETTE 1 – Written Comments from Community Participants
    GREATER GOLDEN HILL COMMUNITY PLAN UPDATE CHARRETTE 1 – Written Comments from Community Participants DRAFT October 9, 2010 Table 1 10 Things you Love about your Community - Golf course - open space - Dog park - Trails near the dog park canyon - Walkability - Eclectic architecture - Local businesses - Community-oriented events (Old House Fair, Walkabout, etc.) - Diversity - Natural views - Art spaces - The natural view - Connection to the park - Access/ proximity to downtown/ Balboa 10 Simple Improvements - Golf Course Open Space Add a walk path – make it safe all around the park Wildlife access Expand more family access to east end of park between Rec Center & 28th St. (use up some golf course space) - Improve connection to Balboa Park, improve street access & walkablility - Increase maintenance district funds for park? - Possible use of maintenance district funds for street repairs & lighting - Need a larger community center - 25th & F - idea for community center? - 25th & F – church for lease? - What to do for closed post office? - Bring the streetcar/ trolley to 30th & Fern - There are 2 auto shops near C & 25th - Underground the power lines - More street art - Enforce code on street signs and advertisements - Improve jogging & bike path around the golf course *All comments written herein are direct transcriptions of notes collected from each table as well as notes taken during the report back sessions of the workshop Golden Hill Charrette 1 – Comments - More walking trails - Improve sidewalks - lighting - More playgrounds - Rezone 25th street - Library/ Cultural Center/ Community Center - Need a Golden Hill sign (like Hillcrest or North Park) - Streetcar/Trolley Streets & Connections - Public art - Bus stops designed by a local artists competition - Community plazas and fountains - Entry signage for Golden Hill & South Park - Bike racks @ all destinations - Green Streets - Improve Russ Blvd.
    [Show full text]
  • Design Patterns in Ocaml
    Design Patterns in OCaml Antonio Vicente [email protected] Earl Wagner [email protected] Abstract The GOF Design Patterns book is an important piece of any professional programmer's library. These patterns are generally considered to be an indication of good design and development practices. By giving an implementation of these patterns in OCaml we expected to better understand the importance of OCaml's advanced language features and provide other developers with an implementation of these familiar concepts in order to reduce the effort required to learn this language. As in the case of Smalltalk and Scheme+GLOS, OCaml's higher order features allows for simple elegant implementation of some of the patterns while others were much harder due to the OCaml's restrictive type system. 1 Contents 1 Background and Motivation 3 2 Results and Evaluation 3 3 Lessons Learned and Conclusions 4 4 Creational Patterns 5 4.1 Abstract Factory . 5 4.2 Builder . 6 4.3 Factory Method . 6 4.4 Prototype . 7 4.5 Singleton . 8 5 Structural Patterns 8 5.1 Adapter . 8 5.2 Bridge . 8 5.3 Composite . 8 5.4 Decorator . 9 5.5 Facade . 10 5.6 Flyweight . 10 5.7 Proxy . 10 6 Behavior Patterns 11 6.1 Chain of Responsibility . 11 6.2 Command . 12 6.3 Interpreter . 13 6.4 Iterator . 13 6.5 Mediator . 13 6.6 Memento . 13 6.7 Observer . 13 6.8 State . 14 6.9 Strategy . 15 6.10 Template Method . 15 6.11 Visitor . 15 7 References 18 2 1 Background and Motivation Throughout this course we have seen many examples of methodologies and tools that can be used to reduce the burden of working in a software project.
    [Show full text]
  • A Study Focused on Web Application Development Using MVC Design Pattern
    International Research Journal of Engineering and Technology (IRJET) e-ISSN: 2395-0056 Volume: 06 Issue: 08 | Aug 2019 www.irjet.net p-ISSN: 2395-0072 A Study Focused on Web Application Development using MVC Design Pattern Ram Naresh Thakur1, Dr. U.S. Pandey2 1Research Scholar, Mewar University, Rajasthan, India 2Professor, University of Delhi ---------------------------------------------------------------------***---------------------------------------------------------------------- Abstract - The Model-View-Controller (MVC) is very useful for developing Interactive and Dynamic Web Applications. It has become the most powerful and dominant Programming Paradigm for developing large scale and Dynamic Web Applications. With MVC, developers can trust on design patterns that are widely accepted as solutions for recurring problems and used to develop flexible, reusable and modular Software. Applying the MVC design pattern to Web Applications is therefore complicated by the fact that current technologies encourage developers to partition the application as early as in the design phase. In this work we have developed a web-based application using MVC framework using Java Web Architecture. Key Words: MVC, Dynamic, Web Application, Programming Paradigm, Developers, Design Phase, Java Web Architecture. 1. INTRODUCTION 1.1 Web Application A Web Application is a distributed application that runs on more than one Computer and communicates through a Network or a Server. Specifically, a Web Application is accessed with a Web Browser as a client and provides the facility to update and manage a program without deploying and installing Application on client Computers. Web Applications are used for Email, Online Retail Purchase/Sales, Online Banking, among others. The advantage of Web Application is that can be access and used by millions of people at the same time [1].
    [Show full text]
  • From Sequential to Parallel Programming with Patterns
    From sequential to parallel programming with patterns Inverted CERN School of Computing 2018 Plácido Fernández [email protected] 07 Mar 2018 Table of Contents Introduction Sequential vs Parallel patterns Patterns Data parallel vs streaming patterns Control patterns (sequential and parallel Streaming parallel patterns Composing parallel patterns Using the patterns Real world use case GrPPI with NUMA Conclusions Acknowledgements and references 07 Mar 2018 3 Table of Contents Introduction Sequential vs Parallel patterns Patterns Data parallel vs streaming patterns Control patterns (sequential and parallel Streaming parallel patterns Composing parallel patterns Using the patterns Real world use case GrPPI with NUMA Conclusions Acknowledgements and references 07 Mar 2018 4 Source: Herb Sutter in Dr. Dobb’s Journal Parallel hardware history I Before ~2005, processor manufacturers increased clock speed. I Then we hit the power and memory wall, which limits the frequency at which processors can run (without melting). I Manufacturers response was to continue improving their chips performance by adding more parallelism. To fully exploit modern processors capabilities, programmers need to put effort into the source code. 07 Mar 2018 6 Parallel Hardware Processors are naturally parallel: Programmers have plenty of options: I Caches I Multi-threading I Different processing units (floating I SIMD / Vectorization (Single point, arithmetic logic...) Instruction Multiple Data) I Integrated GPU I Heterogeneous hardware 07 Mar 2018 7 Source: top500.org Source: Intel Source: CERN Parallel hardware Xeon Xeon 5100 Xeon 5500 Sandy Bridge Haswell Broadwell Skylake Year 2005 2006 2009 2012 2015 2016 2017 Cores 1 2 4 8 18 24 28 Threads 2 2 8 16 36 48 56 SIMD Width 128 128 128 256 256 256 512 Figure: Intel Xeon processors evolution 0Source: ark.intel.com 07 Mar 2018 11 Parallel considerations When designing parallel algorithms where are interested in speedup.
    [Show full text]
  • Evolution and Composition of Object-Oriented Frameworks
    Evolution and Composition of Object-Oriented Frameworks Michael Mattsson University of Karlskrona/Ronneby Department of Software Engineering and Computer Science ISBN 91-628-3856-3 © Michael Mattsson, 2000 Cover background: Digital imagery® copyright 1999 PhotoDisc, Inc. Printed in Sweden Kaserntryckeriet AB Karlskrona, 2000 To Nisse, my father-in-law - who never had the opportunity to study as much as he would have liked to This thesis is submitted to the Faculty of Technology, University of Karlskrona/Ronneby, in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Engineering. Contact Information: Michael Mattsson Department of Software Engineering and Computer Science University of Karlskrona/Ronneby Soft Center SE-372 25 RONNEBY SWEDEN Tel.: +46 457 38 50 00 Fax.: +46 457 27 125 Email: [email protected] URL: http://www.ipd.hk-r.se/rise Abstract This thesis comprises studies of evolution and composition of object-oriented frameworks, a certain kind of reusable asset. An object-oriented framework is a set of classes that embodies an abstract design for solutions to a family of related prob- lems. The work presented is based on and has its origin in industrial contexts where object-oriented frameworks have been developed, used, evolved and managed. Thus, the results are based on empirical observations. Both qualitative and quanti- tative approaches have been used in the studies performed which cover both tech- nical and managerial aspects of object-oriented framework technology. Historically, object-oriented frameworks are large monolithic assets which require several design iterations and are therefore costly to develop. With the requirement of building larger applications, software engineers have started to compose multiple frameworks, thereby encountering a number of problems.
    [Show full text]
  • Software Development a Practical Approach!
    Software Development A Practical Approach! Hans-Petter Halvorsen https://www.halvorsen.blog https://halvorsen.blog Software Development A Practical Approach! Hans-Petter Halvorsen Software Development A Practical Approach! Hans-Petter Halvorsen Copyright © 2020 ISBN: 978-82-691106-0-9 Publisher Identifier: 978-82-691106 https://halvorsen.blog ii Preface The main goal with this document: • To give you an overview of what software engineering is • To take you beyond programming to engineering software What is Software Development? It is a complex process to develop modern and professional software today. This document tries to give a brief overview of Software Development. This document tries to focus on a practical approach regarding Software Development. So why do we need System Engineering? Here are some key factors: • Understand Customer Requirements o What does the customer needs (because they may not know it!) o Transform Customer requirements into working software • Planning o How do we reach our goals? o Will we finish within deadline? o Resources o What can go wrong? • Implementation o What kind of platforms and architecture should be used? o Split your work into manageable pieces iii • Quality and Performance o Make sure the software fulfills the customers’ needs We will learn how to build good (i.e. high quality) software, which includes: • Requirements Specification • Technical Design • Good User Experience (UX) • Improved Code Quality and Implementation • Testing • System Documentation • User Documentation • etc. You will find additional resources on this web page: http://www.halvorsen.blog/documents/programming/software_engineering/ iv Information about the author: Hans-Petter Halvorsen The author currently works at the University of South-Eastern Norway.
    [Show full text]