Write Great Code, Volume 3


Book Description

Engineering Software, the third volume in the landmark Write Great Code series by Randall Hyde, helps you create readable and maintainable code that will generate awe from fellow programmers. 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 programming. Hyde will teach you the rules, and show you when to break them. Along the way, he offers illuminating insights into best practices while empowering you to invent new ones. Brimming with resources and packed with examples, Engineering Software is your go-to guide for writing code that will set you apart from your peers.




Continuous Software Engineering


Book Description

This book provides essential insights on the adoption of modern software engineering practices at large companies producing software-intensive systems, where hundreds or even thousands of engineers collaborate to deliver on new systems and new versions of already deployed ones. It is based on the findings collected and lessons learned at the Software Center (SC), a unique collaboration between research and industry, with Chalmers University of Technology, Gothenburg University and Malmö University as academic partners and Ericsson, AB Volvo, Volvo Car Corporation, Saab Electronic Defense Systems, Grundfos, Axis Communications, Jeppesen (Boeing) and Sony Mobile as industrial partners. The 17 chapters present the “Stairway to Heaven” model, which represents the typical evolution path companies move through as they develop and mature their software engineering capabilities. The chapters describe theoretical frameworks, conceptual models and, most importantly, the industrial experiences gained by the partner companies in applying novel software engineering techniques. The book’s structure consists of six parts. Part I describes the model in detail and presents an overview of lessons learned in the collaboration between industry and academia. Part II deals with the first step of the Stairway to Heaven, in which R&D adopts agile work practices. Part III of the book combines the next two phases, i.e., continuous integration (CI) and continuous delivery (CD), as they are closely intertwined. Part IV is concerned with the highest level, referred to as “R&D as an innovation system,” while Part V addresses a topic that is separate from the Stairway to Heaven and yet critically important in large organizations: organizational performance metrics that capture data, and visualizations of the status of software assets, defects and teams. Lastly, Part VI presents the perspectives of two of the SC partner companies. The book is intended for practitioners and professionals in the software-intensive systems industry, providing concrete models, frameworks and case studies that show the specific challenges that the partner companies encountered, their approaches to overcoming them, and the results. Researchers will gain valuable insights on the problems faced by large software companies, and on how to effectively tackle them in the context of successful cooperation projects.




Experimentation in Software Engineering


Book Description

Like other sciences and engineering disciplines, software engineering requires a cycle of model building, experimentation, and learning. Experiments are valuable tools for all software engineers who are involved in evaluating and choosing between different methods, techniques, languages and tools. The purpose of Experimentation in Software Engineering is to introduce students, teachers, researchers, and practitioners to empirical studies in software engineering, using controlled experiments. The introduction to experimentation is provided through a process perspective, and the focus is on the steps that we have to go through to perform an experiment. The book is divided into three parts. The first part provides a background of theories and methods used in experimentation. Part II then devotes one chapter to each of the five experiment steps: scoping, planning, execution, analysis, and result presentation. Part III completes the presentation with two examples. Assignments and statistical material are provided in appendixes. Overall the book provides indispensable information regarding empirical studies in particular for experiments, but also for case studies, systematic literature reviews, and surveys. It is a revision of the authors’ book, which was published in 2000. In addition, substantial new material, e.g. concerning systematic literature reviews and case study research, is introduced. The book is self-contained and it is suitable as a course book in undergraduate or graduate studies where the need for empirical studies in software engineering is stressed. Exercises and assignments are included to combine the more theoretical material with practical aspects. Researchers will also benefit from the book, learning more about how to conduct empirical studies, and likewise practitioners may use it as a “cookbook” when evaluating new methods or techniques before implementing them in their organization.




Guide to the Software Engineering Body of Knowledge (Swebok(r))


Book Description

