Business process management is usually treated from two different perspectives: business administration and computer science. While business administration professionals tend to consider information technology as a subordinate aspect in business process management for experts to handle, by contrast computer science professionals often consider business goals and organizational regulations as terms that do not deserve much thought but require the appropriate level of abstraction. Mathias Weske argues that all communities involved need to have a common understanding of the different aspects of business process management. To this end, he details the complete business process lifecycle from the modeling phase to process enactment and improvement, taking into account all different stakeholders involved. After starting with a presentation of general foundations and abstraction models, he explains concepts like process orchestrations and choreographies, as well as process properties and data dependencies. Finally, he presents both traditional and advanced business process management architectures, covering, for example, workflow management systems, service-oriented architectures, and data-driven approaches. In addition, he shows how standards like WfMC, SOAP, WSDL, and BPEL fit into the picture. This textbook is ideally suited for classes on business process management, information systems architecture, and workflow management. This 2nd edition contains major updates on BPMN Version 2 process orchestration and process choreographies, and the chapter on BPM methodologies has been completely rewritten. The accompanying website www.bpm-book.com contains further information and additional teaching material.
Continuous Delivery shows how tocreate fully automated, repeatable, and reliable processes for rapidly moving changes through build, deploy, test, and release. Using these techniques, software organizations are getting critical fixes and other new releases into production in hours - sometimes even minutes - evenin large projects with complex code bases. Jez Humble and David Farley begin by presenting the high-level principles and practices required to succeed with regular, repeatable, low-risk releases. Next, they introduce the ´´deployment pipeline,´´ an automated process for managing all changes, from check-in to release. Finally, they discuss the ´´ecosystem´´ needed to support deployment pipelines, from infrastructure to data management and governance. The authors introduce many state-of-the-art techniques, including in-production monitoring and tracing, dependency management, and the use of virtualization. For each, they review key issues, demonstrate how to mitigate risks, and identify best practices. Coverage includes · Overcoming ´´anti-patterns´´ that slow down releases and reduce quality · Automating all facets of configuration management and testing · Implementing deployment pipelines at team and organizational levels · Scripting highly-effective automated build and deployment processes · Triggering automated processes whenever a change is made · Automating acceptance testing, from analysis to implementation · Testing capacity and other non-functional requirements · Utilizing continuous deployment, rollbacks, and zero-downtime releases · Managing infrastructure, data, components, dependencies, and versions · Navigating risk management, compliance, and other obstacles Whether you´re a developer, architect, tester, or manager, this book will help you move from idea to release faster than ever - so you can deliver far more value, far more rapidly. Product Description Winner of the 2011 Jolt Excellence Award! Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours- sometimes even minutes-no matter what the size of a project or the complexity of its code base. Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk delivery process. Next, they introduce the ´´deployment pipeline,´´ an automated process for managing all changes, from check-in to release. Finally, they discuss the ´´ecosystem´´ needed to support continuous delivery, from infrastructure, data and configuration management to governance. The authors introduce state-of-the-art techniques, including automated infrastructure management and data migration, and the use of virtualization. For each, they review key issues, identify best practices, and demonstrate how to mitigate risks. Coverage includes . Automating all facets of building, integrating, testing, and deploying software . Implementing deployment pipelines at team and organizational levels . Improving collaboration between developers, testers, and operations . Developing features incrementally on large and distributed teams . Implementing an effective configuration management strategy . Automating acceptance testing, from analysis to implementation . Testing capacity and other non-functional requirements . Implementing continuous deployment and zero-downtime releases . Managing infrastructure, data, components and dependencies . Navigating risk management, compliance, and auditing Whether you´re a developer, systems administrator, tester, or manager, this book will help your organization move from idea to release faster than ever-so you can deliver value to your business rapidly and reliably. Backcover Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours-
The main aim of this book is to teach D to readers who are new to computer programming. Although having experience in other programming languages is certainly helpful, this book starts from the basics. D is a multi-paradigm system programming language that combines a wide range of powerful programming concepts from the lowest to the highest levels. It has C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity in mind. Each chapter is based on the contents of the previous ones, introducing as few new concepts as possible. It is recommended that the book is read in linear fashion, without skipping chapters if possible. Although this book was written with beginners in mind, it covers almost all features of D. More experienced programmers can use the book as a D language reference by starting from the index section. Blurbs from the back cover: ´´D is pristine, clean, immensely powerful, and arguably the actual state-of-the-art programming language. Ali´s book is a gem. Clear, concise, and complete.´´ - Olivier Henley ´´I have been using Ali´s online D book to teach D at the university level. It is up-to-date, complete, and most importantly, extremely readable. Having a print version is even better! This is now the ´go-to´ book for learning D programming.´´ - Chuck Allison, Professor and Chair, Computer Science Department, Utah Valley University ´´Ali´s explanations are succinct and on target. I like that he provides rationale for why D was designed in a particular way and how I can use it most effectively. This is the best computer language book I´ve read.´´ - Robbin Carlson, Luthier and Enterprise Architect ´´I taught a CS2 Data Structures class in D with more success and student appreciation than when using either C++ or Java as it´s an ideal language to express the relevant concepts at all scales, from detailed to big picture, without needless complexity. Ali Çehreli´s tutorial played a central role supporting students especially during the first half of the course - without it the course simply would not have worked, so ´´many thanks Ali´´ - and an important part of that is its linearity - it can be read with only backward dependencies. This meant that with hard work even students of little experience and only moderate current abilities could get up to speed, and we saw just that. It is hard to overstate this factor. I unreservedly recommend this book to all.´´ - Dr. Carl Sturtivant, University of Minnesota Department of Computer Science & Engineering ´´This book is one of the best guides through the language that I´ve seen.´´ - Andrew Wray, D Enthusiast ´´I encourage anyone considering D to read this book. Not exactly ´D for Dummies´ but it´s easy to follow even if you don´t have much experience with compiled languages.´´ - bachmeier, Reddit user ´´Having worked through the book, I have to say this is one of the easiest to follow and distraction free read there is and the fact that it made learning a new language a total breeze really impressed me.´´ - Imran Khan, Student
Proven strategies for maintaining and optimizing legacy code to get the most out of your existing applications. Examples in C-sharp, C++, and Java, as well as strategies for better using the industry standard modeling language: UML 2.0 Addresses the very concrete problems that programmers face working in the context of large untested code bases Based on successful classes for Object Mentor, the author helps organizations maintain older systems rather than go to the cost of developing new ones This book provides programmers with the ability to cost effectively handle common legacy code problems without having to go through the hugely expensive task of rewriting all existing code. It describes a series of practical strategies that developers can employ to bring their existing software applications under control. The author provides useful guidance about how to use these strategies when refactoring or making functional changes to code bases. One of the book´s key points is that it teaches developers to write tests that can be used to make sure they are not unintentionally changing the application as they optimize it. Examples are provided in Java, C++, and Csharp, and the book assumes that the reader has some knowledge of UML notation. Strategies using UML and code in C++ and Java primarily while language independent advice will be delivered in side bars and appendices for language specific users. Product Description This book provides programmers with the ability to cost effectively handlecommon legacy code problems without having to go through the hugelyexpensive task of rewriting all existing code. It describes a series of practicalstrategies that developers can employ to bring their existing softwareapplications under control. The author provides useful guidance about how touse these strategies when refactoring or making functional changes to codebases. One of the book´s key points is that it teaches developers to write teststhat can be used to make sure they are not unintentionally changing theapplication as they optimize it. Examples are provided in Java, C++, and Csharp,and the book assumes that the reader has some knowledge of UMLnotation. Strategies using UML and code in C++ and Java primarily whilelanguage independent advice will be delivered in side bars and appendices forlanguage specific users. Backcover Get more out of your legacy systems: more performance, functionality, reliability, and manageability Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts. In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control. The topics covered include Understanding the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance Getting legacy code into a test harness Writing tests that protect you against introducing new problems Techniques that can be used with any language or platform-with examples in Java, C++, C, and C# Accurately identifying where code changes need to be made Coping with legacy systems that aren´t object-oriented Handling applications that don´t seem to have any structure This book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes. © Copyright Pearson Education. All rights reserved. Preface. Introduction. 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
SysML extends UML with powerful systems engineering capabilities for modeling a far wider spectrum of systems, and effectively capturing all aspects of a system?s design. Now, there?s a go-to reference for everyone who wants to start creating accurate and useful system models with SysML. Drawing on his pioneering experience creating models for Lockheed Martin and NASA, Lenny Delligatti illuminates SysML?s core components, and shows how to use them even under tight deadlines and other constraints. You needn?t know all of SysML to create effective models: SysML Distilled quickly teaches what you do need to know, and helps you deepen your knowledge incrementally as the need arises. Coverage includes: How SysML extends and improves UML, and how to immediately put it to practical use How to use SysML as a foundation for Model-Based System Engineering (MBSE) or Model-Based Engineering (MBE) What to know before you start an SysML modeling project How to use key SysML diagrams for block definitions, internal blocks, use cases, activities, sequences, state machines, parametrics, requirements, and packages How to use allocations to define cross-cutting relationships And much more ? including appendices presenting complete SysML notation, identifying changes between SysML versions, and identifying authoritative sources for more information Product Description The Systems Modeling Language (SysML) extends UML with powerful systems engineering capabilities for modeling a wider spectrum of systems and capturing all aspects of a system?s design. SysML Distilled is the first clear, concise guide for everyone who wants to start creating effective SysML models. (Drawing on his pioneering experience at Lockheed Martin and NASA, Lenny Delligatti illuminates SysML?s core components and provides practical advice to help you create good models and good designs. Delligatti begins with an easy-to-understand overview of Model-Based Systems Engineering (MBSE) and an explanation of how SysML enables effective system specification, analysis, design, optimization, verification, and validation. Next, he shows how to use all nine types of SysML diagrams, even if you have no previous experience with modeling languages. A case study running through the text demonstrates the use of SysML in modeling a complex, real-world sociotechnical system. Modeled after Martin Fowler?s classic UML Distilled, Delligatti?s indispensable guide quickly teaches you what you need to know to get started and helps you deepen your knowledge incrementally as the need arises. Like SysML itself, the book is method independent and is designed to support whatever processes, procedures, and tools you already use. Coverage Includes Why SysML was created and the business case for using it Quickly putting SysML to practical use What to know before you start a SysML modeling project Essential concepts that apply to all SysML diagrams SysML diagram elements and relationships Diagramming block definitions, internal structures, use cases, activities, interactions, state machines, constraints, requirements, and packages Using allocations to define mappings among elements across a model SysML notation tables, version changes, and sources for more information Features + Benefits The most practical introduction to SysML Covers all essential diagrams: block definitions, internal blocks, use cases, activities, sequences, state machines, parametrics, requirements, and packages How to use SysML to move towards full-fledged Model-Based Systems Engineering (MBSE) Foreword by Rick Steiner xvii Foreword by Richard Soley xix Preface xxv Acknowledgments xxxi About the Author xxxiii Chapter 1: Overview of Model-Based Systems Engineering 1 1.1 What Is MBSE? 2 1.2 The Three Pillars of MBSE 4 1.3 The Myth of MBSE 9 Chapter 2: Overview of the Systems Modeling Language 11 2.1 What SysML Is?and Isn?t 11 2.2 Yes, SysML Is Based on UML?but You Can Start with SysML 13 2.3 SysML Diagram Overview 14 2.4 General Diagram Concepts 17 Chapter 3: Block Definition Diagrams 23 3.1 Purpose 23 3.2 When Should You Create a BDD? 24 3.3 The BDD Frame 24 3.4 Blocks 26 3.5 Associations: Another Notation for a Property 44 3.6 Generalizations 49 3.7 Dependencies 52 3.8 Actors 53 3.9 Value Types 55 3.10 Constraint Blocks 57 3.11 Comments 59 Chapter 4: Internal Block Diagrams 63 4.1 Purpose 63 4.2 When Should You Create an IBD? 64 4.3 Blocks, Revisited 64 4.4 The IBD Frame 65 4.5 BDDs and IBDs: Complementary Views of a Block 66
Develop modular applications using the Java Platform Module System, the single most anticipated feature in Java 9. You will improve maintainability and performance of your Java applications by deploying only modules that are needed and encapsulating their implementation details. Until now Java has been monolithic. Using any one part of Java has meant incorporating the entirety of the runtime environment, an approach ill-suited to the increasing number of IoT devices such as fitness monitors, kitchen appliances, toys and games, and so forth. This book shows a new way, to make Java scale from the smallest of footprints in the smallest of devices through desktop PCs and on up to server platforms. With Java 9 Modularity Revealed you will learn to make your projects more reliable and scalable than ever using the most important feature in Java 9-The Java Platform Module System, known more commonly as Project Jigs aw. You will learn how to avoid one of the major pain points of Java programming, that of conflicting class names from different modules, or packages. You will learn to create custom run-time images that represent a minimal and more compact JRE containing only those modules that you need. You will further learn to migrate existing Java applications to modular ones using different approaches and tools. The end result is a new ability to plug together different modules without fear of namespace and other conflicts, and you can deploy to everything from small devices to large servers. This book provides code examples and explanations. What You´ll Learn Build Java applications using the new modular system introduced in Java 9 Create your own JRE consisting only of the modules that you require Adapt your testing techniques toward modular applications lare your dependencies on other modules Enable modules to export only specific packages Migrate existing Java applications to modular ones Improve maintainability and performance of Java applications Who This Book Is For Experienced Java programmers wanting to keep up and become informed on the new modularity support in Java 9