Facts and Fallacies of Software Engineering

Facts and Fallacies of Software Engineering

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.

Facts and Fallacies of Software Engineering

Facts and Fallacies of Software Engineering

The practice of building software is a “new kid on the block” technology. Though it may not seem this way for those who have been in the field for most of their careers, in the overall scheme of professions, software builders are relative “newbies.” In the short history of the software field, a lot of facts have been identified, and a lot of fallacies promulgated. Those facts and fallacies are what this book is about. There’s a problem with those facts–and, as you might imagine, those fallacies. Many of these fundamentally important facts are learned by a software engineer, but over the short lifespan of the software field, all too many of them have been forgotten. While reading Facts and Fallacies of Software Engineering , you may experience moments of “Oh, yes, I had forgotten that,” alongside some “Is that really true?” thoughts. The author of this book doesn’t shy away from controversy. In fact, each of the facts and fallacies is accompanied by a discussion of whatever controversy envelops it. You may find yourself agreeing with a lot of the facts and fallacies, yet emotionally disturbed by a few of them! Whether you agree or disagree, you will learn why the author has been called “the premier curmudgeon of software practice.” These facts and fallacies are fundamental to the software building field–forget or neglect them at your peril!

Software Conflict 2.0

The Art and Science of Software Engineering

Software Conflict 2.0

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 Dark Side of Software Engineering

Evil on Computing Projects

The Dark Side of Software Engineering

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

Software Creativity 2.0

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)

Computer Engineering: Concepts, Methodologies, Tools and Applications

Concepts, Methodologies, Tools and Applications

Computer Engineering: Concepts, Methodologies, Tools and Applications

"This reference is a broad, multi-volume collection of the best recent works published under the umbrella of computer engineering, including perspectives on the fundamental aspects, tools and technologies, methods and design, applications, managerial impact, social/behavioral perspectives, critical issues, and emerging trends in the field"--Provided by publisher.

Human-Centered Software Engineering - Integrating Usability in the Software Development Lifecycle

Human-Centered Software Engineering - Integrating Usability in the Software Development Lifecycle

Human-CenteredSoftwareEngineering: BridgingHCI,UsabilityandSoftwareEngineering From its beginning in the 1980’s, the ?eld of human-computer interaction (HCI) has beende?nedasamultidisciplinaryarena. BythisImeanthattherehas beenanexplicit recognition that distinct skills and perspectives are required to make the whole effort of designing usable computer systems work well. Thus people with backgrounds in Computer Science (CS) and Software Engineering (SE) joined with people with ba- grounds in various behavioral science disciplines (e. g. , cognitive and social psych- ogy, anthropology)inaneffortwhereallperspectiveswereseenasessentialtocreating usable systems. But while the ?eld of HCI brings individuals with many background disciplines together to discuss a common goal - the development of useful, usable, satisfying systems - the form of the collaboration remains unclear. Are we striving to coordinate the varied activities in system development, or are we seeking a richer collaborative framework? In coordination, Usability and SE skills can remain quite distinct and while the activities of each group might be critical to the success of a project, we need only insure that critical results are provided at appropriate points in the development cycle. Communication by one group to the other during an activity might be seen as only minimally necessary. In collaboration, there is a sense that each group can learn something about its own methods and processes through a close pa- nership with the other. Communication during the process of gathering information from target users of a system by usability professionals would not be seen as so- thing that gets in the way of the essential work of software engineering professionals.

Making Software

What Really Works, and Why We Believe It

Making Software

Many claims are made about how certain tools, technologies, and practices improve software development. But which claims are verifiable, and which are merely wishful thinking? In this book, leading thinkers such as Steve McConnell, Barry Boehm, and Barbara Kitchenham offer essays that uncover the truth and unmask myths commonly held among the software development community. Their insights may surprise you. Are some programmers really ten times more productive than others? Does writing tests first help you develop better code faster? Can code metrics predict the number of bugs in a piece of software? Do design patterns actually make better software? What effect does personality have on pair programming? What matters more: how far apart people are geographically, or how far apart they are in the org chart? Contributors include: Jorge Aranda Tom Ball Victor R. Basili Andrew Begel Christian Bird Barry Boehm Marcelo Cataldo Steven Clarke Jason Cohen Robert DeLine Madeline Diep Hakan Erdogmus Michael Godfrey Mark Guzdial Jo E. Hannay Ahmed E. Hassan Israel Herraiz Kim Sebastian Herzig Cory Kapser Barbara Kitchenham Andrew Ko Lucas Layman Steve McConnell Tim Menzies Gail Murphy Nachi Nagappan Thomas J. Ostrand Dewayne Perry Marian Petre Lutz Prechelt Rahul Premraj Forrest Shull Beth Simon Diomidis Spinellis Neil Thomas Walter Tichy Burak Turhan Elaine J. Weyuker Michele A. Whitecraft Laurie Williams Wendy M. Williams Andreas Zeller Thomas Zimmermann

Object Thinking

Object Thinking

In OBJECT THINKING, esteemed object technologist David West contends that the mindset makes the programmer—not the tools and techniques. Delving into the history, philosophy, and even politics of object-oriented programming, West reveals how the best programmers rely on analysis and conceptualization—on thinking—rather than formal process and methods. Both provocative and pragmatic, this book gives form to what’s primarily been an oral tradition among the field’s revolutionary thinkers—and it illustrates specific object-behavior practices that you can adopt for true object design and superior results. Gain an in-depth understanding of: Prerequisites and principles of object thinking. Object knowledge implicit in eXtreme Programming (XP) and Agile software development. Object conceptualization and modeling. Metaphors, vocabulary, and design for object development. Learn viable techniques for: Decomposing complex domains in terms of objects. Identifying object relationships, interactions, and constraints. Relating object behavior to internal structure and implementation design. Incorporating object thinking into XP and Agile practice.

Code Complete

Code Complete

Widely considered one of the best practical guides to programming, Steve McConnell’s original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code. Discover the timeless techniques and strategies that help you: Design for minimum complexity and maximum creativity Reap the benefits of collaborative development Apply defensive programming techniques to reduce and flush out errors Exploit opportunities to refactor—or evolve—code, and do it safely Use construction practices that are right-weight for your project Debug problems quickly and effectively Resolve critical construction issues early and correctly Build quality into the beginning, middle, and end of your project