scispace - formally typeset
Search or ask a question
Book

Design Patterns: Elements of Reusable Object-Oriented Software

TL;DR: The book is an introduction to the idea of design patterns in software engineering, and a catalog of twenty-three common patterns, which most experienced OOP designers will find out they've known about patterns all along.
Abstract: The book is an introduction to the idea of design patterns in software engineering, and a catalog of twenty-three common patterns. The nice thing is, most experienced OOP designers will find out they've known about patterns all along. It's just that they've never considered them as such, or tried to centralize the idea behind a given pattern so that it will be easily reusable.
Citations
More filters
Proceedings ArticleDOI
06 Mar 2010
TL;DR: This paper attempts to reconstruct class diagram and sequence diagram from the binary bytecode of Java program by reflection and bytecode decompilation to trace the system behaviors.
Abstract: Legacy System is difficult to be maintained and refactored for lack of necessary documents and source codes. How to generate some valuable information from system runtime behaviors is a big challenge to systems reengineering. In this paper, we attempt to reconstruct class diagram and sequence diagram from the binary bytecode of Java program by reflection and bytecode decompilation. The pattern of Aspect-Oriented Programming is applied to resolve the intricate codes of Interface and Dependency Injection pattern through weaving aspect codes into binary bytecodes during runtime to trace the system behaviors. The experiments show our approach can exactly generate the class diagram and sequence diagram from legacy Java System.

8 citations


Cites background or methods from "Design Patterns: Elements of Reusab..."

  • ...In this paper, we consider a kind of Java legacy systems who only have binary executable file, no any source code and document and use Java design patterns, such as Interface and Dependency Injection pattern [9]....

    [...]

  • ...Aspect loaded during runtime execution seems be better than the approaches in [7, 8] since it can eliminate the coupling smell in both source and bytecode level completely....

    [...]

  • ...Button is high coupling with Lamp One can adopt the interface pattern that Button only relies on the interface SwitchableDevice instead of any concrete class [9], showed in Fig.2. public interface SwitchableDevice{ Public void turnOn(); } public class Button { /** * Button is only coupling with the…...

    [...]

  • ...*/ /* For brevity, we skip the getter and setter method */ private SwitchableDevice lamp; public void push(){ lamp.turnOn(); } } Fig.2....

    [...]

Book ChapterDOI
21 Nov 2013
TL;DR: This work proposes a framework that is not only organized along the well-known ‘descriptive vs. prescriptive’ dimension, but also introduces a generality dimension that allows for a better integration of descriptive and design-oriented research in information systems.
Abstract: Discussions about design science research as an alternative or at least complementary approach to the dominant descriptive research paradigm have not only taken place in information systems research, but also in organizational sciences, accounting, operations, and other business research disciplines. In contrast to the descriptive research paradigm that can be taken over from sociology and psychology in a very mature state, the problem-solving paradigm is comparably new to business research. Not only have different variants of this approach (e.g. design as search, evidence-based design, emergent design) been proposed and applied that appear to be incompatible at first sight. Descriptive research and design science research also appear to have no common ground and no synergy potentials. As a consequence, not only seem improvement and change (‘design and engineering’) often detached from phenomenon analysis and theory building. The role of ‘un-grounded’, innovative practices is also not clear. In order to provide a common ground and support a better integration of descriptive and design-oriented research in information systems, we propose a framework that is not only organized along the well-known ‘descriptive vs. prescriptive’ dimension, but also introduces a generality dimension. The four resulting quadrants ‘operations’, ‘explanations’, ‘technologies’ and ‘solutions’ allow not only to position all central objects of research, but also to position and better integrate research activities and iterations. This extends not only to ‘deductive’ design (solution search based as well as evidence-based), but also to ‘inductive’ design.

8 citations