In the Guide to the Software Engineering Body of Knowledge (SWEBOK(R) Guide), the IEEE Computer Society establishes a baseline for the body of knowledge for the field of software engineering, and the work supports the Society's responsibility to promote the advancement of both theory and practice in this field. It should be noted that the Guide does not purport to define the body of knowledge but rather to serve as a compendium and guide to the knowledge that has been developing and evolving over the past four decades. Now in Version 3.0, the Guide's 15 knowledge areas summarize generally accepted topics and list references for detailed information. The editors for Version 3.0 of the SWEBOK(R) Guide are Pierre Bourque (Ecole de technologie superieure (ETS), Universite du Quebec) and Richard E. (Dick) Fairley (Software and Systems Engineering Associates (S2EA)).




Write Great Code, Volume 1


Book Description

Today's programmers are often narrowly trained because the industry moves too fast. That's where Write Great Code, Volume 1: Understanding the Machine comes in. This, the first of four volumes by author Randall Hyde, teaches important concepts of machine organization in a language-independent fashion, giving programmers what they need to know to write great code in any language, without the usual overhead of learning assembly language to master this topic. A solid foundation in software engineering, The Write Great Code series will help programmers make wiser choices with respect to programming statements and data types when writing software.




Software Engineering for Self-Adaptive Systems III. Assurances


Book Description

A major challenge for modern software systems is to become more cost-effective, while being versatile, flexible, resilient, energy-efficient, customizable, and configurable when reacting to run-time changes that may occur within the system itself, its environment or requirements. One of the most promising approaches to achieving such properties is to equip the software system with self-adaptation capabilities. Despite recent advances in this area, one key aspect that remains to be tackled in depth is the provision of assurances. Originating from a Dagstuhl seminar held in December 2013, this book constitutes the third volume in the series “Software Engineering for Self-Adaptive Systems”, and looks specifically into the provision of assurances. Opening with an overview chapter on Research Challenges, the book presents 13 further chapters written and carefully reviewed by internationally leading researchers in the field. The book is divided into topical sections on research challenges, evaluation, integration and coordination, and reference architectures and platforms.




Site Reliability Engineering


Book Description

The overwhelming majority of a software system’s lifespan is spent in use, not in design or implementation. So, why does conventional wisdom insist that software engineers focus primarily on the design and development of large-scale computing systems? In this collection of essays and articles, key members of Google’s Site Reliability Team explain how and why their commitment to the entire lifecycle has enabled the company to successfully build, deploy, monitor, and maintain some of the largest software systems in the world. You’ll learn the principles and practices that enable Google engineers to make systems more scalable, reliable, and efficient—lessons directly applicable to your organization. This book is divided into four sections: Introduction—Learn what site reliability engineering is and why it differs from conventional IT industry practices Principles—Examine the patterns, behaviors, and areas of concern that influence the work of a site reliability engineer (SRE) Practices—Understand the theory and practice of an SRE’s day-to-day work: building and operating large distributed computing systems Management—Explore Google's best practices for training, communication, and meetings that your organization can use




Software Engineering at Google


Book Description

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




The New Software Engineering


Book Description

This text is written with a business school orientation, stressing the how to and heavily employing CASE technology throughout. The courses for which this text is appropriate include software engineering, advanced systems analysis, advanced topics in information systems, and IS project development. Software engineer should be familiar with alternatives, trade-offs and pitfalls of methodologies, technologies, domains, project life cycles, techniques, tools CASE environments, methods for user involvement in application development, software, design, trade-offs for the public domain and project personnel skills. This book discusses much of what should be the ideal software engineer's project related knowledge in order to facilitate and speed the process of novices becoming experts. The goal of this book is to discuss project planning, project life cycles, methodologies, technologies, techniques, tools, languages, testing, ancillary technologies (e.g. database) and CASE. For each topic, alternatives, benefits and disadvantages are discussed.




Software Radio Architecture


Book Description

In einem sogenannten Software-Radio werden die Modulations-Wellenformen nicht durch herkömmliche elektronische Schaltungen, sondern durch eine Software erzeugt. Die so generierten digitalen Signale werden durch einen Breitband-D/A-Wandler in das gewünschte analoge modulierte Signal überführt. Grundlagen und Anwendungen der Technologie erläutert der Autor dieses Bandes, gestützt auf jahrelange Erfahrungen als Seminarleiter. (11/00)