Top 10 Best Books to Read in Software Design Tools - August 2021

Here are our top ten recommendations if you are looking for the best books to read in Software Design Tools. We have made sure our list is diverse to cater to the interests of different types of readers.

1. Crafting Interpreters


Top 10 Best Books to Read in Software Design Tools - August 2021

Despite using them every day, most software engineers know little about how programming languages are designed and implemented. For many, their only experience with that corner of computer science was a terrifying "compilers" class that they suffered through in undergrad and tried to blot from their memory as soon as they had scribbled their last NFA to DFA conversion on the final exam. That fearsome reputation belies a field that is rich with useful techniques and not so difficult as some of its practitioners might have you believe. A better understanding of how programming languages are built will make you a stronger software engineer and teach you concepts and data structures you'll use the rest of your coding days. You might even have fun. This book teaches you everything you need to know to implement a full-featured, efficient scripting language. You’ll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your brain will light up with new ideas, and your hands will get dirty and calloused. Starting from main(), you will build a language that features rich syntax, dynamic typing, garbage collection, lexical scope, first-class functions, closures, classes, and inheritance. All packed into a few thousand lines of clean, fast code that you thoroughly understand because you wrote each one yourself.

  • Author: Robert Nystrom
  • Genre: Computers & Technology, Programming

                 

2. Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People


Top 10 Best Books to Read in Software Design Tools - August 2021

Summary Grokking Algorithms is a fully illustrated, friendly guide that teaches you how to apply common algorithms to the practical problems you face every day as a programmer. You'll start with sorting and searching and, as you build up your skills in thinking algorithmically, you'll tackle more complex concerns such as data compression and artificial intelligence. Each carefully presented example includes helpful diagrams and fully annotated code samples in Python. Learning about algorithms doesn't have to be boring! Get a sneak peek at the fun, illustrated, and friendly examples you'll find in Grokking Algorithms on Manning Publications' YouTube channel. Continue your journey into the world of algorithms with Algorithms in Motion , a practical, hands-on video course available exclusively at Manning.com (www.manning.com/livevideo/algorithms-​in-motion). Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology An algorithm is nothing more than a step-by-step procedure for solving a problem. The algorithms you'll use most often as a programmer have already been discovered, tested, and proven. If you want to understand them but refuse to slog through dense multipage proofs, this is the book for you. This fully illustrated and engaging guide makes it easy to learn how to use the most important algorithms effectively in your own programs. About the Book Grokking Algorithms is a friendly take on this core computer science topic. In it, you'll learn how to apply common algorithms to the practical programming problems you face every day. You'll start with tasks like sorting and searching. As you build up your skills, you'll tackle more complex problems like data compression and artificial intelligence. Each carefully presented example includes helpful diagrams and fully annotated code samples in Python. By the end of this book, you will have mastered widely applicable algorithms as well as how and when to use them. What's Inside Covers search, sort, and graph algorithms Over 400 pictures with detailed walkthroughs Performance trade-offs between algorithms Python-based code samples About the Reader This easy-to-read, picture-heavy introduction is suitable for self-taught programmers, engineers, or anyone who wants to brush up on algorithms. About the Author Aditya Bhargava is a Software Engineer with a dual background in Computer Science and Fine Arts. He blogs on programming at adit.io . Table of Contents Introduction to algorithms Selection sort Recursion Quicksort Hash tables Breadth-first search Dijkstra's algorithm Greedy algorithms Dynamic programming K-nearest neighbors.

  • Author: Aditya Bhargava
  • Publisher: Manning Publications; 1st edition (May 1, 2016)
  • Genre: Computers & Technology, Computer Science
  • ISBN: 978-1617292231
  • Dimensions: 7.38 x 0.4 x 9.25 inches

                 

3. Fundamentals of Software Architecture: An Engineering Approach


