Could I help you?
Software Patterns, Knowledge Maps, and Domain AnalysisBy Mohamed E. Fayad View larger

Software Patterns, Knowledge Maps, and Domain AnalysisBy Mohamed E. Fayad

M00002147

New product

ISBN 9781138033733
Published October 12, 2017 by Auerbach Publications
448 Pages 100 B/W Illustrations

More details

In stock

$42.99

More info

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

...
View More
View Less

Author(s)

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.

Related Subjects
Software Engineering & Systems Development Software Engineering & Systems Development Systems Science & Engineering Systems & Control Engineering