Author(s): Phillip A. Laplante
Publisher: Taylor and Francis Group, LLC
Year: 2011
Language: English
Pages: 650
SOFTWARE ENGINEERING
Encyclopedias from Taylor & Francis Group
Encyclopedia of Chemical Processing (Five Volume Set)
Dekker Encyclopedia of Nanoscience and Nanotechnology, Second Edition (Six 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 Hacken
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 В ahi
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
Acquisitions Management
INTRODUCTION
SOFTWARE ACQUISITION MANAGEMENT VS. SOFTWARE PROJECT MANAGEMENT
SOFTWARE ACQUISITION PHASES
THE ACQUISITION PLANNING PHASE
DEVELOPMENT PHASE
Pressures on the Acquisition Manager during Development
Pressures on the Development Manager during Development
Developer Competence
Risk Management
TRANSITION PHASE
Acceptance
Disputes
Product Support
CONCLUSION
REFERENCES
Agent-Oriented Software Engineering
INTRODUCTION
MULTIAGENT SYSTEMS
WHAT ARE AGENTS?
A Historical Perspective
Notions of Agency
AGENTS VS. OBJECTS
WHY BUILD MULTIAGENT SYSTEMS?
Beliefs, Desires, Intentions, and the Intentional Stance
A Future Direction: Agent-Oriented Programming Languages
WHEN TO USE MULTIAGENT SYSTEMS
DESIGNING AGENT SOCIETIES
SPEECH-BASED COMMUNICATION
Agent Communication Languages
Content Languages
PROTOCOLS AND NEGOTIATION
FIPA Request Interaction Protocol
Contract Net Protocol
WHITE AND YELLOW PAGE DIRECTORY SERVICES
BLACKBOARD AND SHARED SPACES
MULTIAGENT PLATFORMS
JADE
Robust and Scalable Distributed Computing
Programming JADE Agents
MODELING AND METHODOLOGIES
GAIA
Process
Organizations: Rules and Structures
Environment
Roles and Interactions
VISUAL MODELING LANGUAGES
QUALITY AND ROBUSTNESS
Testing
Debugging
SUCCESS STORIES
MAS PRODUCT LINES
Modeling Human Behavior: Computer- Generated Forces
Dynamic, Local Optimization:
Adaptive Transportation
CONCLUSION
ACKNOWLEDGMENT
REFERENCES
Agile Software Development
INTRODUCTION
THE AGILE ECOSYSTEM
Agile Manifesto
Criteria for Being Agile
1. Produce working software on a regular basis.
How Agile Is Different
How Agile Is the Same
AGILE SOFTWARE PROCESSES
AGILE TEAM ORGANIZATION
AGILE PRACTICES
Team Practices
Project Management/Leadership Practices
Requirements and Analysis Practices
Architecture and Design Practices
Development Practices
Testing and Quality Practices
Documentation Practices
Data Practices
Scaling Practices
Mapping Practices to Processes
THE AGILE SCALING MODEL
SUMMARY
REFERENCES
Agile Software Development: Teams
INTRODUCTION
AGILE PROCESSES
WHY MANAGING AGILE DEVELOPMENT TEAMS IS DIFFERENT
Continuous Flow of Working Software
Continuous Feedback
Responding to Change
Solution Discovery
Continuous Improvement
REAL TEAMS
AGILE ANTI-PATTERNS
CONCLUSION
BIBLIOGRAPHY
Architecture and Design Recovery
INTRODUCTION
RECOVERY IN THE SOFTWARE DEVELOPMENT PROCESS
THE RECOVERY PROCESS
From Source Code to Design and Architecture
From Architecture to Features
RECOVERY IN AN INDUSTRIAL CONTEXT
Source Code Fact Extraction
Expert Interviews
Dependency Visualizations
Reflexion Models
Architecture and Design Documentation
Recovery Using Static Information
Recovery Using Dynamic Information
Recovering Higher-Level Concepts
AUTOMATIC CLUSTERING
SPECIFICS OF CERTAIN DOMAINS
Enterprise Applications
Embedded Systems
USE OF RECOVERED ARCHITECTURE AND DESIGN
CONCLUSION
REFERENCES
Architecture: Analysis
INTRODUCTION
FUNDAMENTALS
Business Goals
Quality Attribute Requirements
Prioritizing Quality Attribute Requirements
Achieving Quality Attribute Requirements: Tactics and Patterns
TECHNIQUES FOR ARCHITECTURAL ANALYSIS
Architecturally Significant Requirements
Performing the Analysis
METHODS
Use of Analysis in Evaluation Methods
Use of Analysis in Design Methods
Use of Analysis in a Software Development Process
CONCLUSION
ACKNOWLEDGMENTS
REFERENCES
Architecture: Description Languages
INTRODUCTION
SOFTWARE ARCHITECTURE DEFINITIONS
ADL Predecessors
Pseudo-ADLs Based on Formal Specification Models
Fully Developed ADLs
Formalisms Used in ADL Predecessors and ADLs
ADL EXAMPLES
ACME: A Foundational ADL
Aesop: A Configuration-Oriented ADL
AHEAD: A Component-Oriented ADL
CSP: A Connection-Oriented ADL
UML: A General-Purpose ADL
Newly Emerging ADLs
RELATED RESEARCH
CONCLUSION
REFERENCES
Architecture: Design
INTRODUCTION
WHAT IS ARCHITECTURAL DESIGN
ARCHITECTURAL DESIGN ACTIVITIES
ARCHITECTURAL ANALYSIS
ARCHITECTURAL SYNTHESIS
Resources for Synthesis
Architecture Technologies for Synthesis
Multiple Views
Design Methods
Summary of Architectural Synthesis
ARCHITECTURAL EVALUATION
ARCHITECTURAL DOCUMENTATION
Purposes of Architectural Documentation
Documentation Format and Artifacts
RESOURCES FOR THE ARCHITECT
CONCLUSION
REFERENCES
Audits and Management Reviews
INTRODUCTION
SOFTWARE PROJECT AUDIT AND MANAGEMENT REVIEW DEFINITION
Software Project Audit
Management Reviews
A ROAD MAP FOR SOFTWARE PROJECT AUDITS AND MANAGEMENT REVIEWS
Purpose
Scope
Process
Project Audit Checklist (Example)
Participants
Timing
Standards
IMPLEMENTATION OF SOFTWARE PROJECT AUDITS AND MANAGEMENT REVIEWS
Team
Organizational Structure and Culture
Environment
CONCLUSION
REFERENCES
Automated Software Testing (AST)
REALITIES OF AUTOMATED SOFTWARE TESTING
Automated Software Testing Definition
Automated Software Testing Recipes
Advances in AST Technologies
Automating Various Software Testing Types
Providing AST-Based Production Support
Automating Standards Assessments
SUMMARY
REFERENCES
Autonomic Systems
INTRODUCTION
WHAT ARE AUTONOMIC SYSTEMS?
AUTONOMIC ELEMENT AND
AUTONOMIC ENVIRONMENT
SOFTWARE ENGINEERING SELF-MANAGING SYSTEMS
PERFECT SOFTWARE
Proactive
Effective
Robust
Flexible
Easy to Use
Cautious
Transparent
DEFINING TERMS, TERMINOLOGY, AND GLOSSARY
CONCLUSION
REFERENCES
Bioinformatics: Processes and Workflows
INTRODUCTION
RESOURCES IN BIOINFORMATICS
Public Resources
Service Registries
Requirements
Systems
CASE STUDY: WORKFLOW DEVELOPMENT IN TAVERNA AND BIO-jETI
Example 1: Multiple Sequences Analysis
Example 2: Phylogenetic Tree Construction
Example 3: DDBJ-UniProt Workflow
Realizing Examples in Taverna
Realizing Examples in Bio-jETI
CONCLUSIONS
REFERENCES
Business Domain Modeling
INTRODUCTION: BUSINESSES AND INFORMATION SYSTEMS
DOMAIN SEMANTICS
INTEROPERABILITY
IMPORTANCE OF CONCEPTS
MODELING TACIT ASSUMPTIONS
SEPARATION OF CONCERNS BASED ON A COMMON FOUNDATION
WELL-STRUCTURED SPECIFICATIONS: RELATIONSHIP SEMANTICS
ABSTRACTION LEVELS AND VIEWPOINTS
WELL-STRUCTURED SPECIFICATIONS: CONCEPTUAL REUSE
MODELING AND SOFTWARE ENGINEERING
NOTATIONS
CONCLUSIONS
ACKNOWLEDGMENTS
REFERENCES
Code Quality
INTRODUCTION
EXTERNAL QUALITY CHARACTERISTICS
INTERNAL QUALITY CHARACTERISTICS
QUALITY METRICS IN GOOD MEASURE
CODE QUALITY
TOOLS FOR CODE QUALITY
Pencil and Paper
Plain Text
Shells
Editors
Debuggers
Text Manipulators
Test Tools
Code Checkers
Profilers
Program Generators
Build Tools
Source Code Control
Issue Trackers
Wikis
QUALITY AND THE SOFTWARE PROCESS
QUALITY POINT OF VIEW
REFERENCES
Communication Software: Design and Testing
INTRODUCTION
DEVELOPMENT TECHNOLOGY
SDL: Specification and Description Language
ASN.1: Abstract Syntax Notation One
Telelogic Tau
3rd Generation Partnership Project Stack in Universal Mobile Telecommunications System
Testing Universal Mobile
Telecommunications Systems
Radio Resource Control Design with SDL
Packet Data Convergence Protocol Design with SDL
Internet Protocol Media Sublayer and Session Initiation Protocol Overview
Design and Validation of Session Initiation Protocol
Code Generation and Evaluation
CONCLUSIONS
REFERENCES
Configuration Auditing
Why Is Software Configuration Audit Important?
Who Is Involved in Software Configuration Audit?
How Do We Define Software Configuration Audit?
BASIS FOR SOFTWARE CONFIGURATION AUDIT
Tier 4: The “Who” and “When” of SCM
MUST DO #1: AUDIT TEAM INDEPENDENCE
Control
Management
Cost Saving
Quality
MUST DO #2: UNDERSTAND AT ALL TIMES WHERE YOU ARE IN YOUR LIFE CYCLE
Software Configuration Audit and IEEE Standard 12207-2008
Life Cycle Model Configuration Audit Events
*w»
ion. Processes
Acquisition Process Configuration Items
6. Hardware Requirements Specification—
Supply Process Configuration Items
Development Process Configuration Items
5. Software Detail Design Specification—The
Maintenance Process Configuration Items
Operation Process Configuration Items
SUMMARY
REFERENCES
Defect Prevention Processes (DPP)
INTRODUCTION
Software Defect Prevention
SOFTWARE DEFECT PREDICTION TECHNIQUES
Actions and Software Process
Actions and Defects
Defect Prevention Process
ACTION MODELING
Data Definition
Modeling Techniques
DEPLOYMENT OF THE ABDP
DISCUSSION
CONCLUSION
ACKNOWLEDGMENT
REFERENCES
Design: Patterns
A BRIEF HISTORY OF DESIGN PATTERNS
DESIGN PATTERNS AND QUALITY
Quality Without a Name
Languages of Patterns
Patterns Generate Architecture
Overengineering and Refactorings
RESEARCH WORK ON DESIGN PATTERNS
Design Pattern Impact on Quality Characteristics
Design Pattern Impact on Program Comprehension
CONCLUSION
ACKNOWLEDGMENTS
REFERENCES
Design: Proof-Based Certification
INTRODUCTION
Words to Construct Software by
DIGITAL SYSTEMS REQUIRE PROOF
Discrete Logic
Model-Checking
L , S
Theorem-Proving
L > S
CONCLUSIONS
REFERENCES
Development: Information Retrieval Applications
INTRODUCTION
TERMINOLOGY
Glossary
IR TECHNIQUES
REQUIREMENTS
SOFTWARE REPOSITORIES
TRACEABILITY LINKS BETWEEN SOFTWARE ARTIFACTS
SOFTWARE REUSE
METRICS
FUTURE DIRECTIONS
SUMMARY
ACKNOWLEDGMENTS
REFERENCES
Earned Value Management
INTRODUCTION
A Simplified Example
On Time?
On Budget?
Examples
Making Predictions
Comparison to Traditional Cost Management
Measuring Actual Results
TERMINOLOGY
USING EV
Cost Performance Index
Measuring CPI Numerically
Estimate at Completion
To-Complete Performance Index
Estimating Completion Date
Summary of CPI and SPI(t)
HISTORY OF EVM
A Note on Scale
APPLYING EV TO SOFTWARE
Approaches
Variances from Plan
Issues to Consider
CONSIDERATIONS FOR ORGANIZATIONAL CULTURE
SUMMARY OF SIMPLE EVM FOR SOFTWARE
GETTING STARTED
ACKNOWLEDGEMENTS
REFERENCES
Economics
INTRODUCTION
WHAT IS SOFTWARE ENGINEERING?
ELEMENTS OF SOFTWARE ENGINEERING ECONOMICS
Proposals
Cash Flow Instances and Cash Flow Streams
Cash Flow Diagrams
Economic Decision-Making Process
Time-Value of Money
Equivalence
Bases for Comparison
Mutually Exclusive Alternatives
For-Profit Decision Analysis
Non-Profit Decision Analysis
Engineering Economics Topics Not Covered Here
CONCLUSIONS
REFERENCES
Ethics
WHAT IS ETHICS?
PROFESSIONAL ETHICS
Professional’s Obligations
Formal vs. Expected Professional Ethics
SOFTWARE DEVELOPERS AS PROFESSIONALS
Similarities and Dissimilarities to
Other Professionals
Professional Organizations of Software Developers
Codes of Ethics and Professional Standards
Certification: Pros and Cons
ETHICAL DILEMMAS
WHEN ETHICAL PRINCIPLES ARE LAX: EXAMPLES OF DISASTROUS CONSEQUENCES
Culpability and Accountability
REFERENCES
BIBLIOGRAPHY
Ethnography
INTRODUCTION
Overview of Topics Covered
Ethnography in Anthropology and Sociology
Ethnographic Heritage in Software Engineering
UNDERPINNING ASSUMPTION OF ETHNOGRAPHY
DIFFERENCE IN STYLE, MINDSET, AND EXPECTATIONS
ETHNOGRAPHY AND IMPROVEMENT
FIELDWORK PROGRAM AND DATA COLLECTION
ANALYTIC PROGRAMS INFORMING ETHNOGRAPHY
PRESENTATION FORM AND VALIDITY OF STUDY RESULTS
ETHNOGRAPIC STUDIES OF AND IN SOFTWARE ENGINEERING
CONCLUSION
ACKNOWLEDGMENT
Fault Injection
INTRODUCTION
HISTORICAL VIEW OF SOFTWARE FAULT INJECTION
FAULT MODEL
COMPILE-TIME FAULT INJECTION
Source Code Mutation
Bytecode Mutation
RUNTIME FAULT INJECTION
Time-Trigger
Runtime Mutation
Library-Based
Performance/Timing Faults
User-Space pfrace-Based
GDB-Based
Kernel Space
Configurable FPGA
Security Threats
SIMULATION-BASED FAULT INJECTION
DEPENDABILITY BENCHMARK ATTRIBUTES
CONCLUSION
REFERENCES
Fault-Based Testing
INTRODUCTION
FAULTS AND FAILURES
DATA STATES AND FAULT-FAILURE MODEL
SELECTION OF FAULT-BASED TEST INPUTS
RESEARCH IN FAULT-BASED ANALYSIS AND TESTING
MUTATION ANALYSIS AND TESTING
FAULT-BASED SYMBOLIC TESTING
PIE ANALYSIS AND SENSITIVITY ANALYSIS
PROPAGATION ANALYSIS
DYNAMIC ERROR FLOW ANALYSIS
PERTURBATION ANALYSIS
CONCLUSIONS
REFERENCES
Formal Methods
INTRODUCTION
Formal Methods—A Means for Constructing Reliable Software
Formal Methods—A Subject of Controversy
FORMAL METHODS: A FORMAL NOTATION WITH COMPUTATIONAL TOOLS
Formal Specification Languages
Abstraction with Formal Languages
Software Verification and Validation
FORMAL METHODS BEST PRACTICES
Choose an Appropriate Notation
Do Not Overformalize
Estimate Costs
Have Formal Methods Expertise
Do Not Abandon Traditional Development Methods
Document Sufficiently
Do Not Compromise Quality Standards
Formal Specifications Are Not Flawless
Testing Is Still Needed
Reuse Is Still Important
CONCLUSIONS
FORMAL LANGUAGES GLOSSARY
Formal Requirements Specification
INTRODUCTION
Requirements
Requirements Specification
FORMAL SPECIFICATIONS
Requirements Formalization
Formal Notation and Modeling
WINDOW MANAGEMENT SYSTEMS: Z NOTATION CASE STUDY
Writing Specifications with Z Notation
Window Management System Specification
SUMMARY
ACKNOWLEDGMENT
REFERENCES
Functional Programming in ML
INTRODUCTION
FUNCTIONAL PROGRAMMING AND ARITHMETIC
Raising Numbers to Powers
Types and Type Inference
Efficiently Raising Numbers to Powers
PRIMITIVE DATA STRUCTURES
PROGRAMMING WITH LISTS
Example 1: The Quadratic Formula
Example 2: Factors of an Integer
Accumulators and Tail Recursion
Basic Functions on Lists
Lists and Type Inference
PROGRAMMING WITH
DATATYPE DECLARATIONS
Enumeration Types
Datatypes with Parameters
Recursive Datatypes
Programming with Binary Trees
PROGRAMMING WITH FUNCTIONS
Functions as Data and Curried Functions
Higher-Order Functions for Lists
X-Notation for Functions
OTHER TOPICS
Lazy Evaluation
Imperative Programming Features
Monads: Purely Functional Imperatives
(and More)
CONCLUSIONS
FURTHER READING
REFERENCES
Grid Environments: Service Level Agreements (SLAs)
INTRODUCTION
MOTIVATION
SLA LIFE CYCLE
Service and SLA Template Development
Contract Negotiation
Implementation
Service Execution
Performance Assessment
Service Termination and Decommissioning
CONTENTS OF AN SLA
Nextgrid SLA Overview
SLA Identifier
SLA Context
SLA Terms
Signatures
SLA SPECIFICATIONS
Web Services Agreement Specification
Web Service Level Agreements
NEGOTIATION OF SLAs
EXAMPLE OF A GENERIC SLA-ENABLED GRID ARCHITECTURE
Consumer View
Provider View
SLA Service Layer: Negotiation and Supervision
Middleware Layer
Supporting Services
SLA-Specific Supporting Services
General Supporting Services
SLA ASSESSMENT
Corrective Actions
Evaluation
CURRENT ACTIVITIES AND EXAMPLE USAGE OF SLAs IN GRIDS
VIOLA—A Metascheduling Service for Grids
NextGRID—Providing Financial Services Governed by SLAs
CONCLUSION
ACKNOWLEDGMENTS
REFERENCES
Hard Real-Time Systems: Construction
Hard Real-Time Systems
Goals
Definitions
Characteristics
Overview
Input
Processing
Output
Choosing Processors
Choosing an Architecture
Various Hardware Concerns
Security
DEVELOPMENT PROCESSES AND PROCEDURES
TEST AND INTEGRATION
Inspection and Peer Review
Unit Test
Subsystem Test
Integration
Environmental Tests
MANUFACTURING TEST
Manual Check
Simple Tests—“Blinky Light Test” and BIT
Automatic Test Equipment
Calibration
Troubleshooting
Documentation
Technical Support
Maintenance
Problems with Longevity
CONCLUSION
REFERENCES
Human Factors Engineering
INTRODUCTION
WHAT IS HUMAN FACTORS ENGINEERING/ ERGONOMICS?
HISTORY OF HUMAN FACTORS ENGINEERING
FUNDAMENTALS OF HUMAN FACTORS ENGINEERING
Anthropometry
Human Motor Control and Input Devices
Human Perception and Output Devices
Information Processing Psychology and Interaction Design
Usability Testing
CONCLUSION
REFERENCES
BIBLIOGRAPHY
Books
Scientific Journals
Trade Magazines
Professional Conferences
Standards
Human-Centered Computing
INTRODUCTION
WHAT IS HUMAN-CENTERED COMPUTING?
HUMAN-CENTERED COMPUTING EMERGES AS A REACTION
HISTORICAL PREDECESSORS OF HUMAN-CENTERED COMPUTING
EXAMPLES OF HUMAN-CENTERED SYSTEMS
LOOKING AHEAD
ACKNOWLEDGMENT
REFERENCES
IEEE Computer Society
INTRODUCTION
Background
Capturing Generally Accepted Knowledge and Practices
SWEBOK 2010 Refresh
Background
Certified Software Development Professional
Certified Software Development Associate
Introduction
Magazines
Technical Journals
IEEE COMPUTER SOCIETY PRESS
TECHNICAL COUNCIL ON SOFTWARE ENGINEERING
CONFERENCES AND CONFERENCE PROCEEDINGS
COMPUTER SOCIETY DIGITAL LIBRARY
STANDARDS ACTIVITIES
COMPUTER SOCIETY MEMBERSHIP
Computing Now
Build Your Career
Raise Your Standards
Webinars
VOLUNTEER OPPORTUNITIES
AWARDS PROGRAM
CONCLUSION
REFERENCES
Logic Programming
INTRODUCTION
A BRIEF HISTORY
LOGIC PROGRAMMING THROUGH PROLOG
Facts and Queries: Building a Knowledge Database
Rules: How to Write a Procedure
Behavior of Logical Variables
Clause and Goal Selection
Data Structures
Recursive Data Structures
Prolog and Typing
Negation, Control, and Other Facilities
FORMAL BASIS OF LOGIC PROGRAMMING
Terms and Unifiers
Literals
Formulae and Their Interpretation
Toward Logic Programming: Resolution with Variables
Prolog
EXTENSIONS TO LOGIC PROGRAMMING
Constraint Logic Programming
Tabling
Parallelism and Parallelization
Closely Related Languages
CONCLUSIONS
ACKNOWLEDGMENTS
REFERENCES
Maintenance
INTRODUCTION
SOFTWARE EVOLUTION
Laws of Evolution
Maintainability
Organizational Environment
MAINTENANCE TASK CATEGORIES
Traditional Classification
Chapin’s Classification
LIFE-CYCLE PROCESSES
Handling Modification Requests
System Analysis and Design
Implementation
Testing and Delivery
SUPPORTING PROCESSES
Maintenance Planning
Configuration Management
Documentation
Program Comprehension
Debugging
Impact Analysis
Reuse
Other Activities
EVALUATION
Metrics and Estimates
Maintenance Costs and Benefits
Customer Satisfaction
SUPPORTING TECHNIQUES
Reverse Engineering
Program Slicing
Software Visualization
Query Languages
Navigational Structures
CONCLUSION
REFERENCES
Maintenance and Evolution: Information Retrieval
Applications
INTRODUCTION
FEATURE/CONCEPT LOCATION
FAULT PREDICTION
DEVELOPER IDENTIFICATION
COMPREHENSION
IMPACT ANALYSIS
TRACEABILITY LINKS
REFACTORING
SUMMARY
ACKNOWLEDGMENTS
REFERENCES
Maintenance: Process
INTRODUCTION
MAINTENANCE OR EVOLUTION?
IMPORTANCE OF “PROCESS”
SOFTWARE MAINTENANCE PROCESS
MAINTENANCE VS.
DEVELOPMENT PROCESSES
MAINTENANCE PROCESS MODELS
“Quick-Fix” Process Model
Sequential Model
Iterative Model
Vertical Views of the Maintenance Process
Other Maintenance Process Models
Maintenance Process Problems
Staffing the Maintenance Process
Standards and Similar Sources
Maintenance Process Improvement
Maintenance as a Service
Maintenance Outsourcing
Lehman’s “Laws” of Software Evolution
TECHNICAL ACTIVITIES RELEVANT TO MAINTENANCE PROCESS
OPEN CHALLENGES IN THE SOFTWARE MAINTENANCE PROCESS
FINAL REMARK
ACKNOWLEDGMENTS
REFERENCES
Maintenance: Risk
INTRODUCTION
SOFTWARE PROCESS AND KNOWLEDGE
Project Risk Management
Risk-Based Approach
CONCLUSIONS
FUTURE WORKS
ACKNOWLEDGMENT
REFERENCES
Maintenance: Techniques
INTRODUCTION
SOFTWARE MAINTENANCE PROCESS
Portfolio Analysis and Strategy Determination
System Modeling and Analysis
Transformation
Evaluation
SOFTWARE MAINTENANCE TECHNIQUES
Corrective Maintenance
Perfective Maintenance
Adaptive Maintenance
Tools
Frameworks
Processes
EMERGING TRENDS
CONCLUDING THOUGHTS
REFERENCES
Management: Tools
TASKS OF SOFTWARE PROJECT MANAGERS
PROJECT MANAGEMENT KNOWLEDGE ACQUISITION
HISTORY OF SOFTWARE PROJECT MANAGEMENTTOOLS
USAGE PATTERNS OF SOFTWARE PROJECT MANAGEMENT TOOLS
RECENT EVOLUTION OF SOFTWARE PROJECT MANAGEMENT TOOLS
Software Project Sizing
Software Project Schedule Planning
Software Cost Estimating
Software Project Risk Estimating
Software Quality Estimating
Software Project Outsource Contract Analysis
Software Project Commercial Off-the- Shelf Acquisition
Software Personnel Management
Software Project Measurement, Tracking, and Control
Software Technology Acquisition
Software Mergers and Acquisitions
Software Litigation Support
COSTS AND VALUE OF SOFTWARE PROJECT MANAGEMENT TOOLS
FUTURE OF SOFTWARE PROJECT MANAGEMENT TOOLS
BIBLIOGRAPHY
Medical Device Industry: Software Process Improvement
INTRODUCTION
WHAT ARE MEDICAL DEVICES?
WHAT IS MEDICAL DEVICE REGULATION?
MEDICAL DEVICE SOFTWARE DEVELOPMENT AND ASSOCIATED STANDARDS
Software Quality Audit System (1996)
IEC 60601-1-4 (1996)
AAMI Software Committee (1997-1998)
FDA Modernization Act of 1997
Medical Device Software Development and the AAMI Software Committee (1997-2001)
AAMI SW68—Software Life Cycle Processes for Medical Device Software
ANSI/AAMI/IEC 62340—Medical Device
Software—Software Life Cycle Processes
ISO 14971
GAMP 5
ISSUES WITH EXISTING MEDICAL DEVICE SOFTWARE DEVELOPMENT STANDARDS AND GUIDANCE
FORMAL SPI MODELS—CMMI® AND SPICE™
CMMI® Overview
ISO/IEC 15504 Overview
SPECIFIC SPI MODEL FOR THE MEDICAL DEVICE INDUSTRY
What Is Medi SPICE?
Medi SPICE Objective
Medi SPICE Coverage
Medi SPICE Processes
Composition of Medi SPICE Processes
EXAMPLE: MEDI SPICE PROCESS—RISK MANAGEMENT
CONCLUSIONS AND FUTURE WORK
ACKNOWLEDGMENTS
REFERENCES
Metamodeling
INTRODUCTION
WHAT ARE METADATA?
IN SEARCH OF METADATA
ARCHITECTURE FRAMEWORK
Rows
Columns
METAMODELS AND FRAMEWORK
Data111
Activities, Functions, and Processes111
Locations[1]
People and Organizations111
Events and Timing[1]
Motivation111
ABOUT MODELING NOTATION
SAMPLE METAMODEL COMPONENTS
Ontologies (Row Two, Column One)[1]
Entity Classes (Row Three, Column One)[1]
Program Modules (From Row Four, Columns One and Two)[1]
Events (From Row Two, Column Five)[1]
CONCLUSION
REFERENCES
Model-Based Testing
INTRODUCTION
BACKGROUND
General Considerations on Testing
Areas for Test Process Automation
Using Models for Testing
MODEL-BASED TESTING APPROACHES
SUMMARY
REFERENCES
Model-Based Testing: Approaches and Notations
MODEL-BASED TESTING APPROACHES
System Model Only Approach
Test Model Only Approaches
System and Test Model Combined Approaches
Independent System and Test Model Approach
MODEL-BASED TESTING LANGUAGES
AND NOTATIONS
UML Testing Profile
Unified Test Modeling Language
Testing and Test Control Notation, Version 3
REFERENCES
МВТ TRENDS AND CHALLENGES
Selected Application Areas for МВТ
МВТ Trends
МВТ Challenges
SUMMARY AND OUTLOOK
Consideration of Return on Investment
Recommendations
ABBREVIATIONS
REFERENCES
Mutation Testing
INTRODUCTION
TRADITIONAL MUTATION TESTING
VARIANTS ON TRADITIONAL MUTATION TESTING
What It Means to Kill a Mutant
Different Programming Paradigms
MUTATING MODELS
REMAINING CHALLENGES
Number of Mutants
Equivalent Mutants
CONCLUSIONS
REFERENCES
Object-Oriented Analysis and Design
OBJECT-ORIENTED ANALYSIS AND DESIGN PARADIGM
Abstraction
Encapsulation
Image Loader
Information Hiding
Inheritance
Polymorphism
Relationships
OBJECT-ORIENTED ANALYSIS
OBJECT-ORIENTED DESIGN
High-Level Design
Detailed Design
CONCLUSION
REFERENCES
Open Source Software
INTRODUCTION
WHAT IS FREE/OPEN SOURCE SOFTWARE DEVELOPMENT?
Early Days of Software Source Code Sharing
Rise of Empirical Studies of FOSSD
UNDERSTANDING FOSS DEVELOPMENT ACROSS DIFFERENT COMMUNITIES
Networked Computer Game Worlds
Internet/Web Infrastructure
Scientific Computing in X-Ray Astronomy and Deep Space Imaging
Academic Software Systems Design
Overall Characteristics across Different
FOSSD Communities
INFORMALISMS FOR DESCRIBING FOSS REQUIREMENTS AND DESIGN RATIONALE
FOSSD RESEARCH STUDIES AND APPROACHES
Objects of Study, Success Indicators, and Critical Factors for Understanding FOSSD
Current FOSSD Research Approaches
OPPORTUNITIES FOR FOSSD AND SE RESEARCH AND PRACTICE
LIMITATIONS AND CONCLUSIONS ON FOSSD
ACKNOWLEDGMENTS
REFERENCES
Operational Profile Testing
INTRODUCTION
CLASSIFICATION
OPERATIONAL PROFILE FEATURES
RELIABILITY TESTING DOMAINS
Statistical Usage Testing
Software Reliability Growth Testing
Other Reliability Testing
Operational Profile and Fault Injection
RESEARCH DIRECTIONS
Operational Profile Development
Test-Case Generation
Sensitivity Analysis
CONCLUSION
ACKNOWLEDGMENTS
REFERENCES
Outsourcing
INTRODUCTION
WHAT IS OFFSHORE OR OFFSHORE OUTSOURCING?
Significant Cost Savings
Negotiating with Offshore Vendors for the First Time: A Primer
Another Key Point of Consideration Is the Length of the Vendor Contract for Offshore
Offshore in Microcosm: A Look at the Payback of a “Typical” Offshore Program
Establishing Return oh Investment for Offshore Outsourcing
1. Up-front strategic staffing, especially regarding employee impact
2. Organized and fine-tuned communications
3. Maintain a realistic view of up-front costs
3a. Cost: Network security architecture development
3b. Cost: Knowledge transfer
3c. Cost: Software vendor consent management
4. Funding the appropriate level of ongoing Offshore program office oversight (retained layer)
5. Top-down executive support
6. Risk management
HOW DO I SELECT THE BEST OFFSHORE VENDORS?
HOW DO WE RESPOND TO SECURITY AND GEOPOLITICAL RISK?
DO: Choose a network security architect with a broad leadership capability.
DON’T: Let generalized, U.S.-centric fear become the basis for Offshore risk strategy.
Impacted Workers: Recommendations and Logistics for Offshore
DO: Embark upon Offshore sooner rather than later.
REFERENCES
BIBLIOGRAPHY
Index
A
В
D
E
F
H
J
К
L
M
N
P
Q
R
S
T
U
V
W
X
Y
Z
ENCYCLOPEDIA OF