25 Apr 2017
TL;DR: A parser, which makes use of recent developments in parser generation technology, succeeds on 99.9% of the corpus and is the basis for the definition of a model which the author plans to use in the future for the formal verification of scripts.
Abstract: Statically parsing shell scripts is, due to various peculiarities of the shell language, a challenge. One of the difficulties is that the shell language is designed to be executed by intertwining reading chunks of syntax with semantic actions. We have analyzed a corpus of 31.521 POSIX shell scripts occurring as maintainer scripts in the Debian GNU/Linux distribution. Our parser, which makes use of recent developments in parser generation technology, succeeds on 99.9% of the corpus. The architecture of our tool allows us to easily plug in various statistical analyzers on the syntax trees constructed from the shell scripts. The statistics obtained by our tool are the basis for the definition of a model which we plan to use in the future for the formal verification of scripts.

8 citations


Cites background from "Design Patterns: Elements of Reusab..."

  • ...This problem is well-known in software engineering and it enjoys a well-known solution as well: the visitor design pattern [9]....

    [...]

Journal ArticleDOI
TL;DR: In this article, a domain-specific language (DSL) is proposed to describe partial differential equations as small tensor operations and to map them to existing code generators which generate small matrix matrix multiplication routines.
Abstract: The numerical solution of partial differential equations is at the heart of many grand challenges in supercomputing. Solvers based on high-order discontinuous Galerkin (DG) discretisation have been shown to scale on large supercomputers with excellent performance and efficiency, if the implementation exploits all levels of parallelism and is tailored to the specific architecture. However, every year new supercomputers emerge and the list of hardware-specific considerations grows, simultaneously with the list of desired features in a DG code. Thus we believe that a sustainable DG code needs an abstraction layer to implement the numerical scheme in a suitable language. We explore the possibility to abstract the numerical scheme as small tensor operations, describe them in a domain-specific language (DSL) resembling the Einstein notation, and to map them to existing code generators which generate small matrix matrix multiplication routines. The compiler for our DSL implements classic optimisations that are used for large tensor contractions, and we present novel optimisation techniques such as equivalent sparsity patterns and optimal index permutations for temporary tensors. Our application examples, which include the earthquake simulation software SeisSol, show that the generated kernels achieve over 50 % peak performance while the DSL considerably simplifies the implementation.

8 citations

Journal Article
TL;DR: A novel approach to facilitate the development of Web applications that enhance existing ones with mobile features through client-side Web Augmentation, assuming the existence of a set of Web pages that could be associated to a physical object and some mechanism for location sensing.
Abstract: Mobile Web Applications combine traditional navigation access enriched with location-based services, which results in a more complex development process since there are a myriad of issues to consider while integrating these kinds of behaviours. This complexity increases even more if the integration of another specific functionality is considered, as personalization or context-aware services. In this article we present a novel approach to facilitate the development of Web applications that enhance existing ones with mobile features through client-side Web Augmentation. Assuming the existence of a set of Web pages that could be associated to a physical object and some mechanism for location sensing, we allow developers to define mobile services or adaptations according to their own interests. We present a detailed comparative analysis of the features we provide against other similar approaches, in order to clearly highlight those aspects that distinguish our work from the existing ones. Finally, we show that this approach is feasible and effective by presenting two prototype applications for two possible scenarios and the results of our first experiment.

8 citations


Cites background or methods from "Design Patterns: Elements of Reusab..."

  • ...We provide a ContextTypeSensor superclass playing the Subject role in the Observer Pattern [18]....

    [...]

  • ...The MobileApplication class has a Façade role [18] and represents a mobile application which will enhance existing Web page(s)....

    [...]

References
More filters
Book
01 Jan 1968
TL;DR: The arrangement of this invention provides a strong vibration free hold-down mechanism while avoiding a large pressure drop to the flow of coolant fluid.
Abstract: A fuel pin hold-down and spacing apparatus for use in nuclear reactors is disclosed. Fuel pins forming a hexagonal array are spaced apart from each other and held-down at their lower end, securely attached at two places along their length to one of a plurality of vertically disposed parallel plates arranged in horizontally spaced rows. These plates are in turn spaced apart from each other and held together by a combination of spacing and fastening means. The arrangement of this invention provides a strong vibration free hold-down mechanism while avoiding a large pressure drop to the flow of coolant fluid. This apparatus is particularly useful in connection with liquid cooled reactors such as liquid metal cooled fast breeder reactors.

17,939 citations