Top 10 Best Books to Read in Software Design Tools - August 2021

Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This book provides the first comprehensive overview of software architecture’s many aspects. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics. Mark Richards and Neal Ford - hands-on practitioners who have taught software architecture classes professionally for years - focus on architecture principles that apply across all technology stacks. You’ll explore software architecture in a modern light, taking into account all the innovations of the past decade. This book examines: Architecture patterns: the technical basis for many architectural decisions Components: identification, coupling, cohesion, partitioning, and granularity Soft skills: effective team management, meetings, negotiation, presentations, and more Modernity: engineering practices and operational approaches that have changed radically in the past few years Architecture as an engineering discipline: repeatable results, metrics, and concrete valuations that add rigor to software architecture

  • Author: Mark Richards
  • Genre: Computers & Technology, Programming, Software Design, Testing & Engineering, Tools

                 

4. Software Engineering at Google: Lessons Learned from Programming Over Time


Top 10 Best Books to Read in Software Design Tools - August 2021

Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering. How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization. You’ll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code: How time affects the sustainability of software and how to make your code resilient over time How scale affects the viability of software practices within an engineering organization What trade-offs a typical engineer needs to make when evaluating design and development decisions.

  • Author: Titus Winters
  • Publisher: O'Reilly Media; 1st edition (March 24, 2020)
  • Genre: Computers & Technology, Programming
  • ISBN: 978-1492082798
  • Dimensions: 7 x 1.22 x 9.19 inches

                 

5. User Story Mapping: Discover the Whole Story, Build the Right Product


Top 10 Best Books to Read in Software Design Tools - August 2021

User 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. Author Jeff Patton shows you how changeable story maps enable your team to hold better conversations about the project throughout the development process. Your team will learn to come away with a shared understanding of what you’re attempting to build and why. Get a high level view of story mapping, with an exercise to learn key concepts quickly Understand how stories really work, and how they come to life in Agile and Lean projects Dive into a story’s lifecycle, starting with opportunities and moving deeper into discovery Prepare your stories, pay attention while they’re built, and learn from those you convert to working software

  • Author: Jeff Patton
  • Publisher: O'Reilly Media; 1st edition (October 7, 2014)
  • Genre: Computers & Technology, Programming
  • ISBN: 978-1491904909
  • Dimensions: 5.98 x 0.68 x 9.02 inches

                 



6. Essential Scrum: A Practical Guide to the Most Popular Agile Process (Addison-Wesley Signature Series (Cohn))


Top 10 Best Books to Read in Software Design Tools - August 2021

A Practical Guide to the Most Popular Agile Process   The Single-Source, Comprehensive Guide to Scrum for All Team Members, Managers, and Executives   If you want to use Scrum to develop innovative products and services that delight your customers, Essential Scrum is the complete, single-source reference you’ve been searching for. Leading Scrum coach and trainer Kenny Rubin illuminates the values, principles, and practices of Scrum, and describes flexible, proven approaches that can help you implement it far more effectively.   Whether you are new to Scrum or years into your use, this book will introduce, clarify, and deepen your Scrum knowledge at the team, product, and portfolio levels. Drawing from Rubin’s experience helping hundreds of organizations succeed with Scrum, this book provides easy-to-digest descriptions enhanced by more than two hundred illustrations based on an entirely new visual icon language for describing Scrum’s roles, artifacts, and activities.   Essential Scrum will provide every team member, manager, and executive with a common understanding of Scrum, a shared vocabulary they can use in applying it, and practical knowledge for deriving maximum value from it.

  • Author: Kenneth Rubin
  • Publisher: Addison-Wesley Professional; 1st edition (July 26, 2012)
  • Genre: Business & Money, Management & Leadership
  • ISBN: 978-0137043293
  • Dimensions: 7 x 0.8 x 9 inches

                 

7. The Clean Coder: A Code of Conduct for Professional Programmers


