Facts and Fallacies of Software Engineering


Book Description

Regarding the controversial and thought-provoking assessments in this handbook, many software professionals might disagree with the authors, but all will embrace the debate. Glass identifies many of the key problems hampering success in this field. Each fact is supported by insightful discussion and detailed references.




Software Conflict 2.0


Book Description

The nearly 60 essays in this book--always easily digestible, often profound, and never too serious--take up large themes and important questions, never shying away from controversy. (Computer Books)




The Leprechauns of Software Engineering


Book Description

The software profession has a problem, widely recognized but which nobody seems willing to do anything about; a variant of the well known ""telephone game,"" where some trivial rumor is repeated from one person to the next until it has become distorted beyond recognition and blown up out of all proportion. Unfortunately, the objects of this telephone game are generally considered cornerstone truths of the discipline, to the point that their acceptance now seems to hinder further progress. This book takes a look at some of those ""ground truths"" the claimed 10x variation in productivity between developers; the ""software crisis""; the cost-of-change curve; the ""cone of uncertainty""; and more. It assesses the real weight of the evidence behind these ideas - and confronts the scary prospect of moving the state of the art forward in a discipline that has had the ground kicked from under it.




The Dark Side of Software Engineering


Book Description

Betrayal! Corruption! Software engineering? Industry experts Johann Rost and Robert L. Glass explore the seamy underbelly of software engineering in this timely report on and analysis of the prevalance of subversion, lying, hacking, and espionage on every level of software project management. Based on the authors' original research and augmented by frank discussion and insights from other well-respected figures, The Dark Side of Software Engineering goes where other management studies fear to tread -- a corporate environment where schedules are fabricated, trust is betrayed, millions of dollars are lost, and there is a serious need for the kind of corrective action that this book ultimately proposes.




Software Creativity 2.0


Book Description

Glass explores a critical, yet strangely neglected, question: What is the role of creativity in software engineering and computer programming? With his trademark easy-to-read style and practical approach, backed by research and personal experience, Glass takes on a wide range of related angles and implications. (Computer Books)




Software and Mind


Book Description

Addressing general readers as well as software practitioners, "Software and Mind" discusses the fallacies of the mechanistic ideology and the degradation of minds caused by these fallacies. Mechanism holds that every aspect of the world can be represented as a simple hierarchical structure of entities. But, while useful in fields like mathematics and manufacturing, this idea is generally worthless, because most aspects of the world are too complex to be reduced to simple hierarchical structures. Our software-related affairs, in particular, cannot be represented in this fashion. And yet, all programming theories and development systems, and all software applications, attempt to reduce real-world problems to neat hierarchical structures of data, operations, and features. Using Karl Popper's famous principles of demarcation between science and pseudoscience, the book shows that the mechanistic ideology has turned most of our software-related activities into pseudoscientific pursuits. Using mechanism as warrant, the software elites are promoting invalid, even fraudulent, software notions. They force us to depend on generic, inferior systems, instead of allowing us to develop software skills and to create our own systems. Software mechanism emulates the methods of manufacturing, and thereby restricts us to high levels of abstraction and simple, isolated structures. The benefits of software, however, can be attained only if we start with low-level elements and learn to create complex, interacting structures. Software, the book argues, is a non-mechanistic phenomenon. So it is akin to language, not to physical objects. Like language, it permits us to mirror the world in our minds and to communicate with it. Moreover, we increasingly depend on software in everything we do, in the same way that we depend on language. Thus, being restricted to mechanistic software is like thinking and communicating while being restricted to some ready-made sentences supplied by an elite. Ultimately, by impoverishing software, our elites are achieving what the totalitarian elite described by George Orwell in "Nineteen Eighty-Four" achieves by impoverishing language: they are degrading our minds.




Practical Formal Software Engineering


Book Description

Based around a theme of the construction of a game engine, this textbook is for final year undergraduate and graduate students, emphasising formal methods in writing robust code quickly. This book takes an unusual, engineering-inspired approach to illuminate the creation and verification of large software systems . Where other textbooks discuss business practices through generic project management techniques or detailed rigid logic systems, this book examines the interaction between code in a physical machine and the logic applied in creating the software. These elements create an informal and rigorous study of logic, algebra, and geometry through software. Assuming prior experience with C, C++, or Java programming languages, chapters introduce UML, OCL, and Z from scratch. Extensive worked examples motivate readers to learn the languages through the technical side of software science.




Basics of Software Engineering Experimentation


Book Description

Basics of Software Engineering Experimentation is a practical guide to experimentation in a field which has long been underpinned by suppositions, assumptions, speculations and beliefs. It demonstrates to software engineers how Experimental Design and Analysis can be used to validate their beliefs and ideas. The book does not assume its readers have an in-depth knowledge of mathematics, specifying the conceptual essence of the techniques to use in the design and analysis of experiments and keeping the mathematical calculations clear and simple. Basics of Software Engineering Experimentation is practically oriented and is specially written for software engineers, all the examples being based on real and fictitious software engineering experiments.




Your Code as a Crime Scene


Book Description

Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you'll learn strategies to predict the future of your codebase, assess refactoring direction, and understand how your team influences the design. With its unique blend of forensic psychology and code analysis, this book arms you with the strategies you need, no matter what programming language you use. Software is a living entity that's constantly changing. To understand software systems, we need to know where they came from and how they evolved. By mining commit data and analyzing the history of your code, you can start fixes ahead of time to eliminate broken designs, maintenance issues, and team productivity bottlenecks. In this book, you'll learn forensic psychology techniques to successfully maintain your software. You'll create a geographic profile from your commit data to find hotspots, and apply temporal coupling concepts to uncover hidden relationships between unrelated areas in your code. You'll also measure the effectiveness of your code improvements. You'll learn how to apply these techniques on projects both large and small. For small projects, you'll get new insights into your design and how well the code fits your ideas. For large projects, you'll identify the good and the fragile parts. Large-scale development is also a social activity, and the team's dynamics influence code quality. That's why this book shows you how to uncover social biases when analyzing the evolution of your system. You'll use commit messages as eyewitness accounts to what is really happening in your code. Finally, you'll put it all together by tracking organizational problems in the code and finding out how to fix them. Come join the hunt for better code! What You Need: You need Java 6 and Python 2.7 to run the accompanying analysis tools. You also need Git to follow along with the examples.




Computer Organization and Design RISC-V Edition


Book Description

The new RISC-V Edition of Computer Organization and Design features the RISC-V open source instruction set architecture, the first open source architecture designed to be used in modern computing environments such as cloud computing, mobile devices, and other embedded systems. With the post-PC era now upon us, Computer Organization and Design moves forward to explore this generational change with examples, exercises, and material highlighting the emergence of mobile computing and the Cloud. Updated content featuring tablet computers, Cloud infrastructure, and the x86 (cloud computing) and ARM (mobile computing devices) architectures is included. An online companion Web site provides advanced content for further study, appendices, glossary, references, and recommended reading. - Features RISC-V, the first such architecture designed to be used in modern computing environments, such as cloud computing, mobile devices, and other embedded systems - Includes relevant examples, exercises, and material highlighting the emergence of mobile computing and the cloud