Authors |
|
xxxi | |
Introduction |
|
1 | (4) |
|
What Is the Goal of This Book? |
|
|
1 | (1) |
|
How Is This Book Different from Other Software Engineering Books? |
|
|
1 | (1) |
|
Can This Book Convert Me into a Software Engineer? |
|
|
1 | (1) |
|
Are Software Engineers Really Engineers? |
|
|
2 | (1) |
|
How Should I Use This Book? |
|
|
2 | (1) |
|
Who Is the Intended Audience? |
|
|
2 | (1) |
|
Did Anyone Help You with This Book? |
|
|
2 | (1) |
|
Are There Copyrights and Trademarks to Be Cited? |
|
|
2 | (3) |
|
Chapter 1 The Profession of Software Engineering |
|
|
5 | (14) |
|
|
5 | (1) |
|
1.2 Software Engineering as an Engineering Profession |
|
|
5 | (6) |
|
1.2.1 What Is Software Engineering? |
|
|
5 | (1) |
|
1.2.2 Is Software Engineering an Engineering Discipline? |
|
|
6 | (1) |
|
1.2.3 What Is the Difference between Software Engineering and Systems Engineering? |
|
|
6 | (1) |
|
1.2.4 What Is the History of Software Engineering? |
|
|
7 | (1) |
|
1.2.5 What Is the Role of the Software Engineer? |
|
|
8 | (1) |
|
1.2.6 How Do Software Engineers Spend Their Time on the Job? |
|
|
8 | (1) |
|
1.2.7 What Is the Difference between a Software Engineer and a Systems Developer? |
|
|
9 | (1) |
|
1.2.8 What Kind of Education Do Software Engineers Need? |
|
|
9 | (1) |
|
1.2.9 What Kind of Education Do Software Engineers Typically Have? |
|
|
10 | (1) |
|
1.2.10 I Know Someone Who Is an "XYZ Certified Engineer"; Are They a Software Engineer? |
|
|
10 | (1) |
|
1.2.11 Why Are There So Many Software Engineers without the Proper Education? |
|
|
10 | (1) |
|
1.2.12 Can Software Engineering Programs Be Accredited? |
|
|
10 | (1) |
|
1.2.13 What Are Some of the Popular Certificates in Demand for Software Engineers? |
|
|
11 | (1) |
|
1.3 Standards and Certifications |
|
|
11 | (4) |
|
1.3.1 Are There Standards for Software Engineering Practices, Documentation, and So Forth? |
|
|
11 | (1) |
|
1.3.2 What Is the Software Engineering Body of Knowledge? |
|
|
12 | (1) |
|
1.3.3 Are There Any "Fundamental Theorems" of Software Engineering? |
|
|
13 | (2) |
|
1.4 Misconceptions about Software Engineering |
|
|
15 | (4) |
|
1.4.1 Why Is Software So Buggy and Unreliable? |
|
|
15 | (1) |
|
1.4.2 I Write Software as Part of My Job; Does That Make Me a Software Engineer? |
|
|
15 | (1) |
|
1.4.3 But Isn't Software System Development Primarily Concerned with Programming? |
|
|
15 | (1) |
|
1.4.4 Can't Software Tools and Development Methods Solve Most or All of the Problems Pertaining to Software Engineering? |
|
|
15 | (1) |
|
1.4.5 Isn't Software Engineering Productivity a Function of System Complexity? |
|
|
16 | (1) |
|
1.4.6 Once the Software Is Delivered, Isn't the Job Finished? |
|
|
16 | (1) |
|
1.4.7 Aren't Errors an Unavoidable Side Effect of Software Development? |
|
|
16 | (3) |
|
Chapter 2 Software Properties, Processes, and Standards |
|
|
19 | (36) |
|
|
19 | (1) |
|
2.2 Characteristics of Software |
|
|
19 | (10) |
|
2.2.1 How Do Software Engineers Characterize Software? |
|
|
19 | (1) |
|
2.2.2 What Is Software Quality? |
|
|
19 | (1) |
|
2.2.3 What Are the Consequences of Ignoring Quality Attributes While Building Software? |
|
|
20 | (1) |
|
2.2.4 What Are the Different Qualities That Can Characterize Software? |
|
|
21 | (1) |
|
2.2.5 What Is Software "Security"? |
|
|
21 | (2) |
|
2.2.6 What Is Software "Performance"? |
|
|
23 | (1) |
|
2.2.7 What Is Software "Usability"? |
|
|
23 | (1) |
|
2.2.8 What Is Software "Portability"? |
|
|
23 | (1) |
|
2.2.9 What Is Software "Interoperability"? |
|
|
23 | (1) |
|
2.2.10 What Is Software "Testability"? |
|
|
24 | (1) |
|
2.2.11 What Is Software "Modifiability"? |
|
|
24 | (1) |
|
2.2.12 What Is Software "Reliability"? |
|
|
24 | (1) |
|
2.2.13 How Do You Measure Software Reliability? |
|
|
25 | (1) |
|
2.2.14 What Is a Failure Function? |
|
|
25 | (1) |
|
2.2.15 What Is a "Bathtub Curve"? |
|
|
25 | (1) |
|
2.2.16 But Software Doesn't Wear Out, So Why Would It Conform to the Bathtub Curve? |
|
|
25 | (2) |
|
2.2.17 Can the Traditional Quality Measures of MTFF or MTBF Be Used to Stipulate Reliability in the Software Requirements Specification? |
|
|
27 | (1) |
|
2.2.18 What Is Meant by the "Correctness" of Software? |
|
|
27 | (1) |
|
2.2.19 What Is "Traceability" in Software Systems? |
|
|
27 | (1) |
|
2.2.20 Are There Other Software Qualities? |
|
|
27 | (2) |
|
2.3 Software Processes and Methodologies |
|
|
29 | (19) |
|
2.3.1 What Is a Software Process? |
|
|
29 | (1) |
|
2.3.2 Isn't Every Software Process Model Just an Abstraction? |
|
|
29 | (1) |
|
2.3.3 What Benefits Are There to Using a Software Process Model? |
|
|
29 | (1) |
|
2.3.4 What Is a Software Methodology? |
|
|
30 | (1) |
|
2.3.5 Aren't Software Process Models and Methodologies the Same? |
|
|
30 | (1) |
|
2.3.6 What Is the Waterfall Life Cycle Model? |
|
|
30 | (1) |
|
2.3.7 How Many Phases Should the Waterfall Model Have? |
|
|
30 | (1) |
|
2.3.8 What Happens during the Software Conception Phase of the Waterfall Process Model? |
|
|
31 | (1) |
|
2.3.9 Does the Software Conception Phase Really Happen? |
|
|
32 | (1) |
|
2.3.10 What Happens during the Requirements Specification Phase of the Waterfall Process Model? |
|
|
32 | (1) |
|
2.3.11 Do Any Test Activities Occur during the Requirements Specification Phase? |
|
|
32 | (1) |
|
2.3.12 What Happens during the Software Design Phase of the Waterfall Process Model? |
|
|
32 | (1) |
|
2.3.13 Do Any Test Activities Occur during the Software Design Phase? |
|
|
32 | (1) |
|
2.3.14 What Happens during the Software Development Phase of the Waterfall Process Model? |
|
|
33 | (1) |
|
2.3.15 What Test Activities Occur during the Software Development Phase? |
|
|
33 | (1) |
|
2.3.16 When Does the Software Development Phase End? |
|
|
33 | (1) |
|
2.3.17 What Happens during the Testing Phase of the Waterfall Process Model? |
|
|
33 | (1) |
|
2.3.18 When Does the Testing Phase End? |
|
|
33 | (1) |
|
2.3.19 What Happens during the Software Maintenance Phase of the Waterfall Process Model? |
|
|
34 | (1) |
|
2.3.20 How Are Maintenance Corrections Supposed to Be Handled? |
|
|
34 | (1) |
|
2.3.21 The Waterfall Model Looks Artificial. Is There No Backtracking? |
|
|
34 | (1) |
|
2.3.22 What Is the V Model for Software? |
|
|
34 | (1) |
|
2.3.23 What Is the Spiral Model for Software? |
|
|
35 | (1) |
|
2.3.24 What Are Evolutionary Models? |
|
|
35 | (1) |
|
2.3.25 Are There Any Downsides to Using Evolutionary Models? |
|
|
36 | (1) |
|
2.3.26 What Is the Incremental Software Model? |
|
|
37 | (1) |
|
2.3.27 What Is the Difference between Incremental and Evolutionary Models? |
|
|
37 | (1) |
|
2.3.28 Why Use the Incremental Model? |
|
|
37 | (1) |
|
2.3.29 Are There Any Downsides to the Incremental Model? |
|
|
37 | (1) |
|
2.3.30 What Is the Unified Process Model? |
|
|
37 | (1) |
|
2.3.31 Where Is the UPM Used? |
|
|
38 | (1) |
|
2.3.32 What Are Agile Methodologies? |
|
|
38 | (1) |
|
2.3.33 What Are the Principles behind the Agile Manifesto? |
|
|
39 | (1) |
|
2.3.34 What Are the Benefits of Agile Software Development? |
|
|
40 | (1) |
|
2.3.35 What Are Some Agile Methodologies? |
|
|
40 | (1) |
|
2.3.36 What Is Extreme Programming? |
|
|
41 | (1) |
|
|
42 | (1) |
|
|
42 | (2) |
|
2.3.39 What Is Lean Development? |
|
|
44 | (1) |
|
2.3.40 What Are DevOps Practices? |
|
|
44 | (1) |
|
2.3.41 What Is Scaled Agile Framework? |
|
|
45 | (1) |
|
2.3.42 When Should Agile Methodologies Be Used? |
|
|
45 | (2) |
|
2.3.43 Is There a Case to Be Made for Not Using Agile Methods? |
|
|
47 | (1) |
|
2.3.44 All of These Process Models Look Rather Simplistic, Artificial, or Too Prescriptive. Should They Really Be Used? |
|
|
48 | (1) |
|
|
48 | (7) |
|
2.4.1 Who Publishes Software Standards? |
|
|
48 | (1) |
|
2.4.2 What Is the DOD-STD-2167A Standard? |
|
|
48 | (1) |
|
2.4.3 What Is the DOD-STD-498 Standard? |
|
|
48 | (1) |
|
2.4.4 What Is the ISO 9000 Standard? |
|
|
49 | (1) |
|
2.4.5 Which Part of ISO 9000 Applies to Software? |
|
|
49 | (1) |
|
2.4.6 Who Uses This Standard? |
|
|
49 | (1) |
|
2.4.7 What Is in the ISO 90003 Standard? |
|
|
49 | (1) |
|
2.4.8 How Specific Is ISO 90003 for Software? |
|
|
50 | (1) |
|
2.4.9 What Is ISO/IEC Standard 12207? |
|
|
50 | (5) |
|
Chapter 3 Software Requirements Engineering |
|
|
55 | (36) |
|
|
55 | (1) |
|
3.2 Requirements Engineering Concepts |
|
|
55 | (3) |
|
3.2.1 What Is a "Requirement"? |
|
|
55 | (1) |
|
3.2.2 What Is the Requirements Specification? |
|
|
56 | (1) |
|
3.2.3 What Are the Different Types of Requirements? |
|
|
56 | (1) |
|
3.2.4 What Are the "Functional Requirements"? |
|
|
56 | (1) |
|
3.2.5 What Are "Non-Functional Requirements"? |
|
|
57 | (1) |
|
3.2.6 What Are "Domain Requirements"? |
|
|
57 | (1) |
|
3.2.7 When Does Requirements Engineering Start? |
|
|
57 | (1) |
|
3.2.8 What Are the Core Activities of Requirements Engineering? |
|
|
58 | (1) |
|
3.3 Requirements Elicitation/Discovery |
|
|
58 | (9) |
|
3.3.1 What Is "Requirements Elicitation"? |
|
|
58 | (1) |
|
3.3.2 What Are the Obstacles That May Challenge the Requirements Elicitation? |
|
|
58 | (1) |
|
3.3.3 How Should We Prepare for the Requirements Elicitation Process? |
|
|
59 | (1) |
|
3.3.4 What Are the Common Requirements Elicitation Techniques? |
|
|
59 | (1) |
|
3.3.4.1 What Is the "Brainstorming" Technique? |
|
|
60 | (1) |
|
3.3.4.2 What Is the "Card Sorting" Technique? |
|
|
60 | (1) |
|
3.3.4.3 What Is the "Crowdsourcing" Technique? |
|
|
60 | (1) |
|
3.3.4.4 What Is the "Designer as Apprentice" Technique? |
|
|
61 | (1) |
|
3.3.4.5 What Is the "Domain Analysis" Technique? |
|
|
61 | (1) |
|
3.3.4.6 What Is the "Ethnographic Observation" Technique? |
|
|
61 | (1) |
|
3.3.4.7 What Is the "Goal-Based Approaches" Technique? |
|
|
62 | (1) |
|
3.3.4.8 What Is the "Questionnaires" Technique? |
|
|
62 | (1) |
|
3.3.4.9 What Is the "Introspection" Technique? |
|
|
63 | (1) |
|
3.3.4.10 What Is the "Joint Application Development" Technique? |
|
|
63 | (1) |
|
3.3.4.11 What Is the "Quality Function Deployment" Technique? |
|
|
64 | (2) |
|
3.3.4.12 What Is the "Viewpoints" Technique? |
|
|
66 | (1) |
|
3.3.4.13 Which Combination of Requirements Elicitation Techniques Should Be Used? |
|
|
66 | (1) |
|
3.3.4.14 How May Artificial Intelligence Help in the Requirements Elicitation? |
|
|
66 | (1) |
|
3.4 Requirements Representation and Documentation |
|
|
67 | (6) |
|
3.4.1 What Is the Role of the SRS? |
|
|
67 | (1) |
|
3.4.2 Who Uses the Requirements Documents? |
|
|
67 | (1) |
|
3.4.2.1 Within the SRS, Why Can't Requirements Just Be Communicated in English? |
|
|
67 | (1) |
|
3.4.2.2 Then, What Are the Approaches for Requirements Representations? |
|
|
68 | (1) |
|
3.4.2.3 What Is Informal Representation? |
|
|
68 | (1) |
|
3.4.3 What Is Semi-Formal Representation? |
|
|
69 | (1) |
|
|
69 | (1) |
|
3.4.5 What Is Formal Representation? |
|
|
70 | (1) |
|
3.4.6 What Advantage Is There in Applying a Layer of Potentially Complex Mathematics to the Already Complicated Problem of Behavioral Description? |
|
|
70 | (1) |
|
3.4.7 Which Notations to Select? |
|
|
71 | (1) |
|
3.4.8 What Is the Correct Format for an SRS? |
|
|
71 | (1) |
|
3.4.9 What Is the Recommended Format to Write Each Requirement? |
|
|
72 | (1) |
|
3.5 Requirements Validation and Verification |
|
|
73 | (5) |
|
3.5.1 What Is Requirements Risk Management? |
|
|
73 | (2) |
|
3.5.2 What Is the Difference between Validation and Verification? |
|
|
75 | (1) |
|
3.5.3 What Are the Techniques to Perform Validations and Verifications on Requirements? |
|
|
75 | (1) |
|
3.5.4 Are There Any Tools to Support the Validation and Verification? |
|
|
76 | (1) |
|
3.5.5 What Are the Standards for Validation and Verification? |
|
|
77 | (1) |
|
3.5.6 What Are the Qualities That Must Exist in Requirements according to IEEE 29148? |
|
|
77 | (1) |
|
3.5.7 What Does a Traceability Matrix Look Like? |
|
|
78 | (1) |
|
3.6 Requirements Management and Tools |
|
|
78 | (1) |
|
3.6.1 What Is Requirements Management? |
|
|
78 | (1) |
|
3.6.2 What Are the Challenges to Requirements Management? |
|
|
78 | (1) |
|
3.6.3 What Are the Existing Approaches to Reach Consensus among Different Stakeholders? |
|
|
79 | (1) |
|
3.6.4 What Are Popular Tools to Support RE Activities? |
|
|
79 | (1) |
|
3.7 Requirements Engineering in an Agile Environment |
|
|
79 | (12) |
|
3.7.1 How Is RE Different in Agile? |
|
|
79 | (3) |
|
3.7.2 How Is Requirements Engineering Performed in XP? |
|
|
82 | (1) |
|
3.7.3 How Is Requirements Engineering Performed in Scrum? |
|
|
83 | (1) |
|
3.7.4 How Are the User Stories Gathered? |
|
|
84 | (1) |
|
3.7.5 How Are the User Stories Written? |
|
|
85 | (1) |
|
3.7.6 How Are the User Stories Estimated? |
|
|
86 | (1) |
|
3.7.7 How Are the User Stories Prioritized? |
|
|
86 | (5) |
|
Chapter 4 Software Architecture |
|
|
91 | (22) |
|
|
91 | (1) |
|
|
92 | (4) |
|
4.2.1 What Is Software Architecture? |
|
|
92 | (1) |
|
4.2.2 So, Software System Architecture Is a Set of Structures, and a Structure Can Be Represented through Different Views. What Are the Types of Views? |
|
|
92 | (1) |
|
4.2.3 Can You Illustrate the Point with an Example? |
|
|
93 | (1) |
|
4.2.4 Why Is Software Architecture Significant? |
|
|
94 | (1) |
|
4.2.5 Can Software Architecture Influence the Structure of the Development Team or Even the Organization Itself? |
|
|
94 | (1) |
|
4.2.6 What Makes One Architecture Superior to the Other? |
|
|
95 | (1) |
|
4.2.7 What Is the Difference between Architecture and Programming? |
|
|
95 | (1) |
|
4.2.8 What Is the Course of Evolution of Software Architecture as a Discipline? |
|
|
95 | (1) |
|
4.3 Architectural Drivers |
|
|
96 | (5) |
|
4.3.1 What Are Architectural Drivers? |
|
|
96 | (1) |
|
4.3.2 How Do We Generate the Architectural Drivers? |
|
|
97 | (1) |
|
4.3.3 Can You Illustrate This with an Example? |
|
|
97 | (4) |
|
4.4 Architectural Decisions |
|
|
101 | (2) |
|
|
101 | (1) |
|
|
101 | (1) |
|
4.4.3 What Is the State of Practice on Using Architectural Patterns? |
|
|
102 | (1) |
|
4.4.4 What Is the Relationship between Tactics and Patterns? |
|
|
102 | (1) |
|
4.5 Architecture Design Process |
|
|
103 | (5) |
|
4.5.1 What Is Attribute-Driven Design? |
|
|
103 | (1) |
|
4.5.2 Can You Give an Illustrative Example? |
|
|
104 | (4) |
|
4.6 Architecture Documentation |
|
|
108 | (3) |
|
4.6.1 Is There a Recommended Template to Follow to Document the Architecture? |
|
|
108 | (1) |
|
4.6.2 What Are Some Points to Keep in Mind While Documenting Architecture? |
|
|
109 | (1) |
|
4.6.3 Which Notations Can an Architect Use to Represent the Architecture? |
|
|
110 | (1) |
|
4.6.4 What Are the Basic Principles of Good Architectural Documentation? |
|
|
110 | (1) |
|
4.6.5 What Are Some of the Common Bad Practices When Documenting Software Architecture? |
|
|
110 | (1) |
|
4.7 Architecture Evaluation |
|
|
111 | (2) |
|
4.7.1 Why Is It Important to Evaluate the Architecture? |
|
|
111 | (1) |
|
4.7.2 What Are the Challenges in Evaluating Architecture? |
|
|
111 | (1) |
|
4.7.2.1 What Are the Different Ways to Evaluate the Architecture? |
|
|
111 | (2) |
|
Chapter 5 Designing Software |
|
|
113 | (24) |
|
|
113 | (1) |
|
5.2 Software Design Concepts |
|
|
113 | (1) |
|
5.2.1 What Is Software Design? |
|
|
113 | (1) |
|
5.2.2 What Is the Difference between Software Architecture and Software Design? |
|
|
113 | (1) |
|
5.2.3 What Are the Principal Activities of Software Design? |
|
|
114 | (1) |
|
5.3 Basic Software Engineering Principles |
|
|
114 | (8) |
|
5.3.1 How Do Rigor and Formality Enter into Software Engineering? |
|
|
114 | (1) |
|
5.3.2 What Is Separation of Concerns? |
|
|
115 | (1) |
|
5.3.3 Can Modular Design Lead to Separation of Concerns? |
|
|
115 | (1) |
|
|
115 | (1) |
|
|
116 | (2) |
|
5.3.6 What Is Parnas Partitioning? |
|
|
118 | (2) |
|
5.3.7 How Do I Do Parnas Partitioning? |
|
|
120 | (1) |
|
5.3.8 Can You Give an Example of Parnas Partitioning? |
|
|
120 | (1) |
|
5.3.9 Can You Do Parnas Partitioning in Object-Oriented Design? |
|
|
121 | (1) |
|
5.3.10 How Can Changes Be Anticipated in Software Designs? |
|
|
121 | (1) |
|
5.3.11 How Does Generality Apply to Software Design? |
|
|
122 | (1) |
|
5.3.12 How Does Incrementality Manifest in Software Design? |
|
|
122 | (1) |
|
5.4 Software Design Modeling |
|
|
122 | (6) |
|
5.4.1 What Standard Methodologies Can Be Used for Software Design? |
|
|
122 | (1) |
|
5.4.2 What Is Procedural-Oriented Design? |
|
|
122 | (1) |
|
|
123 | (1) |
|
5.4.4 What Is the Difference between SA and SD? |
|
|
123 | (1) |
|
5.4.5 How Do I Go from SA to SD? |
|
|
123 | (2) |
|
|
125 | (1) |
|
5.4.7 What Are the Benefits of Object Orientation? |
|
|
125 | (1) |
|
5.4.8 What Are the Basic Rules of OOD? |
|
|
125 | (1) |
|
|
126 | (1) |
|
5.4.10 How Does the UML Help Us with Software Design? |
|
|
126 | (2) |
|
5.4.11 Can You Give an Example of an OOD? |
|
|
128 | (1) |
|
|
128 | (5) |
|
|
128 | (1) |
|
5.5.2 What Is the History of Patterns? |
|
|
128 | (1) |
|
5.5.3 Why Do We Need Patterns? |
|
|
128 | (1) |
|
5.5.4 What Are the Benefits of Patterns? |
|
|
129 | (1) |
|
5.5.5 What Do Patterns Look Like? |
|
|
129 | (1) |
|
5.5.6 What Are the "GRASP" Patterns? |
|
|
129 | (3) |
|
5.5.7 What Are the Gang of Four Patterns? |
|
|
132 | (1) |
|
5.5.8 What Are Creational Patterns? |
|
|
132 | (1) |
|
5.5.9 What Are Structural Patterns? |
|
|
132 | (1) |
|
5.5.10 What Are Behavioral Patterns? |
|
|
133 | (1) |
|
5.5.11 Are There Any Other Pattern Sets? |
|
|
133 | (1) |
|
5.5.12 What Are the Drawbacks of Patterns? |
|
|
133 | (1) |
|
|
133 | (4) |
|
5.6.1 Is There a Standard Format for SDS? |
|
|
133 | (1) |
|
5.6.2 How Do I Achieve Traceability from Requirements through Design and Testing? |
|
|
133 | (2) |
|
5.6.3 Can You Give an Example of a Design Document? |
|
|
135 | (2) |
|
Chapter 6 Software Construction |
|
|
137 | (42) |
|
|
137 | (1) |
|
6.2 Programming Languages |
|
|
137 | (15) |
|
6.2.1 Is the Study of Programming Languages Really of Interest to the Software Engineer? |
|
|
137 | (1) |
|
6.2.2 What Happens When Software Behaves Correctly but Is Poorly Written? |
|
|
138 | (1) |
|
6.2.3 But I Have Been Writing Code since My First Programming Course in College. Surely I Don't Need Any Lessons in Programming Languages, Do I? |
|
|
138 | (1) |
|
6.2.4 What about Working with Legacy Code? |
|
|
138 | (1) |
|
6.2.5 So How Many Programming Languages Are There? |
|
|
138 | (1) |
|
6.2.6 Programming Language Landscape |
|
|
138 | (1) |
|
6.2.6.1 What Does the Programming Landscape Look Like? |
|
|
138 | (1) |
|
6.2.6.2 What Are the Programming Paradigms? |
|
|
139 | (1) |
|
6.2.6.3 What Is Data Abstraction? |
|
|
139 | (1) |
|
6.2.6.4 What Is Inheritance? |
|
|
139 | (1) |
|
6.2.6.5 What Is Polymorphism? |
|
|
139 | (1) |
|
6.2.6.6 What Are Programming Languages Type Systems? |
|
|
140 | (1) |
|
6.2.6.7 What Is a Statically Typed Language? |
|
|
140 | (1) |
|
6.2.6.8 What Is a Dynamically Typed Language? |
|
|
140 | (1) |
|
6.2.6.9 What Is the Difference between Compiled and Interpreted Languages? |
|
|
140 | (1) |
|
6.2.6.10 How Do I Classify Programming Languages according to This Scheme (Programming Paradigm, Type System, and Whether They Are Compiled or Interpreted)? |
|
|
141 | (1) |
|
6.2.7 Programming Features and Evaluation |
|
|
141 | (1) |
|
6.2.7.1 Which Programming Language Is Better? |
|
|
141 | (1) |
|
6.2.7.2 So, What Is the Best Way to Evaluate a Programming Language? |
|
|
141 | (1) |
|
6.2.7.3 What Do You Mean by Visible Features of Programming Languages? |
|
|
142 | (1) |
|
6.2.7.4 Why Should I Care about Parameter-Passing Techniques? |
|
|
142 | (1) |
|
6.2.7.5 What Is Call-by-Reference? |
|
|
142 | (1) |
|
6.2.7.6 What Is Call-by-Value? |
|
|
143 | (1) |
|
6.2.7.7 What about Global Variables? |
|
|
143 | (1) |
|
6.2.7.8 How Do I Choose Which Parameter-Passing Technique to Use? |
|
|
143 | (1) |
|
6.2.7.9 What Is Recursion? |
|
|
143 | (1) |
|
6.2.7.10 Are There Any Drawbacks to Recursive Algorithm Formulations? |
|
|
144 | (1) |
|
6.2.7.11 What Does "Dynamic Memory Allocation" Mean? |
|
|
144 | (1) |
|
6.2.7.12 What Are Some Examples of Dynamic Allocation Use? |
|
|
144 | (1) |
|
6.2.7.13 What Is Meant by "Strong Typing" in a Programming Language? |
|
|
144 | (1) |
|
6.2.7.14 What Is Exception Handling? |
|
|
145 | (1) |
|
6.2.7.15 Which Languages Have the Best Exception Handling Facilities? |
|
|
145 | (1) |
|
6.2.7.16 What Is Meant by Modularity? |
|
|
146 | (1) |
|
6.2.7.17 Do Object-Oriented Languages Support a Form of Modularity? |
|
|
146 | (1) |
|
6.2.7.18 What Is the Benefit of Object Orientation from a Programming Perspective? |
|
|
147 | (1) |
|
6.2.8 Brief Survey of Languages |
|
|
147 | (1) |
|
6.2.8.1 Can You Apply the Micro Properties Just Discussed to Some of the More Commonly Used Programming Languages? |
|
|
147 | (1) |
|
6.2.8.2 When Can C Be Used? |
|
|
147 | (1) |
|
6.2.8.3 What Other Useful Features Does C Have? |
|
|
147 | (1) |
|
6.2.8.4 How Does C Handle Exceptions? |
|
|
148 | (1) |
|
6.2.8.5 What Is the Relationship between Cand C++? |
|
|
148 | (1) |
|
6.2.8.6 When Should C++Be Used? |
|
|
148 | (1) |
|
6.2.8.7 What Is the Danger in Converting My C Code to C++? |
|
|
148 | (1) |
|
6.2.8.8 Can You Tell Me about C#? |
|
|
149 | (1) |
|
6.2.8.9 Can You Tell Me about Fortran? |
|
|
149 | (1) |
|
6.2.8.10 Can You Tell Me about Java? |
|
|
150 | (1) |
|
6.2.8.11 If Java Is Interpreted, Does That Mean It Cannot Be Compiled? |
|
|
150 | (1) |
|
6.2.8.12 What Are Some of the Main Features of Java? |
|
|
150 | (1) |
|
6.2.8.13 Are There Any Well-Known Problems with Using Java? |
|
|
150 | (1) |
|
6.2.8.14 What Are the Differences between Java and C++? |
|
|
151 | (1) |
|
6.2.8.15 What Are the Differences between Java and C#? |
|
|
151 | (1) |
|
6.2.8.16 Can You Tell Me about Rust Programming Language? |
|
|
151 | (1) |
|
6.2.8.17 What about Legacy Code Written in Arcane Languages Such as BASIC, COBOL, and Scheme? |
|
|
151 | (1) |
|
6.2.8.18 What about Visual Basic? |
|
|
151 | (1) |
|
6.2.8.19 What about Scripting Languages Like JavaScript, Perl, and Python? |
|
|
152 | (1) |
|
6.3 Web-Oriented Programming |
|
|
152 | (3) |
|
6.3.1 What Is Web-Oriented Programming? |
|
|
152 | (1) |
|
6.3.2 What Is the Role of the HTTP Protocol in the WOP? |
|
|
152 | (1) |
|
|
153 | (1) |
|
6.3.4 Can You Say Something about RESTful Services? |
|
|
154 | (1) |
|
6.4 Software Construction Tools |
|
|
155 | (9) |
|
6.4.1 What Is the Value Proposition for Using Software Construction Tools? |
|
|
155 | (1) |
|
6.4.2 What Is a Compiler? |
|
|
155 | (1) |
|
6.4.3 Can You Describe Further the Compilation Process? |
|
|
155 | (1) |
|
6.4.4 How Do I Deal with Compiler Warnings and Errors? |
|
|
156 | (1) |
|
6.4.5 Do You Have Any Debugging Tips? |
|
|
157 | (1) |
|
6.4.6 Is There Any Way to Automatically Debug Code? |
|
|
157 | (1) |
|
6.4.7 What Are Symbolic Debuggers and How Are They Used? |
|
|
158 | (1) |
|
6.4.8 Can You Give Me an Example of a Debugging Session? |
|
|
158 | (1) |
|
6.4.9 What Is a Version Control System? |
|
|
159 | (1) |
|
6.4.10 What Are the Benefits of Using VCS? |
|
|
159 | (1) |
|
6.4.11 What Is a Centralized VCS? |
|
|
159 | (1) |
|
6.4.12 What Is a Distributed VCS? |
|
|
159 | (1) |
|
6.4.13 Are There Open-Source, Free VCSs? |
|
|
160 | (1) |
|
6.4.14 What Is Log Management Software? |
|
|
161 | (1) |
|
6.4.15 Can You Give Examples of Log Management Tools? |
|
|
161 | (1) |
|
6.4.16 What Is a Build Tool? |
|
|
161 | (1) |
|
6.4.17 What Are the Requirements to Look at When Selecting a Build Tool? |
|
|
161 | (1) |
|
6.4.18 Are There Other Tools That I Can Use, Particularly When Debugging Embedded Systems? |
|
|
162 | (1) |
|
6.4.19 What Are In-Circuit Emulators? |
|
|
162 | (1) |
|
6.4.20 How Are ICEs Used? |
|
|
163 | (1) |
|
6.4.21 What Are Software Simulators and When Are They Used? |
|
|
163 | (1) |
|
6.4.22 When Is Hardware Prototyping Useful? |
|
|
163 | (1) |
|
6.4.23 What Are Integrated Development Environments? |
|
|
163 | (1) |
|
6.4.24 What about Other Tools? |
|
|
163 | (1) |
|
|
164 | (3) |
|
6.5.1 What Is Open-Source Software? |
|
|
164 | (1) |
|
6.5.2 What Is an Open-Source Software License? |
|
|
164 | (1) |
|
6.5.3 Where Did OSS Come From? |
|
|
164 | (1) |
|
6.5.4 What Kinds of Code Can Be Found as Open Source? |
|
|
164 | (1) |
|
6.5.5 What Is the Value Proposition for OSS? |
|
|
165 | (1) |
|
6.5.6 Who Contributes to OSS Systems? |
|
|
165 | (1) |
|
6.5.7 Where Can I Find OSS Projects? |
|
|
166 | (1) |
|
6.5.8 Can Companies Use OSS? |
|
|
166 | (1) |
|
6.5.9 What Are the Characteristics of the OSS Development Model? |
|
|
166 | (1) |
|
6.5.10 How Does Software Requirements Engineering Occur in OSS? |
|
|
166 | (1) |
|
6.5.11 How Do the Software Design and Build Processes Take Place in Open-Source Systems? |
|
|
166 | (1) |
|
6.5.12 How Are OSS Projects Managed? |
|
|
167 | (1) |
|
6.5.13 Are There Downsides to Using OSS? |
|
|
167 | (1) |
|
6.6 Becoming a Better Code Developer |
|
|
167 | (12) |
|
6.6.1 How Can I Become a Better Developer of Code? |
|
|
167 | (1) |
|
|
167 | (1) |
|
6.6.2.1 What Is a Code Smell? |
|
|
167 | (1) |
|
6.6.2.2 What Are Some Code Smells? |
|
|
168 | (1) |
|
6.6.2.3 What Is the Conditional Logic Code Smell? |
|
|
169 | (1) |
|
6.6.2.4 What Are Data Clumps? |
|
|
169 | (1) |
|
6.6.2.5 Why Are Delays as Loops Bad? |
|
|
169 | (1) |
|
6.6.2.6 What Are Dubious Constraints? |
|
|
169 | (1) |
|
6.6.2.7 What Is the Duplicated Code Smell? |
|
|
170 | (1) |
|
6.6.2.8 What Are Generalizations Based on a Single Architecture? |
|
|
170 | (1) |
|
6.6.2.9 What Are the Large Method, Large Class, and Large Procedure Code Smells? |
|
|
170 | (1) |
|
6.6.2.10 What Are Lazy Methods and Lazy Procedures? |
|
|
171 | (1) |
|
6.6.2.11 What Is the Long Parameter List Code Smell and How Can It Be Refactored? |
|
|
171 | (1) |
|
6.6.2.12 What Are Message Chains? |
|
|
171 | (1) |
|
6.6.2.13 What Is Message-Passing Overload? |
|
|
171 | (1) |
|
6.6.2.14 What Is the One Big Loop Code Smell and How Is It Refactored? |
|
|
171 | (1) |
|
6.6.2.15 What Is Shotgun Surgery? |
|
|
172 | (1) |
|
6.6.2.16 What Is Speculative Generality? |
|
|
172 | (1) |
|
6.6.2.17 What Are Tell-Tale Comments? |
|
|
172 | (1) |
|
6.6.2.18 What Are Temporary Fields and How Are They Refactored? |
|
|
173 | (1) |
|
6.6.2.19 What Is the Unnecessary Use of Interrupts Code Smell? |
|
|
173 | (1) |
|
6.6.2.20 How Can I Improve the Runtime Performance of the Code I Write? |
|
|
173 | (1) |
|
|
174 | (1) |
|
6.6.3.1 What Is Refactoring? |
|
|
174 | (1) |
|
6.6.3.2 What Does the Process of Refactoring Involve? |
|
|
174 | (1) |
|
6.6.3.3 What Is Low-Level Refactoring? |
|
|
174 | (1) |
|
6.6.3.4 What Is Medium-Level Refactoring? |
|
|
175 | (1) |
|
6.6.3.5 What Is High-Level Refactoring? |
|
|
175 | (1) |
|
6.6.3.6 Is Refactoring Limited to the Code and Low-Level Design? |
|
|
175 | (1) |
|
|
175 | (1) |
|
6.6.4.1 What Are Coding Standards? |
|
|
175 | (1) |
|
6.6.4.2 How Can Coding Standards Help Improve My Code? |
|
|
176 | (1) |
|
6.6.4.3 What Do Coding Standards Look Like? |
|
|
176 | (1) |
|
6.6.4.4 What Is the Benefit of Coding Standards? |
|
|
176 | (1) |
|
6.6.4.5 Which Coding Standard Should I Use? |
|
|
176 | (1) |
|
6.6.4.6 Are There Any Drawbacks to Using Coding Standards? |
|
|
177 | (1) |
|
6.6.4.7 When Should the Coding Standard Be Adopted? |
|
|
177 | (2) |
|
Chapter 7 Software Quality Assurance |
|
|
179 | (50) |
|
|
179 | (1) |
|
7.2 Quality Models and Standards |
|
|
180 | (5) |
|
7.2.1 What Is Software Quality? |
|
|
180 | (1) |
|
7.2.2 What Is a Quality Model? |
|
|
181 | (1) |
|
7.2.3 What Is the Capability Maturity Model? |
|
|
181 | (1) |
|
|
182 | (1) |
|
7.2.5 What Are the ISO 90003 Principal Areas of Quality Focus? |
|
|
182 | (1) |
|
7.2.6 What Does ISO 90003 Look Like? |
|
|
183 | (1) |
|
7.2.7 How Does ISO/IEC 12207 Help Promote Software Quality? |
|
|
183 | (1) |
|
|
183 | (1) |
|
7.2.9 What Is the IT Infrastructure Library? |
|
|
184 | (1) |
|
7.2.10 Can ITIL Help with Software Quality Programs? |
|
|
184 | (1) |
|
7.2.11 How Does ITIL Help with Software Quality Management? |
|
|
184 | (1) |
|
7.2.12 Can Anything Bad Come of a Software Quality Initiative? |
|
|
184 | (1) |
|
7.2.13 What Are the Symptoms of Slash-and-Burn Approaches? |
|
|
184 | (1) |
|
7.2.14 What Is the Best Way to Promote Software Quality Improvement without Triggering a Slash-and-Burn Frenzy? |
|
|
185 | (1) |
|
|
185 | (24) |
|
7.3.1 What Is the Role of Testing with Respect to Software Quality? |
|
|
185 | (1) |
|
7.3.2 Is There a Difference between an Error, a Defect, a Bug, a Fault, and a Failure? |
|
|
185 | (1) |
|
7.3.3 Is There a Difference between Verification and Validation? |
|
|
186 | (1) |
|
7.3.4 What fs the Purpose of Testing? |
|
|
187 | (1) |
|
7.3.5 What Is a Good Test? |
|
|
187 | (1) |
|
7.3.6 What Are the Basic Principles of Software Testing? |
|
|
187 | (1) |
|
7.3.7 How Do I Start Testing Activities during the Requirements Engineering Process? |
|
|
187 | (1) |
|
7.3.8 What Test Activities Occur during Software Design and Code Development? |
|
|
188 | (1) |
|
7.3.9 What Different Types of Testing Can Be Performed? |
|
|
188 | (1) |
|
7.3.10 What Are the Different Testing Accessibilities? |
|
|
189 | (1) |
|
7.3.11 What Is Black Box Testing? |
|
|
189 | (1) |
|
7.3.11.1 What Is Exhaustive Testing? |
|
|
190 | (1) |
|
7.3.11.2 What Is Boundary Value Testing? |
|
|
190 | (1) |
|
7.3.11.3 What Is Equivalence Class Testing? |
|
|
191 | (1) |
|
7.3.11.4 What Is Worst-Case Testing? |
|
|
192 | (1) |
|
7.3.11.5 What Is Random Test Case Generation? |
|
|
192 | (1) |
|
7.3.11.6 What Is Pairwise Testing? |
|
|
192 | (1) |
|
7.3.11.7 What Is Combinatorial Testing? |
|
|
193 | (1) |
|
7.3.11.8 What Is Truth Table Testing? |
|
|
194 | (2) |
|
7.3.12 Are There Any Disadvantages to Black Box Testing? |
|
|
196 | (1) |
|
7.3.13 What Is White Box Testing? |
|
|
196 | (1) |
|
7.3.13.1 What Is Control Flow Testing? |
|
|
196 | (2) |
|
7.3.13.2 What Is DU Path Testing? |
|
|
198 | (1) |
|
7.3.13.3 What Are Code Inspections? |
|
|
198 | (1) |
|
7.3.13.4 What Is Formal Program Proving? |
|
|
198 | (1) |
|
7.3.14 What Are the Different Testing Levels? |
|
|
198 | (1) |
|
7.3.15 What Is Unit-Level Testing? |
|
|
199 | (1) |
|
7.3.16 What Is System Integration Testing? |
|
|
199 | (1) |
|
7.3.17 What Is Incremental Integration Testing? |
|
|
199 | (1) |
|
7.3.18 What Is the Difference between Top-Down and Bottom-Up Testing? |
|
|
199 | (3) |
|
7.3.19 What Is Sandwich Integration Testing? |
|
|
202 | (1) |
|
7.3.20 What Is Cleanroom Testing? |
|
|
202 | (1) |
|
7.3.21 What Is Interface Testing? |
|
|
203 | (1) |
|
7.3.22 What Kinds of Interfaces Can Be Tested? |
|
|
203 | (1) |
|
7.3.23 What Kinds of Errors Can Occur at the Interfaces? |
|
|
203 | (1) |
|
7.3.24 What Are Some Guidelines for Testing Interfaces? |
|
|
204 | (1) |
|
7.3.25 What Are System and Acceptance Testing? |
|
|
204 | (1) |
|
7.3.26 What Are the Different Characteristics to Test For? |
|
|
204 | (1) |
|
7.3.27 What Is Object-Oriented Testing? |
|
|
205 | (1) |
|
7.3.28 How Are Object Classes Tested? |
|
|
205 | (1) |
|
7.3.29 How Can Clusters of Cooperating Objects Be Tested? |
|
|
205 | (1) |
|
7.3.30 What Is Scenario Testing? |
|
|
206 | (1) |
|
7.3.31 What Is Software Fault Injection? |
|
|
206 | (1) |
|
7.3.32 When Should You Stop Testing? |
|
|
206 | (1) |
|
7.3.33 What Are Test Coverage Metrics? |
|
|
207 | (1) |
|
7.3.34 How Do I Write a Test Plan? |
|
|
207 | (1) |
|
7.3.35 Are There Automated Tools for Testing That Can Make the Job Easier? |
|
|
207 | (1) |
|
7.3.36 What Are Some Testing Tools That I Can Use? |
|
|
207 | (2) |
|
7.3.37 What Is the Current State of Practice in Software Testing in the Industry? |
|
|
209 | (1) |
|
|
209 | (10) |
|
7.4.1 What Are Some Motivations for Measurement? |
|
|
209 | (1) |
|
7.4.2 What Kinds of Metrics Exist for Tracking System Tests? |
|
|
210 | (1) |
|
7.4.3 What Are the Metrics for Monitoring Test Execution? |
|
|
210 | (1) |
|
7.4.4 What Are the Metrics for Monitoring Defects? |
|
|
210 | (1) |
|
7.4.5 What Is the Spoilage Metric? |
|
|
210 | (1) |
|
7.4.6 In Addition to Test Execution Metrics, What Other Kinds of Things Can We Measure in Software? |
|
|
211 | (1) |
|
7.4.7 Is the "Lines of Code" Metric Useful? |
|
|
211 | (1) |
|
7.4.8 What Are the Disadvantages of the LOC Metric? |
|
|
211 | (1) |
|
7.4.9 What Are the Delta Lines of Code Metric? |
|
|
212 | (1) |
|
7.4.10 What Is McCabe's Metric? |
|
|
212 | (1) |
|
7.4.11 How Does McCabe's Metric Measure Software Complexity? |
|
|
212 | (1) |
|
7.4.12 Can You Help Me Visualize the Cyclomatic Complexity? |
|
|
212 | (1) |
|
7.4.13 Can the Computation of McCabe's Metric Be Automated? |
|
|
213 | (1) |
|
7.4.14 What Are Halstead's Metrics? |
|
|
213 | (1) |
|
7.4.15 Are Halstead's Metrics Still Used? |
|
|
214 | (1) |
|
7.4.16 What Are Function Points? |
|
|
214 | (1) |
|
7.4.17 What Are the Primary Drivers for FPs? |
|
|
214 | (1) |
|
7.4.18 How Do I Interpret the FP Value? |
|
|
215 | (1) |
|
7.4.19 How Widely Is the FP Metric Used? |
|
|
215 | (1) |
|
7.4.20 What Are Feature Points? |
|
|
216 | (1) |
|
7.4.21 Are There Special Metrics for Object-Oriented Software? |
|
|
216 | (1) |
|
7.4.22 What Are Some Method-Level Metrics? |
|
|
216 | (1) |
|
7.4.23 What Are Commonly Used Class-Level Metrics? |
|
|
216 | (1) |
|
7.4.24 What Are Some Package-Level Metrics? |
|
|
217 | (1) |
|
7.4.25 Are There Other Kinds of Object-Oriented Metrics? |
|
|
217 | (1) |
|
7.4.26 What Are Object Points? |
|
|
217 | (1) |
|
7.4.27 What Are Use Case Points? |
|
|
217 | (1) |
|
7.4.28 This Is All So Confusing. Which Metrics Should I Use? |
|
|
218 | (1) |
|
7.4.28.1 What Is the GQM Technique? |
|
|
218 | (1) |
|
7.4.28.2 Can You Give a Simple Example? |
|
|
218 | (1) |
|
7.4.29 What Are Some Objections to Using Metrics? |
|
|
218 | (1) |
|
|
219 | (3) |
|
7.5.1 What Are Checkpoints? |
|
|
219 | (1) |
|
7.5.2 What Are Recovery Blocks? |
|
|
219 | (1) |
|
7.5.3 What Are Software Black Boxes? |
|
|
220 | (1) |
|
7.5.4 What Is N-Version Programming? |
|
|
220 | (1) |
|
7.5.5 What Is Built-in-Test Software? |
|
|
221 | (1) |
|
7.5.6 How Should Built-in-Test Software Include CPU Testing? |
|
|
221 | (1) |
|
7.5.7 Should Built-in-Test Software Test Memory? |
|
|
221 | (1) |
|
7.5.8 What about Testing Other Devices? |
|
|
221 | (1) |
|
7.6 Maintenance and Reusability |
|
|
222 | (7) |
|
7.6.1 What Is Meant by Software Maintenance? |
|
|
222 | (1) |
|
7.6.2 What Is Reverse Engineering? |
|
|
222 | (1) |
|
7.6.3 What Is an Appropriate Model for Software Reengineering? |
|
|
222 | (1) |
|
7.6.4 Since You Like Models So Much, Can You Give Me a Maintenance Process Model? |
|
|
223 | (1) |
|
7.6.5 What Is System Release Planning? |
|
|
224 | (1) |
|
7.6.6 What Is Software Reuse? |
|
|
224 | (1) |
|
7.6.7 Are There Special Techniques for Achieving Reuse in Procedural Languages? |
|
|
224 | (1) |
|
7.6.8 Are There Special Techniques for Achieving Reuse in Object-Oriented Languages? |
|
|
225 | (1) |
|
7.6.9 When Is It Appropriate Not to Reuse Software? |
|
|
225 | (1) |
|
7.6.10 What Is Pareto's Principle and How Does It Apply to Software Engineering? |
|
|
225 | (1) |
|
7.6.11 What Is the "Second System Effect"? |
|
|
226 | (3) |
|
Chapter 8 Managing Software Projects and Software Engineers |
|
|
229 | (48) |
|
|
229 | (1) |
|
8.2 Software Engineers Are People Too |
|
|
230 | (16) |
|
8.2.1 What Personnel Management Skills Does the Software Project Manager Need? |
|
|
230 | (1) |
|
8.2.2 But What's the Big Deal with "People Issues"? |
|
|
230 | (1) |
|
8.2.3 How Does Team Chemistry Affect Software Projects? |
|
|
230 | (1) |
|
8.2.4 Why Is Team Chemistry So Hard to Manage? |
|
|
231 | (1) |
|
|
231 | (1) |
|
8.2.5.1 What Are Some Styles for Leading Teams? |
|
|
231 | (1) |
|
8.2.5.2 What Is Theory X? |
|
|
231 | (1) |
|
8.2.5.3 What Is Theory Y? |
|
|
231 | (1) |
|
8.2.5.4 What Is Theory Z? |
|
|
231 | (1) |
|
8.2.5.5 What Is Theory W? |
|
|
232 | (1) |
|
8.2.5.6 What Does It Mean to Establish a Set of Win-Win Preconditions? |
|
|
232 | (1) |
|
8.2.5.7 What Does It Mean to Structure a Win-Win Software Process? |
|
|
232 | (1) |
|
8.2.5.8 What Does Structuring a Win-Win Software Product Mean? |
|
|
233 | (1) |
|
8.2.5.9 What Is Principle-Centered Leadership? |
|
|
233 | (1) |
|
8.2.5.10 What Is Management by Sight? |
|
|
233 | (1) |
|
8.2.5.11 What Is Management by Objectives? |
|
|
234 | (1) |
|
8.2.5.12 What Is Pascal's Wager Theory to Manage Expectations? |
|
|
234 | (1) |
|
8.2.5.13 What Does Pascal's Wager Have to Do with Expectation Setting in Project Development? |
|
|
235 | (1) |
|
8.2.5.14 Any Other Comments on Pascal's Wager, Expectation, and Risk Management? |
|
|
235 | (1) |
|
8.2.6 Dealing with Problems |
|
|
236 | (1) |
|
8.2.6.1 How Do I Deal with Difficult People? |
|
|
236 | (1) |
|
8.2.6.2 IsTfiatIt?Can'tYouGiveMea Playbook for Handling Difficult Situations? |
|
|
236 | (1) |
|
8.2.6.3 How Do I Manage Divergent Agendas in a Software Project? |
|
|
237 | (1) |
|
8.2.6.4 What Are the Approaches for Consensus Building among Stakeholders? |
|
|
238 | (1) |
|
8.2.6.5 What Is Analytical Hierarchy Process? |
|
|
239 | (2) |
|
8.2.6.6 What Is Wideband Delphi Technique? |
|
|
241 | (1) |
|
8.2.7 Hiring Software Engineering Personnel |
|
|
242 | (1) |
|
8.2.7.1 We Need to Hire More Software People. How Should I Approach This Task? |
|
|
242 | (1) |
|
8.2.7.2 I Want to Select the Right People, but How Is It Done in the Software Industry? |
|
|
242 | (1) |
|
8.2.7.3 Do These Tests Really Measure the Potential Success of the Software Engineer? |
|
|
242 | (1) |
|
8.2.7.4 You Don't Seem to Like These Tests. How Do I Assess the Potential of a Candidate Besides Checking References? |
|
|
243 | (1) |
|
8.2.7.5 How Do You Measure the Candidate's Compatibility with Existing Team Members? |
|
|
243 | (1) |
|
8.2.7.6 Are There Studies on the Most In-Demand Skills for Various Software Engineering Positions? |
|
|
244 | (1) |
|
8.2.7.7 How Should I Reference-Check a Potential Hire? |
|
|
244 | (1) |
|
8.2.7.8 Should I Check Social Network Posts of the Candidate? |
|
|
245 | (1) |
|
8.2.8 Agile Development Teams |
|
|
245 | (1) |
|
8.2.8.1 How Do I Manage Agile Development Teams? |
|
|
245 | (1) |
|
8.2.8.2 OK, So What Does the Agile Manifesto Have to Do with Managing Agile Teams? |
|
|
246 | (1) |
|
8.2.8.3 Does This Approach Always Work? |
|
|
246 | (1) |
|
8.2.8.4 Do You Have Some More Specific Advice for Managing Agile Teams? |
|
|
246 | (1) |
|
8.3 Project Management Basics |
|
|
246 | (3) |
|
|
246 | (1) |
|
8.3.2 What Makes a Software Project Different from Any Other Kind of Project? |
|
|
247 | (1) |
|
8.3.3 Is Software Project Management Similar to Systems Project Management? |
|
|
247 | (1) |
|
8.3.4 What Does the Software Project Manager Control? |
|
|
247 | (1) |
|
8.3.5 What Do You Mean by Resources? |
|
|
248 | (1) |
|
8.3.6 What about the Schedule? |
|
|
248 | (1) |
|
8.3.7 What about Product Functionality? |
|
|
248 | (1) |
|
8.3.8 How Does the Project Manager Put All of These Control Factors Together? |
|
|
248 | (1) |
|
8.4 Antipatterns in Organization Management |
|
|
249 | (4) |
|
8.4.1 What Do You Mean by Antipatterns in Organizations? |
|
|
249 | (1) |
|
8.4.2 What Do You Mean by Management Antipatterns? |
|
|
249 | (1) |
|
8.4.3 Can You Give Some Examples of the Management Antipatterns? |
|
|
249 | (1) |
|
8.4.4 What Do You Mean by Metric Abuse? |
|
|
250 | (1) |
|
8.4.5 What Do You Mean by Mushroom Management? |
|
|
251 | (1) |
|
8.4.6 What Do You Mean by Environmental Antipatterns? |
|
|
251 | (1) |
|
8.4.7 Can You Give Some Examples of Environmental Antipatterns? |
|
|
252 | (1) |
|
8.4.8 What Do You Mean by Divergent Goals? |
|
|
252 | (1) |
|
8.4.9 What Is Meant by Process Clash? |
|
|
252 | (1) |
|
8.5 Tracking and Reporting Progress |
|
|
253 | (7) |
|
8.5.1 What Is a Work Breakdown Structure and Why Is It Important in Project Tracking? |
|
|
253 | (1) |
|
8.5.2 What Is the Level of Detail of the Tasks in the WBS? |
|
|
253 | (1) |
|
8.5.3 What Is the Role of the WBS in Project Planning? |
|
|
254 | (1) |
|
8.5.4 Are There Any Drawbacks to the Traditional WBS? |
|
|
254 | (1) |
|
8.5.5 Are There Any Alternatives to Using the WBS? |
|
|
254 | (1) |
|
8.5.6 How Are Work and Progress Tracked in Software Projects? |
|
|
254 | (1) |
|
8.5.7 What Is a Gantt Chart? |
|
|
254 | (1) |
|
8.5.8 What Does the Gantt Chart Look Like? |
|
|
254 | (1) |
|
8.5.9 Can the Gantt Chart Be Used for Large Projects? |
|
|
255 | (1) |
|
8.5.10 How Can the Gantt Chart Be Used for Ongoing Project Management? |
|
|
255 | (1) |
|
|
256 | (1) |
|
8.5.12 What Are the Steps in CPM Planning? |
|
|
256 | (1) |
|
8.5.13 Can You Illustrate the Technique Using the Baggage Inspection System? |
|
|
257 | (1) |
|
8.5.14 Are There Downsides to Using CPM? |
|
|
258 | (1) |
|
|
258 | (1) |
|
8.5.16 How Do You Build the PERT Diagram? |
|
|
258 | (1) |
|
8.5.17 Can You Show Me an Example? |
|
|
258 | (1) |
|
8.5.18 Are There Any Downsides to Using PERT? |
|
|
258 | (2) |
|
8.5.19 Are Commercial Products Available for Building These Charts? |
|
|
260 | (1) |
|
8.5.20 Can You Recommend the Best Tool to Use? |
|
|
260 | (1) |
|
8.5.21 Is Becoming an Expert in Using the Project Planning Tools the Key to Being a Good Software Project Manager? |
|
|
260 | (1) |
|
8.6 Software Cost Estimation |
|
|
260 | (6) |
|
8.6.1 Are There Weil-Known and Respected Tools for Doing Software Project Cost Estimation? |
|
|
260 | (1) |
|
8.6.2 What Is Basic COCOMO? |
|
|
260 | (1) |
|
8.6.3 Can You Give Me an Example Using COCOMO? |
|
|
261 | (1) |
|
8.6.4 Where Do the Source Code Estimates Come From? |
|
|
261 | (1) |
|
8.6.5 Should I Use More than One Estimate? |
|
|
261 | (1) |
|
8.6.6 What about the Intermediate and Detailed COCOMO Models? |
|
|
261 | (1) |
|
8.6.7 What Is the Adaptation Adjustment Factor? |
|
|
262 | (1) |
|
8.6.8 What Is the Effort Adjustment Factor? |
|
|
262 | (1) |
|
8.6.9 What Do These Adjustment Factors Look Like? |
|
|
262 | (2) |
|
8.6.10 How Widely Used Is COCOMO? |
|
|
264 | (1) |
|
8.6.11 What Are the Downsides to Using COCOMO? |
|
|
264 | (1) |
|
8.6.12 What Is COCOMO II? |
|
|
264 | (1) |
|
|
264 | (2) |
|
8.7 Project Cost Justification |
|
|
266 | (4) |
|
8.7.1 Is Software an Investment or an Expense? |
|
|
266 | (1) |
|
8.7.2 What Is Software Return on Investment and How Is It Defined? |
|
|
266 | (1) |
|
8.7.3 What Is an Example of a Project ROI Justification? |
|
|
266 | (1) |
|
8.7.4 Yes, but How Do You Measure ROI? 2668.7.5 OK, So How Can You Represent the Net Benefit and Initial Cost? |
|
|
267 | (1) |
|
8.7.6 What Is NPV and How Can I Use It? |
|
|
267 | (1) |
|
8.7.7 Can You Give an Example of an NPV Calculation for a Software Situation? |
|
|
267 | (1) |
|
8.7.8 What Is the Answer to the Question of Acquiring the Testing Tool? |
|
|
268 | (1) |
|
|
268 | (1) |
|
8.7.10 Can You Give an Example of an ROI Calculation? |
|
|
268 | (1) |
|
|
269 | (1) |
|
8.7.12 How Can PI Sub-optimize the Decision? |
|
|
269 | (1) |
|
8.7.13 Should I Use PI at All? |
|
|
269 | (1) |
|
|
269 | (1) |
|
8.7.15 How Can Payback Be Applied in a Software Project Setting? |
|
|
270 | (1) |
|
8.7.16 This Seems Simplistic. Is Payback Really Used? |
|
|
270 | (1) |
|
8.7.17 What Is Discounted Payback? |
|
|
270 | (1) |
|
8.7.18 Can You Give an Example? |
|
|
270 | (1) |
|
|
270 | (7) |
|
8.8.1 What Are Software Risks? |
|
|
270 | (1) |
|
8.8.2 How Do Risks Manifest in Software? |
|
|
271 | (1) |
|
8.8.3 How Does the Project Manager Identify, Mitigate, and Manage Risks? |
|
|
271 | (1) |
|
8.8.4 What Are Some Other Ways That the Software Project Manager Can Mitigate Risk? |
|
|
271 | (1) |
|
8.8.5 Is There a Predictive Model for the Likelihood of Any of These Risks? |
|
|
271 | (1) |
|
8.8.6 Do You Have Any Other Advice about Managing Risk in Software Projects? |
|
|
271 | (2) |
|
8.8.7 How Does Prototyping Mitigate Risk? |
|
|
273 | (1) |
|
8.8.8 Are There Risks to Software Prototyping? |
|
|
274 | (1) |
|
8.8.9 Are There Other Ways to Discover Risks So That They Can Be Mitigated? |
|
|
274 | (3) |
|
Chapter 9 Software Engineering: Roadmap to the Future |
|
|
277 | (18) |
|
|
277 | (1) |
|
9.2 Global Software Engineering |
|
|
278 | (3) |
|
9.2.1 What Are Some of the Problems When Dealing with Global Software Engineering? |
|
|
278 | (1) |
|
9.2.2 What Is the Difference between Internationalization and Distribution? |
|
|
279 | (1) |
|
9.2.3 What Are the Issues to Consider When Dealing with Internationalization? |
|
|
279 | (1) |
|
9.2.4 What Are the Issues to Consider When Dealing with a Distributed Team? |
|
|
280 | (1) |
|
9.2.5 How Can Tools Play a Role in Globally Distributed Software Engineering Processes? |
|
|
280 | (1) |
|
9.3 Software Engineering Practices in Small Businesses |
|
|
281 | (1) |
|
9.3.1 What Is a Small Business? |
|
|
281 | (1) |
|
9.3.2 What Characterizes Software Engineering Practices in Small Businesses? |
|
|
281 | (1) |
|
9.4 Software Engineering and Disruptive Technologies |
|
|
282 | (13) |
|
9.4.1 Software Engineering and the Internet of Things |
|
|
282 | (1) |
|
9.4.1.1 What Is the Internet of Things? |
|
|
282 | (1) |
|
9.4.1.2 What Are the Five IoT Primitives? |
|
|
283 | (1) |
|
9.4.1.3 What Are the Open Issues to Consider for Software Engineering When Building IoT Systems? |
|
|
283 | (2) |
|
9.4.2 Software Engineering and Blockchain |
|
|
285 | (1) |
|
9.4.2.1 What Is Blockchain? |
|
|
285 | (2) |
|
9.4.2.2 What Are the Capabilities of Blockchain Technology? |
|
|
287 | (1) |
|
9.4.2.3 What Are the Competencies Required to Become a Blockchain Engineer? |
|
|
288 | (1) |
|
9.4.2.4 What Are the Open Issues to Consider for Software Engineering When Building Blockchain Applications? |
|
|
288 | (1) |
|
9.4.3 Software Engineering and Artificial Intelligence |
|
|
289 | (1) |
|
|
289 | (1) |
|
9.4.3.2 Can You Give Some Examples of Areas of Research for Software Engineering for AI Systems? |
|
|
289 | (1) |
|
9.4.3.3 What Are the Open Issues to Consider for Software Engineering When Building AI-Based Systems? |
|
|
290 | (1) |
|
9.4.4 Software Engineering and Cloud Computing |
|
|
290 | (1) |
|
9.4.4.1 What Is Cloud Computing? |
|
|
290 | (1) |
|
9.4.4.2 What Are the Open Issues to Consider for Software Engineering When Building Cloud Computing Systems? |
|
|
290 | (1) |
|
9.4.5 Software Engineering and Affective Computing |
|
|
291 | (1) |
|
9.4.5.1 What Is Affective Computing? |
|
|
291 | (1) |
|
9.4.5.2 What Are the Open Issues to Consider for Software Engineering When Building Affective Computing Systems? |
|
|
291 | (4) |
Appendix A Software Requirements for a Wastewater Pumping Station Wet Well Control System (rev. 02.01.00) |
|
295 | (12) |
Appendix B Software Design for a Wastewater Pumping Station Wet Well Control System (rev. 02.01.00) |
|
307 | (22) |
Appendix C Object Models for a Wastewater Pumping Station Wet Well Control System |
|
329 | (6) |
Appendix D Unified Modeling Language |
|
335 | (16) |
Index |
|
351 | |