Ila and I are delighted to announce our new book, “Secrets of Analysis”, is now available:
Get it free on Kindle Unlimited or Kindle Lending Library!
About the book
The book is 535 pages with many figures and UML models: Scroll down the page for the complete TOC!
Secrets of Analysis is a very special book that has been many years in gestation. This isn’t really surprising since we have tried to distill as much of our experience in OOA into the book as possible.
We have been working for over 30 years on OO systems, from Enterprise models to embedded systems, and have gained a wealth of experience that we have tried to capture in Secrets. Secrets is precisely the sort of book I wish I could have bought all those years ago when I first began to do OO software development because it would have been invaluable throughout my whole career!
As is often the case, we didn’t start out trying to write Secrets. We started by trying to write a book containing a really complete and detailed worked example of OOA to complement our other modeling books (in particular “UML 2 and the Unified Process”). It happens that we achieved that goal, but we also achieved much, much more.
As we began to create the worked example, we became very aware that we were using specific thought processes and techniques that had been hard learned, and sometimes invented, by us over many years of OO software engineering. As far as we could tell, these thought processes and techniques had nowhere been made explicit. In fact, until we had the leisure to work on these examples, relatively free of time constraints, we had not even been consciously aware that we were using them. This is why we call them "secrets".
OOA books, such our best selling, "UML 2 and the Unified Process", tell the novice what to do when, and are highly valuable and relevant. In fact, they are an essential prerequisite for a book such as Secrets. However, such books rarely (if ever) cover the how of OOA, and of OO software engineering in general, that experienced modelers apply intuitively and unconsciously to get great results.
After many years teaching OOA and OO programming we observe again and again that beginners to analysis and design, even if told exactly what to do and when to do it, generally don’t get the same quality of results as experienced analysts. Something is missing - the how that only the experts have. Thus a larger idea for this book was born.
Being modelers, we decided to try to model what we, as experienced analyst/designers, do and how we do it. Fortunately, Jim has considerable experience in Neuro Linguistic Programming, and hypnotic patterns of communication, so we had the toolset to create our models. The models were revelatory, and in fact, based on them, we created a new approach to OOA called Generative Analysis that is firmly rooted in tried and tested techniques. Generative Analysis is "generative" because the focus is on generating information and "analytical" in terms of analytical thought processes, as well as in terms of OOA. GA is all about how you capture information and how you transform information into new, more specific forms of information that take you ever-nearer to your target, which is a UML model.
Our goal in Secrets to impart as much of our knowledge and experience in OOA as we can, in as efficient and entertaining a way as we can. I mean come on - where else are you going to read about OOA, UML, NLP, information theory, semiotics, General Semantics, advanced modeling techniques, meta programming, deprogramming, hypnotic language, Lovecraftian horror etc. etc. between two covers? We dare you to read “the appendix they wouldn’t publish”!
In summary, this book is very different to other books on OOA because (as far as we know) it is the first to explicitly present the how, the inner processes you go through in order to get the results you need. One of our early reviewers called this book revolutionary because it can revolutionize how you approach software engineering and how you think about software. Is it? You tell us…Anyway, enough blurb - here is the TOC:
- Secrets of Analysis Table of Contents
- Preface
- P.1 About this book
- P.2 Generative Analysis
- P.3 Why this book is different
- P.4 About the website
- P.5 Who should read this book
- P.6 How to read this book
- P.7 Miskatonic University - the Lovecraft connection
- P.8 OLAS
- P.9 But is it science?
- P.10 The appendix
- P.11 Learning features of the book
- P.12 Secrets of Analysis training course
- P.13 But you don’t cover …
- P.14 Finally…
- Chapter 1: Key Principles
- 1.1 Communication and NLP
- 1.2 Modelling - the map is not the territory
- 1.3 Sanity, insanity and un-sanity
- 1.4 Knowledge
- 1.5 Abstraction
- 1.6 Levels of abstraction
- 1.7 An example of abstraction
- 1.8 Abstraction in software engineering
- 1.9 Abstract and concrete concepts, and filtering
- 1.10 Collaborative maps
- 1.11 Modeling in software engineering
- 1.12 Software sanity and convergence
- 1.13 Convergent engineering
- 1.14 Principles of software sanity
- 1.15 Test your models against reality
- 1.16 Summary
- Chapter 2: Launching the example project
- 2.1 OLAS - the problem domain
- 2.2 Software engineering processes
- 2.3 The Unified Process (UP)
- 2.4 Characteristics of a UP project
- 2.5 Iterative and incremental development
- 2.6 UP structure
- 2.7 UP workflows
- 2.8 UP phases
- 2.9 The inception phase
- 2.10 The elaboration phase
- 2.11 The construction phase
- 2.12 The transition phase
- 2.13 The OLAS inception phase
- 2.14 The OLAS Vision Statement
- 2.15 No chrome
- 2.16 Summary
- Chapter 3: Generative Analysis
- 3.1 Generative Analysis
- 3.2 Why “Generative Analysis”?
- 3.3 Where analysis begins
- 3.4 Capturing informal, unstructured information
- 3.5 Mind mapping
- 3.6 Mind mapping process
- 3.7 Applying mind mapping
- 3.8 Concept mapping
- 3.9 Applying concept mapping
- 3.10 Covert OO analysis
- 3.11 Structural propositions
- 3.12 Behavioural propositions
- 3.13 Compendium
- 3.14 Dialogue mapping
- 3.15 Dialogue mapping by example
- 3.16 Patterns and anti-patterns in meetings
- 3.17 Dialogue map for “What should OLAS do?”
- 3.18 Structured writing
- 3.19 Structured documents
- 3.20 Principles for structuring information
- 3.21 10 Cs of business writing
- 3.22 Seven types of information
- 3.23 Structured writing example
- 3.24 Complexity vs. profundity?
- 3.25 Summary
- Chapter 4: OLAS Elaboration
- 4.1 Introduction
- 4.2 Concept mapping OLAS
- 4.3 What is a first-cut logical architecture?
- 4.4 How to model architecture in UML
- 4.5 How to find subsystems
- 4.6 OLAS logical architecture
- 4.7 Validating your first-cut logical architecture
- 4.8 Summary
- Chapter 5: Communication
- 5.1 Communication is the key
- 5.2 What is communication?
- 5.3 Flexibility is the key to excellent communication
- 5.4 Semiotics and the structure of meaning
- 5.5 Ontology
- 5.6 The importance of ontology in OOA
- 5.7 Reasons for lack of an ontology
- 5.8 Metaphor
- 5.9 Use and abuse of metaphor in software engineering
- 5.10 The structure of communication
- 5.11 Communication in information theory
- 5.12 The NLP communication model
- 5.13 Deletion, distortion and generalization
- 5.14 The GA communication model
- 5.15 Cognitive dissonance
- 5.16 Cognitive dissonance in OOAD
- 5.17 Summary
- Chapter 6: NLP communication strategies
- 6.1 Communication skills and OOA
- 6.2 Representational systems
- 6.3 Body language
- 6.4 Eye accessing cues
- 6.5 Predicates
- 6.6 Sensory sub-modalities
- 6.7 Association
- 6.8 VAK sub-modalities in detail
- 6.9 Visual
- 6.10 Auditory
- 6.11 Kinesthetic
- 6.12 Rapport
- 6.13 Pacing - establishing rapport
- 6.14 Leading - using rapport
- 6.15 Is pacing and leading manipulative?
- 6.16 Spells for rapport
- 6.17 Using rapport and representational systems in OOA
- 6.18 Becoming a better UML modeller
- 6.19 Summary
- Chapter 7: M++
- 7.1 Introduction
- 7.2 The NLP Meta Model and M++
- 7.3 The M++ pattern template
- 7.4 Deletion
- 7.5 Simple deletion
- 7.6 Unspecified referential index
- 7.7 Comparative deletion
- 7.8 Unspecified verbs
- 7.9 Unspecified quantifier ++
- 7.10 Unspecified temporal quantifier ++
- 7.11 Generalization
- 7.12 Lost performatives
- 7.13 Modal operators
- 7.14 Universal quantifiers
- 7.15 Ambiguous existential quantifier ++
- 7.16 Ambiguous indefinite article ++
- 7.17 Multidimensional terms ++
- 7.18 Distortion
- 7.19 Cause-effect
- 7.20 Complex equivalence
- 7.21 Mind reading
- 7.22 Nominalization
- 7.23 Propositional functions ++
- 7.24 Presuppositions
- 7.25 Using M++ in OOA
- 7.26 Key points for applying M++
- 7.27 The precision model
- 7.28 Summary
- Chapter 8: Interviewing for information
- 8.1 Introduction
- 8.2 Cultural differences
- 8.3 Interviewing for information
- 8.4 Attitudes to communication
- 8.5 Delayed evaluation
- 8.6 Beginner’s mind
- 8.7 Interview mechanics
- 8.8 Planning the interview
- 8.9 Setting goals and identifying benefits
- 8.10 Finding the right interviewee
- 8.11 Setting the time and place
- 8.12 Performing the interview
- 8.13 Beginning the interview
- 8.14 Collecting information
- 8.15 Using open and closed questions
- 8.16 Ending the interview
- 8.17 Following up after the interview
- 8.18 Difficult people
- 8.19 Summary
- Chapter 9: Literate Modeling
- 9.1 Introduction
- 9.2 Limitations of UML models as conveyors of meaning
- 9.3 Comprehensibility and accessibility of UML models
- 9.4 Trivialization of requirements in UML models
- 9.5 Lack of narrative structure in UML models
- 9.6 The solution - Literate Modeling
- 9.7 Creating a Business Context Document (BCD)
- 9.8 Understand your audience
- 9.9 Unified language
- 9.10 Establishing the feedback mechanism
- 9.11 Structure of the BCD
- 9.12 Literate modeling by example
- 9.13 Summary
- Chapter 10: Processing information in GA
- 10.1 Introduction
- 10.2 Compliance to standards
- 10.3 Model overview
- 10.4 Processing information in GA
- 10.5 Classify the information
- 10.6 GA information types metamodel
- 10.7 Information
- 10.8 Resource
- 10.9 Question
- 10.10 Using questions in GA
- 10.11 Using questions for deprogramming
- 10.12 Proposition
- 10.13 Four-valued logic
- 10.14 Including the excluded middle
- 10.15 The status is based on the evidence
- 10.16 Writing good propositions
- 10.17 Proposition lifecycle
- 10.18 Finding propositions
- 10.19 Example: Analyzing a propositions
- 10.20 Idea
- 10.21 Requirement
- 10.22 Writing requirements
- 10.23 requirementTypes
- 10.24 Requirement classification
- 10.25 Classifying Functional Requirements
- 10.26 Classifying NonFunctional Requirements
- 10.27 Term
- 10.28 Defining Terms
- 10.29 Summary
- Chapter 11: GA in practice
- 11.1 Introduction
- 11.2 How to perform GA
- 11.3 Identifying Information types
- 11.4 Semantic highlighting
- 11.5 Finding Resources
- 11.6 Finding Terms
- 11.7 Mind mapping and dialogue mapping in GA
- 11.8 Line-by-line GA of the OLAS Vision Statement
- 11.9 Publishing you GA results
- 11.10 Controlling the GA activity
- 11.11 How do you know when to stop?
- 11.12 What is the lifecycle in information in GA?
- 11.13 Summary
- Chapter 12: Use case modeling OLAS
- 12.1 Introduction
- 12.2 The first-cut use case model
- 12.3 Avoiding analysis paralysis
- 12.4 How to produce the first-cut use case model
- 12.5 Step 1 - identify the subject
- 12.6 Step 2 - identify the actors
- 12.7 Identifying actors from the OLAS Vision Statement
- 12.8 Identifying actors from the “people” perspective
- 12.9 Identifying actors from the “things” perspective
- 12.10 Identifying actors from the perspective of “other systems”
- 12.11 Specify the actors
- 12.12 Step 3 - identify the use cases
- 12.13 The first-cut use case model
- 12.14 The restricted catalog
- 12.15 Security
- 12.16 Patterns in use case modeling
- 12.17 The CRUD use case pattern
- 12.18 Structuring the use case model
- 12.19 The homonym problem
- 12.20 Librarian - its meanings in OLAS
- 12.21 Addressing the homonym problem
- 12.22 Common mistakes in use case modeling
- 12.23 Next steps in the analysis
- 12.24 Summary
- Chapter 13: Administration subsystem
- 13.1 Introduction
- 13.2 Elaborating the Administration subsystem
- 13.3 Writing CRUD use cases
- 13.4 Administration - Create
- 13.5 OLAS user class modeling
- 13.6 Generalization vs. aggregation
- 13.7 LibraryUser permissions - a multidimensional term
- 13.8 Multidimensional analysis
- 13.9 Multidimensional terms and business rules
- 13.10 Transition rules and contradictions
- 13.11 Multidimensional terms and UML state machines
- 13.12 Multidimensional analysis of SecurityRole
- 13.13 Modeling permissions
- 13.14 Security permissions
- 13.15 Borrowing permissions
- 13.16 Combining the two sets of roles
- 13.17 A UML model for roles and permissions
- 13.18 CreateLibraryUser use case specification
- 13.19 Administration - Read
- 13.20 Find then operate pattern
- 13.21 Find then operate: Indirect operation
- 13.22 Find then operate: Direct operation
- 13.23 Find then operate: Indirect and direct operation
- 13.24 Find then operate: Multiselect direct operation
- 13.25 Find then operate: Multiselect indirect operation
- 13.26 Find then operate: Multiselect indirect and direct operation
- 13.27 Choosing an interaction pattern for OLAS
- 13.28 FindLibraryUser use case specification
- 13.29 ViewLibraryUser use case specification
- 13.30 The Update use cases
- 13.31 EditLibraryUser use case specification
- 13.32 Updating the securityRole
- 13.33 Administration - Delete
- 13.34 DeleteLibraryUser use case specification
- 13.35 Administration use cases wrap up
- 13.36 Use case realization for the Administration use cases
- 13.37 Assigning responsibilities to classes
- 13.38 Use case realization - create and delete
- 13.39 Use case realization - update
- 13.40 Administration wrap up
- 13.41 Summary
- Chapter 14: Security subsystem
- 14.1 Introduction
- 14.2 OLAS security policy
- 14.3 LogOn use case specification
- 14.4 Transforming an activity diagram into use cases
- 14.5 FreezeAccount use case specification
- 14.6 UnfreezeAccount use case specification
- 14.7 LogOff use case specification
- 14.8 Use case realization for the Security subsystem
- 14.9 Assigning responsibilities to classes
- 14.10 Creating sequence diagrams
- 14.11 Updated case diagram
- 14.12 Summary
- Chapter 15: Catalog subsystem
- 15.1 Introduction
- 15.2 The Normal and Restricted Collections
- 15.3 Modeling the Normal and Restricted Catalogs
- 15.4 The contents of the Orne Library
- 15.5 What do catalog cards represent?
- 15.6 The Type/Instance pattern
- 15.7 What’s the best way to model OLAS catalogs?
- 15.8 Instantiating the Type/Instance: Elements similar pleomorph
- 15.9 The NormalCatalog use cases
- 15.10 NormalCatalog - Create
- 15.11 Use case realization for AddTitle
- 15.12 NormalCatalog - Read, Update, Delete
- 15.13 FindNormalTitle use case
- 15.14 EditNormalTitle use case
- 15.15 DeleteNormalTitle use case
- 15.16 NormalCatalog use cases wrap-up
- 15.17 Summary
- Chapter 16: RestrictedCatalog use cases
- 16.1 Reuse with modification
- 16.2 The RestrictedCatalog use case model
- 16.3 AddRestrictedTitle use case
- 16.4 FindRestrictedTitle use case
- 16.5 DeleteRestrictedTitle use case
- 16.6 Summary
- Chapter 17: Loan subsystem
- 17.1 The Loan subsystem
- 17.2 The Loan subsystem CRUD analysis
- 17.3 What is a loan?
- 17.4 Create Loan use case
- 17.5 Walkthrough of the Loan business process
- 17.6 State machines for the Loan subsystem
- 17.7 The Loan state machine
- 17.8 CatalogItem state machine
- 17.9 Read Loan use cases
- 17.10 Fines
- 17.11 Fine class modeling
- 17.12 Recording object history
- 17.13 Dynamic modeling of Fines
- 17.14 Fine state machine
- 17.15 LibraryUser state machine
- 17.16 CRUD - update
- 17.17 CRUD - delete
- 17.18 Library vacations
- 17.19 Static model for vacations
- 17.20 Use case model for Vacations
- 17.21 Summary
- Chapter 18: The Innsmouth interface
- 18.1 A little bit of design
- 18.2 Exchanging catalogs
- 18.3 What does “exchange catalog information” really mean?
- 18.4 What does “catalog information” mean?
- 18.5 How should the catalog sharing be handled in OLAS?
- 18.6 Updating the InnsmouthInterface use case model
- 18.7 Getting the Gilman Catalog
- 18.8 GetGilmanCatalog use case specification
- 18.9 Staging the Gilman Catalog
- 18.10 Staging the restrictedCatalog for innsmouth Public Library
- 18.11 XML schema for restrictedCatalog
- 18.12 GetOrneRestrictedCatalog use case
- 18.13 Summary
- Appendix: Meta Magic
- 19.1 Hypnotic patterns of communication
- 19.2 Learning objectives
- 19.3 Trance and hypnosis
- 19.4 Trance and business communication
- 19.5 Your unconscious
- 19.6 The elephant in the room
- 19.7 Programming your unconscious mind for fun and profit
- 19.8 The Milton Model
- 19.9 Tag questions
- 19.10 Pacing current experience
- 19.11 Double binds
- 19.12 Conversational postulate
- 19.13 Extended quotes
- 19.14 Selectional restriction violation
- 19.15 Phonological ambiguities
- 19.16 Syntactic ambiguity
- 19.17 Scope ambiguity
- 19.18 Punctuation ambiguity
- 19.19 Utilization
- 19.20 Embedded commands
- 19.21 Analogical marking
- 19.22 Linkage language
- 19.23 Milton model example
- 19.24 Summary
- Chapter 20: Bibliography