1st Edition

Software Patterns, Knowledge Maps, and Domain Analysis

    448 Pages 100 B/W Illustrations
    by Auerbach Publications

    448 Pages 100 B/W Illustrations
    by Auerbach Publications

    Software design patterns are known to play a vital role in enhancing the quality of software systems while reducing development time and cost. However, the use of these design patterns has also been known to introduce problems that can significantly reduce the stability, robustness, and reusability of software. This book introduces a new process for creating software design patterns that leads to highly stable, reusable, and cost-effective software. The basis of this new process is a topology of software patterns called knowledge maps.

    This book provides readers with a detailed view of the art and practice of creating meaningful knowledge maps. It demonstrates how to classify software patterns within knowledge maps according to their application rationale and nature. It provides readers with a clear methodology in the form of step-by-step guidelines, heuristics, and quality factors that simplify the process of creating knowledge maps.

    This book is designed to allow readers to master the basics of knowledge maps from their theoretical aspects to practical application. It begins with an overview of knowledge map concepts and moves on to knowledge map goals, capabilities, stable design patterns, development scenarios, and case studies. Each chapter of the book concludes with an open research issue, review questions, exercises, and a series of projects.

    Preface
    Acknowledgments
    Authors

    INTRODUCTION

    An Overview of Knowledge Maps
    Introduction: Key Concepts—Software Stable Models, Knowledge Maps, Pattern Language, Goals, Capabilities (Enduring Business Themes + Business Objects)
    The Motivation
    The Problem
    The Objectives
    Overview of Software Stability Concepts
    Overview of Knowledge Maps
    Pattern Languages versus Knowledge Maps: A Brief Comparison
    The Solution
    Knowledge Maps Methodology or Concurrent Software Development Model
    Why Knowledge Maps?
    Research Methodology Undertaken
    Research Verification and Validation
    The Stratification of This Book
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    Abstraction: Knowledge Maps, Stability, and Patterns
    Introduction
    Levels of Abstraction in Knowledge Maps
    Mapping Elements in Knowledge Maps to Software Stability Concepts and Patterns
    The Software Stability Model
    Goals
    Capabilities
    Knowledge Maps: Formation and Stable Architectural Patterns

    Development Scenarios
    Deployment and Verification and Validation
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    GOALS OF THE KNOWLEDGE MAPS

    The Goals: Significance and Identification
    Introduction
    Significance of Goals
    An Example: A Simple E-Commerce Application
    Dealing with Goals: Extraction and Assessment
    Extracting the Goals of a Discipline: The Process
    Dealing with Subgoals
    Goals of Knowledge Maps
    Goal 1: Learning
    Goal 2: Discovery
    Goal 3: Knowledge
    Subgoals
    Use an Analogy: Marriage or Friendship
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    Discovery Stable Analysis Pattern
    Introduction
    Discovery Stable Analysis Pattern
    Pattern Name: Discovery Stable Analysis Pattern
    Known as
    Context
    Problem
    Challenges and Constraints
    Solution
    Consequences
    Applicability
    Related Patterns and Measurability
    Modeling Issues, Criteria, and Constraints
    Design and Implementation Issues
    Testability
    Formalization Using Object Constraint Language, Z++ or Object Z, and/or Extended Backus– Naur Form
    Business Issues
    Known Usages
    Tips and Heuristics
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    The Knowledge Stable Analysis Pattern
    Introduction
    Pattern Documentation
    Pattern Name: Knowledge Stable Analysis Pattern
    Known As
    Context
    Problem
    Challenges and Constraints
    Solution: Pattern Structure and Participants
    Applicability with Illustrated Examples
    Related Patterns and Measurability
    Known Usages
    Summary
    Open Research Issues
    Review Questions
    Exercise
    Projects

    KNOWLEDGE MAPS CAPABILITIES

    Capabilities: The Heart of Business
    Introduction
    The Heart of the Business
    Work Flow Metaphor—Workhorses
    Dealing with Capabilities: Identification and Assessment
    A Goal with No Capability
    A Capability with No Goal
    Identification Process of Capabilities: an Example
    Capabilities of Knowledge Maps
    Capability 1
    Capability 2
    Capability 3
    Capability 4
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    AnyMap Stable Design Pattern
    Introduction
    Pattern Documentation
    Pattern Name: AnyMap Stable Design Pattern
    Known as
    Context
    Problem
    Challenges and Constraints
    Solution Structure and Participants
    Consequences
    Applicability with Illustrated Examples
    Related Patterns and Measurability
    Modeling Issues, Criteria, and Constraints
    Design and Implementation Issues
    Formalization
    Testability
    Business Issues
    Known Usage
    Tips and Heuristics
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Research and Development
    Indexing and Dictionary Search
    Site Map Development
    Projects

    AnyContext Stable Design Pattern
    Introduction
    Pattern Documentation
    Pattern Name: AnyContext Stable Design Pattern
    Known as
    Context
    Problem
    Challenges and Constraints
    Solution: Pattern Structure and Participants
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    KNOWLEDGE MAPS, DEVELOPMENT, AND DEPLOYMENT

    Knowledge Maps: System of Patterns
    Introduction
    Representation of Knowledge Maps: Structure, Quality Factors, and Properties
    Structure of the Knowledge Maps
    Knowledge Maps versus Traditional Pattern Languages
    Samples of SArchPs
    Architecture 1
    Architecture 2
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    Development Scenarios: Setting the Stage
    Introduction
    Implementation Issues of the Knowledge Maps
    Type versus Class within TOP
    Design Type Specification Template
    The Uses of Contracts in the Specification of Design Types
    The Hook Specification Template
    Specification of the User Model or Storyteller
    Components
    Aspect-Oriented Modeling
    Aspects as Core Design Features in a System
    Difference between the Aspect-Oriented Design
    Approach and SSM
    Identification of whether Aspects Will Be All the EBTs and All the BOs in a System
    Understanding whether Aspects in AOP Will Represent Either EBTs or BOs of SSM in a System
    Comparison between Extraction of Aspects in AOP, EBTs, and BOs in SSM
    Modeling EBTs and BOs as Aspects
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    Deployment, Verification and Validation, and Quality Factors
    Introduction
    Deployment of Knowledge Maps
    The Conceptual Point of View of Deployment
    The Practical Point of View of Deployment
    The Quality Factors of Deployment
    Deployment—V&V Process
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    CASE STUDIES OF THE KNOWLEDGE MAPS

    Knowledge Map Engine: Initial Work
    Introduction
    Interfaces Supported by the Knowledge Map Engine
    Implementations of the Interfaces
    Structures of Types
    Construction Heuristics of Engines
    The Hooking Facility of the Knowledge Map Engine
    An Example: Creating Associations between BOs and IOs
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects

    CRC Cards Knowledge Map
    Introduction
    What Makes an Effective CRC Cards
    CRC Cards Knowledge Classification
    Toward a Knowledge Map for CRC Cards
    Goals or Classification
    Capabilities or Properties
    Development Scenarios
    Deployment
    Family of Patterns—Bird’s-Eye View
    Knowledge Map for CRC Cards
    The Main Step in the Classification
    Pattern 1—Brainstorming Stable Analysis Pattern
    Pattern 2—Engagement Stable Analysis Pattern
    Pattern 3—CRC Card Modeling Stable Analysis Pattern

    The Main Step in the Capability
    Pattern 4—Effective CRC Card Format Pattern
    Summary
    Open Research Issues
    Review Questions
    Exercises
    Projects
    References
    Future Work and Conclusions
    Future Work
    Summary
    Review Questions
    Exercises
    Projects

    Appendix A: Pattern Documentation Templates
    Appendix B: Other Templates
    Appendix C: Stable Patterns Catalog
    Appendix D: Sample Requirements
    References
    Index

    Biography

    Dr. Mohamed E. Fayad is currently a full professor of computer engineering at San Jose State University, from 2002 to present. He was a J.D. Edwards Professor, Computer Science and Engineering, at the University of Nebraska, Lincoln, from 1999 to 2002; an associate professor at the computer science and computer engineering faculty at the University of Nevada, from 1995 to 1999; and an editor-in-chief for IEEE Computer Society Press—Computer Science and Engineering Practice Press, from 1995 to 1997. He has 15+ years of industrial experience. Dr. Fayad is an IEEE distinguished speaker, an associate editor, editorial advisor, a columnist for the Communications of the ACM (Thinking Objectively), and a columnist for the Al-Ahram newspaper (two million subscribers); he was a general chair of IEEE/Arab Computer Society International Conference on Computer Systems and Applications (AICCSA 2001), Beirut, Lebanon, June 26–29, 2001; he is the founder of Arab Computer Society (ACS), being its president from April 2004 to April 2007.

    Dr. Fayad is a known and well-recognized authority in the domain of theory and the applications of software engineering. Dr. Fayad was a guest editor on 12 theme issues: CACM’s OO Experiences, October 1995; IEEE Computer’s Managing OO Software Development Projects, September 1996; CACM’s Software Patterns, October 1996; CACM’s OO Application Frameworks, October 1997; ACM Computing Surveys—OO Application Frameworks, March 2000; IEEE Software—Software Engineering in-the-Small, September/October 2000; International Journal on Software Practice and Experiences, July 2001; IEEE Transaction on Robotics and Automation—Object-Oriented Methods for Distributed Control Architecture, October 2002; Annals of Software Engineering Journal—OO Web- Based Software Engineering, October 2002; Journal of Systems and Software, Elsevier, Software Architectures and Mobility, July 2010; and Pattern Languages: Addressing the Challenges, Wiley Software: Practice and Experience, March–April 2012.

    Dr. Fayad has published more than 218 high-quality papers, which include profound and well-cited reports (more than 50) in reputed journals, 84 articles in refereed conferences, more than 20 well-received and cited journal columns, 16 blogged columns; 12 well-cited theme issues in prestigious journals and flagship magazines; 24 different workshops in respected conferences; and over 125 tutorials, seminars, and short presentations in 30+ different countries, such as Hong Kong (3 times), Canada (12 times), Bahrain (2 times), Saudi Arabia (4 times), Egypt (30 times), Lebanon (2 times), UAE (2 times), Qatar (2 times), Portugal (2 times), Finland (2 times), United Kingdom (3 times), Holland (3 times), Germany (4 times), Mexico (1 time), Argentina (3 times), Chile (1 time), Peru (1 time), Spain (1 time), and Brazil (1 time). Dr. Fayad is founder of seven online journals, NASA Red Team Review of QRAS and NSF-USA Research Delegations’ Workshops to Argentina and Chile, and four authoritative books, of which three are translated into different languages, such as Chinese; over five books are currently in progress. Dr. Fayad is filing for eight valuable and innovative patents and has developed over 800 stable software patterns. Dr. Fayad received an MS and a PhD in computer science from the University of Minnesota at Minneapolis. His research title was OO Software Engineering: Problems and Perspectives. He is the lead author of several classic works: Transition to OO Software Development, August 1998; Building Application Frameworks, September 1999; Implementing Application Frameworks, September 1999; Domain-Specific Application Frameworks, October 1999. Dr. Fayad’s books in progress include Stable Analysis Patterns, Stable Design Patterns, Unified Software Architectures, Service and Production Engines, Moviemaking: UML and Knowledge Map in Action, UML in Action, Unified Software Engine, and Knowledge Map: True Domain Analysis Approach.

    Huascar A. Sanchez is a PhD candidate in the University of California Santa Cruz’s Computer Science Department. His research interest includes software engineering, specifically source code curation, an approach to discovering, cleaning, and refining online code snippets upon which to build programs. Sanchez has an MS in software engineering from San Jose State University.

    Srikanth G. K. Hegde is a professional Internet security consultant and a freelance writer with a master’s degree to his credit. His areas of interest include Internet security, networking, social media marketing, antivirus software, adware, spyware removal and its management, Internet safety, network security policy, and broadband and Internet/security protocols. In addition, his domains of interest also include preparing articles, white papers, and status reports on diverse industries, businesses, global events, finance, and business management. Furthermore, he has published numerous articles on software patterns (analysis and design), pattern development, patterns composition, and knowledge maps, in association with Dr. Prof. M. E. Fayad. Srikanth is also an experienced freelance writer with more than 15 years of experience in writing books, articles, columns, critiques, and various other e-publications.

    Anshu Basia is a software engineer with extensive experience and management skills. Her specialization includes analyzing, designing, and developing complex enterprise solutions in agile environments. Anshu is highly proficient in Java, Spring, Struts, HTML, JavaScript, Rest Web services, SQL, and a multitude of other technologies used in modern applications. Currently, Anshu works for Quisk, a global technology company that partners with financial institutions and others to digitize cash and provide safe, simple, and secure financial services and cashless transactions for anyone with a mobile phone number. Prior to joining Quisk, Anshu worked as a software engineer at A2Z (subsidiary of Amazon.com) now known as Amazon Music. Anshu completed her second master’s in software engineering with focus on enterprise software technologies from San Jose State University, graduating with highest honors. Anshu’s first master’s degree is in computer applications from Banasthali Vidyapith, India.

    Ashka Vakil is an accomplished software engineer who specializes in building highly complex enterprise applications. Ashka has 8+ years of extensive experience in architecture, design, and agile development. Ashka is an expert in mobile application and cloud application development. Ashka is highly proficient in Java, HTML, JavaScript, web services, SQL, and a multitude of other technologies used in modern web applications. Currently, Ashka works for SAP, a German multinational software corporation that makes enterprise software to manage business operations and customer relations. As a senior software engineer, she is responsible for building custom enterprise-grade mobile applications for SAP customers. Prior to joining SAP, Ashka worked as a software engineer at Tata Consultancy Services, the largest India-based IT services company. Ashka holds a master’s degree in software engineering with focus on enterprise software technologies from San Jose State University, graduating with highest honors.