Top 10 Best Books to Read in Software Design Tools - August 2021

Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In The Clean Coder: A Code of Conduct for Professional Programmers , legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice - about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act. Listeners will learn: What it means to behave as a true software craftsman How to deal with conflict, tight schedules, and unreasonable managers How to get into the flow of coding, and get past writer’s block How to handle unrelenting pressure and avoid burnout How to combine enduring attitudes with new development paradigms How to manage your time, and avoid blind alleys, marshes, bogs, and swamps How to foster environments where programmers and teams can thrive When to say “no” - and how to say it - When to say “yes” - and what yes really means Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn’t written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them - and earn the pride and fulfillment that they alone possess.

  • Author: Robert C. Martin
  • Genre: Computers & Technology, Programming, Software Design, Testing & Engineering, Tools

                 

8. Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software


Top 10 Best Books to Read in Software Design Tools - August 2021

Malware analysis is big business, and attacks can cost a company dearly. When malware breaches your defenses, you need to act quickly to cure current infections and prevent future ones from occurring. For those who want to stay ahead of the latest malware, Practical Malware Analysis will teach you the tools and techniques used by professional analysts. With this book as your guide, you'll be able to safely analyze, debug, and disassemble any malicious software that comes your way. You'll learn how to: –Set up a safe virtual environment to analyze malware –Quickly extract network signatures and host-based indicators –Use key analysis tools like IDA Pro, OllyDbg, and WinDbg –Overcome malware tricks like obfuscation, anti-disassembly, anti-debugging, and anti-virtual machine techniques –Use your newfound knowledge of Windows internals for malware analysis –Develop a methodology for unpacking malware and get practical experience with five of the most popular packers –Analyze special cases of malware with shellcode, C++, and 64-bit code Hands-on labs throughout the book challenge you to practice and synthesize your skills as you dissect real malware samples, and pages of detailed dissections offer an over-the-shoulder look at how the pros do it. You'll learn how to crack open malware to see how it really works, determine what damage it has done, thoroughly clean your network, and ensure that the malware never comes back. Malware analysis is a cat-and-mouse game with rules that are constantly changing, so make sure you have the fundamentals. Whether you're tasked with securing one network or a thousand networks, or you're making a living as a malware analyst, you'll find what you need to succeed in Practical Malware Analysis .

  • Author: Michael Sikorski
  • Publisher: No Starch Press; 1st edition (February 1, 2012)
  • Genre: Computers & Technology, Programming
  • ISBN: 978-1593272906
  • Dimensions: 7 x 1.43 x 9.25 inches

                 

9. Understanding Distributed Systems: What every developer should know about large distributed applications


Top 10 Best Books to Read in Software Design Tools - August 2021

