Tackling Complexity


Book Description

Our socio-economic systems continue to grow and evolve. We need to acknowledge that, consequently, our decisions often fail – they are ineffective and create unexpected side effects. The speed of execution is increasing constantly and markets and systems respond almost immediately, making decision-making challenging. There is little or no room for failure.This important new book analyses real world strategy and policy challenges, addressing the interconnectedness of the markets/systems we live in. It provides a step-by-step approach using systems thinking to solve complex problems in socio-political as well as business environment. It proposes a technique with which to better understand the problems and the context in which they arise, and tools to directly inform each step of the decision-making process. The book explores the main innovation that systemic thinking introduces – the emphasis on defining the problem creating system, which is made up of interacting parts, rather than prioritizing events that need immediate fixing.The case studies, examples and the approach proposed can be used to better understand reality and its complexity, and to integrate stakeholders for a better solution. Practically, it can be used to identify problems, analyse their boundaries, design interventions, forecast and measure their expected impacts, implement them and monitor and evaluate their success/failure. The book touches upon global issues related to policy making and strategic management, as well as issues related to sustainable development for both the public and private sector.




Domain-driven Design


Book Description

"Domain-Driven Design" incorporates numerous examples in Java-case studies taken from actual projects that illustrate the application of domain-driven design to real-world software development.




Dealing with Complexity


Book Description

Contents 11. 2. 2. Four Main Areas of Dispute 247 11. 2. 3. Summary . . . 248 11. 3. Making Sense of the Issues . . 248 11. 3. 1. Introduction . . . . 248 11. 3. 2. The Scientific Approach 248 11. 3. 3. Science and Matters of Society . 249 11. 3. 4. Summary . 251 11. 4. Tying It All Together . . . . 251 11. 4. 1. Introduction . . . . 251 11. 4. 2. A Unifying Framework 251 11. 4. 3. Critical Systems Thinking 253 11. 4. 4. Summary 254 11. 5. Conclusion 254 Questions . . . 255 REFERENCES . . . . . . . . . . . . . . . . . . . 257 INDEX . . . . . . . . . . . . . . . . . . . . . . 267 Chapter One SYSTEMS Origin and Evolution, Terms and Concepts 1. 1. INTRODUCTION We start this book with Theme A (see Figure P. I in the Preface), which aims to develop an essential and fundamental understanding of systems science. So, what is systems science? When asked to explain what systems science is all about, many systems scientists are confronted with a rather daunting task. The discipline tends to be presented and understood in a fragmented way and very few people hold an overview understanding of the subject matter, while also having sufficient in-depth competence in many and broad-ranging subject areas where the ideas are used. Indeed, it was precisely this difficulty that identified the need for a comprehensive well-documented account such as is presented here in Dealing with Complexity.




Dealing With Complexity in Development Evaluation


Book Description

Recognizing that complexity calls for innovative, conceptual, and methodological solutions, Dealing with Complexity in Development Evaluation by Michael Bamberger, Jos Vaessen, and Estelle Raimondo offers practical guidance to policymakers, managers, and evaluation practitioners on how to design and implement complexity-responsive evaluations that can be undertaken in the real world of time, budget, data, and political constraints. Introductory chapters present comprehensive, non-technical overviews of the most common evaluation tools and methodologies, and additional content addresses more cutting-edge material. The book also includes six case study chapters to illustrate examples of various evaluation contexts from around the world.




Domain Modeling Made Functional


Book Description

You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality. Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming - all the techniques you need will be introduced and explained. Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation---ensuring that the code and design never get out of sync. Encode business rules in the design so that you have "compile-time unit tests," and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and hexagonal architectures. Finally, create a functional domain model that works with traditional databases, NoSQL, and event stores, and safely expose your domain via a website or API. Solve real problems by focusing on real-world requirements for your software. What You Need: The code in this book is designed to be run interactively on Windows, Mac and Linux.You will need a recent version of F# (4.0 or greater), and the appropriate .NET runtime for your platform.Full installation instructions for all platforms at fsharp.org.




