Title:
Human aspects of software engineering
Personal Author:
Publication Information:
Hingham, Mass. : Charles River Media, 2004
ISBN:
9781584503132
Added Author:
Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010081713 | QA76.758 T56 2004 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
This textbook explores the many human dilemmas and conflicts that can arise during the course of software development, and encourages future software engineers to become more aware of the development environment than their older counterparts. Tomayko (Carnegie Mellon) and Hazzan (Israel Institute of
Table of Contents
Dedication | p. v |
Acknowledgments | p. vii |
Introduction | p. xxi |
Part I Software Development Environments | p. 1 |
1 The Nature of Software Engineering | p. 3 |
Introduction | p. 3 |
Objectives | p. 3 |
Study Questions | p. 4 |
A Day in the Life of a Software Engineer in a Conventional Company | p. 5 |
A Software Engineer's Day at an Agile Development Company | p. 7 |
Why Software Projects Fail | p. 9 |
Discussion | p. 11 |
For Further Review | p. 11 |
References and Additional Resources | p. 11 |
Endnotes | p. 11 |
2 Software Engineering Methods | p. 13 |
Introduction | p. 13 |
Objectives | p. 14 |
Study Questions | p. 14 |
Software Development Methods | p. 14 |
Spiral Model | p. 15 |
Unified Process | p. 16 |
eXtreme Programming | p. 18 |
Choosing Among the Spiral Model, UP, and XP | p. 22 |
To Require or Not to Require ... Methods | p. 24 |
Summary Questions | p. 25 |
For Further Review | p. 26 |
References | p. 26 |
Endnotes | p. 27 |
3 Working in Teams | p. 29 |
Introduction | p. 29 |
Objectives | p. 30 |
Study Questions | p. 30 |
Relevance for Software Engineering | p. 31 |
Types and Structures of Software Development Teams | p. 31 |
Democratic Teams | p. 31 |
Hierarchical Teams | p. 34 |
Virtual Teams | p. 38 |
Forming and Rewarding Student Teams | p. 39 |
Activity | p. 40 |
Forming Student Teams | p. 44 |
Evaluation of Student Projects | p. 44 |
A Game Theory Perspective of Teamwork | p. 45 |
Outsourcing | p. 48 |
A Common Use for Virtual Teams: Outsourcing | p. 48 |
The Capability Maturity Model and Its Use for Outsourcing | p. 49 |
The Bozo Effect | p. 50 |
Mind the Gap | p. 51 |
Summary Questions | p. 52 |
For Further Review | p. 52 |
References and Additional Resources | p. 52 |
Endnotes | p. 53 |
4 Software as a Product | p. 55 |
Introduction | p. 55 |
Objectives | p. 56 |
Study Questions | p. 56 |
Relevance for Software Engineering | p. 56 |
Software Requirements--Background | p. 57 |
Data Collection Tools | p. 59 |
Interviews | p. 59 |
Questionnaires | p. 63 |
Observation | p. 65 |
Requirements Management | p. 66 |
Characteristics of Tools for Requirements Management | p. 66 |
Discussion | p. 69 |
Summary Questions | p. 69 |
For Further Review | p. 69 |
References | p. 70 |
Examples of Requirements Management Tools Reviewed | p. 70 |
Part II The World of Software Engineering | p. 71 |
5 Code of Ethics of Software Engineering | p. 73 |
Introduction | p. 73 |
Objectives | p. 74 |
Study Questions | p. 74 |
Relevance for Software Engineering | p. 75 |
Codes of Ethics | p. 75 |
The Code of Ethics of Software Engineering | p. 77 |
Scanning the Code of Ethics of Software Engineering | p. 79 |
Activities | p. 81 |
Questions--Principle 1 Public | p. 83 |
Questions--Principle 2 Client and Employer | p. 84 |
Questions--Principle 3 Product | p. 85 |
Questions--Principle 4 Judgment | p. 88 |
Questions--Principle 5 Management | p. 89 |
Questions--Principle 6 Profession | p. 90 |
Questions--Principle 7 Colleagues | p. 92 |
Questions--Principle 8 Self | p. 93 |
Summary Questions | p. 94 |
For Further Review | p. 95 |
References and Additional Resources | p. 95 |
Online Resources | p. 96 |
Endnotes | p. 96 |
6 International Perspective on Software Engineering | p. 97 |
Introduction | p. 97 |
Objectives | p. 98 |
Study Questions | p. 98 |
Relevance for Software Engineering | p. 98 |
International Perspectives on Software Engineering | p. 99 |
Questions | p. 100 |
The High-Tech Industry in Different Countries | p. 101 |
India | p. 103 |
Israel | p. 104 |
Additional International Topics Related to Software Engineering | p. 106 |
Women and Minorities in Computer Science and Software Engineering | p. 107 |
Summary Questions | p. 111 |
For Further Review | p. 111 |
References and Additional Resources | p. 111 |
Associations that Deal with the Promotion of Women in Computer Science | p. 112 |
7 Different Perspectives on Software Engineering | p. 113 |
Introduction | p. 113 |
Objectives | p. 114 |
Study Questions | p. 114 |
Relevance for Software Engineering | p. 115 |
Software Engineering: A Multifaceted Field | p. 115 |
The Product versus Process Perspectives of Software Engineering | p. 117 |
The Agility Paradigm versus the Heavyweight Approach toward Software Development | p. 119 |
Additional Approaches | p. 121 |
Summary Questions | p. 122 |
For Further Review | p. 122 |
References | p. 123 |
8 The History of Software Engineering | p. 125 |
Introduction | p. 125 |
Objectives | p. 126 |
Study Questions | p. 126 |
The Early Days of Computing | p. 126 |
Information Hiding--The First Budding of Software Development Methods | p. 129 |
Abstraction--Another Part of Methods | p. 129 |
The Beginning of Software Development Methods | p. 130 |
The Customer's Task in the Early Days of Software Development Methods | p. 133 |
Abstraction and Information Hiding Come to the Fore | p. 134 |
Software Development Methods Become Part of the Profession of Software Engineering | p. 135 |
Objects Arise | p. 138 |
Agile Methods Enter the Software Engineering World | p. 138 |
For Further Review | p. 139 |
References | p. 139 |
Part III Software-Human Interaction | p. 141 |
9 Program Comprehension, Code Inspections, and Refactoring | p. 143 |
Introduction | p. 143 |
Objectives | p. 144 |
Relevance for Software Engineering | p. 144 |
Program Comprehension | p. 145 |
Study Questions | p. 145 |
Theories of Program Comprehension | p. 146 |
Activity | p. 151 |
Code Inspections (Code Review) | p. 151 |
Study Questions | p. 151 |
Refactoring | p. 154 |
Study Questions | p. 154 |
Summary Questions | p. 157 |
For Further Review | p. 158 |
References and Additional Resources | p. 158 |
Endnotes | p. 159 |
10 Learning Processes in Software Engineering | p. 161 |
Introduction | p. 161 |
Objectives | p. 162 |
Study Questions | p. 162 |
Relevance for Software Engineering | p. 162 |
Software Engineering as a Reflective Practice | p. 163 |
Conclusion--Software Engineering as a Reflective Practice | p. 170 |
Activities | p. 170 |
Learning Organizations | p. 171 |
Activity | p. 176 |
Conclusions | p. 177 |
Summary Questions | p. 177 |
For Further Review | p. 177 |
References and Additional Resources | p. 179 |
Endnotes | p. 180 |
12 Abstraction and Other Heuristics of Software Development | p. 181 |
Introduction | p. 181 |
Objectives | p. 182 |
Study Questions | p. 182 |
Relevance for Software Engineering | p. 183 |
Central Heuristics of Software Development | p. 183 |
Structured Programming | p. 184 |
Successive Refinement | p. 184 |
Abstraction | p. 186 |
Illumination of Previous Chapters by Abstraction | p. 187 |
Additional Topics Related to Abstraction | p. 193 |
The Human Aspects of Software Architecture | p. 193 |
Architecture versus Design | p. 193 |
Quality Attribute Workshops | p. 194 |
Metaphors in Science and Philosophy | p. 197 |
Abstraction in Computer Science and Software Engineering Education | p. 197 |
Summary Questions | p. 198 |
References | p. 199 |
Endnotes | p. 200 |
12 The Characteristics of Software and the Human Aspects of Software Engineering | p. 203 |
Introduction | p. 203 |
Objectives | p. 204 |
Study Questions | p. 204 |
Relevance for Software Engineering | p. 205 |
Software Characteristics | p. 206 |
Programming Style | p. 207 |
Abstraction | p. 209 |
Refactoring | p. 210 |
Simplicity | p. 210 |
Evaluation of Programming Style | p. 211 |
Affective Aspects of Human-Software Interaction | p. 211 |
Summary Questions | p. 218 |
For Further Review | p. 218 |
References and Additional Resources | p. 219 |
Programming Style Links | p. 220 |
Endnotes | p. 220 |
Appendix Questionnaire | p. 220 |
Part IV Business Analysis of Software Engineering | p. 223 |
13 Software Project Estimation and Tracking | p. 225 |
Introduction | p. 225 |
Objectives | p. 226 |
Study Questions | p. 226 |
Relevance for Software Engineering | p. 226 |
Poor Software Project Management | p. 226 |
"Better, Faster, Cheaper" | p. 227 |
Overtime | p. 228 |
Avoiding Overtime | p. 229 |
Historical Data | p. 229 |
Clark's Method | p. 230 |
COCOMO II | p. 230 |
Earned Value | p. 234 |
The Planning Game | p. 235 |
Requirements | p. 236 |
The Method of Up-Front Requirements Elicitation | p. 236 |
Requirements Elicitation in Agile Methods | p. 236 |
Difficulties for Estimation Caused by Agile Methods of Gathering Requirements | p. 237 |
The Team Software Process Development Manager | p. 238 |
Playing Games with Estimates and Deadlines | p. 238 |
Summary Question | p. 239 |
For Further Review | p. 240 |
References | p. 240 |
14 Software as a Business | p. 243 |
Introduction | p. 243 |
Objectives | p. 243 |
Study Questions | p. 244 |
Relevance to Software Engineering | p. 244 |
A Brief History of the Software Business | p. 244 |
Time-to-Market | p. 247 |
Business Cases | p. 247 |
Business Plans | p. 248 |
Statement of Work | p. 249 |
Summary Questions | p. 250 |
For Further Review | p. 250 |
References and Additional Resources | p. 250 |
15 The Internet and the Human Aspects of Software Engineering | p. 251 |
Introduction | p. 251 |
Objectives | p. 252 |
Study Questions | p. 252 |
Relevance for Software Engineering | p. 253 |
E-Commerce | p. 254 |
What Is E-Commerce? | p. 254 |
Cognitive Analysis of E-Commerce | p. 256 |
Social Perspective of E-Commerce | p. 258 |
The Timeless Nature of the Internet | p. 259 |
Communication | p. 261 |
Summary Questions | p. 263 |
For Further Review | p. 263 |
References and Additional Resources | p. 264 |
Part V Software Engineering Education | p. 267 |
16 Case Studies in Software Engineering | p. 269 |
Introduction | p. 269 |
Objectives | p. 270 |
Study Questions | p. 270 |
Relevance for Software Engineering | p. 270 |
Software Management | p. 271 |
Case 1 Overtime | p. 271 |
Case 2 Schedule | p. 272 |
Case 3 Getting New Business | p. 273 |
Case 4 Discovering Information | p. 274 |
Software Development Paradigm | p. 275 |
Case 5 Specifying | p. 275 |
Case 6 Designing | p. 275 |
Case 7 Coding | p. 276 |
Case 8 Testing | p. 276 |
General Principles | p. 277 |
Case 9 The Recycling Principle | p. 277 |
Case 10 Multiple Representations | p. 277 |
Case 11 Alternative Tasks | p. 278 |
Case 12 Reflection | p. 278 |
Case 13 Fingerprints | p. 279 |
Case 14 Divide and Conquer | p. 279 |
Case 15 Finding Hidden Bugs | p. 280 |
Case 16 Literacy | p. 280 |
For Further Review | p. 281 |
References | p. 281 |
17 Students' Summary Projects and Presentations | p. 283 |
Introduction | p. 283 |
Objectives | p. 284 |
Study Questions | p. 284 |
Relevance for Software Engineering | p. 284 |
Case Studies | p. 285 |
Construction of Case Studies | p. 286 |
Option 1 Construction of a Theoretical Case Study | p. 286 |
Option 2 Construction of a Case Study Based on a Field Study | p. 292 |
Option 3 Construction of a Case Study Based on an Event in the Past | p. 293 |
Presentation of Case Studies | p. 294 |
Additional Resources | p. 294 |
18 Remarks about Software Engineering Education | p. 295 |
Introduction | p. 295 |
Objectives | p. 296 |
Study Questions | p. 296 |
Relevance for Software Engineering | p. 297 |
The History of Software Engineering Education | p. 297 |
The Education of Software Engineers Today | p. 298 |
Teaching Human Aspects of Software Engineering | p. 300 |
References and Additional Resources | p. 302 |
Endnotes | p. 302 |
19 Additional Information on Resources Used in This Book | p. 303 |
Books | p. 13 |
Articles | p. 314 |
Web Sites | p. 315 |
Appendix | p. 317 |
Index | p. 333 |