The Cognitive Dynamics of Computer Science represents the culmination of more than thirty years of the author′s hands–on experience in software development, which has resulted in a remarkable and sensible philosophy and practice of software development. It provides a groundbreaking ontology of computer science, while describing the processes, methodologies, and constructs needed to build high–quality, large–scale computer software systems on schedule and on budget.
Based on his own experience in developing successful, low–cost software projects, the author makes a persuasive argument for developers to understand the philosophical underpinnings of software. He asserts that software in reality is an abstraction of the human thought system. The author draws from the seminal works of the great German philosophers Kant, Hegel, and Schopenhauer and recasts their theories of human mind and thought to create a unifying theory of computer science, cognitive dynamics, that opens the door to the next generation of computer science and forms the basic architecture for total autonomy.
- Four detailed cases studies effectively demonstrate how philosophy and practice merge to meet the objective of high–quality, low–cost software.
- The Autonomous Cognitive System chapter sets forth a model for a completely autonomous computer system, using the human thought system as the model for functional architecture and the human thought process as the model for the functional data process.
- Although rooted in philosophy, this book is practical, addressing all the key areas that software professionals need to master in order to remain competitive and minimize costs, such as leadership, management, communication, and organization.
This thought–provoking work will change the way students and professionals in computer science and software development conceptualize and perform their work. It provides them with both a philosophy and a set of practical tools to produce high–quality, low–cost software.
Chapter 1. Introduction.
1.1 The Retention of Software Jobs.
1.2 Depth of Experience.
1.3 The Scope of This Book.
1.4 The Nature of Computer Science.
1.5 The Future of Computer Science.
1.6 The Essence of Philosophy.
1.7 Why Autonomy?
1.8 An Architecture for Autonomy.
1.9 Other Notes.
Chapter 2. Prologue.
2.1 How This Book Originated.
2.2 The Importance of Management.
2.3 The Tie–in with Autonomy.
2.4 Major Themes of This Book.
2.5 The Challenge of a New Idea.
2.6 The Importance of Visualization.
2.7 The Move Toward Autonomy.
2.8 Why I Wrote This Book.
2.9 Merging Theory and Practice.
2.10 The Pace of Computer Science.
2.11 The Importance of Cognitive Dynamics.
Chapter 3. The Philosophical Foundations of Computer Software Design.
3.1 The Philosophical Origins of Computer Science.
3.2 Influence of the Cognitive Philosophers.
3.3 Abstracting the Human Thought System.
3.4 The Philosophical Foundations of Software Development.
3.5 The Phenomenon of Reality.
3.6 The Phenomenon of Subjectivity.
3.7 Low–Cost Software Development.
3.8 "On Budget and On Schedule."
3.9 The Time to Completion: Schedule.
3.10 Philosophy and Successful Design.
Chapter 4. The Philosophical Imperatives of Architectural Design.
4.1 The Manager as Architect.
4.2 The Manager as Teacher.
4.3 The Manager as Social Worker.
4.4 The Manager as Axman.
4.5 The Philosophical Imperatives of Architectural Design.
4.6 Availability of the Manager.
4.7 Project Manager: 10 Key Attributes and Responsibilities.
4.8 Philosophical Aspects of Engineering.
4.9 The Importance of Finishing the Job.
4.10 Visualizing an Architecture.
4.11 The Role of Intuition in Design.
4.12 Sufficient Reality and Inference in the Design Process.
4.13 Dialectics in the Achievement of Sufficient Reality.
4.14 The Relationship of Logic to Software Architectures.
4.15 The Logic of the Systems Design.
Chapter 5. Project and Task Organization.
5.1 The Role of Organization.
5.2 The Ability to Organize.
5.3 The Difficulty of Communication.
5.4 The Title of "Manager."
5.5 The Flat, Nonhierarchical Organization.
5.6 Projects, Tasks, and Work Units.
5.7 Large Organizations and Staffing.
5.8 Staffing Up: The Initial Team.
5.9 Balancing Hardware and Software.
5.10 Incremental Deliveries.
5.11 Functional Organization.
5.12 Interface Protocols of the Organization.
5.13 Completion of the Task.
5.14 Detecting the "Fraud."
Chapter 6. The Philosophy of Communication.
6.1 "Sanity Is an Achievement!"
6.2 Gauging Understanding.
6.3 Internal Team Communication Protocols.
6.4 External Team Communication Protocols.
6.5 Technical English as the Medium.
6.6 Engineers as Technical Writers.
6.7 Documentation: Articulation of the Requirements and Design.
6.8 The SRD: Software Requirements Document.
Chapter 7. Software Management Standards.
7.1 Three Good Standards.
7.2 Aspects Addressed by a Standard.
7.3 Preparing to Select the Standard.
7.4 Standards for Implementation.
Chapter 8. The Estimation of Software Cost.
8.1 Sponsor Costing Issues.
8.2 Types of Cost Estimates.
8.3 Lines of Code Metrics.
8.4 The Major Work Areas, Functions, and Tasks that Must be Included in the Estimation of Cost.
8.5 The Detailed Cost Estimate.
8.6 The SRD as a Contract.
Chapter 9. The Exercise of Project Control.
9.1 The Functions of Project Control and Oversight.
9.2 The Requirements Phase.
9.3 Contents of the Software Requirements Document.
9.4 The Design Phase.
9.5 The Implementation Phase.
9.6 The Test and Integration Phase.
9.7 Personnel Issues.
9.8 The Hacker and Other Personalities.
9.9 The Buck Stops at the Top.
9.10 How People Think, Pay Attention, and Remember.
Chapter 10. The Development Process Methodology.
10.1 The "Design Hub" as Implementation Tool.
10.2 The Architecture Definition Process.
10.3 The Use of Large–Scale Representations.
10.4 Design Team Meetings.
10.5 Rapid Development versus Prototyping.
10.6 The Traditional Development Methodology.
10.7 Action Items, Change Requests, and Software Discrepancy Reports.
10.8 Resolving Problems and Impasses.
Chapter 11. The Development of System Architectures.
11.1 Pushing the Architecture.
11.2 The Point of "Acceptable Reality."
11.3 The Importance and Imperative of Visualizing Phenomena.
11.4 Traditional Architectures.
11.5 The Inferred Architecture.
11.6 The Redesign or Upgrading of Existing Systems.
11.7 The Approach to New Systems.
Chapter 12. The Impact of Leadership on Software Development.
12.1 Recognizing Good Leadership.
12.2 The Concepts of Management and Leadership.
12.3 Rewarding Failure.
12.4 The Leader s Subordinate.
12.5 Indications of Poor Leadership.
12.6 Leadership and Ethics.
12.7 The Attributes of Leadership.
12.8 The Ramifications of Failure.
12.9 The Absence of Leadership.
12.10 The Basis in Leadership for Failure.
12.11 The impact of Poor or Nonexistent Leadership.
Chapter 13. Management of Software Systems Development.
13.1 Self–Respect in the Manager.
13.2 The Ethical Workplace.
13.3 Narcotics Use in the Workforce.
13.4 Spotting Narcotics Addicts.
13.5 Courage and Dynamic Energy in Management.
13.6 The Traveling Manager.
13.7 The Manager as Architect.
13.8 The Phenomenon of Decision Making.
13.9 The Concept of "Ability."
13.10 Manager: Administrator or Leader?
13.11 Authority, Responsibility, and Accountability.
13.12 The Issue of Contempt.
13.13 Management: The Fulcrum of Project Execution.
13.14 The Ascendance of Mediocrity.
13.15 The Pitfalls of Staffing Up.
13.16 Salary Issues.
13.17 Contracting Out Work.
13.18 Evaluating Proposals.
13.19 Cost Bidding too Early.
Chapter 14: Four Case Studies of Low–Cost Systems.
14.1 Case Study One: The Joint Theater Level Simulation (JTLS).
14.2 Case Study Two: The Global Decision Support System (GDSS).
14.3 Case Study Three: The Topex TCCS System.
14.4 Case Study Four: The Jason 1 TCCS System (JTCCS).
Chapter 15. Operations, Operators, and Users: Their Impact on Cost.
15.1 The Operational Requirement.
15.2 The Lack of an Operational Requirement.
15.3 The Operations Scenario.
15.4 The Cost of Operators and Analysts.
15.5 The Voyager Project Operations Center.
15.6 War Gaming.
15.7 The Value of Simulation.
15.8 Funds: A Perspective.
Chapter 16. The Autonomous Cognitive System.
16.2 The Scale of Autonomy.
16.3 "I Will, Because I Can."
16.4 Toward Cognitive Dynamics.
16.5 Building an Autonomous System.
16.6 An Appropriate Model.
16.7 System–Level Requirements for Autonomy.
16.8 Architectural Domains for Autonomy.
16.9 In Summary.
The Science of Computer Science.
The Professional Software Manager.
Cognitive Philosophy in a Modern Technical Context.
Cognitive Dynamics is the Unifying Theory.
The Issue of Software Cost.
The Paradigm Shift of Cognitive Dynamics.
Glossary of Acronyms.