Software Patterns, Knowledge Maps, and Domain Analysis: 1st Edition (Paperback) book cover

Software Patterns, Knowledge Maps, and Domain Analysis

1st Edition

By Mohamed E. Fayad, Huascar A. Sanchez, Srikanth G.K. Hegde, Anshu Basia, Ashka Vakil

Auerbach Publications

448 pages | 100 B/W Illus.

Purchasing Options:$ = USD
Paperback: 9781138033733
pub: 2017-10-12
$61.95
x
Hardback: 9781466571433
pub: 2014-12-04
$165.00
x
eBook (VitalSource) : 9780429101878
pub: 2014-12-04
from $30.00


FREE Standard Shipping!

Description

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.

Table of Contents

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

About the Authors

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.

Subject Categories

BISAC Subject Codes/Headings:
COM051230
COMPUTERS / Software Development & Engineering / General
TEC009000
TECHNOLOGY & ENGINEERING / Engineering (General)