Book
Adele E. Goldberg1, David Robson1
01 Jan 1983
TL;DR: This book is the first detailed account of the Smalltalk-80 system and is divided into four major parts: an overview of the concepts and syntax of the programming language, a specification of the system's functionality, and an example of the design and implementation of a moderate-size application.
Abstract: From the Preface (See Front Matter for full Preface) Advances in the design and production of computer hardware have brought many more people into direct contact with computers. Similar advances in the design and production of computer software are required in order that this increased contact be as rewarding as possible. The Smalltalk-80 system is a result of a decade of research into creating computer software that is appropriate for producing highly functional and interactive contact with personal computer systems. This book is the first detailed account of the Smalltalk-80 system. It is divided into four major parts: Part One -- an overview of the concepts and syntax of the programming language. Part Two -- an annotated and illustrated specification of the system's functionality. Part Three -- an example of the design and implementation of a moderate-size application. Part Four -- a specification of the Smalltalk-80 virtual machine.

3,882 citations

Book
01 Jan 1992
TL;DR: This chapter discusses object-oriented software engineering as a process of change, management and reuse, and some of the methods used to develop and implement object- oriented software.
Abstract: Part 1. Introduction 1. System development as an industrial process Introduction A useful analogy System development characteristics Summary 2. The system life cycle Introduction System development as a process of change System development and reuse System development and methodology Objectory Summary 3. What is object-orientation? Introduction Object Class andinstance Polymorphism Inheritance Summary 4. Object-oriented system development Introduction Function/data methods Object-oriented analysis Object-oriented construction Object-oriented testing Summary 5. Object-oriented programming Introduction Objects Classes and instances Inheritance Polymorphism An example Summary Part II. Concepts 6. Architecture Introduction System development is model building Model architecture Requirements model Analysis model The design model The implementation model Test model Summary 7. Analysis Introduction The requirements model The analysis model Summary 8. Construction Introduction The design model Block design Working with construction Summary 9. Real-time specialization Introduction Classification of real-time systems Fundamental issues Analysis Construction Testing and verification Summary 10. Database Specialization Introduction Relational DBMS Object DBMS Discussion Summary 11. Components Introduction What is a component? Use of components Component management Summary 12. Testing Introduction On testing Unit testing Integration testing System testing The testing process Summary Part III. Applications 13. Case study: warehouse management system Introduction to the examples ACME Warehouse Management Inc. The requirements model The analysis model Construction 14. Case study: telecom Introduction Telecommunication switching systems The requirements model The analysis model The design model The implementation model 15. Managing object-oriented software engineering Introduction Project selection and preparation Project development organization Project organization and management Project staffing Software quality assurance Software metrics Summary 16. Other object-oriented methods Introduction A summary of object-oriented methods Object-Oriented Analysis (OOAD/Coad-Yourdon) Object-Oriented Design (OOD/Booch) Hierarchical Object-Oriented Design (HOOD) Object Modeling Technique (OMT) Responsibility-Driven Design Summary Appendix A On the development of Objectory Introduction Objectory as an activity From idea to reality References Index

3,673 citations

Book
01 Jan 1977

3,061 citations

01 Jan 1991
TL;DR: The OMT Graphical Notation (OMT) as mentioned in this paper is a graphical notation for object-oriented languages that is based on the OMT graph diagram language (OMT).
Abstract: 1. Introduction. I. MODELING CONCEPTS. 2. Modeling as a Design Technique. 3. Object Modeling. 4. Advanced Object Modeling. 5. Dynamic Modeling. 6. Functional Modeling. II. DESIGN METHODOLOGY. 7. Methodology Preview. 8. Analysis. 9. System Design. 10. Object Design. 11. Methodology Summary. 12. Comparison of Methodologies. III. IMPLEMENTATION. 13. From Design to Implementation. 14. Programming Style. 15. Object-Oriented Languages. 16. Non-Object-Oriented Languages. 17. Databases. 18. Object Diagram Compiler. 19. Computer Animation. 20. Electrical Distribution Design System. 21. Future of Object-Oriented Technology. Appendix A: OMT Graphical Notation. Appendix B: Glossary. Index.

2,411 citations