Software Engineering Books
O'Reilly Media Designing DataIntensive Applications
Book SynopsisIn this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data.
£38.39
O'Reilly Media User Story Mapping
Book SynopsisUser story mapping is a valuable tool for software development, once you understand why and how to use it. This insightful book examines how this often misunderstood technique can help your team stay focused on users and their needs without getting lost in the enthusiasm for individual product features
£23.99
Manning Publications 100 Go Mistakes
Book Synopsis100 Go Mistakes: How to Avoid Them introduces dozens of techniques for writing idiomatic, expressive, and efficient Go code that avoids common pitfalls. By reviewing dozens of interesting, readable examples and real-world case studies, you'll explore mistakes that even experienced Go programmers make. This book is focused on pure Go code, with standards you can apply to any kind of project. As you go, you'll navigate the tricky bits of handling JSON data and HTTP services, discover best practices for Go code organization, and learn how to use slices efficiently. Your code speed and quality will enjoy a huge boost when you improve your concurrency skills, deal with error management idiomatically, and increase the quality of your tests. About the Technology Go is simple to learn, yet hard to master. Even experienced Go developers may end up introducing bugs and inefficiencies into their code. This book accelerates your understanding of Go's quirks, helping you correct mistakes and dodge pitfalls on your path to Go mastery.Trade Review"This book is one any Golang developer will want on their bookshelf. Far from being dogmatic or prescriptive, it often provides multiple solutions to the reader, leaving some room for flexibility and individual taste." Thad Meyer "Goes beyond the basics with lots of good examples for when concepts are tough to grasp. As someone who's been coding Go for about 2 years, I learned new things." Matt Welke "This book felt catered to me. I'm not a developer by career path, however it provides a LOT of insight into what I should be thinking about as someone without any education or formal training in Software Development. Really, really nice." Francis J. Setash "This book not only points out common mistakes and anti-patterns, it provides solutions—a perfect combination for deeper learning." Kevin Liao "Read this, it'll give you years of experience of Go just learning from the book. Very valuable!" Keith Kim
£34.19
Manning Publications Deep Learning with Python
Book Synopsis"The first edition of Deep Learning with Python is one of the best books on the subject. The second edition made it even better." - Todd Cook The bestseller revised! Deep Learning with Python, Second Edition is a comprehensive introduction to the field of deep learning using Python and the powerful Keras library. Written by Google AI researcher François Chollet, the creator of Keras, this revised edition has been updated with new chapters, new tools, and cutting-edge techniques drawn from the latest research. You'll build your understanding through practical examples and intuitive explanations that make the complexities of deep learning accessible and understandable. about the technologyMachine learning has made remarkable progress in recent years. We've gone from near-unusable speech recognition, to near-human accuracy. From machines that couldn't beat a serious Go player, to defeating a world champion. Medical imaging diagnostics, weather forecasting, and natural language question answering have suddenly become tractable problems. Behind this progress is deep learning—a combination of engineering advances, best practices, and theory that enables a wealth of previously impossible smart applications across every industry sector about the bookDeep Learning with Python introduces the field of deep learning using the Python language and the powerful Keras library. You'll learn directly from the creator of Keras, François Chollet, building your understanding through intuitive explanations and practical examples. Updated from the original bestseller with over 50% new content, this second edition includes new chapters, cutting-edge innovations, and coverage of the very latest deep learning tools. You'll explore challenging concepts and practice with applications in computer vision, natural-language processing, and generative models. By the time you finish, you'll have the knowledge and hands-on skills to apply deep learning in your own projects. what's insideDeep learning from first principlesImage-classification, imagine segmentation, and object detectionDeep learning for natural language processingTimeseries forecastingNeural style transfer, text generation, and image generation about the readerReaders need intermediate Python skills. No previous experience with Keras, TensorFlow, or machine learning is required. about the authorFrançois Chollet works on deep learning at Google in Mountain View, CA. He is the creator of the Keras deep-learning library, as well as a contributor to the TensorFlow machine-learning framework. He also does AI research, with a focus on abstraction and reasoning. His papers have been published at major conferences in the field, including the Conference on Computer Vision and Pattern Recognition (CVPR), the Conference and Workshop on Neural Information Processing Systems (NIPS), the International Conference on Learning Representations (ICLR), and others.Trade Review"The first edition of Deep Learning with Python is one of the best books on the subject. The second edition made it even better. " Todd Cook "Really easy to read and gives practical examples and easy to understand explanations of the concepts behind deep learning." Billy O'Callaghan "A tell-tale book that tells you all the secrets of deep learning!" Nikos Kanakaris "A great refresher of the old concepts explored in new and exciting ways. Manifold hypothesis steals the show!" Sayak Paul "One of the best books on this topic." Rauhsan Jha "The book is full of insights, useful both for the novice and the more experienced machine learning professional." Viton Vitanis "This is the book to read if you want to learn DL." Kjell Jansson "Francois explains everything in a very lucid & systematic manner, this approach of writing certainly gives confidence in users." Rauhsan Jha
£43.19
Pearson Education (US) Clean Architecture
Book SynopsisRobert C. Martin (Uncle Bob) has been a programmer since 1970. He is founder of Uncle Bob Consulting, LLC, and cofounder with his son Micah Martin of The Clean Coders LLC. Martin has published dozens of articles in various trade journals and is a regular speaker at international conferences and trade shows. He has authored and edited many books, including: Designing Object Oriented C++ Applications Using the Booch Method, Patterns Languages of Program Design 3, More C++ Gems, Extreme Programming in Practice, Agile Software Development: Principles, Patterns, and Practices, UML for Java Programmers, Clean Code, and The Clean Coder. A leader in the industry of software development, Martin served for three years as editor-in-chief of the C++ Report, and he served as the first chairman of the Agile Alliance.Table of Contents Foreword xv Preface xix Acknowledgments xxiii About the Author xxv Part I: Introduction 1 Chapter 1: What Is Design and Architecture? 3 The Goal? 4 Case Study 5 Conclusion 12 Chapter 2: A Tale of Two Values 13 Behavior 14 Architecture 14 The Greater Value 15 Eisenhower’s Matrix 16 Fight for the Architecture 18 Part II: Starting with the Bricks: Programming Paradigms 19 Chapter 3: Paradigm Overview 21 Structured Programming 22 Object-Oriented Programming 22 Functional Programming 22 Food for Thought 23 Conclusion 24 Chapter 4: Structured Programming 25 Proof 27 A Harmful Proclamation 28 Functional Decomposition 29 No Formal Proofs 30 Science to the Rescue 30 Tests 31 Conclusion 31 Chapter 5: Object-Oriented Programming 33 Encapsulation? 34 Inheritance? 37 Polymorphism? 40 Conclusion 47 Chapter 6: Functional Programming 49 Squares of Integers 50 Immutability and Architecture 52 Segregation of Mutability 52 Event Sourcing 54 Conclusion 56 Part III: Design Principles 57 Chapter 7: SRP: The Single Responsibility Principle 61 Symptom 1: Accidental Duplication 63 Symptom 2: Merges 65 Solutions 66 Conclusion 67 Chapter 8: OCP: The Open-Closed Principle 69 A Thought Experiment 70 Directional Control 74 Information Hiding 74 Conclusion 75 Chapter 9: LSP: The Liskov Substitution Principle 77 Guiding the Use of Inheritance 78 The Square/Rectangle Problem 79 LSP and Architecture 80 Example LSP Violation 80 Conclusion 82 Chapter 10: ISP: The Interface Segregation Principle 83 ISP and Language 85 ISP and Architecture 86 Conclusion 86 Chapter 11: DIP: The Dependency Inversion Principle 87 Stable Abstractions 88 Factories 89 Concrete Components 91 Conclusion 91 Part IV: Component Principles 93 Chapter 12: Components 95 A Brief History of Components 96 Relocatability 99 Linkers 100 Conclusion 102 Chapter 13: Component Cohesion 103 The Reuse/Release Equivalence Principle 104 The Common Closure Principle 105 The Common Reuse Principle 107 The Tension Diagram for Component Cohesion 108 Conclusion 110 Chapter 14: Component Coupling 111 The Acyclic Dependencies Principle 112 Top-Down Design 118 The Stable Dependencies Principle 120 The Stable Abstractions Principle 126 Conclusion 132 Part V: Architecture 133 Chapter 15: What Is Architecture? 135 Development 137 Deployment 138 Operation 138 Maintenance 139 Keeping Options Open 140 Device Independence 142 Junk Mail 144 Physical Addressing 145 Conclusion 146 Chapter 16: Independence 147 Use Cases 148 Operation 149 Development 149 Deployment 150 Leaving Options Open 150 Decoupling Layers 151 Decoupling Use Cases 152 Decoupling Mode 153 Independent Develop-ability 153 Independent Deployability 154 Duplication 154 Decoupling Modes (Again) 155 Conclusion 158 Chapter 17: Boundaries: Drawing Lines 159 A Couple of Sad Stories 160 FitNesse 163 Which Lines Do You Draw, and When Do You Draw Them? 165 What About Input and Output? 169 Plugin Architecture 170 The Plugin Argument 172 Conclusion 173 Chapter 18: Boundary Anatomy 175 Boundary Crossing 176 The Dreaded Monolith 176 Deployment Components 178 Threads 179 Local Processes 179 Services 180 Conclusion 181 Chapter 19: Policy and Level 183 Level 184 Conclusion 187 Chapter 20: Business Rules 189 Entities 190 Use Cases 191 Request and Response Models 193 Conclusion 194 Chapter 21: Screaming Architecture 195 The Theme of an Architecture 196 The Purpose of an Architecture 197 But What About the Web? 197 Frameworks Are Tools, Not Ways of Life 198 Testable Architectures 198 Conclusion 199 Chapter 22: The Clean Architecture 201 The Dependency Rule 203 A Typical Scenario 207 Conclusion 209 Chapter 23: Presenters and Humble Objects 211 The Humble Object Pattern 212 Presenters and Views 212 Testing and Architecture 213 Database Gateways 214 Data Mappers 214 Service Listeners 215 Conclusion 215 Chapter 24: Partial Boundaries 217 Skip the Last Step 218 One-Dimensional Boundaries 219 Facades 220 Conclusion 220 Chapter 25: Layers and Boundaries 221 Hunt the Wumpus 222 Clean Architecture? 223 Crossing the Streams 226 Splitting the Streams 227 Conclusion 228 Chapter 26: The Main Component 231 The Ultimate Detail 232 Conclusion 237 Chapter 27: Services: Great and Small 239 Service Architecture? 240 Service Benefits? 240 The Kitty Problem 242 Objects to the Rescue 244 Component-Based Services 245 Cross-Cutting Concerns 246 Conclusion 247 Chapter 28: The Test Boundary 249 Tests as System Components 250 Design for Testability 251 The Testing API 252 Conclusion 253 Chapter 29: Clean Embedded Architecture 255 App-titude Test 258 The Target-Hardware Bottleneck 261 Conclusion 273 Part VI: Details 275 Chapter 30: The Database Is a Detail 277 Relational Databases 278 Why Are Database Systems So Prevalent? 279 What If There Were No Disk? 280 Details 281 But What about Performance? 281 Anecdote 281 Conclusion 283 Chapter 31: The Web Is a Detail 285 The Endless Pendulum 286 The Upshot 288 Conclusion 289 Chapter 32: Frameworks Are Details 291 Framework Authors 292 Asymmetric Marriage 292 The Risks 293 The Solution 294 I Now Pronounce You … 295 Conclusion 295 Chapter 33: Case Study: Video Sales 297 The Product 298 Use Case Analysis 298 Component Architecture 300 Dependency Management 302 Conclusion 302 Chapter 34: The Missing Chapter 303 Package by Layer 304 Package by Feature 306 Ports and Adapters 308 Package by Component 310 The Devil Is in the Implementation Details 315 Organization versus Encapsulation 316 Other Decoupling Modes 319 Conclusion: The Missing Advice 321 Part VII: Appendix 323 Appendix A Architecture Archaeology 325 Index 375
£28.49
Pearson Education (US) Working Effectively with Legacy Code
Book SynopsisMICHAEL C. FEATHERS works for Object Mentor, Inc., one of the world's top providers of mentoring, skill development, knowledge transfer, and leadership services in software development. He currently provides worldwide training and mentoring in Test-Driven Development (TDD), Refactoring, OO Design, Java, C#, C++, and Extreme Programming (XP). Michael is the original author of CppUnit, a C++ port of the JUnit testing framework, and FitCpp, a C++ port of the FIT integrated-testing framework. A member of ACM and IEEE, he has chaired CodeFest at three OOPSLA conferences. Copyright Pearson Education. All rights reserved.Table of Contents I. THE MECHANICS OF CHANGE. 1. Changing Software. 2. Working with Feedback. 3. Sensing and Separation. 4. The Seam Model. 5. Tools. II. CHANGING SOFTWARE. 6. I Don’t Have Much Time and I Have To Change It. 7. It Takes Forever To Make a Change. 8. How Do I Add a Feature? 9. I Can’t Get This Class into a Test Harness. 10. I Can’t Run This Method into a Test Harness. 11. I Need to Make a Change. What Methods Should I Test? 12. I Need to Make Many Changes In One Area Do I Have To Break. 13. I Need To Make a Change but I Don’t Know What Tests To Write. 14. Dependencies on Libraries Are Killing Me. 15. My Application Is All API Calls. 16. I Don’t Understand the Code Well Enough To Change It. 17. My Application Has No Structure. 18. My Test Code Is in the Way. 19. My Project Is Not Object-Oriented. How Do I Make Safe Changes? 20. This Class Is Too Big and I Don’t Want It to Get Any Bigger. 21. I’m Changing The Same Code All Over the Place. 22. I Need To Change a Monster Method and I Can’t Write Tests for It. 23. How Do I Know That I’m Not Breaking Anything? 24. We Feel Overwhelmed. It Isn’t Going To Get Any Better. III. DEPENDENCY BREAKING TECHNIQUES. 25. Dependency Breaking Techniques. Appendix: Refactoring. Glossary.
£43.19
Manning Publications Spring in Action
Book Synopsis"To me, this has always been the defacto standard for documentation on the Spring Framework. I bought the 1st edition when it first came out as we were converting alegacy app to Spring and this book was essential in learning how the current version worked." - Tony Sweets A new edition of the classic bestseller! Spring in Action, 6th Edition covers all of the new features of Spring 5.3 and Spring Boot 2.4 along with examples of reactive programming, Spring Security for REST Services, and bringing reactivity to your databases. You'll also find the latest Spring best practices, including Spring Boot for application setup and configuration. about the technologySpring Framework makes life easier for Java developers. The latest version of Spring brings its productivity-focused approach to microservices, reactive development, and other modern application designs. With Spring Boot now fully integrated, you can start even complex projects with minimal configuration code. And in recent version of Spring, the new RSocket specification makes your application's networking symmetrical—perfect for reactive design. about the bookSpring in Action, 6th Edition guides you through Spring's core features explained in Craig Walls' famously clear style. You'll roll up your sleeves and build a secure database-backed web app step by step. Along the way, you'll explore reactive programming, microservices, service discovery, RESTful APIs, deployment, and expert best practices. The latest version of a bestseller upgraded for Spring 5.3 and Spring Boot 2.4, this new edition also covers the RSocket specification for reactive networking between applications and delves deep into essential features of Spring Security. Whether you're just discovering Spring or leveling up to Spring 5.3, this Manning classic is your ticket! what's insideBuilding reactive applicationsRelational and NoSQL databasesIntegrating via HTTP and REST-based services, and sand reactive RSocket servicesReactive programming techniquesDeploying applications to traditional servers and containersSecuring applications with Spring SecurityCovers Spring 5.2 about the authorCraig Walls is a principal software engineer at Pivotal, a member of the Spring engineering team, a popular author, and a frequent conference speaker.We interviewed Craig as a part of our Six Questions series. Check it out here.Trade Review"If you're really serious about Spring, the book should lie next to the keyboard and serve as a pillow at night." Christian Kreutzer-Beck "I've owned every version of the this book and it's still my go to for the core Spring framework. It still lives up to expectations." Tony Sweets "Great read whether you are a beginning Spring developer or an experienced developer seeking a technology upgrade." Becky Huett "Even if you've read an older edition and you think you know Spring, I guarantee you will not regret the purchase!" Conor Redmond "Spring in Action 6th Edition is a comprehensive manuscript packed dense with a wealth of extensive information and myriad of resources to help you get a solid grounding of the fundamental Spring concepts!" Iain Campbell
£43.19
Pearson Education (US) DomainDriven Design Distilled
Book SynopsisVaughn Vernon is a champion of simplifying software architecture and development, with an emphasis on reactive methods. He has a unique ability to teach and lead with Domain-Driven Design using lightweight tools to unveil unimagined value. He helps organizations achieve competitive advantages using enduring tools such as architectures, patterns, and approaches, and through partnerships between business stakeholders and software developers.Table of Contents Preface xiAcknowledgments xvAbout the Author xvii Chapter 1: DDD for Me 1 Will DDD Hurt? 2 Good, Bad, and Effective Design 3 Strategic Design 7 Tactical Design 8 The Learning Process and Refining Knowledge 9 Let’s Get Started! 10 Chapter 2: Strategic Design with Bounded Contexts and the Ubiquitous Language 11 Domain Experts and Business Drivers 17 Case Study 21 Fundamental Strategic Design Needed 25 Challenge and Unify 29 Developing a Ubiquitous Language 34 Architecture 41 Summary 44 Chapter 3: Strategic Design with Subdomains 45 What Is a Subdomain? 46 Types of Subdomains 46 Dealing with Complexity 47 Summary 50 Chapter 4: Strategic Design with Context Mapping 51 Kinds of Mappings 54 Making Good Use of Context Mapping 60 An Example in Context Mapping 70 Summary 73 Chapter 5: Tactical Design with Aggregates 75 Why Used 76 Aggregate Rules of Thumb 81 Modeling Aggregates 88 Summary 98 Chapter 6: Tactical Design with Domain Events 99 Designing, Implementing, and Using Domain Events 100 Event Sourcing 107 Summary 109 Chapter 7: Acceleration and Management Tools 111 Event Storming 112 Managing DDD on an Agile Project 125 Timeboxed Modeling 132 Summary 136 References 137 Index 139
£26.54
Pearson Education (US) Clean Coder The
Book SynopsisRobert C. Martin (Uncle Bob) has been a programmer since 1970. He is founder and president of Object Mentor, Inc., an international firm of highly experienced software developers and managers who specialize in helping companies get their projects done. Object Mentor offers process improvement consulting, object-oriented software design consulting, training, and skill development services to major corporations worldwide. Martin has published dozens of articles in various trade journals and is a regular speaker at international conferences and trade shows. He has authored and edited many books, including: Designing Object Oriented C++ Applications Using the Booch Method Patterns Languages of Program Design 3 More C++ Gems Extreme Programming in Practice Agile Software Development: Principles, Patterns, and Practices UML for Java Programmers Trade Review"'Uncle Bob' Martin definitely raises the bar with his latest book. He explains his expectation for a professional programmer on management interactions, time management, pressure, on collaboration, and on the choice of tools to use. Beyond TDD and ATDD, Martin explains what every programmer who considers him- or herself a professional not only needs to know, but also needs to follow in order to make the young profession of software development grow." -Markus Gartner Senior Software Developer it-agile GmbH www.it-agile.de www.shino.de "Some technical books inspire and teach; some delight and amuse. Rarely does a technical book do all four of these things. Robert Martin's always have for me and The Clean Coder is no exception. Read, learn, and live the lessons in this book and you can accurately call yourself a software professional." -George Bullock Senior Program Manager Microsoft Corp. "If a computer science degree had 'required reading for after you graduate,' this would be it. In the real world, your bad code doesn't vanish when the semester's over, you don't get an A for marathon coding the night before an assignment's due, and, worst of all, you have to deal with people. So, coding gurus are not necessarily professionals. The Clean Coder describes the journey to professionalism ... and it does a remarkably entertaining job of it." -Jeff Overbey University of Illinois at Urbana-Champaign "The Clean Coder is much more than a set of rules or guidelines. It contains hard-earned wisdom and knowledge that is normally obtained through many years of trial and error or by working as an apprentice to a master craftsman. If you call yourself a software professional, you need this book." -R. L. Bogetti Lead System Designer Baxter Healthcare www.RLBogetti.comTable of ContentsForeword xiii Preface xix Acknowledgments xxiii About the Author xxix On the Cover xxxi Pre-Requisite Introduction 1 Chapter 1: Professionalism 7 Be Careful What You Ask For 8 Taking Responsibility 8 First, Do No Harm 11 Work Ethic 16 Bibliography 22 Chapter 2: Saying No 23 Adversarial Roles 26 High Stakes 29 Being a “Team Player” 30 The Cost of Saying Yes 36 Code Impossible 41 Chapter 3: Saying Yes 45 A Language of Commitment 47 Learning How to Say “Yes” 52 Conclusion 56 Chapter 4: Coding 57 Preparedness 58 The Flow Zone 62 Writer’s Block 64 Debugging 66 Pacing Yourself 69 Being Late 71 Help 73 Bibliography 76 Chapter 5: Test Driven Development 77 The Jury Is In 79 The Three Laws of TDD 79 What TDD Is Not 83 Bibliography 84 Chapter 6: Practicing 85 Some Background on Practicing 86 The Coding Dojo 89 Broadening Your Experience 93 Conclusion 94 Bibliography 94 Chapter 7: Acceptance Testing 95 Communicating Requirements 95 Acceptance Tests 100 Conclusion 111 Chapter 8: Testing Strategies 113 QA Should Find Nothing 114 The Test Automation Pyramid 115 Conclusion 119 Bibliography 119 Chapter 9: Time Management 121 Meetings 122 Focus-Manna 127 Time Boxing and Tomatoes 130 Avoidance 131 Blind Alleys 131 Marshes, Bogs, Swamps, and Other Messes 132 Conclusion 133 Chapter 10: Estimation 135 What Is an Estimate? 138 PERT 141 Estimating Tasks 144 The Law of Large Numbers 147 Conclusion 147 Bibliography 148 Chapter 11: Pressure 149 Avoiding Pressure 151 Handling Pressure 153 Conclusion 155 Chapter 12: Collaboration 157 Programmers versus People 159 Cerebellums 164 Conclusion 166 Chapter 13: Teams and Projects 167 Does It Blend? 168 Conclusion 171 Bibliography 171 Chapter 14: Mentoring, Apprenticeship, and Craftsmanship 173 Degrees of Failure 174 Mentoring 174 Apprenticeship 180 Craftsmanship 184 Conclusion 185 Appendix A: Tooling 187 Tools 189 Source Code Control 189 IDE/Editor 194 Issue Tracking 196 Continuous Build 197 Unit Testing Tools 198 Component Testing Tools 199 Integration Testing Tools 200 UML/MDA 201 Conclusion 204 Index 205
£33.29
Pearson Education (US) Modern Software Engineering
Book SynopsisTrade Review" Modern Software Engineering gets it right and describes the ways skilled practitioners actually engineer software today. The techniques Farley presents are not rigid, prescriptive, or linear, but they are disciplined in exactly the ways software requires: empirical, iterative, feedback-driven, economical, and focused on running code." -- Glenn Vanderburg, Director of Engineering at Nubank "There are lots of books that will tell you how to follow a particular software engineering practice; this book is different. What Dave does here is set out the very essence of what defines software engineering and how that is distinct from simple craft. He explains why and how in order to master software engineering you must become a master of both learning and of managing complexity, how practices that already exist support that, and how to judge other ideas on their software engineering merits. This is a book for anyone serious about treating software development as a true engineering discipline, whether you are just starting out or have been building software for decades." -- Dave Hounslow, Software Engineer "These are important topics and it's great to have a compendium that brings them together as one package." -- Michael Nygard, Author of Release IT, Professional Programmer, and Software Architect "I've been reading the review copy of Dave Farley's book and it's what we need. It should be required reading for anyone aspiring to be a software engineer or who wants to master the craft. Pragmatic, practical advice on professional engineering. It should be required reading in universities and bootcamps." -- Bryan Finster, Distinguished Engineer and Value Stream Architect at USAF Platform One "The title says it all. In this book, Dave Farley shares his wisdom and experience as an outstanding software engineer and leader. The reader is fortunate to see the world of software design through the eyes of a master designer. Modern - It describes the practices tools and technology used today to build working software with a productive cadence. Modern Software Engineering provides a reader with a clear understanding of the field of software engineering and why it is indeed engineering. Dave explains the essential aspects of software engineering concisely from the perspective of a software engineer. Unlike many books which focus on one right way, he stresses the importance of good judgment, experimentation, and measurement. Many authors discuss the goodness of cohesion, coupling, and separation of concerns but Dave illustrates concepts while discussing the natural tensions between them which are part of the art of software design. His passion and discussion for TDD and perspective on how and why it works, provide fresh motivation as TDD as design practice. Throughout the book, Dave presents concrete examples of design choices, where creative experimentation, measure, and iterative development are essential. The book presents a series of courteous conversations about software product design and implementation. It is a book that professionals will return to often to reread and think about these important design conversations. This is an excellent book that belongs on the self of every software engineer be they new or leading a large team."—Dave Thomas, CEO of Bedarra CorporationTable of ContentsForeword xviiPreface xxiAcknowledgments xxvAbout the Author xxvii Part I: What Is Software Engineering? 1 Chapter 1: Introduction 3 Engineering--The Practical Application of Science 3 What Is Software Engineering? 4 Reclaiming "Software Engineering" 5 The Birth of Software Engineering 7 Shifting the Paradigm 8 Summary 9 Chapter 2: What Is Engineering? 11 Production Is Not Our Problem 11 Design Engineering, Not Production Engineering 12 A Working Definition of Engineering 17 Engineering != Code 17 Why Does Engineering Matter? 19 The Limits of "Craft" 19 Precision and Scalability 20 Managing Complexity 21 Repeatability and Accuracy of Measurement 22 Engineering, Creativity, and Craft 24 Why What We Do Is Not Software Engineering 25 Trade-Offs 26 The Illusion of Progress 26 The Journey from Craft to Engineering 27 Craft Is Not Enough 28 Time for a Rethink? 28 Summary 30 Chapter 3: Fundamentals of an Engineering Approach 31 An Industry of Change? 31 The Importance of Measurement 32 Applying Stability and Throughput 34 The Foundations of a Software Engineering Discipline 36 Experts at Learning 36 Experts at Managing Complexity 37 Summary 38 Part II: Optimize for Learning 41 Chapter 4: Working Iteratively 43 Practical Advantages of Working Iteratively 45 Iteration as a Defensive Design Strategy 46 The Lure of the Plan 48 Practicalities of Working Iteratively 54 Summary 55 Chapter 5: Feedback 57 A Practical Example of the Importance of Feedback 58 Feedback in Coding 60 Feedback in Integration 61 Feedback in Design 63 Feedback in Architecture 65 Prefer Early Feedback 67 Feedback in Product Design 68 Feedback in Organization and Culture 68 Summary 70 Chapter 6: Incrementalism 71 Importance of Modularity 72 Organizational Incrementalism 73 Tools of Incrementalism 74 Limiting the Impact of Change 76 Incremental Design 77 Summary 79 Chapter 7: Empiricism 81 Grounded in Reality 82 Separating Empirical from Experimental 82 "I Know That Bug!" 82 Avoiding Self-Deception 84 Inventing a Reality to Suit Our Argument 85 Guided by Reality 88 Summary 89 Chapter 8: Being Experimental 91 What Does "Being Experimental" Mean? 92 Feedback 93 Hypothesis 94 Measurement 95 Controlling the Variables 96 Automated Testing as Experiments 97 Putting the Experimental Results of Testing into Context 98 Scope of an Experiment 100 Summary 100 Part III: Optimize for Managing Complexity 103 Chapter 9: Modularity 105 Hallmarks of Modularity 106 Undervaluing the Importance of Good Design 107 The Importance of Testability 108 Designing for Testability Improves Modularity 109 Services and Modularity 115 Deployability and Modularity 116 Modularity at Different Scales 118 Modularity in Human Systems 118 Summary 120 Chapter 10: Cohesion 121 Modularity and Cohesion: Fundamentals of Design 121 A Basic Reduction in Cohesion 122 Context Matters 125 High-Performance Software 128 Link to Coupling 129 Driving High Cohesion with TDD 129 How to Achieve Cohesive Software 130 Costs of Poor Cohesion 132 Cohesion in Human Systems 133 Summary 133 Chapter 11: Separation of Concerns 135 Dependency Injection 139 Separating Essential and Accidental Complexity 139 Importance of DDD 142 Testability 144 Ports & Adapters 145 When to Adopt Ports & Adapters 147 What Is an API? 148 Using TDD to Drive Separation of Concerns 149 Summary 150 Chapter 12: Information Hiding and Abstraction 151 Abstraction or Information Hiding 151 What Causes "Big Balls of Mud"? 152 Organizational and Cultural Problems 152 Technical Problems and Problems of Design 154 Fear of Over-Engineering 157 Improving Abstraction Through Testing 159 Power of Abstraction 160 Leaky Abstractions 162 Picking Appropriate Abstractions 163 Abstractions from the Problem Domain 165 Abstract Accidental Complexity 166 Isolate Third-Party Systems and Code 168 Always Prefer to Hide Information 169 Summary 170 Chapter 13: Managing Coupling 171 Cost of Coupling 171 Scaling Up 172 Microservices 173 Decoupling May Mean More Code 175 Loose Coupling Isn't the Only Kind That Matters 176 Prefer Loose Coupling 177 How Does This Differ from Separation of Concerns? 178 DRY Is Too Simplistic 179 Async as a Tool for Loose Coupling 180 Designing for Loose Coupling 182 Loose Coupling in Human Systems 182 Summary 184 Part IV: Tools to Support Engineering in Software 185 Chapter 14: The Tools of an Engineering Discipline 187 What Is Software Development? 188 Testability as a Tool 189 Measurement Points 192 Problems with Achieving Testability 193 How to Improve Testability 196 Deployability 197 Speed 199 Controlling the Variables 200 Continuous Delivery 201 General Tools to Support Engineering 202 Summary 203 Chapter 15: The Modern Software Engineer 205 Engineering as a Human Process 207 Digitally Disruptive Organizations 207 Outcomes vs. Mechanisms 210 Durable and Generally Applicable 211 Foundations of an Engineering Discipline 214 Summary 215 Index 217
£26.99
Pearson Education (US) Continuous Delivery
Book SynopsisDave Farley has been having fun with computers for nearly 30 years. Over that period he has worked on most types of software, from firmware, through tinkering with operating systems and device drivers, to writing games, and commercial applications of all shapes and sizes. He started working in large scale distributed systems about 20 years ago, doing research into the development of loose-coupled, message-based systems - a forerunner of SOA. He has a wide range of experience leading the development of complex software in teams, both large and small, in the UK and USA. Dave was an early adopter of agile development techniques, employing iterative development, continuous integration and significant levels of automated testing on commercial projects from the early 1990s. He honed his approach to agile development in his four and a half year stint at ThoughtWorks where he was a technical principal working on some of their biggest and most challenging projects. Dave is cTrade Review"If you need to deploy software more frequently, this book is for you. Applying it will help you reduce risk, eliminate tedious work, and increase confidence. I'll be using the principles and practices here on all my current projects." -Kent Beck, Three Rivers Institute "Whether or not your software development team already understands that continuous integration is every bit as necessary as source code control, this is required reading. This book is unique in tying the whole development and delivery process together, providing a philosophy and principles, not just techniques and tools. The authors make topics from test automation to automated deployment accessible to a wide audience. Everyone on a development team, including programmers, testers, system administrators, DBAs, and managers, needs to read this book." -Lisa Crispin, co-author of Agile Testing "For many organizations Continuous Delivery isn't just a deployment methodology, it's critical to doing business. This book shows you how to make Continuous Delivery an effective reality in your environment." -James Turnbull, author of Pulling Strings with Puppet "A clear, precise, well-written book that gives readers an idea of what to expect for the release process. The authors give a step-by-step account of expectations and hurdles for software deployment. This book is a necessity for any software engineer's library." -Leyna Cotran, Institute for Software Research, University of California, Irvine "Humble and Farley illustrates what makes fast-growing web applications successful. Continuous deployment and delivery has gone from controversial to commonplace and this book covers it excellently. It's truly the intersection of development and operations on many levels, and these guys nailed it." -John Allspaw, VP Technical Operations, Etsy.com and author of The Art of Capacity Planning and Web Operations "If you are in the business of building and delivering a software-based service, you would be well served to internalize the concepts that are so clearly explained in Continuous Delivery. But going beyond just the concepts, Humble and Farley provide an excellent playbook for rapidly and reliably delivering change." -Damon Edwards, President of DTO Solutions and co-editor of dev2ops.org "I believe that anyone who deals with software releases would be able to pick up this book, go to any chapter and quickly get valuable information; or read the book from cover to cover and be able to streamline their build and deploy process in a way that makes sense for their organization. In my opinion, this is an essential handbook for building, deploying, testing, and releasing software." -Sarah Edrie, Director of Quality Engineering, Harvard Business School "Continuous Delivery is the logical next step after Continuous Integration for any modern software team. This book takes the admittedly ambitous goal of constantly delivering valuable software to customers, and makes it achievable through a set of clear, effective principles and practices." -Rob Sanheim, Principal at Relevance, Inc.Table of ContentsForeword by Martin Fowler Preface Acknowledgements About the Authors Part I Foundations 1 The Problem of Delivering Software 2 Configuration Management 3 Continuous Integration 4 Implementing a Testing Strategy Part II The Deployment Pipeline 5 Anatomy of the Deployment Pipeline 6 Build and deployment scripting 7 Commit Testing Stage 8 Automated Acceptance Testing 9 Testing Non-Functional Requirements 10 Deploying and Releasing Applications Part III The Delivery Ecosystem 11 Managing infrastructure and environments 12 Managing Data 13 Managing components and dependencies 14 Advanced version control 15 Managing Continuous Delivery Bibliography Index
£40.04
Pearson Education (US) Test Driven Development
Book SynopsisKent Beck consistently challenges software engineering dogma, promoting ideas like patterns, test-driven development, and Extreme Programming. Currently affiliated with Three Rivers Institute and Agitar Software, he is the author of many Addison-Wesley titles.Table of Contents Preface. Acknowledgments. Introduction. I. THE MONEY EXAMPLE. 1. Multi-Currency Money. 2. Degenerate Objects. 3. Equality for All. 4. Privacy. 5. Franc-ly Speaking. 6. Equality for All, Redux. 7. Apples and Oranges. 8. Makin' Objects. 9. Times We're Livin' In. 10. Interesting Times. 11. The Root of All Evil. 12. Addition, Finally. 13. Make It. 14. Change. 15. Mixed Currencies. 16. Abstraction, Finally. 17. Money Retrospective. II. The xUnit Example. 18. First Steps to xUnit. 19. Set the Table. 20. Cleaning Up After. 21. Counting. 22. Dealing with Failure. 23. How Suite It Is. 24. xUnit Retrospective. III. Patterns for Test-Driven Development. 25. Test-Driven Development Patterns. 26. Red Bar Patterns. 27. Testing Patterns. 28. Green Bar Patterns. 29. xUnit Patterns. 30. Design Patterns. 31. Refactoring. 32. Mastering TDD. Appendix I: Influence Diagrams. Appendix II: Fibonacci. Afterword. Index. 0321146530T10172002
£33.29
Rocky Nook Requirements Engineering Fundamentals: A Study
Book SynopsisRequirements engineering tasks have become increasingly complex. In order to ensure a high level of knowledge and competency among requirements engineers, the International Requirements Engineering Board (IREB) developed a standardized qualification called the Certified Professional for Requirements Engineering (CPRE). The certification defines the practical skills of a requirements engineer on various training levels. This book is designed for self-study and covers the curriculum for the Certified Professional for Requirements Engineering Foundation Level exam as defined by the IREB. The 2nd edition has been thoroughly revised and is aligned with the curriculum Version 2.2 of the IREB. In addition, some minor corrections to the 1st edition have been included. About IREB: The mission of the IREB is to contribute to the standardization of further education in the fields of business analysis and requirements engineering by providing syllabi and examinations, thereby achieving a higher level of applied requirements engineering. The IRE Board is comprised of a balanced mix of independent, internationally recognized experts in the fields of economy, consulting, research, and science.The IREB is a non-profit corporation.
£24.75
Manning Publications Code Like a Pro in Rust
Book SynopsisGet ready to code like a pro in Rust! This hands-on guide dives deep into memory management, asynchronous programming, and Rust design patterns and explores essential productivity techniques like testing, tooling, and project management. In Code Like A Pro in Rust you will learn: Essential Rust tooling Core Rust data structures Memory management Design patterns for Rust Testing in Rust Asynchronous programming for Rust Optimized Rust Rust project management Code Like A Pro in Rust is a fast-track guide to building and delivering professional quality software in Rust. You'll upgrade your basic knowledge of Rust with conventions, best practices, and veteran's secrets that are normally only learned through years of experience. Skip the fluff and get right to the heart of this powerful modern language, including Rust's support for asynchronous programming and integrating Rust with codebases written in other languages. about the technology Programmers prize Rust for its safety, performance, and security. However, its strict syntax and tricky memory management can make it challenging to master. This practical guide shows you how to balance Rust's trade offs, lessen its cognitive load, and rapidly bring your productivity to a professional level. about the book Code Like a Pro in Rust shows you how to quickly create and ship Rust programs without wasting time on language quirks, compiler problems, and unexpected complexities. It builds on your existing Rust knowledge with design patterns and shortcuts direct from veteran Rust contributor Brenden Matthews. You'll learn to use important Rust tooling like rust-analyzer, Clippy, and Cargo, as well as best practices for unit testing and code optimization. By the time you're done, you'll be writing high quality code with less maintenance overhead. RETAIL SELLING POINTS • Essential Rust tooling • Core Rust data structures • Memory management • Design patterns for Rust • Testing in Rust • Asynchronous programming for Rust • Optimized Rust • Rust project management AUDIENCE For aspiring Rust pros familiar with the basics of the language. Table of Contentstable of contents detailed TOC PART 1 PRO RUST READ IN LIVEBOOK 1FEELIN' RUSTY READ IN LIVEBOOK 2PROJECT MANAGEMENT WITH CARGO READ IN LIVEBOOK 3RUST TOOLING PART 2 CORE DATA READ IN LIVEBOOK 4DATA STRUCTURES READ IN LIVEBOOK 5WORKING WITH MEMORY PART 3 CORRECTNESS READ IN LIVEBOOK 6UNIT TESTING READ IN LIVEBOOK 7INTEGRATION TESTING PART 4 PATTERNS 8 COMMON DESIGN PATTERNS 9 ADVANCED PATTERNS PART 5 ADVANCED 10 ASYNC RUST 11 OPTIMIZATIONS APPENDIXES APPENDIX A: INSTALLING TOOLS FOR THIS BOOK
£39.09
O'Reilly Media The Software Architect Elevator
Book SynopsisIn this guide, author Gregor Hohpe shares real-world advice and hard-learned lessons from actual IT transformations. His anecdotes help architects, senior developers, and other IT professionals prepare for a more complex but rewarding role in the enterprise.
£39.74
Pearson Education (US) The Mythical ManMonth
Book SynopsisFrederick P. Brooks, Jr., was born in 1931 in Durham, NC. He received an A.B. summa cum laude in physics from Duke and a Ph.D. in computer science from Harvard, under Howard Aiken, the inventor of the early Harvard computers. At Chapel Hill, Dr. Brooks founded the Department of Computer Science and chaired it from 1964 through 1984. He has served on the National Science Board and the Defense Science Board. His current teaching and research is in computer architecture, molecular graphics, and virtual environments. He joined IBM, working in Poughkeepsie and Yorktown, NY, 1956-1965. He is best known as the father of the IBM System/360, having served as project manager for its development and later as manager of the Operating System/360 software project during its design phase. For this work he, Bob Evans, and Erick Block were awarded and received a National Medal of Technology in 1985. Table of Contents 1. The Tar Pit. 2. The Mythical Man-Month. 3. The Surgical Team. 4. Aristocracy, Democracy, and System Design. 5. The Second-System Effect. 6. Passing the Word. 7. Why Did the Tower of Babel Fail? 8. Calling the Shot. 9. Ten Pounds in a Five-Pound Sack. 10. The Documentary Hypothesis. 11. Plan to Throw One Away. 12. Sharp Tools. 13. The Whole and the Parts. 14. Hatching a Castrophe. 15. The Other Face. 16. No Silver Bullet -- Essence and Accident. 17. "No Silver Bullet" ReFired. 18. Propositions of The Mythical Man-Month: True or False? 19. The Mythical Man-Month After 20 Years. Epilogue. Notes and references. Index. 0201835959T04062001
£29.74
Pearson Education (US) Implementing DomainDriven Design
Book SynopsisVaughn Vernon is a champion of simplifying software architecture and development, with an emphasis on reactive methods. He has a unique ability to teach and lead with Domain-Driven Design using lightweight tools to unveil unimagined value. He helps organizations achieve competitive advantages using enduring tools such as architectures, patterns, and approaches, and through partnerships between business stakeholders and software developers.Trade Review"With Implementing Domain-Driven Design, Vaughn has made an important contribution not only to the literature of the Domain-Driven Design community, but also to the literature of the broader enterprise application architecture field. In key chapters on Architecture and Repositories, for example, Vaughn shows how DDD fits with the expanding array of architecture styles and persistence technologies for enterprise applications-including SOA and REST, NoSQL and data grids-that has emerged in the decade since Eric Evans' seminal book was first published. And, fittingly, Vaughn illuminates the blocking and tackling of DDD-the implementation of entities, value objects, aggregates, services, events, factories, and repositories-with plentiful examples and valuable insights drawn from decades of practical experience. In a word, I would describe this book as thorough. For software developers of all experience levels looking to improve their results, and design and implement domain-driven enterprise applications consistently with the best current state of professional practice, Implementing Domain-Driven Design will impart a treasure trove of knowledge hard won within the DDD and enterprise application architecture communities over the last couple decades." -Randy Stafford, Architect At-Large, Oracle Coherence Product Development "Domain-Driven Design is a powerful set of thinking tools that can have a profound impact on how effective a team can be at building software-intensive systems. The thing is that many developers got lost at times when applying these thinking tools and really needed more concrete guidance. In this book, Vaughn provides the missing links between theory and practice. In addition to shedding light on many of the misunderstood elements of DDD, Vaughn also connects new concepts like Command/Query Responsibility Segregation and Event Sourcing that many advanced DDD practitioners have used with great success. This book is a must-read for anybody looking to put DDD into practice." -Udi Dahan, Founder of NServiceBus "For years, developers struggling to practice Domain-Driven Design have been wishing for more practical help in actually implementing DDD. Vaughn did an excellent job in closing the gap between theory and practice with a complete implementation reference. He paints a vivid picture of what it is like to do DDD in a contemporary project, and provides plenty of practical advice on how to approach and solve typical challenges occurring in a project life cycle." - Alberto Brandolini, DDD Instructor, Certified by Eric Evans and Domain Language, Inc. "Implementing Domain-Driven Design does a remarkable thing: it takes a sophisticated and substantial topic area in DDD and presents it clearly, with nuance, fun and finesse. This book is written in an engaging and friendly style, like a trusted advisor giving you expert counsel on how to accomplish what is most important. By the time you finish the book you will be able to begin applying all the important concepts of DDD, and then some. As I read, I found myself highlighting many sections ... I will be referring back to it, and recommending it, often." - Paul Rayner, Principal Consultant & Owner, Virtual Genius, LLC., DDD Instructor, Certified by Eric Evans and Domain Language, Inc., DDD Denver Founder and Co-leader "One important part of the DDD classes I teach is discussing how to put all the ideas and pieces together into a full blown working implementation. With this book, the DDD community now has a comprehensive reference that addresses this in detail. Implementing Domain-Driven Design deals with all aspects of building a system using DDD, from getting the small details right to keeping track of the big picture. This is a great reference and an excellent companion to Eric Evans seminal DDD book." - Patrik Fredriksson, DDD Instructor, Certified by Eric Evans and Domain Language, Inc. "If you care about software craftsmanship-and you should-then Domain-Driven Design is a crucial skill set to master and Implementing Domain-Driven Design is the fast path to success. IDDD offers a highly readable yet rigorous discussion of DDD's strategic and tactical patterns that enables developers to move immediately from understanding to action. Tomorrow's business software will benefit from the clear guidance provided by this book." -Dave Muirhead, Principal Consultant, Blue River Systems Group "There's theory and practice around DDD that every developer needs to know, and this is the missing piece of the puzzle that puts it all together. Highly recommended!" -Rickard Oberg, Java Champion and Developer at Neo Technology "In IDDD, Vaughn takes a top-down approach to DDD, bringing strategic patterns such as bounded context and context maps to the fore, with the building block patterns of entities, values and services tackled later. His book uses a case study throughout, and to get the most out of it you'll need to spend time grokking that case study. But if you do you'll be able to see the value of applying DDD to a complex domain; the frequent sidenotes, diagrams, tables, and code all help illustrate the main points. So if you want to build a solid DDD system employing the architectural styles most commonly in use today, Vaughn's book comes recommended." -Dan Haywood, author of Domain-Driven Design with Naked Objects "This book employs a top-down approach to understanding DDD in a way that fluently connects strategic patterns to lower level tactical constraints. Theory is coupled with guided approaches to implementation within modern architectural styles. Throughout the book, Vaughn highlights the importance and value of focusing on the business domain all while balancing technical considerations. As a result, the role of DDD, as well as what it does and perhaps more importantly doesn't imply, become ostensibly clear. Many a time, my team and I would be at odds with the friction encountered in applying DDD. With Implementing Domain-Driven Design as our luminous guide we were able to overcome those challenges and translate our efforts into immediate business value." -Lev Gorodinski, Principal Architect, DrillSpot.comTable of Contents Chapter 1: Getting Started with DDD Chapter 2: Domains, Subdomains, and Bounded Contexts Chapter 3: Context Maps Chapter 4: Architecture Chapter 5: Entities Chapter 6: Value Objects Chapter 7: Services Chapter 8: Domain Events Chapter 9: Modules Chapter 10: Aggregates Chapter 11: Factories Chapter 12: Repositories Chapter 13: Integrating Bounded Contexts Chapter 14: Application Appendix A: Aggregates and Event Sourcing: A+ES
£43.19
O'Reilly Media Release It!
Book SynopsisA single dramatic software failure can cost a company millions of dollars - but can be avoided with simple changes to design and architecture. This new edition of the best-selling industry standard shows you how to create systems that run longer, with fewer failures, and recover better when bad things happen. New coverage includes DevOps, microservices, and cloud-native architecture. Stability antipatterns have grown to include systemic problems in large-scale systems. This is a must-have pragmatic guide to engineering for production systems. If you're a software developer, and you don't want to get alerts every night for the rest of your life, help is here. With a combination of case studies about huge losses - lost revenue, lost reputation, lost time, lost opportunity - and practical, down-to-earth advice that was all gained through painful experience, this book helps you avoid the pitfalls that cost companies millions of dollars in downtime and reputation. Eighty percent of project life-cycle cost is in production, yet few books address this topic. This updated edition deals with the production of today's systems - larger, more complex, and heavily virtualized - and is the first book to cover chaos engineering, the discipline of applying randomness and deliberate stress to reveal systematic problems. Build systems that survive the real world, avoid downtime, implement zero-downtime upgrades and continuous delivery, and make cloud-native applications resilient. Examine ways to architect, design, and build software - particularly distributed systems - that stands up to the typhoon winds of a flash mob, a Slashdotting, or a link on Reddit. Take a hard look at software that failed the test and find ways to make sure your software survives.
£36.57
Pearson Education (US) Zombie Scrum Survival Guide
Book Synopsis Christiaan Verwijs aims to unleash organizational superpowers. He is co-founder of The Liberators, experienced Scrum Master, developer, Professional Scrum Trainer (PST) and Steward of the Professional Scrum Master II course at Scrum.org. He has spoken at Scrum Day Europe (2013-2018), XP Days 2017, and Liberating Structures Global Gathering 2018. Verwijs founded the Dutch Liberating Structures User Group (900+ members) and Liberators Network Meetup (250+ members). He blogs at medium.com/the-liberators and zombiescrum.org. Johannes Schartau is an Agile Coach, consultant, and facilitator who helps humans fight boredom and mindlessness on all scales, from individual to team to enterprise. He is Founder of the Liberating Structures User Group Hamburg (1,300+ members), as well as organizer and facilitator at numerous Liberating Structures Immersion Workshops. He writes at zombiescrum.org, and co-authored Liberating Strategy:Table of ContentsForeword by Dave West xiiiForeword by Henri Lipmanowicz xviiAcknowledgments xixAbout the Authors xxi Chapter 1: Getting Started 1 Purpose of This Book 4 Do You Need This Book? 5 How This Book Is Organized 6 No Time to Lose: Off You Go! 8 Chapter 2: First Aid Kit 11Part I: (Zombie) Scrum 13Chapter 3: A Primer on Zombie Scrum 15 The State of Scrum 17 Zombie Scrum 18 Is There Hope for Zombie Scrum? 24 Experiment: Diagnose Your Team Together 25 Now What? 29 Chapter 4: The Purpose of Scrum 31 It's All about Complex Adaptive Problems 32 Problems 33 Complex, Adaptive Problems 34 Complexity, Uncertainty, and Risk 35 Empiricism and Process Control Theory 36 Empiricism and the Scrum Framework 37 What the Scrum Framework Makes Possible 38 Scrum: An Evolving Set of Minimal Boundaries to Work Empirically 39 Zombie Scrum and the Efficiency Mindset 40 What about Simple Problems? 42 Now What? 44 Part II: Build What Stakeholders Need 45Chapter 5: Symptoms and Causes 47 Why Bother Involving Stakeholders? 49 Who Are the Stakeholders, Actually? 50 Why Are We Not Involving Stakeholders? 52 Healthy Scrum 68 Now What? 71 Chapter 6: Experiments 73 Experiments: Getting to Know Your Stakeholders 74 Experiments: Involving Stakeholders in Product Development 81 Experiments: Keeping Your Focus on What Is Valuable 88 Now What? 96 Part III: Ship It Fast 97Chapter 7: Symptoms and Causes 99 The Benefits of Shipping Fast 102 The Bottom Line: Not Shipping Fast Is a Sign of Zombie Scrum 105 Healthy Scrum 116 Now What? 121 Chapter 8: Experiments 123 Experiments to Create Transparency and Urgency 124 Experiments for Starting Shipping More Often 131 Experiments for Optimizing Flow 141 Now What? 150 Part IV: Improve Continuously 153Chapter 9: Symptoms and Causes 155 Why Bother Improving Continuously? 157 Why Are We Not Improving Continuously? 163 Healthy Scrum 179 Now What? 182 Chapter 10: Experiments 183 Experiments for Encouraging Deep Learning 183 Experiments for Making Improvements Tangible 190 Experiments for Gathering New Information 195 Experiments to Create a Learning Environment 200 Now What? 204 Part V: Self-Organize 205Chapter 11: Symptoms and Causes 207 Why Bother Self-Organizing? 209 Why Are We Not Self-Organizing? 217 Healthy Scrum: What Self-Organization Looks Like 234 Now What? 238 Chapter 12: Experiments 239 Experiments to Increase Autonomy 239 Experiments to Encourage Self-Organization 246 Experiments to Promote Self-Alignment 254 Find Local Solutions 259 Now What? 263 Chapter 13: The Road to Recovery 265 A Global Movement 266 What If Nothing Helps? 267 More Resources 268 Closing Words 268 Index 271
£21.74
Manning Publications Data Analysis with Python and PySpark
Book SynopsisWhen it comes to data analytics, it pays tothink big. PySpark blends the powerful Spark big data processing engine withthe Python programming language to provide a data analysis platform that can scaleup for nearly any task. Data Analysis with Python and PySpark is yourguide to delivering successful Python-driven data projects. Data Analysis with Python and PySpark is a carefully engineered tutorial that helps you use PySpark to deliver your data-driven applications at any scale. This clear and hands-on guide shows you how to enlarge your processing capabilities across multiple machines with data from any source, ranging from Had oop-based clusters to Excel worksheets. You'll learn how to break down big analysis tasks into manageable chunks and how to choose and use the best PySpark data abstraction for your unique needs. The Spark data processing engine is an amazing analytics factory: raw data comes in,and insight comes out. Thanks to its ability to handle massive amounts of data distributed across a cluster, Spark has been adopted as standard by organizations both big and small. PySpark, which wraps the core Spark engine with a Python-based API, puts Spark-based data pipelines in the hands of programmers and data scientists working with the Python programming language. PySpark simplifies Spark's steep learning curve, and provides a seamless bridge between Spark and an ecosystem of Python-based data science tools. Trade Review“A great and gentle introduction to spark.” Javier Collado Cabeza “A phenomenal introduction to PySpark from the ground up.”Anonymous Reviewer “A great book to get you started with PySpark!” Jeremy Loscheider “Takes you on an example focused tour of building pyspark data structures from the data you provide and processing them at speed.” Alex Lucas “If you need to learn PySpark (as a Data Scientist or Data Wrangler) start with this book!”Geoff Clark
£40.85
Pearson Education Balancing Coupling in Software Design
Book SynopsisVlad Khononov is a software engineer with extensive industry experience, working for companies large and small in roles ranging from webmaster to chief architect. His core areas of expertise are distributed systems and software design. Vlad consults with companies to make sense of their business domains, untangle monoliths, and tackle complex architectural challenges. Vlad maintains an active media career as a public speaker and author. Prior to Balancing Coupling in Software Design, he authored the best-selling O'Reilly book Learning Domain-Driven Design. He is a sought-after keynote speaker, presenting on topics such as domain-driven design, microservices, and software architecture in general.
£33.24
Manning Publications Kubernetes for Developers
Book SynopsisKubernetes Quickly is a clear and practical beginner's guide that shows you just how easy, flexible, and cost-effective it can be to make the switch to Kubernetes deployment even for small to medium-sized applications. Kubernetes Quickly is a hands-on guide to taking your first steps into Kubernetes using the powerful Google Kubernetes Engine service. It lays out a map for taking an application, containerizing it, and then deploying it onto Kubernetes. You'll learn best practice techniques for a stable and long-term Kubernetes deployment, including scaling and capacity planning, saving money by optimizing resource consumption, and tricks to make your day-to-day monitoring easier such as debugging code in the cloud. You don't need to incur huge costs or have the manpower of an enterprise organization to get a productivity boost from Kubernetes. By organizing your application component into containerized components and automating tasks like scaling and replication, Kubernetes keeps your apps running smoothly. Cloud-based Kubernetes services like Google Kubernetes Engine(GKE) reduce OS issues, simplify operations, and give you the freedom to use whatever software stack you want. If you've heard that switching to Kubernetesis complex, good news—Kubernetes for Developers will show you how it can be done without a time-consuming rebuild. Using examples from the Google Kubernetes Engine created by the team who invented Kubernetes itself, you'll learn to set up future-proof application deployments that scale to handle ever-growing and complex workloads.Trade Review“Whether you are using kubernetes now or thinking of using kubernetes in the future, there is no better way to expand your knowledge than this book. “ Becky Huett “Excellent introductory text for Kubernetes that augments the Kubernetes documentation with best practice tips and great tool recommendations.” Robert Kielty “This is an excellent introduction to Kubernetes in particular and Cloud deployments in general.” Juan Jimenez “Get ready to be taken from the old world to the new. It won't hurt to give this book another read-over before you deploy your service into production!” Chase Sillevis “An excellent read for a newbie who wants to get closer to Kubernetes.” Giuliano Latini
£36.09
O'Reilly Media Designing Interfaces
Book SynopsisBy capturing UI best practices as design patterns, this best-selling book provides solutions to common design problems. You'll learn patterns for mobile apps, web applications, and desktop software.
£39.74
Manning Publications Grokking Simplicity
Book SynopsisDistributed across servers, difficult to test, and resistant to modification—modern software is complex. Grokking Simplicity is a friendly, practical guide that will change the way you approach software design and development. It introduces a unique approach to functional programming that explains why certain features of software are prone to complexity, and teaches you the functional techniques you can use to simplify these systems so that they’re easier to test and debug. Available in PDF (ePub, kindle, and liveBook formats coming soon). about the technologyEven experienced developers struggle with software systems that sprawl across distributed servers and APIs, are filled with redundant code, and are difficult to reliably test and modify. Adopting ways of thinking derived from functional programming can help you design and refactor your codebase in ways that reduce complexity, rather than encouraging it. Grokking Simplicity lays out how to use functional programming in a professional environment to write a codebase that’s easier to test and reuse, has fewer bugs, and is better at handling the asynchronous nature of distributed systems. about the bookIn Grokking Simplicity, you’ll learn techniques and, more importantly, a mindset that will help you tackle common problems that arise when software gets complex. Veteran functional programmer Eric Normand guides you to a crystal-clear understanding of why certain features of modern software are so prone to complexity and introduces you to the functional techniques you can use to simplify these systems so that they’re easier to read, test, and debug. Through hands-on examples, exercises, and numerous self-assessments, you’ll learn to organize your code for maximum reusability and internalize methods to keep unwanted complexity out of your codebase. Regardless of the language you’re using, the ways of thinking in this book will help recognize problematic code and tame even the most complex software. what's inside Apply functional programming principles to reduce codebase complexity Work with data transformation pipelines for code that’s easier to test and reuse Tools for modeling time to simplify asynchrony 60 exercises and 100 questions to test your knowledge about the readerFor experienced programmers. Examples are in JavaScript. about the author Eric Normand has been a functional programmer since 2001 and has been teaching functional programming online and in person since 2007. Visit LispCast.com to see more of his credentials.
£35.99
Pragmatic Bookshelf Design It! : Pragmatic Programmers
Book SynopsisDon't engineer by coincidence-design it like you mean it! Filled with practical techniques, Design It! is the perfect introduction to software architecture for programmers who are ready to grow their design skills. Lead your team as a software architect, ask the right stakeholders the right questions, explore design options, and help your team implement a system that promotes the right -ilities. Share your design decisions, facilitate collaborative design workshops that are fast, effective, and fun-and develop more awesome software! With dozens of design methods, examples, and practical know-how, Design It! shows you how to become a software architect. Walk through the core concepts every architect must know, discover how to apply them, and learn a variety of skills that will make you a better programmer, leader, and designer. Uncover the big ideas behind software architecture and gain confidence working on projects big and small. Plan, design, implement, and evaluate software architectures and collaborate with your team, stakeholders, and other architects. Identify the right stakeholders and understand their needs, dig for architecturally significant requirements, write amazing quality attribute scenarios, and make confident decisions. Choose technologies based on their architectural impact, facilitate architecture-centric design workshops, and evaluate architectures using lightweight, effective methods. Write lean architecture descriptions people love to read. Run an architecture design studio, implement the architecture you've designed, and grow your team's architectural knowledge. Good design requires good communication. Talk about your software architecture with stakeholders using whiteboards, documents, and code, and apply architecture-focused design methods in your day-to-day practice. Hands-on exercises, real-world scenarios, and practical team-based decision-making tools will get everyone on board and give you the experience you need to become a confident software architect.
£31.82
Pearson Education (US) Clean Code
Book SynopsisRobert C. Uncle Bob Martin has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor, Inc., a team of experienced consultants who mentor their clients worldwide in the fields of C++, Java, C#, Ruby, OO, Design Patterns, UML, Agile Methodologies, and eXtreme programming.Table of ContentsForeword xixIntroduction xxvOn the Cover xxix Chapter 1: Clean Code 1 There Will Be Code 2 Bad Code 3 The Total Cost of Owning a Mess 4 Schools of Thought 12 We Are Authors 13 The Boy Scout Rule 14 Prequel and Principles 15 Conclusion 15 Bibliography 15 Chapter 2: Meaningful Names 17 Introduction 17 Use Intention-Revealing Names 18 Avoid Disinformation 19 Make Meaningful Distinctions 20 Use Pronounceable Names 21 Use Searchable Names 22 Avoid Encodings 23 Avoid Mental Mapping 25 Class Names 25 Method Names 25 Don’t Be Cute 26 Pick One Word per Concept 26 Don’t Pun 26 Use Solution Domain Names 27 Use Problem Domain Names 27 Add Meaningful Context 27 Don’t Add Gratuitous Context 29 Final Words 30 Chapter 3: Functions 31 Small! 34 Do One Thing 35 One Level of Abstraction per Function 36 Switch Statements 37 Use Descriptive Names 39 Function Arguments 40 Have No Side Effects 44 Command Query Separation 45 Prefer Exceptions to Returning Error Codes 46 Don’t Repeat Yourself 48 Structured Programming 48 How Do You Write Functions Like This? 49 Conclusion 49 SetupTeardownIncluder 50 Bibliography 52 Chapter 4: Comments 53 Comments Do Not Make Up for Bad Code 55 Explain Yourself in Code 55 Good Comments 55 Bad Comments 59 Bibliography 74 Chapter 5: Formatting 75 The Purpose of Formatting 76 Vertical Formatting 76 Horizontal Formatting 85 Team Rules 90 Uncle Bob’s Formatting Rules 90 Chapter 6: Objects and Data Structures 93 Data Abstraction 93 Data/Object Anti-Symmetry 95 The Law of Demeter 97 Data Transfer Objects 100 Conclusion 101 Bibliography 101 Chapter 7: Error Handling 103 Use Exceptions Rather Than Return Codes 104 Write Your Try-Catch-Finally Statement First 105 Use Unchecked Exceptions 106 Provide Context with Exceptions 107 Define Exception Classes in Terms of a Caller’s Needs 107 Define the Normal Flow 109 Don’t Return Null 110 Don’t Pass Null 111 Conclusion 112 Bibliography 112 Chapter 8: Boundaries 113 Using Third-Party Code 114 Exploring and Learning Boundaries 116 Learning log4j 116 Learning Tests Are Better Than Free 118 Using Code That Does Not Yet Exist 118 Clean Boundaries 120 Bibliography 120 Chapter 9: Unit Tests 121 The Three Laws of TDD 122 Keeping Tests Clean 123 Clean Tests 124 One Assert per Test 130 F.I.R.S.T. 132 Conclusion 133 Bibliography 133 Chapter 10: Classes 135 Class Organization 136 Classes Should Be Small! 136 Organizing for Change 147 Bibliography 151 Chapter 11: Systems 153 How Would You Build a City? 154 Separate Constructing a System from Using It 154 Scaling Up 157 Java Proxies 161 Pure Java AOP Frameworks 163 AspectJ Aspects 166 Test Drive the System Architecture 166 Optimize Decision Making 167 Use Standards Wisely, When They Add Demonstrable Value 168 Systems Need Domain-Specific Languages 168 Conclusion 169 Bibliography 169 Chapter 12: Emergence 171 Getting Clean via Emergent Design 171 Simple Design Rule 1: Runs All the Tests 172 Simple Design Rules 2–4: Refactoring 172 No Duplication 173 Expressive 175 Minimal Classes and Methods 176 Conclusion 176 Bibliography 176 Chapter 13: Concurrency 177 Why Concurrency? 178 Challenges 180 Concurrency Defense Principles 180 Know Your Library 182 Know Your Execution Models 183 Beware Dependencies Between Synchronized Methods 185 Keep Synchronized Sections Small 185 Writing Correct Shut-Down Code Is Hard 186 Testing Threaded Code 186 Conclusion 190 Bibliography 191 Chapter 14: Successive Refinement 193 Args Implementation 194 Args: The Rough Draft 201 String Arguments 214 Conclusion 250 Chapter 15: JUnit Internals 251 The JUnit Framework 252 Conclusion 265 Chapter 16: Refactoring SerialDate 267 First, Make It Work 268 Then Make It Right 270 Conclusion 284 Bibliography 284 Chapter 17: Smells and Heuristics 285 Comments 286 Environment 287 Functions 288 General 288 Java 307 Names 309 Tests 313 Conclusion 314 Bibliography 315 Appendix A: Concurrency II 317 Client/Server Example 317 Possible Paths of Execution 321 Knowing Your Library 326 Dependencies Between Methods Can Break Concurrent Code 329 Increasing Throughput 333 Deadlock 335 Testing Multithreaded Code 339 Tool Support for Testing Thread-Based Code 342 Conclusion 342 Tutorial: Full Code Examples 343 Appendix B: org.jfree.date.SerialDate 349 Appendix C: Cross References of Heuristics 409 Epilogue 411Index 413
£38.69
Pearson Education (US) Patterns of Enterprise Application Architecture
Book Synopsis Martin Fowler is an independent consultant who has applied objects to pressing business problems for more than a decade. He has consulted on systems in fields such as health care, financial trading, and corporate finance. His clients include Chrysler, Citibank, UK National Health Service, Andersen Consulting, and Netscape Communications. In addition, Fowler is a regular speaker on objects, the Unified Modeling Language, and patterns. 0321127420AB07242003Table of Contents Preface. Who This Book Is For. Acknowledgements. Colophon. Introduction. Architecture. Enterprise Applications. Kinds of Enterprise Application. Thinking About Performance. Patterns. The Structure of the Patterns. Limitations of These Patterns. I. THE NARRATIVES. 1. Layering. The Evolution of Layers in Enterprise Applications. The Three Principal Layers. Choosing Where to Run Your Layers. 2. Organizing Domain Logic. Making a Choice. Service Layer. 3. Mapping to Relational Databases. Architectural Patterns. The Behavioral Problem. Reading in Data Structural Mapping Patterns. Mapping Relationships. Inheritance. Building the Mapping. Double Mapping. Using Metadata. Database Connections. Some Miscellaneous Points. Further Reading. 4. Web Presentation. View Patterns. Input Controller Patterns. Further Reading. 5. Concurrency (by Martin Fowler and David Rice). Concurrency Problems. Execution Contexts. Isolation and Immutability. Optimistic and Pessimistic Concurrency Control. Preventing Inconsistent Reads. Deadlocks. Transactions. ACID. Transactional Resources. Reducing Transaction Isolation for Liveness. Business and System Transactions. Patterns for Offline Concurrency Control. Application Server Concurrency. Further Reading. 6. Session State. The Value of Statelessness. Session State. Ways to Store Session State. 7. Distribution Strategies. The Allure of Distributed Objects. Remote and Local Interfaces. Where You Have to Distribute. Working with the Distribution Boundary. Interfaces for Distribution. 8. Putting it all Together. Starting With the Domain Layer. Down to the Data Source. Data Source for Transaction Script. Data Source Table Module (125). Data Source for Domain Model (116). The Presentation Layer. Some Technology-Specific Advice. Java and J2EE. .NET. Stored Procedures. Web Services. Other Layering Schemes. II. THE PATTERNS. 9. Domain Logic Patterns. Transaction Script. How It Works. When to Use It. The Revenue Recognition Problem. Example: Revenue Recognition (Java). Domain Model. How It Works. When to Use It. Further Reading. Example: Revenue Recognition (Java). Table Module. How It Works. When to Use It. Example: Revenue Recognition with a Table Module (C#). Service Layer(by Randy Stafford). How It Works. When to Use It. Further Reading. Example: Revenue Recognition (Java). 10. Data Source Architectural Patterns. Table Data Gateway. How It Works. When to Use It. Further Reading. Example: Person Gateway (C#). Example: Using ADO.NET Data Sets (C#). Row Data Gateway. How It Works. When to Use It. Example: A Person Record (Java). Example: A Data Holder for a Domain Object (Java). Active Record. How It Works. When to Use It. Example: A Simple Person (Java). Data Mapper. How It Works. When to Use It. Example: A Simple Database Mapper (Java). Example: Separating the Finders (Java). Example: Creating an Empty Object (Java). 11. Object-Relational Behavioral Patterns. Unit of Work. How It Works. When to Use It. Example: Unit of Work with Object Registration (Java) (by David Rice). Identity Map. How It Works. When to Use It. Example: Methods for an Identity Map (Java). Lazy Load. How It Works. When to Use It. Example: Lazy Initialization (Java). Example: Virtual Proxy (Java). Example: Using a Value Holder (Java). Example: Using Ghosts (C#). 12. Object-Relational Structural Patterns. Identity Field. How It Works. When to Use It. Further Reading. Example: Integral Key (C#). Example: Using a Key Table (Java). Example: Using a Compound Key (Java). Foreign Key Mapping. How It Works. When to Use It. Example: Single-Valued Reference (Java). Example: Multitable Find (Java). Example: Collection of References (C#). Association Table Mapping. How It Works. When to Use It. Example: Employees and Skills (C#). Example: Using Direct SQL (Java). Example: Using a Single Query for Multiple Employees (Java) (by Matt Foemmel and Martin Fowler). Dependent Mapping. How It Works. When to Use It. Example: Albums and Tracks (Java). Embedded Value. How It Works. When to Use It. Further Reading. Example: Simple Value Object (Java). Serialized LOB. How It Works. When to Use It. Example: Serializing a Department Hierarchy in XML (Java). Single Table Inheritance. How It Works. When to Use It. Example: A Single Table for Players (C#). Loading an Object from the Database. Class Table Inheritance. How It Works. When to Use It. Further Reading. Example: Players and Their Kin (C#). Concrete Table Inheritance. How It Works. When to Use It. Example: Concrete Players (C#). Inheritance Mappers. How It Works. When to Use It. 13. Object-Relational Metadata Mapping Patterns. Metadata Mapping. How It Works. When to Use It. Example: Using Metadata and Reflection (Java). Query Object. How It Works. When to Use It. Further Reading. Example: A Simple Query Object (Java). Repository (by Edward Hieatt and Rob Mee). How It Works. When to Use It. Further Reading. Example: Finding a Person's Dependents (Java). Example: Swapping Repository Strategies (Java). 14. Web Presentation Patterns. Model View Controller. How It Works. When to Use It. Page Controller. How It Works. When to Use It. Example: Simple Display with a Servlet Controller and a JSP View (Java). Example: Using a JSP as a Handler (Java). Example: Page Handler with a Code Behind (C#). Front Controller. How It Works. When to Use It. Further Reading. Example: Simple Display (Java). Template View. How It Works. When to Use It. Example: Using a JSP as a View with a Separate Controller (Java). Example: ASP.NET Server Page (C#). Transform View. How It Works. When to Use It. Example: Simple Transform (Java). Two Step View. How It Works. When to Use It. Example: Two Stage XSLT (XSLT). Example: JSP and Custom Tags (Java). Application Controller. How It Works. When to Use It. Further Reading. Example: State Model Application Controller (Java). 15. Distribution Patterns. Remote Facade. How It Works. When to Use It. Example: Using a Java Session Bean as a Remote Facade (Java). Example: Web Service (C#). Data Transfer Object. How It Works. When to Use It. Further Reading. Example: Transferring Information about Albums (Java). Example: Serializing Using XML (Java). 16. Offline Concurrency Patterns. Optimistic Offline Lock (by David Rice). How It Works. When to Use It. Example: Domain Layer with Data Mappers (165) (Java). Pessimistic Offline Lock (by David Rice). How It Works. When to Use It. Example: Simple Lock Manager (Java). Coarse-Grained Lock (by David Rice and Matt Foemmel). How It Works. When to Use It. Example: Shared Optimistic Offline Lock (416) (Java). Example: Shared Pessimistic Offline Lock (426) (Java). Example: Root Optimistic Offline Lock (416) (Java). Implicit Lock (by David Rice). How It Works. When to Use It. Example: Implicit Pessimistic Offline Lock (426) (Java). 17. Session State Patterns. Client Session State. How It Works. When to Use It. Server Session State. How It Works. When to Use It. Database Session State. How It Works. When to Use It. 18. Base Patterns. Gateway. How It Works. When to Use It. Example: A Gateway to a Proprietary Messaging Service (Java). Mapper. How It Works. When to Use It. Layer Supertype. How It Works. When to Use It. Example: Domain Object (Java). Separated Interface. How It Works. When to Use It. Registry. How It Works. When to Use It. Example: A Singleton Registry (Java). Example: Thread-Safe Registry (Java) (by Matt Foemmel and Martin Fowler). Value Object. How It Works. When to Use It. Money. How It Works. When to Use It. Example: A Money Class (Java) (by Matt Foemmel and Martin Fowler). Special Case. How It Works. When to Use It. Further Reading. Example: A Simple Null Object (C#). Plugin (by David Rice and Matt Foemmel). How It Works. When to Use It. Example: An Id Generator (Java). Service Stub (by David Rice). How It Works. When to Use It. Example: Sales Tax Service (Java). Record Set. How It Works. When to Use It. References Index. 0321127420T10162002
£46.79
Foundations of Software Testing ISTQB
Book Synopsis
£44.64
O'Reilly Media Beautiful Code
Book SynopsisHow do the experts solve difficult problems in software development? This book offers case studies that reveal how they found carefully designed solutions to high-profile projects.
£28.79
Pragmatic Bookshelf Domain Modeling Made Functional : Pragmatic
Book SynopsisYou 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.
£36.57
Manning Publications Kanban in Action
Book SynopsisDESCRIPTION Kanban is an emerging second generation agile method inspired by five decades of process excellence in the Japanese auto manufacturing industry, also known as lean thinking. kanban uses visual management techniques that involve stakeholders and facilitates understanding of how the work works. It helps teams adjust demand to capacity, reduce lead times, and create a driver for continuous improvement. Kanban in Action is a down-to-earth, no-frills, get-to-know-the-ropes introduction to kanban. It's based on the real-world experience and observations from two kanban coaches who have introduced this process to dozens of teams. This book covers basic but powerful techniques on how to visualize and track work, construct a kanban board, and how to visualize queues and bottlenecks, and more. RETAIL SELLING POINTS Down-to-earth introduction to Kanban Practical advice for making workflow faster Real-world case studies of Kanban at work AUDIENCE This book is written for all members of the development team, including leaders, coders, and business stakeholders. No experience with kanban is required. ABOUT THE TECHNOLOGY Kanban is an agile software development method for continuous collaborative improvement based on the lean principles of visualizing work, limiting the amount of work in process, and managing the flow of work.
£32.39
Manning Publications Well-Grounded Python Developer, The
Book SynopsisWhen you're new to Python, it can be tough to understand where and how to use its many language features. There's a dizzying array of libraries, and it's challenging to fit everything together. The Well- Grounded Python Developer builds on Python skills you've learned in isolation and shows you how to unify them into a meaningful whole. The Well-Grounded Python Developer teaches you how to write real software in Python by building on the basic language skills you already have. It helps you see the big picture you can create out of small pieces, introducing concepts like modular construction, APIs, and the design of a basic web server. When you're finished, you'll have gone from having a basic understanding of Python's syntax, grammar, and libraries to using them as the tools of a professional software developer. About the TechnologyPython is the perfect language for beginning programmers. It is easy to learn, with tons of helpful libraries and tools. Better still, it doesn't run out of steam when you want to create more advanced applications for web development or machine learning. Once you've mastered the syntax of simple Python scripts, it can be a challenge to progress to more ambitious projects. This book helps you on that path.Trade Review"I would consider this book a bible of sorts, offering something to every level of Python developer." Lee Harding "A very good book not just for becoming a well grounded python developer but a good resource to become a well grounded developer in general." Kimberly Winston-Jackson "If you want to become a good Pythonista you need this book!" Gustavo Filipe Ramos Gomes "A great introduction to the necessary concepts that make you a great programmer." Christopher Kardell
£32.29
Pearson Education (US) Righting Software
Book SynopsisJuval Löwy, founder of IDesign, is a master software architect specializing in system and project design. He has helped countless companies around the world deliver quality software on schedule and on budget. Recognized by Microsoft as one of the world's top experts and industry leaders, he participated in internal strategic design reviews for C#, WCF, and related technologies, and was named a Software Legend. He has published several best-sellers and numerous articles on almost every aspect of modern software development. Löwy speaks frequently at major international software development conferences and conducts Master Classes around the world, teaching thousands of professionals the skills required of modern software architects and how to take an active role as design, process, and technology leaders.Trade ReviewPraise for Juval Löwy’s Software Architect Course “I attended both the Architect’s Master Class and the Project Design Master Class. Before these two classes I had almost lost all hope of ever being able to figure out why the efforts of my team were never leading to a successful end, and I was struggling to find a working solution to stop the insane death march we were on. The Master Classes opened my eyes to a world where software development is elevated to the level of all other engineering disciplines and is conducted in a professional, predictable, and reliable manner, resulting in high-quality working software developed on time and within budget. The knowledge gained is priceless! From revealing how to create a solid and sound architecture, which withstands ever-changing user requirements, to the intricate details on how to plan and guide the project to a successful end—all this was presented with expertise and professionalism that are hard to match. Considering that every bit of distilled truth Juval shared with us in class is acquired, tested, and proven in real life, it transforms this learning experience into a powerful body of knowledge that is an absolute necessity for anyone who aspires to be a Software Architect.” –Rossen Totev, software architect/project lead “The Project Design Master Class is a career-changing event. Having come from an environment where deadlines and budgets are almost pathologically abused, having the opportunity to learn from Juval was a godsend. Piece by piece he provided the parts and the appropriate tools for properly designing a project. The result is that costs and timelines are kept in check in the dynamic and even chaotic environment of modern software development. Juval says that you are going to engage in asymmetric warfare against overdue and over cost, and you walk away truly feeling that you have a gun to take to a knife fight. There is no magic—only the application of basic engineering and manufacturing tenets to software—but you will go back to your office feeling like a wizard.” –Matt Robold, software development manager, West Covina Service Group “The software project I work on was plagued with breakneck deadlines for years. Trying to understand software development methodologies and proper process felt like an energy drain because I had to battle management’s unwillingness to change, on top of meeting the unreasonable demands of my clients. I was fighting a war on two fronts and felt hopeless. I felt like a rMnin. The Master Class provided a rush of clarity I never knew existed. It taught the exact knowledge that I was searching for. I learned profound techniques that transformed my understanding of how software projects operate. I now have the tools to efficiently and effectively navigate my project in a torrent of never-ending requirement changes. In a world of chaos this class brought order. I am forever grateful to IDesign. My life will never be the same.” –Aaron Friedman, software architect “Life changing. I feel like a tuned piano after collecting dust for a couple of decades.” –Jordan Jan, CTO/architect “Fantastic experience. Changed my way of thinking on how to approach software development. I always knew some of what I was thinking was right with regard to design and coding. I never could express it in words but now I have them. It not only affects my way of thinking about software design but also other types of design.” –Lee Messick, lead architect “The course was amazing. Easily this was the most intense but rewarding week of my professional life.” –Stoil Pankov, software architect “Learning from Juval Lowy has changed my life. I went from being just a developer to being a true software architect, applying engineering principles from other disciplines to design not just software, but also my career.” –Kory Torgersen, software architect “The Architect Master Class is a life lesson on skills and design—which I took twice. It was so transformational the first time I attended that I wished I had taken this class decades back, when I started my career. Even taking it for the second time has only gotten me to 25% because the ideas are so profound. The required brain rewiring and unlearning is really painful, but I needed to come back again with more of my colleagues. Finally, every day that goes by I reflect back on what Juval said in the classes and use that to help my teams implementing even the small things so that we can all eventually call ourselves Professional Engineers. (P.S. I took 100 pages of notes second time around!)” –Jaysu Jeyachandran, software development manager, Nielsen “If you are frustrated, lacking energy, and demotivated after seeing and experiencing many failed attempts of our industry, the class is a boost of rejuvenation. It takes you to the next level of professional maturity and also gives you the hope and confidence that you can apply things properly. You will leave the Project Design Master Class with a new mindset and enough priceless tools that will give you no excuse to ever fail a software project. You get to practice, you get your hands dirty, you get insight, and experience. Yes, you CAN be accurate when it is time to provide your stakeholders with the cost, the time, and the risk of a project. Now, just don’t wait for a company to send you to this class. If you are serious about your career, you should hurry to take this or any IDesign Master Classes. It is the best self-investment you can make. Thank the entire great team of IDesign for their continuous efforts in helping the software industry become a solid engineering discipline.” –Lucian Marian, software architect, Mirabel “As someone in their late twenties, relatively early in their career, I can honestly say that this course has changed my life and the way I view my career path. I honestly expect this to be one of the most pivotal points of my life.” –Alex Karpowich, software architect “I wanted to thank you for a (professional) life-changing week. Usually I can’t sit at class more than 50% of the time–it is boring and they don’t teach me anything I couldn’t teach myself or already know. In the Architect’s Master Class I sat for nine hours a day and couldn’t get enough of it: I learned what my responsibilities are as an architect (I thought the architect is only the software designer), the engineering aspect of software, the importance of delivering not only on time but also on budget and on quality, not to wait to ‘grow’ to be an architect but to manage my career, and how to quantify and measure what I previously considered as hunches. I have much more insight from this week and many pieces are now in place. I can’t wait to attend the next Master Class.”–Itai Zolberg, software architect Table of ContentsPreface xxiiiAbout the Author xxxiii Chapter 1: The Method 3What Is The Method? 4What The Method Is Not 9 Part I: System Design 11 Chapter 2: Decomposition 13Avoid Functional Decomposition 14Volatility-Based Decomposition 30Identifying Volatility 37 Chapter 3: Structure 55Use Cases and Requirements 56Layered Approach 58Typical Layers 60Classification Guidelines 65Subsystems and Services 70Open and Closed Architectures 75 Chapter 4: Composition 83Requirements and Changes 83Composable Design 85There Is No Feature 91Handling Change 92 Chapter 5: System Design Example 95System Overview 96The Anti-Design Effort 106Business Alignment 108The Architecture 111Design Validation 124What’s Next? 135 Part II: Project Design 137 Chapter 6: Motivation 139Why Project Design? 139 Chapter 7: Project Design Overview 145Defining Success 145Project Initial Staffing 147Educated Decisions 151Services and Developers 153Effort Estimations 157Critical Path Analysis 166Scheduling Activities 176Project Cost 184Earned Value Planning 187Roles and Responsibilities 194 Chapter 8: Network and Float 195The Network Diagram 195Floats 199Floats-Based Scheduling 205 Chapter 9: Time and Cost 207Accelerating Software Projects 207Schedule Compression 210Time—Cost Curve 214Project Cost Elements 222Network Compression 231 Chapter 10: Risk 235Choosing Options 235Time—Risk Curve 236Risk Modeling 239Compression and Risk 248Risk Decompression 249Risk Metrics 253 Chapter 11: Project Design in Action 255The Mission 255Finding the Normal Solution 265Network Compression 276Efficiency Analysis 289Time—Cost Curve 290Planning and Risk 293SDP Review 303 Chapter 12: Advanced Techniques 307God Activities 307Risk Crossover Point 308Finding the Decompression Target 313Geometric Risk 315Execution Complexity 320Very Large Projects 324Small Projects 331Design by Layers 332 Chapter 13: Project Design Example 335Estimations 335Dependencies and Project Network 339The Normal Solution 341Compressed Solution 346Design by Layers 350Subcritical Solution 353Comparing the Options 355Planning and Risk 355Preparing for the SDP Review 359 Chapter 14: Concluding Thoughts 361When to Design a Project 361General Guidelines 365Design of Project Design 370In Perspective 372The Hand-Off 374In Practice 377Debriefing Project Design 378About Quality 379 Appendix A: Project Tracking 387Activity Life Cycle and Status 388Project Status 392Tracking Progress and Effort 395Projections 396Projections and Corrective Actions 398More on Projections 404 Appendix B: Service Contract Design 407Is This a Good Design? 407Modularity and Cost 409Services and Contracts 411Factoring Contracts 415Contract Design Metrics 419The Contract Design Challenge 423 Appendix C: Design Standard 425The Prime Directive 426Directives 426System Design Guidelines 426Project Design Guidelines 427Project Tracking Guidelines 429Service Contract Design Guidelines 430 Index 431
£34.19
The Pragmatic Programmers Distributed Services with Go: Your Guide to
Book SynopsisThis is the book for Gophers who want to learn how to build distributed systems. You know the basics of Go and are eager to put your knowledge to work. Build distributed services that are highly available, resilient, and scalable. This book is just what you need to apply Go to real-world situations. Level up your engineering skills today. Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essentials of storage handling, then work your way through networking a client and server, and finally to distributing server instances, deployment, and testing. All this will make coding in your day job or side projects easier, faster, and more fun. Create your own distributed services and contribute to open source projects. Build networked, secure clients and servers with gRPC. Gain insights into your systems and debug issues with observable services instrumented with metrics, logs, and traces. Operate your own Certificate Authority to authenticate internal web services with TLS. Automatically handle when nodes are added or removed to your cluster with service discovery. Coordinate distributed systems with replicated state machines powered by the Raft consensus algorithm. Lay out your applications and libraries to be modular and easy to maintain. Write CLIs to configure and run your applications. Run your distributed system locally and deploy to the cloud with Kubernetes. Test and benchmark your applications to ensure they're correct and fast. Dive into writing Go and join the hundreds of thousands who are using it to build software for the real world. What You Need: Go 1.13+ and Kubernetes 1.16+
£35.14
Pearson Education Limited Engineering Software Products An Introduction to
Book Synopsis
£76.99
Manning Publications Software Mistakes and Tradeoffs
Book SynopsisIn Software Mistakes and Tradeoffs you'll learn from costly mistakes that Tomasz Lelek and Jon Skeet have encountered over their impressive careers. You'll explore real-world scenarios where poor understanding of tradeoffs lead to major problems down the road, to help you make better design decisions. Plus, with a little practice, you'll be able to avoid the pitfalls that trip up even the most experienced developers. Software Mistakes and Tradeoffs teaches you how to make better decisions about designing, planning, and implementing applications. You'll analyse real-world scenarios where the wrong tradeoff decisions were made, and discover what could have been done differently. The book lays out the pros and cons of different approaches and explores evergreen patterns that will always be relevant to software design. Code performance versus simplicity. Delivery speed versus duplication. Flexibility versus maintain ability—everydecision you make in software engineering involves balancing tradeoffs. Often, decisions that look good at the design stage can prove problematic in practice.This book reveals the questions you need to be asking to make the right decisions for your own software tradeoffs. Trade Review“I can saywith confidence that 100% of software developers ask themselves at least onequestion addressed in this book.” Nelson González “The code examples are good enough that even if you don't have experience with Java—you can still understand what the authors aretrying to convey.” John Henry Galino “Tomasz Lelek and Jon Skeet are here to guide developers through the minefield of software engineering.” Gilles Lachelini “Reading this book will make you wiser and turn youinto the Yoda of the Software Engineering biz!” Gregory Varghese “If you need a book to learn how to think like a better programmer...then this is the book.” Alex Saez “This book is vital for every developer, from beginner to advanced, to improve your code quality and resolve common problems.”Andres Sacco “This book holds valuable information and tips every programmer should know before doing bigger software projects.” RobertTrausmuth
£34.19
Princeton University Press The Essence of Software
Book SynopsisTrade Review"Finalist for the PROSE Award in Computing and Information Sciences, Association of American Publishers""This book gives new answers to old questions, offering a fresh perspective on software design, with examples from over 100 familiar apps. It’s accessible to anyone—strategist, marketer, manager, designer, or programmer—who wants software that is more empowering, dependable, and delightful to use." * MIT News *
£21.25
Manning Publications Micro Frontends in Action
Book SynopsisBy adopting the micro frontends approach and designing your web apps as systems of features, you can deliver faster feature development, easier upgrades, and pick and choose the technology you use in your stack. Micro Frontends in Action is your guide to simplifying unwieldy frontends by composing them from small, well-defined units. You’ll learn to integrate web applications made up of smaller fragments using tools such as web components or server side includes, how to solve the organizational challenges of micro frontends, and how to create a design system that ensures an end user gets a consistent look and feel for your application. Key Features · Applying integration strategies with iframes, AJAX, server-side includes, web components and the app-shell approach · Optimizing for performance and asset delivery strategies · Designing coherent user interfaces · Migrating to a micro frontends architecture For intermediate web developers, team leaders, and software architects. About the technology The micro frontends approach extends the principles of microservices to frontend development. The application is divided into multiple independent vertical slices–from the database right up to the UI–then integrated using standards such as web components into a single user-facing frontend. Thanks to the smaller scope of a micro frontend, teams can deliver features faster, upgrade more easily, and make their own choices about their technology stack. Michael Geers is a software developer specializing in building user interfaces. He has written software for the web since he was a teenager. In the last few years, he has worked on various customer projects with verticalized architectures. He shares his experiences on this topic at international conferences, in a series of magazine articles, and website.Table of ContentsWelcomeMEAP VERSION 41 What Are Micro Frontends?2 My First Micro Frontends Project3 Composition with AJAX & Server-side Routing4 Server-side Composition5 Client-side Composition6 Communication Patterns7 Client-side Routing & The Application Shell8 Composition & Universal Rendering9 Which Architecture Fits My Project?10 Asset Loading11 Performance is Key12 User Interface & Design System13 Teams & Boundaries14 Migration, Local Development & Testing
£29.99
Manning Publications Math and Architectures of Deep Learning
Book SynopsisThe mathematical paradigms that underlie deep learning typically start out as hard-to-read academic papers, often leaving engineers in the dark about how their models actually function. Math and Architectures of Deep Learning bridges the gap between theory and practice, laying out the math of deep learning side by side with practical implementations in Python and PyTorch. Written by deep learning expert Krishnendu Chaudhury, you'll peer inside the “black box” to understand how your code is working, and learn to comprehend cutting-edge research you can turn into practical applications. about the technology It's important to understand how your deep learning models work, both so that you can maintain them efficiently and explain them to other stakeholders. Learning mathematical foundations and neural network architecture can be challenging, but the payoff is big. You'll be free from blind reliance on pre-packaged DL models and able to build, customize, and re-architect for your specific needs. And when things go wrong, you'll be glad you can quickly identify and fix problems. about the book Math and Architectures of Deep Learning sets out the foundations of DL in a way that's both useful and accessible to working practitioners. Each chapter explores a new fundamental DL concept or architectural pattern, explaining the underpinning mathematics and demonstrating how they work in practice with well-annotated Python code. You'll start with a primer of basic algebra, calculus, and statistics, working your way up to state-of-the-art DL paradigms taken from the latest research. By the time you're done, you'll have a combined theoretical insight and practical skills to identify and implement DL architecture for almost any real-world challenge. Trade Review'This is a book that will reward your patience and perseverance with a clear and detailed knowledge of deep learning mathematics and associated techniques.' Tony Holdroyd 'Most online machine learning courses teach you how to get stuff done, but they don't give you the underlying math. If you want to know, this is the book for you!' Wiebe de Jong 'A really interesting book for people that want to understand the underlying mathematical mechanism of deep learning.' Julien Pohie 'Gives a unique perspective about machine learning and mathematical approaches.' Krzysztof Kamyczek 'An awesome book to get the grasp of the important mathematical skills to understand the very basics of deep learning.' Nicole KoenigsteinTable of Contentstable of contents READ IN LIVEBOOK 1AN OVERVIEW OF MACHINE LEARNING AND DEEP LEARNING READ IN LIVEBOOK 2INTRODUCTION TO VECTORS, MATRICES AND TENSORS FROM MACHINE LEARNING AND DATA SCIENCE POINT OF VIEW READ IN LIVEBOOK 3INTRODUCTION TO VECTOR CALCULUS FROM MACHINE LEARNING POINT OF VIEW READ IN LIVEBOOK 4LINEAR ALGEBRAIC TOOLS IN MACHINE LEARNING AND DATA SCIENCE READ IN LIVEBOOK 5PROBABILITY DISTRIBUTIONS FOR MACHINE LEARNING AND DATA SCIENCE READ IN LIVEBOOK 6BAYESIAN TOOLS FOR MACHINE LEARNING AND DATA SCIENCE READ IN LIVEBOOK 7FUNCTION APPROXIMATION: HOW NEURAL NETWORKS MODEL THE WORLD READ IN LIVEBOOK 8TRAINING NEURAL NETWORKS: FORWARD AND BACKPROPAGATION READ IN LIVEBOOK 9LOSS, OPTIMIZATION AND REGULARIZATION READ IN LIVEBOOK 10ONE, TWO AND THREE DIMENSIONAL CONVOLUTION AND TRANSPOSED CONVOLUTION IN NEURAL NETWORKS 11 IMAGE ANALYSIS: 2D CONVOLUTION BASED NEURAL NETWORK ARCHITECTURES FOR OBJECT RECOGNITION AND DETECTION 12 VIDEO ANALYSIS: 3D CONVOLUTION BASED SPATIO TEMPORAL NEURAL NETWORK ARCHITECTURES READ IN LIVEBOOK APPENDIX A: APPENDIX A.1Dot Product and cosine of the angle between two vectors A.2Computing variance of Gaussian Distribution A.3Two Theorems in Statistic
£37.99
Pearson Education (US) Agile Product Management with Scrum
Book SynopsisRoman Pichler is a leading Scrum and agile product management expert. He has a long track record in teaching and coaching product owners and in helping companies apply effective product management practices. In addition to this book, he is the bestselling author of ScrumAgiles Projektmanagement erfolgreich einsetzen (ScrumApplying Agile Project Management Successfully) (dpunkt.verlag, 2008). As a Certified Scrum Trainer, he led the Scrum Alliance effort to develop a curriculum for the Certified Scrum Product Owner training. Find out more at romanpichler.com.Trade Review"Product owners have had few places to turn to for advice, despite having the hardest role on an agile project. This book rectifies that. Roman Pichler's insights into the duties of the product owner are powerful and practical. Correctly applied, his advice will benefit any product owner and agile team." -Mike Cohn, Author of Succeeding with Agile, Agile Estimating and Planning, and User Stories Applied "Scrum is silent on how a product owner can maximize value. Most product managers and marketers don't know how to use the iterative, incremental nature of Scrum to do so. Roman has filled this hole nicely with his new book, Agile Product Management with Scrum." -Ken Schwaber, codeveloper of the Scrum process "With so little written on the intersections of agile methods and product management, Roman makes a significant contribution to the field. The book provides clear guidance and rich examples on how to become an agile product manager and a successful product owner, and, further, how to lead with a strong vision. This book is a must read for product managers new to Scrum, product owners new to product management, and any product manager who wants to get the most out of Agile." -Greg Cohen, Principal Consultant, 280 Group and Director, Silicon Valley Product Management Association "I'm always happy to hear what Roman is thinking. What I really like about this book is that he not only shares his experience ("Common Mistakes" is a great section), but he also brings in the wisdom of others in the field. This powerful combination allows him to see farther ahead and share that vision with us. Thanks, Roman!" -Linda Rising, Independent Consultant and coauthor of Fearless Change: Patterns for Introducing New Ideas "Roman Pichler's new and remarkable book focuses on the product and the product owner role, applying Scrum to the whole value chain. His experience as a coach leads to genuinely balanced, practical, and applicable solutions for every conceivable situation in the product lifecycle. This is the definitive reference guide to agile product management for all practitioners!" -Markus Andrezak, Manager, Outsourced Product Development, mobile.international GmbH "Roman Pichler's product owner book is an easy-to-read and comprehensive description of the important role of the product owner in Scrum. It points out the significance of vision and leadership, as well as minimal marketable products and short release cycles. It is a resource for new product owners to get into their job and gives management good advice on choosing the right person for that job." -Andrea Heck, Dipl-Inf (Univ.), Agile Transition Project Manager "The product owner is a vital role in Scrum, and Roman's new book is a welcome contribution to helping product owners succeed." -Craig Larman, coauthor of Scaling Lean & Agile Development and Practices for Scaling Lean & Agile Development "Roman's no-nonsense approach takes Scrum back to its roots, examining and building on the fundamental concepts behind product ownership. The focus on teamwork is a welcome antidote to process-centric views of Scrum, showing how the product owner role changes and challenges the status quo of the traditionally run project. Well researched, Roman leverages both his own experience as well as that of others, clearly showing how Scrum product ownership works to solve common problems, citing realworld examples of both success and failure. Scattered with practical tips, this book is for anybody who wants to manage or to be a Scrum product owner and release successful products using Scrum." -Simon Bennett, Global Competency Lead and Product Owner, EMC Consulting "Roman Pichler's Agile Product Management with Scrum is destined to be a vital reference for agile product managers, product owners, business analysts, and anybody wanting to be a great agile product manager. Roman shares practical tips and guidance on all aspects of agile planning, the care and feeding of your product backlog, and the essential activities of visioning, valuing, and collaborating. Agile Product Management with Scrum will raise your awareness of the complex, multifaceted discipline of agile product management. Better yet, all agile team members will benefit by reading this book, because on every successful agile team, we all think like product managers." -Ellen Gottesdiener, President/Founder, EBG Consulting, Inc. "Agile software development is about incrementally converting requirements into working software using short iterations. Agile Product Management with Scrum answers one of the most important questions in product organizations: "Are we building the right product?" Or, as Roman so passionately put it in his subtitle, Creating Products that Customers Love. Roman's book is the long-awaited link to turn a broad vision into meaningful and digestible requirements. It provides a thorough introduction to the Scrum framework for product managers and executives who are eager to reduce development costs and time-to-market delivery of exciting new software products." -Jochen Krebs, Incrementor and Author of Agile Portfolio Management "Roman delivers an agile product management book that clearly describes the importance, challenges, and pitfalls of the product owner role. Using practical examples, highlighting common mistakes, and supplying reflection questions at the end of each chapter, Roman makes the role of product owner easily accessible and doable. This is the book to read for any organization wishing to implement Scrum." -Jessica Hildrum, former CEO of Norway's premier Agile training company "At the core of every successful agile development team is a visionary, engaged, and empowered product manager. In Agile Product Management with Scrum, Roman Pichler gives us a simple, no-nonsense definition of the role that will lead any Scrum team to amazing results. For all of you that want to get under the covers of the most important role in agile development, this is the book for you. A must for every new product owner!" -Steve Greene, Vice President, Program Management & Agile Development, salesforce.comTable of ContentsForeword by Jeff Sutherland xv Foreword by Brett Queener xvii Preface xix Acknowledgments xxiii About the Author xxv Chapter 1: Understanding the Product Owner Role 1 The Product Owner Role 2 Desirable Characteristics of a Product Owner 3 Working with the Team 7 Collaborating with the ScrumMaster 9 Working with Customers, Users, and Other Stakeholders 10 Scaling the Product Owner Role 12 Common Mistakes 16 Reflection 20 Chapter 2: Envisioning the Product 23 The Product Vision 24 Desirable Qualities of the Vision 25 The Minimal Marketable Product 27 Simplicity 31 Customer Needs and Product Attributes 33 The Birth of the Vision 35 Techniques for Creating the Vision 37 Visioning and the Product Road Map 41 Minimal Products and Product Variants 42 Common Mistakes 43 Reflection 46 Chapter 3: Working with the Product Backlog 47 The DEEP Qualities of the Product Backlog 48 Grooming the Product Backlog 49 Discovering and Describing Items 51 Prioritizing the Product Backlog 54 Getting Ready for Sprint Planning 59 Sizing Items 64 Dealing with Nonfunctional Requirements 68 Scaling the Product Backlog 70 Common Mistakes 71 Reflection 74 Chapter 4: Planning the Release 75 Time, Cost, and Functionality 76 Quality Is Frozen 78 Early and Frequent Releases 79 Quarterly Cycles 81 Velocity 82 The Release Burndown 83 The Release Plan 87 Release Planning on Large Projects 91 Common Mistakes 94 Reflection 96 Chapter 5: Collaborating in the Sprint Meetings 97 Sprint Planning 98 Definition of Done 99 Daily Scrum 100 Sprint Backlog and Sprint Burndown 101 Sprint Review 101 Sprint Retrospective 103 Sprint Meetings on Large Projects 104 Common Mistakes 107 Reflection 109 Chapter 6: Transitioning into the Product Owner Role 111 Becoming a Great Product Owner 111 Developing Great Product Owners 115 Reflection 118 References 119 Index 125
£28.02
APress Pro Git
Book SynopsisPro Git (Second Edition) is your fully-updated guide to Git and its usage in the modern world.Trade ReviewTable of Contents1. Getting Started2. Git Basics3. Git Branching4. Git on the Server5. Distributed Git6. GitHub7. Git Tools8. Customizing Git9. Git and Other Systems10. Git Internals
£35.50
O'Reilly Media Head First Software Development
Book SynopsisEven the best developers have seen well-intentioned software projects fail - often because the customer kept changing requirements, and end users didn't know how to use the software you developed. This work guides you through the best practices of software development. It gives you information about each step of the software development lifecycle.
£35.99
Pearson Education (US) Implementing Lean Software Development
Book SynopsisMary Poppendieck is a seasoned leader in operations and product development with more than thirty years of IT experience. She has led teams implementing solutions ranging from enterprise supply chain management to digital media, and built one of 3M's first Just-in-Time Lean production systems. Mary is the president of Poppendieck LLC, which specializes in bringing Lean techniques to software development. Tom Poppendieck is an enterprise analyst, architect, and agile process mentor with more than twenty-five years of experience developing and implementing complex systems. He currently assists organizations in applying Lean principles and tools to software development processes. Table of ContentsForeword by Jeff Sutherland xvii Foreword by Kent Beck xx Preface xxiii Chapter 1: History 1 Interchangeable Parts 1 Interchangeable People 2 The Toyodas 3 The Toyota Production System 4 Taiichi Ohno 5 Shigeo Shingo 6 Just-in-Time 7 Lean 11 Lean Manufacturing / Lean Operations 11 Lean Supply Chain 12 Lean Product Development 13 Lean Software Development 17 Try This 17 Chapter 2: Principles 19 Principles and Practices 19 Software Development 20 The Seven Principles of Lean Software Development 23 Principle 1: Eliminate Waste 23 Principle 2: Build Quality In 25 Principle 3: Create Knowledge 29 Principle 4: Defer Commitment 32 Principle 5: Deliver Fast 34 Principle 6: Respect People 36 Principle 7: Optimize the Whole 38 Try This 42 Chapter 3: Value 43 Lean Solutions 43 Google 43 From Concept to Cash 46 Delighted Customers 49 Deep Customer Understanding 50 Focus on the Job 51 The Customer-Focused Organization 52 Leadership 52 Complete Teams 57 Custom Development 60 From Projects to Products 60 IT--Business Collaboration 62 Try This 65 Chapter 4: Waste 67 Write Less Code 67 Zara 67 Complexity 69 The Seven Wastes 73 Partially Done Work 74 Extra Features 75 Relearning 76 Handoffs 77 Task Switching 78 Delays 80 Defects 81 Mapping the Value Stream 83 Preparation 83 Examples 85 Future Value Stream Maps 92 Try This 92 Chapter 5: Speed 95 Deliver Fast 95 PatientKeeper 95 Time: The Universal Currency 98 Queuing Theory 100 Little's Law 100 Variation and Utilization 101 Reducing Cycle Time 103 Try This 114 Chapter 6: People 117 A System of Management 117 The Boeing 777 117 W. Edwards Deming 120 Why Good Programs Fail 124 Teams 126 What Makes a Team? 126 Expertise 129 Leadership 132 Responsibility-Based Planning and Control 133 The Visual Workspace 136 Self-Directing Work 137 Incentives 141 Performance Evaluations 141 Compensation 143 Try This 147 Chapter 7: Knowledge 149 Creating Knowledge 149 Rally 149 What, Exactly, Is Your Problem? 152 A Scientific Way of Thinking 154 Keeping Track of What You Know 155 Just-in-Time Commitment 159 Set-Based Design 160 Refactoring 164 Problem Solving 168 A Disciplined Approach 169 Kaizen Events 173 Try This 175 Chapter 8: Quality 177 Feedback 177 The Polaris Program 177 Release Planning 179 Architecture 182 Iterations 183 Discipline 190 The Five S's 190 Standards 193 Mistake-Proofing 196 Test-Driven Development 198 Configuration Management 201 Continuous Integration 202 Nested Synchronization 203 Try This 204 Chapter 9: Partners 207 Synergy 207 Emergency! 207 Open Source 209 Global Networks 210 Outsourcing 214 Contracts 217 The T5 Agreement 217 The PS 2000 Contract 218 Relational Contracts 219 Try This 221 Chapter 10: Journey 223 Where Do You Want to Go? 223 A Computer on Wheels 224 A Long-Term Perspective 225 Centered on People 227 What Have We Learned? 229 Six Sigma 229 Theory of Constraints 230 Hypothesis 234 Training 234 Thinking 236 Measurement 237 Roadmap 242 Try This 243 Optimize the Whole 243 Respect People 243 Deliver Fast 244 Defer Commitment 244 Create Knowledge 245 Build Quality In 245 Eliminate Waste 246 Bibliography 247 Index 257
£35.14
Pearson Education (US) Lean DevOps
Book SynopsisRobert Benefield is an experienced technical leader who has decades of experience delivering robust on-demand services to solve hard problems in demanding ecosystems including banking and securities trading, medical and pharmaceutical, energy, telecom, government, and Internet services. His continual eagerness to learn and work with others to make a difference has taken him from building computers and writing code in the early days of the Internet at Silicon Valley startups to the executive suite in large multinational companies. He shares his unique experience in the hopes that others can continue to build on it without having to collect quite as many scars along the way. Table of ContentsIntroduction 1 Chapter 1: The Problem with IT Service Delivery 7 Approach #1: Reduce Delivery Friction 9 The Downsides of Targeting Delivery Friction 11 Approach #2: Managing Service Delivery Risk 12 The Downsides of Targeting Service Delivery Risk 14 The Essence of Delivery 15 Beginning the DevOps Journey 17 Summary 18 Chapter 2: How We Make Decisions 21 Examining the Decision-Making Process 22 Boyd and the Decision Process 23 The OODA Loop 26 The Ingredients of Decision Making 29 Ingredient 1: The Target Outcome 30 Delivering Measures over Outcomes 36 Ingredient 2: Friction Elimination 39 Ingredient 3: Situational Awareness 42 The Challenge of Trust 44 The Fragility of Mental Models and Cognitive Biases 45 Ingredient 4: Learning 48 Failing to Learn 48 The Pathway to Improved Decision Making 53 Summary 54 Chapter 3: Mission Command 55 The Origins of Mission Command 56 Learning How to Lead Effectively the Hard Way 57 Managing Through Unpredictability 58 Knowledge and Awareness Weaknesses 59 Misalignments 60 Misjudgment of Ecosystem Complexity 61 The Anatomy of Mission Command 62 Commander's Intent 63 Brief 66 Situational Overview 67 Statement of the Desired Outcome or Overall Mission Objective 67 Execution Priorities 67 Anti-Goals and Constraints 68 Backbriefing 69 Einheit: The Power of Mutual Trust 71 Creating Einheit in DevOps 74 Continual Improvement 75 Staff Rides 78 After Action Reviews 79 Organizational Impacts of Mission Command 80 Summary 81 Chapter 4: Friction 83 Understanding Ohno's Forms of Waste 84 Muda (Pure Waste) 86 Muri (Overburden) 109 Mura (Fluctuation and Irregularity) 113 See the Whole 125 Summary 126 Chapter 5: Risk 127 Cynefin and Decision Making 128 Ordered Systems 131 Unordered Systems 134 Reimagining Risk Management 143 Have Clear and Understood Target Outcomes 144 Make the Best Choice the Easiest Choice 145 Continually Improve Ecosystem Observability 147 Summary 151 Chapter 6: Situational Awareness 153 Making Sense of Our Ecosystem 154 The Mental Model 157 The Problems with Mental Models 158 Cognitive Bias 161 Gaining Better Situational Awareness 163 Framing 164 Finding and Fixing Framing Problems 165 Information Flow 169 Why Ecosystem Dynamics Matter 169 Meeting Your Information Flow Needs 172 Analysis and Improvement 181 Summary 182 Chapter 7: Learning 183 The Emergence of Skills Attainment Learning 184 The Rise of the One Right Way 186 Outcome-Directed Learning 188 Creating a Learning Culture 191 Day-to-Day Kata 191 Improvement and Problem-Solving Kata 192 The Coaching Practice 193 Summary 195 Chapter 8: Embarking on the DevOps Journey 197 The Service Delivery Challenge 204 Traditional Delivery Fog in the Service World 205 The Challenge of the "ilities" 207 The Path to Eliminating Service Delivery Fog 209 The Role of Managers in Eliminating Service Delivery Fog 210 Identifying What You Can or Cannot Know 214 Ways the Team Can Eliminate Service Delivery Fog 219 Summary 220 Chapter 9: Service Delivery Maturity and the Service Engineering Lead 221 Modeling Service Delivery Maturity 223 The Example of Measuring Code Quality 224 Service Delivery Maturity Model Levels 225 Service Delivery Maturity Areas of Interest 228 Configuration Management and Delivery Hygiene 232 Supportability 235 Single Point of Failure Mitigation and Coupling Management 239 Engagement 241 The Service Engineering Lead 243 Why Have a Separate Rotating Role? 244 How the SE Lead Improves Awareness 246 Organizational Configurations with the SE Lead 248 Challenges to Watch Out For 250 Incentivizing Collaboration and Improvement 251 Developers Running Production Services 253 Overcoming the Operational Experience Gap 254 Summary 256 Chapter 10: Automation 257 Tooling and Ecosystem Conditions 258 Building Sustainable Conditions 260 5S 261 Seeing Automation 5S in Action 278 Tools & Automation Engineering 283 Organizational Details 285 Workflow and Sync Points 285 Summary 287 Chapter 11: Instrumentation and Observability 289 Determining the "Right" Data 291 Know the Purpose and Value 293 Know the Audience 297 Know the Source 302 Making the Ecosystem Observable 307 Instrumenting for Observability 310 Instrumenting Development 310 Instrumenting Packaging and Dependencies 314 Instrumenting Tooling 316 Instrumenting Environment Change and Configuration Management 317 Instrumenting Testing 319 Instrumenting Production 320 Queryable/Reportable Live Code and Services 321 Presenting Task, Change, Incident, and Problem Records Together 321 Environment Configuration 322 Logging 323 Monitoring 324 Security Tracking and Analysis 325 Service Data 326 Pulling It All Together 327 Instrumenting a Wastewater Ecosystem 328 Instrumenting an IT Ecosystem 331 Summary 333 Chapter 12: Workflow 335 Workflow and Situational Awareness 336 Managing Work Through Process 337 Managing Work Organically 339 The Tyranny of Dark Matter 340 Learning to See the Disconnects in Action 343 Resolving Disconnects by Building Context 347 Visualizing the Flow 349 Workflow Board Basics 351 State Columns 352 State Columns for Operations 353 Swim Lanes 355 Task Cards 358 Preventing Dark Matter 359 Using the Board 362 Seeing the Problems 363 Limiting Work in Progress 365 The Limits of a Workflow Board 367 Managing the Board 367 Managing Flow and Improvement 368 Summary 368 Chapter 13: Queue Master 371 An Introduction to the Queue Master 372 Role Mechanics 374 "Follow the Sun" Queue Mastering 384 Queue Master Rollout Challenges 389 Team Members Don't See the Value 389 More Traditionally Minded Managers Thwarting Rollout 390 Pushy Queue Masters 391 Junior Team Members as Queue Masters 391 Queue Masters Who Struggle to Lead Sync Points 394 Summary 394 Chapter 14: Cycles and Sync Points 395 Inform, Align, Reflect, and Improve 396 Top-Down Alignment Control Approach 397 Alignment Through Iterative Approaches 397 Service Operations Synchronization and Improvement 400 The Tactical Cycle 400 Important Differences Between Kickoffs and Sprint Planning 404 Daily Standup 408 Retrospective 411 General Meeting Structure 413 The Learning and Improvement Discussion 415 The Strategic Cycle 421 Strategic Review 424 General Review Structure 426 A3 Problem Solving for the Strategic Review 427 Summary 432 Chapter 15: Governance 433 Factors for Successful Governance 434 Meeting Intent 435 No Target Outcome Interference 437 Maintain Situational Awareness and Learning 438 Common Governance Mistakes 440 Poor Requirement Drafting and Understanding 440 Using Off-the-Shelf Governance Frameworks 445 Out-of-the-Box Process Tooling and Workflows 450 Tips for Effective DevOps Governance 453 Understand Governance Intent 454 Make It Visible 454 Propose Reasonable Solutions 456 Automation and Compliance 458 Be Flexible and Always Ready to Improve 458 Summary 460 Appendix 461 9780133847505 TOC 6/7/2022
£29.69
Pearson Education (US) Agile Software Requirements
Book SynopsisDean Leffingwell, a thirty-year software industry veteran, has spent his career helping software teams achieve their goals. A renowned methodologist, author, coach, entrepreneur, and executive, he founded Requisite, Inc., makers of RequisitePro, and served as its CEO. As vice president at Rational Software (now part of IBM), he led the commercialization of the Rational Unified Process. As an independent consultant and as an advisor to Rally Software, he has helped entrepreneurial teams and large, distributed, multinational corporations implement Agile methods at scale. He is the author of Scaling Software Agility: Best Practices for Large Enterprises (Addison-Wesley, 2007) and is the lead author of Managing Software Requirements, Second Edition (Addison-Wesley, 2003), which has been translated into five languages.Trade Review Praise for Agile Software Requirements “In my opinion, there is no book out there that more artfully addresses the specific needs of agile teams, programs, and portfolios all in one. I believe this book is an organizational necessity for any enterprise.” –Sarah Edrie, Director of Quality Engineering, Harvard Business School “Agile Software Requirements and Mr. Leffingwell’s teachings have been very influential and inspiring to our organization. They have allowed us to make critical cultural changes to the way we approach software development by following the framework he’s outlined here. It has been an extraordinary experience.” –Chris Chapman, Software Development Manager, Discount Tire “This book supplies empirical wisdom connected with strong and very well-structured theory of succeeding with software projects of different scales. People new to agile, practitioners, or accomplished agilists–we all were waiting for such a book.” –Oleksandr (Alex) Yakyma, Agile Consultant, www.enter-Agile.com “This book presents practical and proven agile approaches for managing software requirements for a team, collaborating teams of teams, and all across the enterprise. However, this is not only a great book on agile requirements engineering; rather, Leffingwell describes the bigger picture of how the enterprise can achieve the benefits of business agility by implementing lean product development flow. His ‘Big Picture’ of agile requirements is an excellent reference for any organization pursuing an intrinsically lean software development operational mode. Best of all, we’ve applied many of these principles and practices at Nokia (and even helped create some of them), and therefore we know they work. –Juha-Markus Aalto, Agile Change Program Manager, Nokia Corporation “This pragmatic, easy-to-understand, yet thought-provoking book provides a hands-on guide to addressing a key problem that enterprises face: How to make requirements practices work effectively in large-scale agile environments. Dean Leffingwell’s focus on lean principles is refreshing and much needed!” –Per Kroll, author, and Chief Architect for Measured Improvements, IBM “Agile programming is a fluid development environment. This book serves as a good starting point for learning.” –Brad Jackson, SAS Institute Inc. “Dean Leffingwell captures the essence of agile in its entirety, all the way from the discrete user story in the ‘trenches’ to complex software portfolios at the enterprise level. The narrative balances software engineering theory with pragmatic implementation aspects in an easy-to-understand manner. It is a book that demands to be read in a single sitting.” –Israel Gat, http://theAgileexecutive.com, @Agile_exec on Twitter “An incredibly complete, clear, concise, and pragmatic reference for agile software development. Much more than mere guidelines for creating requirements, building teams, and managing projects, this reference work belongs on the bookshelf of anyone and everyone involved with not only agile processes but software development in general.” –R.L. Bogetti, Lead System Designer, Baxter Healthcare “This book covers software requirements from the team level to program and portfolio levels, including the architecture management and a consistent framework for the whole enterprise. We have practiced the multi-team release planning and the enterprise-level architecture work with kanban and achieved instant success in our organization. Combining the principles of the product development flow with the current large-scale agile and lean software development is a really novel concept. Well worth reading and trying out the ideas here.” –Santeri Kangas, Chief Software Architect, and Gabor Gunyho, Lean Change Agent, F-Secure Corp. “Dean Leffingwell and his Agile Release Train (ART) concept guides us from teamlevel agile to enterprise-level agile. The ART concept is a very powerful tool in planning and managing large software programs and helps to identify and solve potential organizational roadblocks–early.” –Markku Lukkarinen, Head of Programs, Nokia Siemens NetworksTable of Contents Foreword xxiii Preface xxvii Acknowledgments xxxiii About the Author xxxv Part I: Overview: The Big Picture 1 Chapter 1: A Brief History of Software Requirements Methods 3 Software Requirements in Context: Decades of Predictive, Waterfall-Like Processes 5 Iterative and Incremental Processes 9 Adaptive (Agile) Processes 12 Requirements Management in Agile Is Fundamentally Different 16 Enterprise-Scale Adaptive Processes 19 Introduction to Lean Software 20 Summary 28 Chapter 2: The Big Picture of Agile Requirements 31 The Big Picture Explained 32 Big Picture: Team Level 34 Big Picture: Program Level 38 Big-Picture Elements: Portfolio Level 43 Summary 45 Chapter 3: Agile Requirements for the Team 47 Introduction to the Team Level 47 Agile Team Roles and Responsibilities 50 User Stories and the Team Backlog 55 Acceptance Tests 58 Unit Tests 60 Summary 61 Chapter 4: Agile Requirements for the Program 63 Introduction to the Program Level 63 Organizing Agile Teams at Scale 64 Vision 74 Features 75 Nonfunctional Requirements 77 The Agile Release Train 80 Roadmap 81 Summary 82 Chapter 5: Agile Requirements for the Portfolio 83 Introduction to the Portfolio Level 83 Investment Themes 84 Portfolio Management Team 85 Epics and the Portfolio Backlog 85 Epics, Features, and Stories 87 Architectural Runway and Architectural Epics 88 Summary 91 Summary of the Full, Enterprise Requirements Information Model 91 Interlude: Case Study: Tendril Platform 93 Background for the Case Study 93 System Context Diagram 95 Part II: Agile Requirements for the Team 97 Chapter 6: User Stories 99 Introduction 99 User Story Form 102 INVEST in Good User Stories 105 Splitting User Stories 111 Spikes 114 Technical Spikes and Functional Spikes 114 Story Modeling with Index Cards 116 Summary 117 Chapter 7: Stakeholders, User Personas, and User Experiences 119 Stakeholders 119 Identifying Stakeholders 122 User Personas 126 Agile and User Experience Development 129 Summary 133 Chapter 8: Agile Estimating and Velocity 135 Introduction 135 Why Estimate? The Business Value of Estimating 137 Estimating Scope with Story Points 138 Understanding Story Points: An Exercise 138 An Alternate Technique: Tabletop Relative Estimation 145 From Scope Estimates to Team Velocity 146 Caveats on the Relative Estimating Model 147 From Velocity to Schedule and Cost 148 Estimating with Ideal Developer Days 149 A Hybrid Model 151 Summary 152 Chapter 9: Iterating, Backlog, Throughput, and Kanban 155 Iterating: The Heartbeat of Agility 155 Backlog, Lean, and Throughput 169 Software Kanban Systems 179 Summary 180 Chapter 10: Acceptance Testing 183 Why Write About Testing in an Agile Requirements Book? 183 Agile Testing Overview 184 What Is Acceptance Testing? 187 Characteristics of Good Story Acceptance Tests 188 Acceptance Test-Driven Development 190 Acceptance Test Template 192 Automated Acceptance Testing 193 Unit and Component Testing 196 Summary 199 Chapter 11: Role of the Product Owner 201 Is This a New Role? 201 Perspectives on Dual Roles of Product Owner and Product Manager 202 Responsibilities of the Product Owner in the Enterprise 207 Five Essential Attributes of a Good Product Owner 218 Collaboration with Product Managers 220 Product Owner Bottlenecks: Part-Time Product Owners, Product Owner Proxies, Product Owner Teams 221 Seeding the Product Owner Role in the Enterprise 222 Summary 224 Chapter 12: Requirements Discovery Toolkit 227 The Requirements Workshop 228 Brainstorming 232 Interviews and Questionnaires 237 User Experience Mock-Ups 241 Forming a Product Council 243 Competitive Analysis 244 Customer Change Request Systems 245 Use-Case Modeling 247 Summary 247 Part III: Agile Requirements for the Program 249 Chapter 13: Vision, Features, and Roadmap 251 Vision 251 Expressing the Vision 252 Features 255 Estimating Features 257 Testing Features 260 Prioritizing Features 261 The Roadmap 271 Summary 273 Chapter 14: Role of the Product Manager 275 Product Manager, Business Analyst? 276 Responsibilities of the Product Manager in a Product Company 276 Business Responsibilities of the Role in the IT/IS Shop 278 Responsibility Summary 279 Phases of Product Management Disillusionment in the Pre-Agile Enterprise 280 Evolving Product Management in the Agile Enterprise 283 Responsibilities of the Agile Product Manager 287 Summary 297 Chapter 15: The Agile Release Train 299 Introduction to the Agile Release Train 300 Driving Strategic Alignment 304 Institutionalizing Product Development Flow 305 Designing the Agile Release Train 308 Planning the Release 308 Tracking and Managing the Release 309 Release Retrospective 310 Measuring Release Predictability 310 Releasing 313 Summary 317 Chapter 16: Release Planning 319 Preparing for Release Planning 319 Release Planning Narrative, Day 1 322 Release Planning Narrative, Day 2 328 Stretch Goals 336 Summary 338 Chapter 17: Nonfunctional Requirements 339 Modeling Nonfunctional Requirements 340 Exploring Nonfunctional Requirements 342 Persisting Nonfunctional Requirements 347 Testing Nonfunctional Requirements 348 Template for an NFR Specification 352 Summary 354 Chapter 18: Requirements Analysis Toolkit 355 Activity Diagrams 357 Sample Reports 358 Pseudocode 358 Decision Tables and Decision Trees 359 Finite State Machines 361 Message Sequence Diagrams 364 Entity-Relationship Diagrams 365 Use-Case Modeling 366 Summary 366 Chapter 19: Use Cases 367 The Problems with User Stories and Backlog Items 368 Five Good Reason to Still Use Use Cases 368 Use Case Basics 369 A Use Case Example 375 Applying Use Cases 377 Use Cases in the Agile Requirements Information Model 378 Summary 379 Part IV: Agile Requirements for the Portfolio 381 Chapter 20: Agile Architecture 383 Introduction to the Portfolio Level of the Big Picture 383 Systems Architecture in Enterprise-Class Systems 384 Eight Principles of Agile Architecture 390 Implementing Architectural Epics 399 Splitting Architecture Epics 403 Summary 405 Chapter 21: Rearchitecting with Flow 407 Architectural Epic Kanban System 408 Overview of the Architectural Epic Kanban System 409 1. The Funnel: Problem/Solution Needs Identification 412 2. Backlog 415 3. Analysis 418 4. Implementation 423 Summary 427 Chapter 22: Moving to Agile Portfolio Management 429 Portfolio Management 429 When Agile Teams Meet the PMO: Two Ships Pass in the Night 431 Legacy Mind-Sets Inhibit Enterprise Agility 432 Legacy Mind-Sets in Portfolio Management 433 Eight Recommendations for Moving to Agile Portfolio Management 436 Summary: On to Agile Portfolio Planning 447 Chapter 23: Investment Themes, Epics, and Portfolio Planning 449 Investment Themes 450 Epics 452 Identifying and Prioritizing Business Epics: A Kanban System for Portfolio Planning 456 Summary 467 Chapter 24: Conclusion 469 Further Information 470 Appendix A: Context-Free Interview 471 Appendix B: Vision Document Template 475 Appendix C: Release Planning Readiness Checklist 485 Appendix D: Agile Requirements Enterprise Backlog Meta-model 489 Bibliography 491 Index 495
£38.69
Pearson Education (US) Peopleware
Book SynopsisTom DeMarco and Timothy Lister are principals of The Atlantic Systems Guild (www.systemsguild.com), a consulting firm specializing in the complex processes of system building, with particular emphasis on the human dimension. Together, they have lectured, written, and consulted internationally since 1979 on management, estimating, productivity, and corporate culture. Tom DeMarco is the author or coauthor of nine books on subjects ranging from development methods to organizational function and dysfunction, as well as two novels and a book of short stories. His consulting practice focuses primarily on expert witness work, balanced against the occasional project and team consulting assignment. Currently enjoying his third year teaching ethics at the University of Maine, he lives in nearby Camden. <Table of Contents Chapter 1: Somewhere Today, a Project Is Failing Chapter 2: Make a Cheeseburger, Sell a Cheeseburger Chapter 3: Vienna Waits for You Chapter 4: Quality—If Time Permits Chapter 5: Parkinson’s Law Revisited Chapter 6: Laetrile Chapter 7: The Furniture Police Chapter 8: “You Never Get Anything Done around Here between 9 and 5.” Chapter 9: Saving Money on Space Chapter 10: Brain Time versus Body Time Chapter 11: The Telephone Chapter 12: Bring Back the Door Chapter 13: Taking Umbrella Steps Chapter 14: The Hornblower Factor Chapter 15: Let’s Talk about Leadership Chapter 16: Hiring a Juggler Chapter 17: Playing Well with Others Chapter 18: Childhood’s End Chapter 19: Happy to Be Here Chapter 20: Human Capital Chapter 21: The Whole Is Greater Than the Sum of the Parts Chapter 22: The Black Team Chapter 23: Teamicide Chapter 24: Teamicide Revisited Chapter 25: Competition Chapter 26: A Spaghetti Dinner Chapter 27: Open Kimono Chapter 28: Chemistry for Team Formation Chapter 29: The Self-Healing System Chapter 30: Dancing with Risk Chapter 31: Meetings, Monologues, and Conversations Chapter 32: The Ultimate Management Sin Is . . . Chapter 33: E(vil) Mail Chapter 34: Making Change Possible Chapter 35: Organizational Learning Chapter 36: The Making of Community Chapter 37: Chaos and Order Chapter 38: Free Electrons Chapter 39: Holgar Dansk
£30.14
John Wiley & Sons Inc PatternOriented Software Architecture A Pattern
Book SynopsisThe eagerly awaited Pattern-Oriented Software Architecture (POSA) Volume 4 is about a pattern language for distributed computing. The authors will guide you through the best practices and introduce you to key areas of building distributed software systems.Trade Review"The authors' decision to include a real-life use case was a good strategy it illustrate the application of the pattern language." (Computing Reviews, February 15, 2008)Table of ContentsForeword xv About This Book xvii About The Authors xxiii Guide To The Reader xxvii Part I Some Concepts 1 1 On Patterns and Pattern Languages 3 1.1 Patterns Introduced 4 1.2 Inside Patterns 6 1.3 Between Patterns 10 1.4 Into Pattern Languages 13 1.5 Patterns Connected 15 2 On Distributed Systems 17 2.1 Benefits of Distribution 18 2.2 Challenges of Distribution 20 2.3 Technologies for Supporting Distribution 22 2.4 Limitations of Middleware 32 3 On the Pattern Language 33 3.1 Intent, Scope, and Audience 34 3.2 Origins and Genesis 35 3.3 Structure and Content 36 3.4 Presentation 44 3.5 Practical Use 49 Part II A Story 53 4 Warehouse Management Process Control 57 4.1 System Scope 58 4.2 Warehouse Management Process Control 60 5 Baseline Architecture 65 5.1 Architecture Context 66 5.2 Partitioning the Big Ball of Mud 67 5.3 Decomposing the Layers 68 5.4 Accessing Domain Object Functionality 71 5.5 Bridging the Network 72 5.6 Separating User Interfaces 76 5.7 Distributing Functionality 79 5.8 Supporting Concurrent Domain Object Access 82 5.9 Achieving Scalable Concurrency 85 5.10 Crossing the Object-Oriented/Relational Divide 87 5.11 Configuring Domain Objects at Runtime 89 5.12 Baseline Architecture Summary 90 6 Communication Middleware 95 6.1 A Middleware Architecture for Distributed Systems 96 6.2 Structuring the Internal Design of the Middleware 100 6.3 Encapsulating Low-level System Mechanisms 103 6.4 Demultiplexing ORB Core Events 105 6.5 Managing ORB Connections 108 6.6 Enhancing ORB Scalability 111 6.7 Implementing a Synchronized Request Queue 114 6.8 Interchangeable Internal ORB Mechanisms 116 6.9 Consolidating ORB Strategies 118 6.10 Dynamic Configuration of ORBs 121 6.11 Communication Middleware Summary 124 7 Warehouse Topology 129 7.1 Warehouse Topology Baseline 130 7.2 Representing Hierarchical Storage 131 7.3 Navigating the Storage Hierarchy 133 7.4 Modeling Storage Properties 135 7.5 Varying Storage Behavior 137 7.6 Realizing Global Functionality 140 7.7 Traversing the Warehouse Topology 142 7.8 Supporting Control Flow Extensions 144 7.9 Connecting to the Database 146 7.10 Maintaining In-Memory Storage Data 147 7.11 Configuring the Warehouse Topology 149 7.12 Detailing the Explicit Interface 151 7.13 Warehouse Topology Summary 153 8 The Story Behind The Pattern Story 157 Part III The Language 163 9 From Mud To Structure 167 Domain Model ** 182 Layers ** 185 Model-View-Controller ** 188 Presentation-Abstraction-Control 191 Microkernel ** 194 Reflection * 197 Pipes and Filters ** 200 Shared Repository ** 202 Blackboard 205 Domain Object ** 208 10 Distribution Infrastructure 211 Messaging ** 221 Message Channel ** 224 Message Endpoint ** 227 Message Translator ** 229 Message Router ** 231 Publisher-Subscriber ** 234 Broker ** 237 Client Proxy ** 240 Requestor ** 242 Invoker ** 244 Client Request Handler ** 246 Server Request Handler ** 249 11 Event Demultiplexing and Dispatching 253 Reactor ** 259 Proactor * 262 Acceptor-Connector ** 265 Asynchronous Completion Token ** 268 12 Interface Partitioning 271 Explicit Interface ** 281 Extension Interface ** 284 Introspective Interface ** 286 Dynamic Invocation Interface * 288 Proxy ** 290 Business Delegate ** 292 Facade ** 294 Combined Method ** 296 Iterator ** 298 Enumeration Method ** 300 Batch Method ** 302 13 Component Partitioning 305 Encapsulated Implementation ** 313 Whole-Part ** 317 Composite ** 319 Master-Slave * 321 Half-Object plus Protocol ** 324 Replicated Component Group * 326 14 Application Control 329 Page Controller ** 337 Front Controller ** 339 Application Controller ** 341 Command Processor ** 343 Template View ** 345 Transform View ** 347 Firewall Proxy ** 349 Authorization ** 351 15 Concurrency 353 Half-Sync/Half-Async ** 359 Leader/Followers ** 362 Active Object ** 365 Monitor Object ** 368 16 Synchronization 371 Guarded Suspension ** 380 Future ** 382 Thread-Safe Interface * 384 Double-Checked Locking 386 Strategized Locking ** 388 Scoped Locking ** 390 Thread-Specific Storage 392 Copied Value ** 394 Immutable Value ** 396 17 Object Interaction 399 Observer ** 405 Double Dispatch ** 408 Mediator * 410 Command ** 412 Memento ** 414 Context Object ** 416 Data Transfer Object ** 418 Message ** 420 18 Adaptation and Extension 423 Bridge ** 436 Object Adapter ** 438 Chain of Responsibility * 440 Interpreter 442 Interceptor ** 444 Visitor ** 447 Decorator 449 Execute-Around Object ** 451 Template Method * 453 Strategy ** 455 Null Object ** 457 Wrapper Facade ** 459 Declarative Component Configuration * 461 19 Modal Behavior 463 Objects for States * 467 Methods for States * 469 Collections for States ** 471 20 Resource Management 473 Container * 488 Component Configurator * 490 Object Manager ** 492 Lookup ** 495 Virtual Proxy ** 497 Lifecycle Callback ** 499 Task Coordinator * 501 Resource Pool ** 503 Resource Cache ** 505 Lazy Acquisition ** 507 Eager Acquisition ** 509 Partial Acquisition * 511 Activator ** 513 Evictor ** 515 Leasing ** 517 Automated Garbage Collection ** 519 Counting Handle ** 522 Abstract Factory ** 525 Builder * 527 Factory Method ** 529 Disposal Method ** 531 21 Database Access 533 Database Access Layer ** 538 Data Mapper ** 540 Row Data Gateway ** 542 Table Data Gateway ** 544 Active Record 546 22 A Departing Thought 549 Glossary 553 References 573 Index of Patterns 587 Index of Names 593 Subject Index 595
£32.80
John Wiley & Sons Inc Virtualization For Dummies
Book SynopsisVirtualization has become a megatrend-and for good reason. Implementing virtualization allows for more efficient utilization of network server capacity, simpler storage administration, reduced energy costs, and better use of corporate capital. In other words: virtualization helps you save money, energy, and space.Table of ContentsForeword xvii Introduction 1 Part I: Getting Started with a Virtualization Project 7 Chapter 1: Wrapping Your Head around Virtualization 9 Chapter 2: Making a Business Case for Virtualization 33 Chapter 3: Understanding Virtualization: Technologies and Applications 49 Chapter 4: Peeking at the Future of Virtualization 83 Part II: Server Virtualization 99 Chapter 5: Deciding Whether Server Virtualization Is Right for You 101 Chapter 6: Performing a Server Virtualization Cost-Benefit Analysis 111 Chapter 7: Managing a Virtualization Project 129 Chapter 8: Choosing Hardware for Your Server Virtualization Project 159 Part III: Server Virtualization Software Options 187 Chapter 9: Migrating to Your New Virtualized Environment 189 Chapter 10: Managing Your Virtualized Environment 209 Chapter 11: Creating a Virtualized Storage Environment 221 Part IV: Implementing Virtualization 243 Chapter 12: Implementing VMware Server 245 Chapter 13: Implementing Fedora Virtualization 267 Chapter 14: Implementing XenExpress 291 Part V: The Part of Tens 319 Chapter 15: Ten Steps to Your First Virtualization Project 321 Chapter 16: Ten Virtualization Pitfalls to Avoid 329 Chapter 17: Ten Great Resources on Virtualization 335 Index 341
£23.99