Domain-Driven Design Reference


Book Description

Domain-Driven Design (DDD) is an approach to software development for complex businesses and other domains. DDD tackles that complexity by focusing the team's attention on knowledge of the domain, picking apart the most tricky, intricate problems with models, and shaping the software around those models. Easier said than done! The techniques of DDD help us approach this systematically. This reference gives a quick and authoritative summary of the key concepts of DDD. It is not meant as a learning introduction to the subject. Eric Evans' original book and a handful of others explain DDD in depth from different perspectives. On the other hand, we often need to scan a topic quickly or get the gist of a particular pattern. That is the purpose of this reference. It is complementary to the more discursive books. The starting point of this text was a set of excerpts from the original book by Eric Evans, Domain-Driven-Design: Tackling Complexity in the Heart of Software, 2004 - in particular, the pattern summaries, which were placed in the Creative Commons by Evans and the publisher, Pearson Education. In this reference, those original summaries have been updated and expanded with new content. The practice and understanding of DDD has not stood still over the past decade, and Evans has taken this chance to document some important refinements. Some of the patterns and definitions have been edited or rewritten by Evans to clarify the original intent. Three patterns have been added, describing concepts whose usefulness and importance has emerged in the intervening years. Also, the sequence and grouping of the topics has been changed significantly to better emphasize the core principles. This is an up-to-date, quick reference to DDD.




Hands-On Domain-Driven Design with .NET Core


Book Description

Solve complex business problems by understanding users better, finding the right problem to solve, and building lean event-driven systems to give your customers what they really want Key FeaturesApply DDD principles using modern tools such as EventStorming, Event Sourcing, and CQRSLearn how DDD applies directly to various architectural styles such as REST, reactive systems, and microservicesEmpower teams to work flexibly with improved services and decoupled interactionsBook Description Developers across the world are rapidly adopting DDD principles to deliver powerful results when writing software that deals with complex business requirements. This book will guide you in involving business stakeholders when choosing the software you are planning to build for them. By figuring out the temporal nature of behavior-driven domain models, you will be able to build leaner, more agile, and modular systems. You'll begin by uncovering domain complexity and learn how to capture the behavioral aspects of the domain language. You will then learn about EventStorming and advance to creating a new project in .NET Core 2.1; you'll also and write some code to transfer your events from sticky notes to C#. The book will show you how to use aggregates to handle commands and produce events. As you progress, you'll get to grips with Bounded Contexts, Context Map, Event Sourcing, and CQRS. After translating domain models into executable C# code, you will create a frontend for your application using Vue.js. In addition to this, you'll learn how to refactor your code and cover event versioning and migration essentials. By the end of this DDD book, you will have gained the confidence to implement the DDD approach in your organization and be able to explore new techniques that complement what you've learned from the book. What you will learnDiscover and resolve domain complexity together with business stakeholdersAvoid common pitfalls when creating the domain modelStudy the concept of Bounded Context and aggregateDesign and build temporal models based on behavior and not only dataExplore benefits and drawbacks of Event SourcingGet acquainted with CQRS and to-the-point read models with projectionsPractice building one-way flow UI with Vue.jsUnderstand how a task-based UI conforms to DDD principlesWho this book is for This book is for .NET developers who have an intermediate level understanding of C#, and for those who seek to deliver value, not just write code. Intermediate level of competence in JavaScript will be helpful to follow the UI chapters.




The Art of Interconnected Thinking


Book Description

"Structural unemployment, alarming changes in the environment, periodical signs of an imminent Stock Exchange crash, involvement in armed conflicts: we are faced with an increasingly complex world and the inadequacy of conventional ways of thinking is becoming progressively more evident. Although perfectly planned in itself, the consequences of any intervention to the intricate fabric can have fatal repercussions: feedbacks, time delays and delayed after-effects."--Back cover.




Lean for the Process Industries


Book Description

Drawing on 40 years of application experience at one of the world's largest chemical and materials manufacturers, King provides the first comprehensive resource written explicitly for change agents within the process industries.




Tackling Complexity


Book Description