Effective Software Development for Enterprise: Beyond DDD, Software Architecture, and XP


Book Description

A book about building high-quality software solutions via engineering excellence, software architecture, and leadership best practices. * * * "This book is a must-read for both technical and non-technical readers: software engineers, architects, managers and even top-level executives. It will give you the tools you need to become an effective technology leader. The tools provided will apply whether your organization is focused on delivering software to external customers or has the need for internal solutions. The book has a no nonsense approach and provides concrete solutions to common obstacles to delivering a cost-effective and long-lived software solution." -- Dave Black, Solutions & Performance Architect, Black Box Solutions, Inc. * * * "I have been developing software for over 30 years, and based on that experience, I am confident that the modern comprehensive approach laid out in this book will work better than that in any environment I have seen to date. This is the book many of us have been waiting for. It is mostly based on Domain-Driven Design, which may seem counterintuitive to many at first, but the author astutely explains how it saves so much pain in the longer term, which thus maximizes ROI. It is highly relevant that the approach in this book is the product of the author's first-hand experience. There is nothing theoretical about it. It is entirely pragmatic. For example, it recognizes the purpose of profit. In fact, I found it to be more pragmatic than many other industry luminaries. All roles are covered, and in a way that is respectful to all of them. The first three sections are a must-read for non-technical team members, such as product owners. Its style and size make it a quick read with reference links to any deeper dives one may wish to make." -- Jim Hammond, Lead Developer, Kantar * * * "I have found this book to be an all-encompassing eye-opener about all-things software development, starting from requirements analysis through successful releases. As a technology leader, I think it is worth considering techniques demonstrated in the "Effective Software Development for Enterprise" in organizations that want to change and run engineering processes and teams in a more efficient manner that delivers business value and improves morale." -- Lasha Kochoradze, CTO at Nugios Technology * * * "I enjoyed reading the "Effective Software Development for Enterprise" because this is a unique book. Besides presenting techniques to implement Effective Software, the author tries to defeat the status quo and shift our mindset into a "what if" mode. This engraved passion and belief make the book a special one, which I would recommend to executives, architects, and other engineering leaders. I have seen and heard Tengiz succeed with the approaches he presents in this book. If he could do this, why can't anybody else?" -- Nugzar Nebieridze, Entrepreneur, Expert of Cybersecurity, Ex-CIO at Liberty Bank Georgia * * * "This book uncovers fundamental issues that are inherent to many large organizations. Take Agile teams as an example - they need to adapt to changes fast, but a confusing graph of dependencies makes it impossible to deliver features independently; how are they supposed to be agile then? Departments and groups are formed based on managerial preferences rather than the business problems that the company solves. Systems are built based on what is easy to develop rather than what is right to deliver. The "Effective Software Development for Enterprise" fearlessly exposes gaps in organizational structures, processes, and technical systems. Being an Agile practitioner for years, I think this publication is up-and-coming, and I look forward to seeing companies adopting these suggestions and forming more scalable teams, processes, and applications." -- Romana Stasiv, Agile Fellow




Domain-driven Design


Book Description

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




Effective Software Development for the Enterprise


Book Description

It's a jungle out there. Delivering software solutions with predictable costs, time, scope, and quality has become more complicated than ever. Developers need to account for multiple moving targets, including often avoided but always relevant factors such as culture, people, and leadership. To effectively deal with these challenges, it's necessary to rethink the entire delivery chain of modern software development. This book addresses all these topics, putting everything in perspective, from the potential awkwardness created by cultural differences to connecting code with business outcomes to make delivering quality solutions possible. As a software engineer who strives to be his best and challenge the status quo when building IT systems, author Tengiz Tutisani always wanted a book that would cover all of these elements from a developer's perspective - so he wrote one. Effective Software Development for the Enterprise builds on advanced disciplines, methodologies, and techniques derived from domain-driven design, software architecture, and extreme programming. Its objective is to aid modern software engineers and solution architects in building and delivering high-quality solutions for an enterprise while meeting ambitious criteria: Meet users' expectations Deliver solutions on time with no defects Create products that can scale-out horizontally Solutions should not require a dedicated production support team Accelerate development pace Double ROI per developer, team, and software You will learn how to achieve these objectives in any engineering environment by developing solid strategies based on the industry's well-known, recognized, and proven patterns and principles. After reading this book, you will be ready to effectively deal with any and all challenges posed by today's hyper-competitive, globally-diverse, fast-moving enterprise environment.




Beyond Software Architecture


Book Description

This text aims to help all members of the development team make the correct nuts-and-bolts architecture decisions that ensure project success.




Growing Object-Oriented Software, Guided by Tests


Book Description

Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your code before you write the code itself. However, this "simple" idea takes skill and judgment to do well. Now there's a practical guide to TDD that takes you beyond the basic concepts. Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and “grow” software that is coherent, reliable, and maintainable. Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done. Through an extended worked example, you’ll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects. Along the way, the book systematically addresses challenges that development teams encounter with TDD—from integrating TDD into your processes to testing your most difficult features. Coverage includes Implementing TDD effectively: getting started, and maintaining your momentum throughout the project Creating cleaner, more expressive, more sustainable code Using tests to stay relentlessly focused on sustaining quality Understanding how TDD, Mock Objects, and Object-Oriented Design come together in the context of a real software development project Using Mock Objects to guide object-oriented designs Succeeding where TDD is difficult: managing complex test data, and testing persistence and concurrency




Software Architecture with C# 9 and .NET 5


Book Description