Learning to build distributed systems is hard , especially if they are large scale. It's not that there is a lack of information out there. You can find academic papers, engineering blogs, and even books on the subject. The problem is that the available information is spread out all over the place, and if you were to put it on a spectrum from theory to practice, you would find a lot of material at the two ends, but not much in the middle. That is why I decided to write a book to teach the fundamentals of distributed systems so that you don’t have to spend countless hours scratching your head to understand how everything fits together. This is the guide I wished existed when I first started out , and it's based on my experience building large distributed systems that scale to millions of requests per second and billions of devices. If you develop the back-end of web or mobile applications (or would like to!), this book is for you . When building distributed systems, you need to be familiar with the network stack, data consistency models, scalability and reliability patterns, and much more. Although you can build applications without knowing any of that, you will end up spending hours debugging and re-designing their architecture, learning lessons that you could have acquired in a much faster and less painful way. Table of contents 1 Introduction 1.1 Communication 1.2 Coordination 1.3 Scalability 1.4 Resiliency 1.5 Operations 1.6 Anatomy of a distributed system Communication 2 Reliable links 2.1 Reliability 2.2 Connection lifecycle 2.3 Flow control 2.4 Congestion control 2.5 Custom protocols 3 Secure links 3.1 Encryption 3.2 Authentication 3.3 Integrity 3.4 Handshake 4 Discovery 5 APIs 5.1 HTTP 5.2 Resources 5.3 Request methods 5.4 Response status codes 5.5 OpenAPI 5.6 Evolution Coordination 6 System models 7 Failure detection 8 Time 8.1 Physical clocks 8.2 Logical clocks 8.3 Vector clocks 9 Leader election 9.1 Raft leader election 9.2 Practical considerations 10 Replication 10.1 State machine replication 10.2 Consensus 10.3 Consistency models 10.4 Chain replication 10.5 Solving the CAP theorem 10.6 Coordination avoidance 11 Transactions 11.1 ACID 11.2 Isolation 11.3 Atomicity 11.4 Asynchronous transactions Scalability 12 Functional decomposition 12.1 Microservices 12.2 API gateway 12.3 CQRS 12.4 Messaging 13 Partitioning 13.1 Sharding strategies 13.2 Rebalancing 14 Duplication 14.1 Network load balancing 14.2 Replication 14.3 Caching Resiliency 15 Common failure causes 15.1 Single point of failure 15.2 Unreliable network 15.3 Slow processes 15.4 Unexpected load 15.5 Cascading failures 15.6 Risk management 16 Downstream resiliency 16.1 Timeout 16.2 Retry 16.3 Circuit breaker 17 Upstream resiliency 17.1 Load shedding 17.2 Load leveling 17.3 Rate-limiting 17.4 Bulkhead 17.5 Health endpoint 17.6 Watchdog Testing and operations 18 Testing 18.1 Scope 18.2 Size 18.3 Practical considerations 19 Continuous delivery and deployment 19.1 Review and build 19.2 Pre-production 19.3 Production 19.4 Rollbacks 20 Monitoring 20.1 Metrics 20.2 Service-level indicators 20.3 Service-level objectives 20.4 Alerts 20.5 Dashboards 20.6 On-call 21 Observability 21.1 Logs 21.2 Traces 21.3 Putting it all together 22 Final words

  • Author: Roberto Vitillo
  • Publisher: Roberto Vitillo (February 28, 2021)
  • Genre: Computers & Technology, Networking & Cloud Computing
  • ISBN: 978-1838430207
  • Dimensions: 6 x 0.57 x 9 inches

                 

10. Software Architecture with C# 9 and .NET 5: Architecting software solutions using microservices, DevOps, and design patterns for Azure, 2nd Edition


Top 10 Best Books to Read in Software Design Tools - August 2021

Design scalable and high-performance enterprise applications using the latest features of C# 9 and .NET 5 Key Features Gain fundamental and comprehensive software architecture knowledge and the skillset to create fully modular apps Design high-performance software systems using the latest features of .NET 5 and C# 9 Solve scalability problems in web apps using enterprise architecture patterns Book 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 learn Use different techniques to overcome real-world architectural challenges and solve design consideration issues Apply architectural approaches such as layered architecture, service-oriented architecture (SOA), and microservices Leverage tools such as containers, Docker, Kubernetes, and Blazor to manage microservices effectively Get up to speed with Azure tools and features for delivering global solutions Program and maintain Azure Functions using C# 9 and its latest features Understand when it is best to use test-driven development (TDD) as an approach for software development Write automated functional test cases Get the best of DevOps principles to enable CI/CD environments Who 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. Table of Contents Understanding the Importance of Software Architecture Non-Functional Requirements Documenting Requirements with Azure DevOps Deciding the Best Cloud-Based Solution Applying a Microservice Architecture to Your Enterprise Application Azure Service Fabric Azure Kubernetes Service Interacting with Data in C# – Entity Framework Core How to Choose Your Data Storage in the Cloud Working with Azure Functions Design Patterns and .NET 5 Implementation Understanding the Different Domains in Software Solutions Implementing Code Reusability in C# 9 Applying Service-Oriented Architectures with .NET Core Presenting ASP.NET Core MVC Blazor WebAssembly Best Practices in Coding C# 9 Testing Your Code with Unit Test Cases and TDD (N.B. Please use the Look Inside option to see further chapters)

  • Author: Gabriel Baptista
  • Publisher: Packt Publishing; 2nd ed. edition (December 28, 2020)
  • Genre: Computers & Technology, Programming
  • ISBN: 978-1800566040
  • Dimensions: 7.5 x 1.58 x 9.25 inches