Skip to Content

Building Software

A Practitioner's Guide

By Nikhilesh Krishnamurthy, Amitabh Saran

Series Editor: Philip A. Laplante

Auerbach Publications – 2007 – 384 pages

Series: Applied Software Engineering Series

Purchasing Options:

  • Add to CartHardback: $104.95
    978-0-8493-7303-9
    September 6th 2007

Description

Novel in its approach to software design, development, and management, Building Software: A Practitioner's Guide shows you how to successfully build and manage a system. The approach the authors recommend is a simple, effective framework known as Solution Engineering Execution (SEE).

Through SEE, you create a successful solution by following a highly organized, well-planned process. This process makes you view the solution from a holistic, systematic perspective.

Developing a successful system requires that you are able to address technology matters related to architecture, design, selection, integration, and security. Building Software: A Practitioner's Guide offers insight into how to make software reliable and how to ensure it meets customer and organizational needs.

Using the above approach you are able to:

  • Find a good solution to the problem at hand
  • Focus on engineering the solution well
  • Address all aspects of delivery associated with the solution

The book provides insightful examples of cross-domain and legacy solutions that allow you to overcome common software concerns such as requirement issues, change control, quality and schedule management, and internal and external communication problems.

Reviews

". . . very well written. The authors do an excellent job of covering both the breadth and depth of each problem’s discussion in each chapter . . . a must-read for any software development professional."

– Daniel Campanelli, in StickyMinds.com, September 2008

Contents

FAILURE

A Formal Definition of Failure

Failure Patterns

The Dependability of a Software System

Known but Not Followed: Preventing Failure

Monitoring Systems

Reliability in Software

Accountability for Failure

Getting Out of Failures

Product and Project Failures

Summary

SYSTEMS

Application of Systems Thinking in Software

The Law of Requisite Variety

Most See, Very Few Observe

System Dynamics

Going Beyond the Analytical Approach

Management by Exception

Types of Systems

Complexity of Systems

Summary

STRATEGIES

The True System

Aligning Information Strategy with Business Strategy

Everything Important Is Not Strategic

A Few Common Internal Strategic Decisions

Using Strategies

Failed Strategies

Summary

REQUIREMENTS

Requirements for Products and Projects

Stakeholders

Stand-Ins

The Nature of Requirements

Types of Requirements

Classifying Requirements

A Hierarchy of Requirements

Requirements and Process

Design and Architecture

Changes in Requirements

Requirements and QA

Summary

ARCHITECTURE AND DESIGN

Background

Architecture versus Design

The Importance of Architecture

Software Architecture Document

Types of Architecture

System Design

Design Document

The Process of Designing

A Note on Design Patterns

Zachman Framework

What It Takes To Be a Good Architect and Designer

Occam's Razor

Summary

DATA AND INFORMATION

Nature of the Data

Determining Information Needs

Systems of Record

Summary

LIFE CYCLES

Everything Sequential Is Not a Life Cycle

Coarse-Grained Process Models

Standard Software Life Cycles

Using life Cycle As a Model

Choosing the Right Life Cycle

Prototypes Are Important

Life-Cycle Phases

Some Places in the Life Cycle Are Better Suited to

Terminate a Project

Software Shelf Life

Data Shelf Life

Movies versus Software

Summary

THE SEMANTICS OF PROCESSES

Process and Entropy

Developing Good Processes

Take Care of the Basics

Benefits of Processes

Resistance to Processes

Processes Degenerate into Bureaucracies

Do Processes Help?

Introducing New Processes

Summary

OFF-THE-SHELF SOFTWARE

The Involved Parties

Buying Off-the-Shelf Software

Preparing to Buy

Reducing Risk of Failure

The Dependency Factor

Summary

CUSTOMIZATION

Customization versus Enhancements

Customization and Configuration

Customization and Ground-Up Creation

Customization Requirements

Customization Facilities

Handling Upgrades to Customization

Why Customization Projects Fail

Dominance of the Customization Model

Need for a Customization Framework

Pros and Cons of Customization

Customization and Management

Summary

MIGRATION

What Triggers a Migration?

The Strategy of Migration

The Use of Tools

Risks of Migration

Resistance to Migration

Scoping Migration Projects

Migration in Design

Migrating Data

The Right Staff

Summary

QUALITY AND TESTING

The Definition of Quality

Quality as Feedback

Products and Processes

Quality Under Constraints

QA Effort Sizing

Dealing with Poor Specifications

Test Plans and Cases

Types of Testing

Scope of Testing

Automation in Testing

Test Environments

Quality Improvements Over Time

Bugs

Classification of Bugs

Push and Pull: The Equation Between Development and QA

Multiple Views of Quality

Quality Assurance (QA) and Testing Skills

Summary: Quality Matters

COMMUNICATION

The Objectives of Communication

Communication Models

The Problem of Miscommunication

Information Dynamics

Modes of Communication

Communication Tools

Channels

Demos

Other Aspects of Communications

Communicating Across Fault Lines

Escalation

Communication Techniques

Content

Status

The Three Popular Vectors

Summary

REPORTS

The History of Reporting

Reporting Hierarchy

What Is a Good Report?

Types of Reports

Report Design

Quality

Queries

Queries versus Reports

OTS Reports

Report: Other Aspects

Summary

DOCUMENTATION

Types of Documentation

Problems with Documentation

Summary

SECURITY

The Demand for Security

Security Crosses Conventional Application Boundaries

The Weaker Links

Security Is Linked to Value and Ownership

Identifying the Correct Entities to Protect

The Business Perspective

The Technical Perspective

Learning from the Human Security System

A Counter-Intuitive Approach from Field Sports

The Human Perspective

Processes and Procedures

Summary

CONCLUSION

APPENDIX: Discussion of Terms

BIBLIOGRAPHY

INDEX

Name: Building Software: A Practitioner's Guide (Hardback)Auerbach Publications 
Description: By Nikhilesh Krishnamurthy, Amitabh SaranSeries Editor: Philip A. Laplante. Novel in its approach to software design, development, and management, Building Software: A Practitioner's Guide shows you how to successfully build and manage a system. The approach the authors recommend is a simple, effective framework known...
Categories: Software Engineering & Systems Development, Engineering Project Management, Quality Management