Software Architecture with C++
Software architecture refers to the high-level design of complex applications. It is evolving just like the languages we use. Modern C++ allows developers to write high-performance apps in a high-level language without sacrificing readability and maintainability. If you're working with modern C++, this practical guide will help you put your knowledge to work and design distributed, large-scale apps. You'll start by getting up to speed with architectural concepts, including established patterns and rising trends. The book will then explain what software architecture is and help you explore its components. Next, you'll discover the design concepts involved in application architecture and the patterns in software development, before going on to learn how to build, package, integrate, and deploy your components. In the concluding chapters, you'll explore different architectural qualities, such as maintainability, reusability, testability, performance, scalability, and ...
Explore Software Defined Radio
Do you want to be able to receive satellite images using nothing but your computer, an old TV antenna, and a $20 USB stick? Now you can. At last, the technology exists to turn your computer into a super radio receiver, capable of tuning in to FM, shortwave, amateur "ham," and even satellite frequencies, around the world and above it. Listen to police, fire, and aircraft signals, both in the clear and encoded. And with the book's advanced antenna design, there's no limit to the signals you can receive.
Combine your desktop or laptop computer with easy-to-find Software Defined Radio (SDR) equipment, and tune in a wide range of signals in no time at all. Then, go one step further by converting a Raspberry Pi into your own dedicated SDR device.
SDR USB dongles are usually designed to receive and decode high-definition digital television broadcasts, but the rising popularity of SDR has led to several of these devices being specifically made for - and marketed to - the softw ...
Patterns in the Machine
Discover how to apply software engineering patterns to develop more robust firmware faster than traditional embedded development approaches. In the authors' experience, traditional embedded software projects tend towards monolithic applications that are optimized for their target hardware platforms. This leads to software that is fragile in terms of extensibility and difficult to test without fully integrated software and hardware. Patterns in the Machine focuses on creating loosely coupled implementations that embrace both change and testability.
This book illustrates how implementing continuous integration, automated unit testing, platform-independent code, and other best practices that are not typically implemented in the embedded systems world is not just feasible but also practical for today's embedded projects.
After reading this book, you will have a better idea of how to structure your embedded software projects. You will recognize that ...
Software Engineering for Absolute Beginners
Start programming from scratch, no experience required. This beginners' guide to software engineering starts with a discussion of the different editors used to create software and covers setting up a Docker environment. Next, you will learn about repositories and version control along with its uses. Now that you are ready to program, you'll go through the basics of Python, the ideal language to learn as a novice software engineer. Many modern applications need to talk to a database of some kind, so you will explore how to create and connect to a database and how to design one for your app. Additionally you will discover how to use Python's Flask microframework and how to efficiently test your code. Finally, the book explains best practices in coding, design, deployment, and security.
Software Engineering for Absolute Beginners answers the question of what topics you should know when you start out to learn software engineering. This book covers a l ...
Head First Design Patterns, 2nd Edition
You know you don't want to reinvent the wheel, so you look to Design Patterns: the lessons learned by those who've faced the same software design problems. With Design Patterns, you get to take advantage of the best practices and experience of others so you can spend your time on something more challenging. Something more fun. This book shows you the patterns that matter, when to use them and why, how to apply them to your own designs, and the object-oriented design principles on which they're based. Join hundreds of thousands of developers who've improved their object-oriented design skills through Head First Design Patterns.
If you've read a Head First book, you know what to expect: a visually rich format designed for the way your brain works. With Head First Design Patterns, 2nd Edition you'll learn design principles and patterns in a way that won't put you to sleep, so you can get out there to solve software design problems and speak the language of patterns with o ...
Write Great Code: Volume 3
The field of software engineering may value team productivity over individual growth, but legendary computer scientist Randall Hyde wants to make promising programmers into masters of their craft. To that end, Engineering Software - the latest volume in Hyde's highly regarded Write Great Code series - offers his signature in-depth coverage of everything from development methodologies and strategic productivity to object-oriented design requirements and system documentation.
You'll learn: Why following the software craftsmanship model can lead you to do your best work; How to utilize traceability to enforce consistency within your documentation; The steps for creating your own UML requirements with use-case analysis; How to leverage the IEEE documentation standards to create better software.
This advanced apprenticeship in the skills, attitudes, and ethics of quality software development reveals the right way to apply engineering principles to programmi ...
Optimizing software in C++
This is an optimization manual for advanced C++ programmers. This book are not for beginners.
- The choice of platform and operating system.
- Choice of compiler and framework.
- Finding performance bottlenecks.
- The efficiency of different C++ constructs.
- Multi-core systems.
- Parallelization with vector operations.
- CPU dispatching. Efficient container class templates. ...
Become an Effective Software Engineering Manager
Going from engineer to manager doesn't have to be intimidating. Engineers can be managers, and fantastic ones at that. Cast aside the rhetoric and focus on practical, hands-on techniques and tools. You'll become an effective and supportive team leader that your staff will look up to.
Start with your transition to being a manager and see how that compares to being an engineer. Learn how to better organize information, feel productive, and delegate, but not micromanage. Discover how to manage your own boss, hire and fire, do performance and salary reviews, and build a great team. You'll also learn the psychology: how to ship while keeping staff happy, coach and mentor, deal with deadline pressure, handle sensitive information, and navigate workplace politics.
Consider your whole department. How can you work with other teams to ensure best practice? How do you help form guilds and committees and communicate effectively? How can you create career tracks for individual contributors an ...
Arduino Software Internals
It's not enough to just build your Arduino projects; it's time to actually learn how things work! This book will take you through not only how to use the Arduino software and hardware, but more importantly show you how it all works and how the software relates to the hardware.
Arduino Software Internals takes a detailed dive into the Arduino environment. We'll cover the Arduino language, hardware features, and how makers can finally ease themselves away from the hand holding of the Arduino environment and move towards coding in plain AVR C++ and talk to the microcontroller in its native language.
How the Arduino Language interfaces with the hardware, as well as how it actually works in C++; How the compilation system works, and how kit can be altered to suit personal requirements; A small amount of AVR Assembly Language; Exactly how to set up and use the various hardware features of the AVR without needing to try and decode the data sheets - which are often ...
DevSecOps for .NET Core
Automate core security tasks by embedding security controls and processes early in the DevOps workflow through DevSecOps. You will not only learn the various stages in the DevOps pipeline through examples of solutions developed and deployed using .NET Core, but also go through open source SDKs and toolkits that will help you to incorporate automation, security, and compliance.
The book starts with an outline of modern software engineering principles and gives you an overview of DevOps in .NET Core. It further explains automation in DevOps for product development along with security principles to improve product quality. Next, you will learn how to improve your product quality and avoid code issues such as SQL injection prevention, cross-site scripting, and many more. Moving forward, you will go through the steps necessary to make security, compliance, audit, and UX automated to increase the efficiency of your organization. You'll see demonstrations of the CI phase of DevOps, ...
Seriously Good Software
Serious developers know that code can always be improved. With each iteration, you make optimizations - small and large - that can have a huge impact on your application's speed, size, resilience, and maintainability.
In Seriously Good Software: Code that Works, Survives, and Wins, author, teacher, and Java expert Marco Faella teaches you techniques for writing better code. You'll start with a simple application and follow it through seven careful refactorings, each designed to explore another dimension of quality.
Great code blends the skill of a programmer with the time-tested techniques and best practices embraced by the entire development community. Although each application has its own context and character, some dimensions of quality are always important. This book concentrates on eight pillars of seriously good software: speed, memory usage, reliability, readability, thread safety, generality, and elegance. The Java-based examples demonstrate techniques that apply to any O ...