Design scalable and high-performance enterprise applications using the latest features of C# 9 and .NET 5 Key FeaturesGain fundamental and comprehensive software architecture knowledge and the skillset to create fully modular appsDesign high-performance software systems using the latest features of .NET 5 and C# 9Solve scalability problems in web apps using enterprise architecture patternsBook Description Software architecture is the practice of implementing structures and systems that streamline the software development process and improve the quality of an app. This fully revised and expanded second edition, featuring the latest features of .NET 5 and C# 9, enables you to acquire the key skills, knowledge, and best practices required to become an effective software architect. This second edition features additional explanation of the principles of Software architecture, including new chapters on Azure Service Fabric, Kubernetes, and Blazor. It also includes more discussion on security, microservices, and DevOps, including GitHub deployments for the software development cycle. You will begin by understanding how to transform user requirements into architectural needs and exploring the differences between functional and non-functional requirements. Next, you will explore how to carefully choose a cloud solution for your infrastructure, along with the factors that will help you manage your app in a cloud-based environment. Finally, you will discover software design patterns and various software approaches that will allow you to solve common problems faced during development. By the end of this book, you will be able to build and deliver highly scalable enterprise-ready apps that meet your organization’s business requirements. What you will learnUse different techniques to overcome real-world architectural challenges and solve design consideration issuesApply architectural approaches such as layered architecture, service-oriented architecture (SOA), and microservicesLeverage tools such as containers, Docker, Kubernetes, and Blazor to manage microservices effectivelyGet up to speed with Azure tools and features for delivering global solutionsProgram and maintain Azure Functions using C# 9 and its latest featuresUnderstand when it is best to use test-driven development (TDD) as an approach for software developmentWrite automated functional test casesGet the best of DevOps principles to enable CI/CD environmentsWho this book is for This book is for engineers and senior software developers aspiring to become architects or looking to build enterprise applications with the .NET Stack. Basic familiarity with C# and .NET is required to get the most out of this book.




Model-Driven Software Development


Book Description

Model-Driven Software Development (MDSD) is currently a highly regarded development paradigm among developers and researchers. With the advent of OMG's MDA and Microsoft's Software Factories, the MDSD approach has moved to the centre of the programmer's attention, becoming the focus of conferences such as OOPSLA, JAOO and OOP. MDSD is about using domain-specific languages to create models that express application structure or behaviour in an efficient and domain-specific way. These models are subsequently transformed into executable code by a sequence of model transformations. This practical guide for software architects and developers is peppered with practical examples and extensive case studies. International experts deliver: * A comprehensive overview of MDSD and how it relates to industry standards such as MDA and Software Factories. * Technical details on meta modeling, DSL construction, model-to-model and model-to-code transformations, and software architecture. * Invaluable insight into the software development process, plus engineering issues such as versioning, testing and product line engineering. * Essential management knowledge covering economic and organizational topics, from a global perspective. Get started and benefit from some practical support along the way!




Domain-Driven Design Quickly


Book Description

Domain Driven Design is a vision and approach for dealing with highly complex domains that is based on making the domain itself the main focus of the project, and maintaining a software model that reflects a deep understanding of the domain. This book is a short, quickly-readable summary and introduction to the fundamentals of DDD; it does not introduce any new concepts; it attempts to concisely summarize the essence of what DDD is, drawing mostly Eric Evans' original book, as well other sources since published such as Jimmy Nilsson's Applying Domain Driven Design, and various DDD discussion forums. The main topics covered in the book include: Building Domain Knowledge, The Ubiquitous Language, Model Driven Design, Refactoring Toward Deeper Insight, and Preserving Model Integrity. Also included is an interview with Eric Evans on Domain Driven Design today.




Microsoft .NET - Architecting Applications for the Enterprise


Book Description

A software architect’s digest of core practices, pragmatically applied Designing effective architecture is your best strategy for managing project complexity–and improving your results. But the principles and practices of software architecting–what the authors call the “science of hard decisions”–have been evolving for cloud, mobile, and other shifts. Now fully revised and updated, this book shares the knowledge and real-world perspectives that enable you to design for success–and deliver more successful solutions. In this fully updated Second Edition, you will: Learn how only a deep understanding of domain can lead to appropriate architecture Examine domain-driven design in both theory and implementation Shift your approach to code first, model later–including multilayer architecture Capture the benefits of prioritizing software maintainability See how readability, testability, and extensibility lead to code quality Take a user experience (UX) first approach, rather than designing for data Review patterns for organizing business logic Use event sourcing and CQRS together to model complex business domains more effectively Delve inside the persistence layer, including patterns and implementation.




Java SOA Cookbook


Book Description

Java SOA Cookbook offers practical solutions and advice to programmers charged with implementing a service-oriented architecture (SOA) in their organization. Instead of providing another conceptual, high-level view of SOA, this cookbook shows you how to make SOA work. It's full of Java and XML code you can insert directly into your applications and recipes you can apply right away. The book focuses primarily on the use of free and open source Java Web Services technologies -- including Java SE 6 and Java EE 5 tools -- but you'll find tips for using commercially available tools as well. Java SOA Cookbook will help you: Construct XML vocabularies and data models appropriate to SOA applications Build real-world web services using the latest Java standards, including JAX-WS 2.1 and JAX-RS 1.0 for RESTful web services Integrate applications from popular service providers using SOAP, POX, and Atom Create service orchestrations with complete coverage of the WS-BPEL (Business Process Execution Language) 2.0 standard Improve the reliability of SOAP-based services with specifications such as WS-Reliable Messaging Deal with governance, interoperability, and quality-of-service issues The recipes in Java SOA Cookbook will equip you with the knowledge you need to approach SOA as an integration challenge, not an obstacle.