Author(s): Phillip A. Laplante
Publisher: Taylor and Francis Group, LLC
Year: 2011
Language: English
Pages: 704
ENCYCL OPEDIA OF
ENCYCLOPEDIA OF
Encyclopedias from Taylor & Francis Group
Encyclopedia of Chemical Processing (Five Volume Set)
Encyclopedia of Optical Engineering (Three Volume Set)
Encyclopedia of Information Assurance
Encyclopedia of Software Engineering
SOFTWARE
ENGINEERING
Encyclopedia of Software Engineering
Phillip A. Laplante
William Agresti
Larry Bernstein
Shawn A. Bohner
George Haeken
Mike Hinchey
Tiziana Margaria
Colin J. Neill
Paolo Nesi
Dan Paulish
Raghvinder S. Sangwan
Jing Sun
Jeffrey Voas
Pamela Abbott
William Agresti
Norita Ahmad
Edward Alef
Alain April
Felix Bachmann
Rohit Bahl
Janaka Balasooriya
Larry Bernstein
Fernando Berzal
David Binkley
Dick Brodine
Radu Calinescu
Donald Chand
Kuang-Nan Chang
Ned Chapin
T.Y. Chen
S.C. Cheung
Lawrence Chung
Richard Clayton
Eduardo de Albuquerque
Andrea De Lucia
Joanna DeFranco
Maria del Mar Gallardo
Jean Marc Desharnais
Yvonne Dittrich
Scott Donaldson
Christof Ebert
Ghizlane El Boussaidi
Hakan Erdogmus
Letha Etzkorn
John Feminella
Daniel Ferens
Christopher Fox
John Gallagher
Thom Garrett
Swapna Gokhale
Anthony Gold
Marcio Greyck Batista Dias
Vijay Gurbani
George Hacken
Richard Halterman
John Harauz
Ed Harcourt
Eric Hehner
Robert M. Hierons
Mike Hinchey
Jonathan Holt
Caroline Howard
Idris Hsi
Craig Jacobs
Ivar Jacobson
Paul C. Jorgensen
Michael Joy
Ronald K. Kandt
Mira Kajko-Mattsen
Gregory M. Kapfhammer
Rick Kazman
Jon Kern
Thomas Kiihne
Stan Kurkovsky
Kathy Land
Gerard Lyons
Jeff Maddalon
Frank Maginnis
Aditya Mathur
James McDonald
Susan Mengel
James Moore
Judith Myerson
Kuang-Nan Chang
Colin Neill
Paolo Nesi
Gunnar Overgaard
Srini Ramaswamy
Franz Rammig
Hassan Reza
David Rico
Michelle Rogers
Colette Rolland
Dieter Rombach
Chris Rouff
Motoshi Saeki
Arthur Salwin
Raghvinder S. Sangwan
Vibha Sazawal
Jim Schiel
Annie Shebanow
Onkar Singh
Paul Solomon
Thanwadee Sunetnanta
Yuen Так Yu
Richard Turner
Jeffrey Voas
Ellen Walker
Chuck Walrad
Yong Wang
Jonah Weber
Roel Wieringa
Bernhard Westfechtel
Linda Wilbanks
Marcus Wolf
Brendan Wright
Tao Xie
Thomas Zimmerman
Contributors
Contents
Topical Table of Contents
Acknowledgments
Introduction
REFERENCES
Aims and Scope
About the Editor-in-Chief
Encyclopedia of Software Engineering
Pair Programming
INTRODUCTION
A HISTORY OF THE PAIR PROGRAMMING PRACTICE
PAIR PROGRAMMING IN AN INDUSTRIAL SETTING
Industry Practices in Pair Programming
Results of Using Pair Programming in Industry
ECONOMIC STUDIES OF PAIR PROGRAMMING
PAIR PROGRAMMING IN AN EDUCATIONAL SETTING
Practices Specific to Education
Results of Using Pair Programming in Education
DISTRIBUTED PAIR PROGRAMMING
PRINCIPLES OF PAIR PROGRAMMING
Pair Pressure
Pair Negotiation and Brainstorming
Pair Reviews
Pair Debugging
Pair Learning and Training
CHALLENGES
SUMMARY
ACKNOWLEDGMENTS
REFERENCES
Patterns
INTRODUCTION
PATTERNS: AN OVERVIEW
Related patterns
DESIGN PATTERNS
ARCHITECTURE PATTERNS
ANALYSIS PATTERNS
PROCESS AND ORGANIZATIONAL PATTERNS
SOFTWARE CONFIGURATION MANAGEMENT PATTERNS
CONCLUSION
REFERENCES
Policy-Based Testing
INTRODUCTION
ACCESS CONTROL POLICIES
Access Control Concepts
Policy Specification
XACML Policy Specification
POLICY TESTING CONCEPTS
Comparison of Policy Verification and Testing
Comparison of Software Testing and Policy Testing
POLICY TESTING APPROACHES
Fault Models
Testing Criteria
Test Generation
Test Oracles
Model-Based Testing
CONCLUSION
ACKNOWLEDGMENT
REFERENCES
Process
INTRODUCTION
A BRIEF HISTORY OF SOFTWARE ENGINEERING
SOFTWARE ENGINEERING TODAY
PROCESS
SOFTWARE ENGINEERING BODY OF KNOWLEDGE
A Guide to the Software Engineering Body of Knowledge and Knowledge Areas
Systems and Software Engineering—Software Life Cycle Processes
Process Implementation and Change
Process Infrastructure
Software Process Management Cycle
Models for Process Implementation and Change
Practical Considerations
Software Life Cycle Models
Software Life Cycle Processes
Notations for Process Definitions
Process Adaptation
PROCESS ASSESSMENT
Process Assessment Models
ISO/IEC 9001
Process Assessment Methods
PRODUCT AND PROCESS MEASUREMENT
Product Measurement
Process Measurement
GOAL/QUESTION/METRIC PARADIGM
Software Information Models—Model Building
CONCLUSION
ACKNOWLEDGMENTS
REFERENCES
Process: Assessment and Improvement
INTRODUCTION
OBJECTIVE-DRIVEN PROCESS IMPROVEMENT
ORGANIZATIONAL CHANGE MANAGEMENT
PROCESS ASSESSMENT AND IMPROVEMENT
EFFECTIVE PROCESS IMPROVEMENT
PRACTICAL GUIDELINES FOR PROCESS ASSESSMENT AND IMPROVEMENT
FURTHER READING
ACKNOWLEDGMENTS
REFERENCES
Process: Definition and Communication
INTRODUCTION
A SOFTWARE PROCESS
NEED OF SOFTWARE PROCESS DEFINITION AND COMMUNICATION
SOFTWARE LIFE CYCLE AND SOFTWARE PROCESS
COST OF SOFTWARE PROCESS DEFINITION AND COMMUNICATION
DEFINING SOFTWARE PROCESS
SOFTWARE PROCESS DEFINITION NOTATIONS AND TECHNIQUES
SAMPLE PROCESS DEFINITION LANGUAGES
CONCLUSION
REFERENCES
Product Portfolios: Management
INTRODUCTION
IT-Based Portfolios
Software Products, Processes, and Resources
Requirements:
Process:
Product:
Resources:
Application domain:
Portfolio Management
SOFTWARE PRODUCT AND PROCESS MANAGEMENT
Declarative Software Measurement Frameworks
Operational Software Measurement Frameworks
Statistical Software Process Control
INNOVATIVE SOFTWARE
MANAGEMENT PROCESSES
Basics of e-Measurement as
Ubiquitous Management
Characteristics of Agent-Based Measurement as Self-Managing
Characteristics of Service-Oriented Measurement as Adaptive Management
PROCESS MODEL-BASED SOFTWARE PRODUCT MANAGEMENT
Process Models
Software Process Levels
LEVELS OF SOFTWARE PRODUCT PORTFOLIO MANAGEMENT
Management Product Portfolio Establishment
Product Portfolio Improvement Model
Empirical Product Portfolio Model
Measurement-Based Product
Portfolio Management
MPE
CONCLUSIONS
REFERENCES
Program Comprehension
INTRODUCTION
CONTEXT OF PROGRAM COMPREHENSION
CONCEPT AND FEATURE LOCATION
CONCEPT LOCATION STRATEGIES
Static Search
Dynamic Search
IMPACT ANALYSIS
CLASSICAL COMPREHENSION THEORIES
REVERSE ENGINEERING
CONCLUSION
REFERENCES
Program Representation
INTRODUCTION
DIRECT PROGRAM REPRESENTATION
Textual Representation: Source Code
Lexical Representation
Machine-Like Representation: Intermediate Code
SYNTACTIC PROGRAM REPRESENTATION
Parse T rees
Dependency Graphs
Abstract Syntax Trees
Directed Acyclic Graphs for Expressions
Abstract Semantic Graphs
FORMAL PROGRAM REPRESENTATION
Operational Semantics
Denotational Semantics
Axiomatic Semantics
CONTROL-FLOW REPRESENTATION
Basic Blocks
Reduced Blocks
Control-Flow Graphs
Control Dependences
□ominators and Dominator Trees
Hammocks: Reducible Flow Graphs
Call Graphs
DATA-FLOW REPRESENTATION
Data Dependences
Data-Dependence Graphs
Definition-Use Chains (Def-Use Chains)
Strong Dominators and Dominance Directed Acyclic Graphs
Static-Single Assignment
Program-Dependence Graphs
Program-Dependence Higraphs
Other Program-Dependence Graph Variations
An Alternative Approach: Input-Output Behavior
Interconnection Models
Concern Graphs
SUMMARY PROGRAM REPRESENTATION
Software Entities
Software Metrics
CONCLUSION
REFERENCES
Programming Phase: Formal Methods
Engineering Life cycle
Formal Methods
Applications of Formal Methods in Programming
Approaches: Code-Based and Specification-Based
Refinement Calculi
Generative Approaches
PROGRAM-BASED APPROACHES
Annotation-Based Approaches
C# and Spec#
Abstraction-Based Approaches
Test-Based Approaches
SUMMARY
REFERENCES
Project Control: Visualization
INTRODUCTION
LEONARDO DA VINCI
SOFTWARE
PROJECT DRAFTS IN INITIAL PHASE
PROJECT EXECUTION PHASE
USING SOFTWARE BLUEPRINT FOR PROGRESS TRACKING
REAL-WORLD EXAMPLE
REFERENCES
Project Estimation
INTRODUCTION
FUNDAMENTAL PRINCIPLES OF ESTIMATION
Estimation Principle #1:
Estimation Principle #2:
Estimation Principle #3:
ESTIMATION TECHNIQUES
WBS/CPM/PERT Estimation
Rule of Thumb Estimation
Estimation by Analogy
Expert Judgment/Delphi Estimation
Estimating Software Size
Theory-Based Estimation
Regression-Based Estimation
COCOMO Estimation Models
Monte Carlo Estimation
AN ESTIMATION PROCEDURE
DOCUMENTING AN ESTIMATE
CONCLUSIONS
ACKNOWLEDGMENT
REFERENCES
Project Life Cycle: Construction
INTRODUCTION
SOFTWARE CONSTRUCTION—A PROCESS PERSPECTIVE
FUNDAMENTALS OF SOFTWARE CONSTRUCTION
Software Architecture
Software Reuse
Software Construction for Change
Unit Testing and Test-Driven Development
Coding Conventions and Standards
SOFTWARE CONSTRUCTION MANAGEMENT
Life Cycle Management
Planning and Control
Performance Management
CONCLUSION
REFERENCES
Project Management: Planning and Scheduling
INTRODUCTION
A WORKFLOW MODEL
FOUNDATION ELEMENTS
Contractual Agreement
Project Plan
METHODS AND TECHNIQUES OF PLANNING
Work Breakdown Structure
Work Packages
Schedule Network
Gantt Charts
Staffing Profiles
PERT SCHEDULE ESTIMATION
ESTIMATING PROJECT EFFORT AND COST
TOOLS FOR PLANNING SOFTWARE PROJECTS
ADDITIONAL SOURCES OF INFORMATION
CMMI-DEV-v1.2 Project Planning Process Area
ISO/IEC and IEEE/EIA Standards 12207
PMI Body of Knowledge
IEEE/EIA Standard 1058
SUMMARY
ACKNOWLEDGMENTS
REFERENCES
Project Management: Success Factors
INTRODUCTION
ELEVEN KEYS TO SOFTWARE DEVELOPMENT AND PROJECT MANAGEMENT SUCCESS
Risk Assessment and Risk-Derived Resource Allocation
Risk-Derived Resource Allocation and
Project Planning
I
I
CHANGE CONTROL PROCESS AND CHANGE CONTROL BOARD
Planned and Unplanned Change
Processing of Changes
CCB Paperwork
CONCLUSION
ACKNOWLEDGMENTS
REFERENCES
Projects and Processes: Measurement
INTRODUCTION
SOFTWARE MEASUREMENT FOUNDATIONS
PROJECT MEASUREMENT
Deliveries
Defects
PROCESS MEASUREMENT
PRACTICAL MEASUREMENT GUIDELINES
FURTHER READING
REFERENCES
Prototyping Methods
INTRODUCTION
REQUIREMENTS ENGINEERING
PROTOTYPING CONCEPTS
PROTOTYPING METHODS
Paper Prototyping
User Interface Prototyping
Throwaway (Rapid) Prototyping
Evolutionary Protoyping
CONCLUSION
REFERENCES
Reconfigurable Computing Systems
INTRODUCTION
Simple Example: FIR Filter
More Complex Example: Software-Defined Radio
APPLICATIONS APPROPRIATE FOR RECONFIGURABLE COMPUTING
RECONFIGURABLE
COMPUTING ARCHITECTURES
RC Programming Basics
Dynamic Control/Reconfiguration
STANDARD HDL FLOW
HDL Generators
Compilation Process
Portability
DEBUGGING
Simulators
On-Chip Testing
Model Checking
PROFILING AND PERFORMANCE TUNING
Resource Usage
Critical Path
Initiation Interval
Advanced Compilers and Languages
Compilers for C, Fortran, and MATLAB®
Unconventional Programming Languages
SUMMARY AND FURTHER READING
REFERENCES
Regression Testing
INTRODUCTION
Regression Testing Model
Test Suite Execution
Test Adequacy Criteria
Test Coverage Monitoring
Reducing and Prioritizing Test Suites
8. return Tp
3. return Tr
Search-Based Techniques
Performing Test Suite Selection
Resource-Aware Regression Testing
EVALUATION OF REGRESSION TESTING TECHNIQUES
CONCLUSIONS AND FUTURE WORK
FURTHER INFORMATION
ACKNOWLEDGMENTS
REFERENCES
Reliability Modeling
Software Reliability Engineering
Properties of Software
Software Reliability Model
Software Reliability Model Data Requirements
Limitations of Software Reliability Models
Applications of Software Reliability Modeling
RELATIONSHIP OF SOFTWARE TO HARDWARE RELIABILITY
SOFTWARE RELIABILITY MODELING GENERIC PROCESS
k Outputs
SOFTWARE RELIABILITY MODELING RECOMMENDED PRACTICE
Identify the Application
Specify the Reliability Requirement
Allocate the Reliability Requirement
Make a Reliability Risk Assessment
Define Errors, Faults, Failures, and Time
Characterize the Operational Environment
Conduct Software Reliability Tests
Select Software Reliability Models
Estimate Reliability Model Parameters
Select Failure Data to Validate the Software Reliability Model
Assess Reliability
Predict Achievement of Reliability Goal
Use Criteria for Model Evaluation
Perform Model Predictive Validity Evaluation
Evaluate Quality of Assumptions
SOFTWARE RELIABILITY MODEL APPLICATIONS
Requirements Engineer
INTRODUCTION
IS THERE SUCH A THING AS A “REQUIREMENTS ENGINEER”?
REQUIREMENTS ENGINEERING ACTIVITIES
Requirements Elicitation/Discovery
Requirements Analysis and Reconciliation
Requirements Representation and Modeling
Requirements Validation
Requirements Management
CHARACTERISTICS OF THE REQUIREMENTS ENGINEER
REQUIREMENTS ENGINEERING PARADIGMS
Requirements Engineers as Software Engineer
Requirements Engineer as Subject Matter Expert
Requirements Engineer as Architect
Requirements Engineer as Business Process Expert
Ignorance as Virtue
Role of the Customer?
REQUIREMENTS ENGINEER AS MANAGER
Managing Divergent Agendas
Requirements Management and Improvisational Comedy
Requirements Management as Scriptwriting
ACKNOWLEDGMENTS
REFERENCES
Requirements Engineering: Management
INTRODUCTION
REQUIREMENTS ENGINEERING FOUNDATIONS
NEED FOR REQUIREMENTS ENGINEERING
STANDARDS
REQUIREMENTS ENGINEERING WITHIN THE PRODUCT LIFE CYCLE
REQUIREMENTS ENGINEERING TOOLS
INTRODUCING REQUIREMENTS ENGINEERING: ORGANIZATION AND COMPETENCIES
RESEARCH IN REQUIREMENTS ENGINEERING
CONCLUSIONS AND OUTLOOK: WHERE IS REQUIREMENTS ENGINEERING HEADING?
ACKNOWLEDGMENT
REFERENCES
BIBLIOGRAPHY
Requirements Engineering: Principles and Practice
INTRODUCTION
Requirements
Specifications
Stakeholders
Requirements Engineering
Layers of Abstraction
Requirement Statements
Specifications
Requirements and Testing
Requirements Tracing
Requirements and Change Management
Requirements Analysis and Modeling
Types of Requirement
CMMI® as an Example
Requirements Management (REQM)
Requirements Development (RD)
Requirements Development
Requirements Management
Verification
Practical Issues
ACKNOWLEDGMENT
REFERENCES
Requirements Engineering: Technique Selection
INTRODUCTION
LITERATURE REVIEW
Knowledge Units
Requirements Engineering Technique Knowledge Library
A METHODOLOGY FOR REQUIREMENTS ENGINEERING TECHNIQUE SELECTION
Concepts and Notations
A Model for Optimality Analysis
Activities in KASRET
General Approach to Validation
Validation of KASRET
SUMMARY AND OUTLOOK
REFERENCES
Requirements Interaction Detection
INTRODUCTION
Overview
Importance of Managing Requirements Interaction
Feature Interaction Research
System Decomposition
General Architecture of the Requirements Interaction Taxonomy
First Layer: Main Interaction Category
Second Layer: Interaction Subcategories
Third Layer: Interaction Types
Fourth Layer: Interaction Scenarios
Overview
Semiformal Approaches
Formal Approaches
CONCLUSION
REFERENCES
Requirements: Tracing
INTRODUCTION
TRACEABILITY PROBLEMS
TRACEABILITY APPROACHES
Traceability Frameworks
Traceability Reference Models
Trace Creation, Maintenance, and Retrieval Techniques
Trace Rationale
Traceability Analysis
Traceability to Manage Change
Traceability Enforced by Law
Traceability for Qualities
CONCLUSION
REFERENCES
Requirements: Understanding
INTRODUCTION
WHAT CAN GO WRONG WITH REQUIREMENTS
APPLICATION RELIABILITY ANALYSIS CAN BE USED FOR REQUIREMENTS ANALYSIS
Discovering the Important NCSLOC
Estimating Complexity
CONCLUSION
REFERENCES
BIBLIOGRAPHY
Reverse Engineering
INTRODUCTION
REVERSE ENGINEERING DOMAINS AND SUBJECT SYSTEM ARTIFACTS
REVERSE ENGINEERING PROCESS
First Subtask: Extraction of Facts about the System
Second Subtask: Analysis and Knowledge Discovery of the Extracted Facts
Third Subtask: Visualization of Analysis Results
Characteristics of the Reverse Engineering Process
Role of Abstraction
INFORMATION REPRESENTATION
AND MANIPULATION
TECHNIQUES AND TOOLS
Tool Architectures
Extraction and Analysis Techniques
Visualization Techniques
CONCLUSIONS
ACKNOWLEDGMENTS
REFERENCES
Risk Management
Relationship between Risk and Information Systems Project Failure
RISK MANAGEMENT PARADIGMS
Defining Risk
PROCESS OF RISK MANAGEMENT
RISK AFFORDABILITY
DEVELOPING A RISK MANAGEMENT STRATEGY
Cultural Considerations
Stakeholders and Stakeholder Groups
IDENTIFYING AND CLASSIFYING RISKS
Identifying Risk
CLASSIFYING RISK
RISK ANALYSIS
Risk Probability and Impact Analysis
RISK PLANNING AND MITIGATION STRATEGIES
Risk Mitigation
RISK MONITORING AND TRACKING
Tracking
REFERENCES
Round-Trip Engineering
MOTIVATION
RTE IN MODEL-DRIVEN SOFTWARE ENGINEERING
Classical RTE
Concept Analysis
Requirements to Design to Code
Recovery of Higher-Level Structure
Profile and Limitations
CONTINUOUS MODEL-DRIVEN ENGINEERING
Extreme Model-Driven Design
jABC's XMDD
Heterogeneous Service Models
Component Model Library
Feature Library
SIB1 --- SIBn
Macroi ■■■
Macron
uses
FLGi
FLGn
Temporal Constraints and Types
Integration as Consistency/ Compatibility
One Thing Approach
ROUND-TRIP ENGINEERING VS. CONTINUOUS MODEL-DRIVEN ENGINEERING
CONCLUSION
REFERENCES
Security Testing
INTRODUCTION
DEFINITIONS
WHAT IS SECURITY TESTING?
Scope of Security Testing
Purpose of Security Testing
Techniques for Security Testing
Drivers of Security Testing
Objectives and Completion
WHERE SECURITY FITS WITHIN A SYSTEM’S LIFE CYCLE
What Security Testing Consumes
Comparison with Other Non-Functional Attributes
What Security Produces
LEVELS OF SECURITY TESTING
Build Acceptance or “Smoke” Test
User-Acceptance Testing
System-Level Testing
Integration Testing
Unit Testing
WHO CONDUCTS SECURITY TESTING?
Development
Quality Assurance
Testing by Security Professionals
Quality Assurance in IT Shops vs. Independent Software Vendors
APPROACHES TO SECURITY TESTING
PENETRATION TESTING
Blind Penetration Test Usage
Recording Penetration Tests
Scripting Penetration Tests
How to Accomplish Security Testing
Develop a Security Test Strategy
Develop a Security Test Design
Test Case Creation
Manual Test Execution
Automated Security Testing
Special Considerations for Security Testing
Results Verification, Prioritization, and Documentation
TESTING COMMON SECURITY CONCEPTS
Authentication
Authorization
Input Validation
Use of Cryptography
Logging and Monitoring
Notes on Session Management
ROLE OF SECURITY TOOLS
Discovery Tools
Monitoring Tools
Tampering Tools
Anomaly Detection Tools
FACTORS FOR SUCCESS
Training of Quality Assurance Staff
Test Automation as a Means of Scale
Risk Management
CONCLUSION
REFERENCES
Self-Managing Software
INTRODUCTION
Self-Managing Software—A Means for Reducing Maintenance Costs
Biological Inspiration
Self-Managing Software Paradigm
RESEARCH AND DEVELOPMENT APPROACHES
Autonomic Computing
Grid Computing
Intelligent Software Agents
Web Services
Development Initiatives and Frameworks
Academic Research
CONCLUSIONS
REFERENCES
Semantic Web
INTRODUCTION
SEMANTIC WEB
ROLE OF ONTOLOGIES
RDF
RDF-S
OWL
SPARQL
AVAILABLE ONTOLOGIES
FOAF
Dublin Core
DBpedia
Wordnet
Others
CRITICISMS AND PROBLEMS
Strong Al
Markup
Trust
TOOLS
Ontology Development
Toolkits
Reasoners
RESOURCES
REFERENCES
Smart Machines
INTRODUCTION
PERSISTING RELEVANCE
INFORMATION TECHNOLOGY AND POWER
INFORMATION TECHNOLOGY AND REALITY
DESIGN IMPLICATIONS FOR SOFTWARE ENGINEERING
CONCLUSIONS
REFERENCES
Software Configuration Management (SCM) Process
INTRODUCTION
SOFTWARE CONFIGURATION MANAGEMENT FUNCTIONS
SOFTWARE CONFIGURATION MANAGEMENT PROCESS
SOFTWARE CONFIGURATION MANAGEMENT PRODUCTION PROCESS
Version Control
Software Manufacture
Coordination of Team Work
Change Control
Status Accounting
Audits and Reviews
Release Management
Distribution
Role of the Meta Process
Requirements Engineering
Design
Implementation
SOFTWARE CONFIGURATION MANAGEMENT PLANNING
CONCLUSION
REFERENCES
Software Engineering: History
INTRODUCTION
BEFORE SOFTWARE WAS ENGINEERED: 1946-1967
NATO CONFERENCES ON SOFTWARE ENGINEERING: 1968-1969
DEFINE THE FIELD: 1970-1985
A DISCIPLINE MATURES: 1985-
REFERENCES
BIBLIOGRAPHY
Software Evolution
INTRODUCTION
HISTORICAL PERSPECTIVE
PROGRAM COMPREHENSION
REVERSE ENGINEERING
Static Analysis
Dynamic Analysis
Tools
REENGINEERING
Legacy Software Systems
Software Metrics
Code Smells and Problem Detection
Refactoring
MINING SOFTWARE REPOSITORIES
Data Modeling
Applications of Software Repository Mining
SOFTWARE EVOLUTION IN RESEARCH
FUTURE CHALLENGES
Requirements Traceability
Service-Oriented Architectures
Collaborative Engineering
Globally Distributed Development
Software Testing
REFERENCES
Software Failure
INTRODUCTION
FAILURE EXAMINED
A FORMAL DEFINITION OF FAILURE
FAILURE PATTERNS
DEPENDABILITY OF A SOFTWARE SYSTEM
DEVELOPMENT PROCEDURES
Avoid Oversimplification
Ensure Adequate Testing
Validate Your Assumptions
Improve Estimation Techniques
Put in Place Adequate Change Management Processes
Think through the Delivery Systems
Provide Proper Leadership
Ensure Good Communication
Make Judgment Calls Transparent
Discuss Trade-offs Made
Watch out for Differing Agendas
Build in Adequate Monitoring
Reduce Human Errors
Ensure Proper Fail-over Implementation Strategies
RELIABILITY IN SOFTWARE
GETTING OUT OF FAILURES
CONCLUSION
ACKNOWLEDGMENTS
REFERENCES
Software Fault Localization
INTRODUCTION
TRADITIONAL FAULT LOCALIZATION METHODS
ADVANCED FAULT LOCALIZATION METHODS
Static, Dynamic, and Execution Slice- Based Methods
Program Spectrum-Based Methods
Statistics-Based Methods
Program State-Based Methods
Machine Learning-Based Methods
Model-Based Methods
Data Mining-Based Methods
IMPORTANT ISSUES AND RESEARCH AREAS
Effectiveness of a Fault Localization Method
Clustering for Programs with Multiple Bugs
Impact of Test Cases
Faults Introduced by Missing Code
CONCLUSIONS
ACKNOWLEDGMENT
REFERENCES
Software Measurement Body of Knowledge
INTRODUCTION
BREAKDOWN OF TOPICS FOR SOFTWARE MEASUREMENT
BASIC CONCEPTS
Foundations
Definitions and Concepts
Software Measurement Methods and Models
MEASUREMENT PROCESS
Establish and Sustain Measurement Commitment
Plan the Measurement Process
MEASUREMENT BY SOFTWARE LIFE CYCLE PHASE
Primary Processes
Supporting Processes
TECHNIQUES AND TOOLS
Measurement Techniques
Measurement Tools
QUANTITATIVE DATA
Types of Entities
Software Testing
INTRODUCTION
TRADITIONAL SOFTWARE TESTING APPROACHES
Specification-Based Test Methods
Code-Based Test Methods
INTEGRATION TESTING
Call Graphs
SYSTEM TESTING
UML-Based System Testing
Model-Based Testing
Forms of System Testing
Testing Orders
AGILE TESTING
Context-Driven Testing
Exploratory Testing
Test-Driven Development
REFERENCES
Software Testing: Tools
INTRODUCTION
TESTING PROCESS OVERVIEW
Testing Design Models
Test-Driven Development
STATIC CHECKING
Style Checkers
Reliability Data-Flow Checking
Model Checking
White-Box Testing
Black-Box Testing
Gray-Box Testing
INTEGRATION TESTING
Gray-Box Testing
Operational-Profile-Based Testing
Requirement/Model-Based Testing
Smoke Testing
Functional Testing
Performance Testing
Usability Testing
Smoke Testing
Performance Testing
Usability Testing
SUMMARY
REFERENCES
Subdomain (Partition) Testing
INTRODUCTION
Organization
HISTORY, DEFINITIONS, AND SCOPE
Definitions and Discussion
COMMON SUBDOMAIN TESTING TECHNIQUES
Functional Subdomain Testing
Structural Subdomain Testing
Comparing Subdomain Testing Methods
SUBDOMAIN TESTING PROGRAMS WITH PERSISTENT STATE AND CONCURRENCY
Persistent State
Concurrency
COMPARISON OF SUBDOMAIN TESTING WITH OTHER TESTING METHODS
WHEN TO USE SUBDOMAIN TESTING
REFERENCES
Test Case Generation: Specification-Based
INTRODUCTION
SPECIFICATION-BASED TESTING AND ITS ADVANTAGES
FAULT-BASED TESTING AND SPECIFICATION-BASED TESTING
SPECIFICATION-BASED TEST CASE GENERATION TECHNIQUES
Equivalence Partitioning and Boundary
Value Analysis
Random Testing
Partition Testing and Subdomain Testing
Category-Partition Method
Choice Relation Framework
Classification-Tree Method
Logical Expression-Based Testing
Notation, Terminologies, and Definitions
AREAS RELATED TO FAULT-AND- SPECIFICATION-BASED TESTING
Detection Condition and Test Case Generation
Fault Class Hierarchy
CONCLUSION
Test-Driven Development
INTRODUCTION
HOW TEST-DRIVEN DEVELOPMENT WORKS
Common Aliases
Common Variations
WHY TEST-DRIVEN DEVELOPMENT WORKS
PERCEPTIONS AND MISCONCEPTIONS
AN EXAMPLE
Sidebar: The xUnit Family of Testing Frameworks
DYNAMICS
Episode Length
Test-Code Volume
Test-Code Effort
EVIDENCE OF EFFECTIVENESS
Social and Cognitive Challenges
Technical Challenges
TOOL SUPPORT
CONCLUSIONS
REFERENCES
Triptych Process Model
Dogma
New Aspects
Domain Engineering Process Model
Requirements Engineering Process Model
Software Design Process Model
Process Model: Diagrams and Tables of content
Process Model Semantics
Informal vs. Formal Development
Adherence to Phases, Stages and Steps
Notions of “Process Assessment” and “Improvement”
CMM: Capability Maturity Model
Process Models and Processes
Proactive Measures
Review of Process Assessment and Process Improvement Issues
Hindrances to Process Assessment and Improvement
Summary
Future
Software Procurement
Cafe OBJ
ACKNOWLEDGMENTS
REFERENCES
Alloy
В
Cas 1
Duration calculus
LSCs
MSCs
Petri Nets
RAISE RSL
Statecharts
TLA+
VDM-SL
Unified Modeling Language (UML)
INTRODUCTION
DIAGRAM TYPES
Class Diagram
Use Case Diagram
Sequence Diagram
State Machine Diagram
Activity Diagram
OTHER DIAGRAM TYPES
Internal Structure Diagram
Collaboration Diagram
Communication Diagram
Deployment Diagram
Package Diagram
PROFILES
USAGE
Programming Design
Programming Detail
Database Design
Business Process Design
Embedded Control
Application Requirements
UML HISTORY
ASSESSMENT
REFERENCES
FURTHER READING
Unified Modeling Language (UML): Visual Development
INTRODUCTION
HISTORY OF UNIFIED MODELING LANGUAGE
PRINCIPLES OF UNIFIED MODELING LANGUAGE
MODEL-DRIVEN ARCHITECTURE
AND DEVELOPMENT
DESIGN PRINCIPLES
UNIFIED MODELING LANGUAGE ARTIFACTS FOR VISUAL MODELING
Frames
Structure Diagrams
Behavior Diagrams
Application _
Application
Interaction Diagrams
Extending Unified Modeling Language Using Profiles
Unified Modeling Language and Ontologies
Unified Modeling Language Profile for Web Ontology Language—Stereotypes
CONCLUSIONS
ACKNOWLEDGMENTS
REFERENCES
Unit Testing
Use Case Specifications: State-Based Elicitation
INTRODUCTION
DEPENDENCIES IN USE CASE SPECIFICATIONS
Depicting Dependencies in Use Cases
Intra-Use Case and Inter-Use Case Dependencies
A DEPENDENCY ANALYSIS APPROACH
Educator State Model
Interactions in Use Case Specifications
TOOL SUPPORT
Study Context
How the Project Was Carried Out
Evaluating the Educator Approach
SUMMARY OF RESULTS
CONCLUSION
REFERENCES
Use Cases
INTRODUCTION
Understanding Use Cases
Use-Case-Driven Development Process
USE CASE CONCEPTS
Use Case Actors
Use Cases
Use Case Scenarios
1,2, 3.1, 3.1.1, 3.1.2, 2, 3.1, 3.1.1, 3.1.2, 2, 3, 4, 5, 6, 7
Use Case Preconditions and Postconditions
Use Case Types
Use-Case-Associated Diagrams
Best Practices
ATM USE CASE MODEL: A CASE STUDY
Problem Description
Discovering Actors and Use Cases
Writing Use Cases
Drawing Use-Case-Associated Diagrams
SUMMARY
REFERENCES
User Stories
INTRODUCTION
IMPLEMENTING USER STORIES IN A DEVELOPMENT ORGANIZATION
USER STORIES DRIVE AGILE PROJECTS
EXAMPLE USER STORY DESCRIPTIONS
KEYS TO IMPLEMENTING USER STORIES
SUMMARY
BIBLIOGRAPHY
User-Centered Design
INTRODUCTION
USER-CENTERED METHODS
Immersion
User Participation
Usability Testing
User Research
Representations of the User
Agile Development
BUILDING A USER-CENTERED PROCESS
CONCLUSION
REFERENCES
Viewpoints
INTRODUCTION
AN EXAMPLE OF MULTIPLE PERSPECTIVES
VIEWPOINTS
RELATIONSHIPS BETWEEN VIEWPOINTS
Medical Director
PRINCIPLES UNDERLYING VIEWPOINTS
VIEWPOINT INTEGRATION
Inconsistency Management
Merging of Viewpoints
Parallel Composition of Behavioral Viewpoints
Weaving of Aspectual Viewpoints
CONCLUSION AND FURTHER READING
ACKNOWLEDGMENTS
REFERENCES
Virtual Teams
INTRODUCTION
VIRTUAL TEAMS IN CONTEXT
SOFTWARE PROJECT MANAGEMENT
KEY MANAGEMENT ISSUES WITH VIRTUAL TEAMS
Senior Management Support
Risk Management
Infrastructure
Virtual Team Process
Team and Organizational Structure
Partitioning and Allocation of Work
CRITICAL SUCCESS FACTORS FOR VIRTUAL TEAMS
Coordination
Culture
Communication
Trust
Cooperation
Knowledge Transfer
Conflict Management
Achieving Common Goals, Objectives, and Rewards
CONCLUSION
REFERENCES
Visualization
INTRODUCTION
Desirable Qualities of Software
Visualization Systems
Software Visualization Taxonomies
VISUALIZATION TECHNIQUES FOR SOFTWARE ANALYSIS AND DESIGN
VISUALIZATION TECHNIQUES FOR SOFTWARE MAINTENANCE AND EVOLUTION
Structural Complexity in Software Architecture
Metric-Enriched Visualization Metaphors
VISUALIZATION OF EXCESSIVE STRUCTURAL COMPLEXITY
CONCLUSION
REFERENCES
Index
A
В
D
E
F
G
H
К
L
M
N
О
P
Q
R
S
T
U
V
W
X
Y
Z
ENCYCLOPEDIA OF
THIS TITLE IS PART OF A SET