Cover image for Human aspects of software engineering
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

Dedicationp. v
Acknowledgmentsp. vii
Introductionp. xxi
Part I Software Development Environmentsp. 1
1 The Nature of Software Engineeringp. 3
Introductionp. 3
Objectivesp. 3
Study Questionsp. 4
A Day in the Life of a Software Engineer in a Conventional Companyp. 5
A Software Engineer's Day at an Agile Development Companyp. 7
Why Software Projects Failp. 9
Discussionp. 11
For Further Reviewp. 11
References and Additional Resourcesp. 11
Endnotesp. 11
2 Software Engineering Methodsp. 13
Introductionp. 13
Objectivesp. 14
Study Questionsp. 14
Software Development Methodsp. 14
Spiral Modelp. 15
Unified Processp. 16
eXtreme Programmingp. 18
Choosing Among the Spiral Model, UP, and XPp. 22
To Require or Not to Require ... Methodsp. 24
Summary Questionsp. 25
For Further Reviewp. 26
Referencesp. 26
Endnotesp. 27
3 Working in Teamsp. 29
Introductionp. 29
Objectivesp. 30
Study Questionsp. 30
Relevance for Software Engineeringp. 31
Types and Structures of Software Development Teamsp. 31
Democratic Teamsp. 31
Hierarchical Teamsp. 34
Virtual Teamsp. 38
Forming and Rewarding Student Teamsp. 39
Activityp. 40
Forming Student Teamsp. 44
Evaluation of Student Projectsp. 44
A Game Theory Perspective of Teamworkp. 45
Outsourcingp. 48
A Common Use for Virtual Teams: Outsourcingp. 48
The Capability Maturity Model and Its Use for Outsourcingp. 49
The Bozo Effectp. 50
Mind the Gapp. 51
Summary Questionsp. 52
For Further Reviewp. 52
References and Additional Resourcesp. 52
Endnotesp. 53
4 Software as a Productp. 55
Introductionp. 55
Objectivesp. 56
Study Questionsp. 56
Relevance for Software Engineeringp. 56
Software Requirements--Backgroundp. 57
Data Collection Toolsp. 59
Interviewsp. 59
Questionnairesp. 63
Observationp. 65
Requirements Managementp. 66
Characteristics of Tools for Requirements Managementp. 66
Discussionp. 69
Summary Questionsp. 69
For Further Reviewp. 69
Referencesp. 70
Examples of Requirements Management Tools Reviewedp. 70
Part II The World of Software Engineeringp. 71
5 Code of Ethics of Software Engineeringp. 73
Introductionp. 73
Objectivesp. 74
Study Questionsp. 74
Relevance for Software Engineeringp. 75
Codes of Ethicsp. 75
The Code of Ethics of Software Engineeringp. 77
Scanning the Code of Ethics of Software Engineeringp. 79
Activitiesp. 81
Questions--Principle 1 Publicp. 83
Questions--Principle 2 Client and Employerp. 84
Questions--Principle 3 Productp. 85
Questions--Principle 4 Judgmentp. 88
Questions--Principle 5 Managementp. 89
Questions--Principle 6 Professionp. 90
Questions--Principle 7 Colleaguesp. 92
Questions--Principle 8 Selfp. 93
Summary Questionsp. 94
For Further Reviewp. 95
References and Additional Resourcesp. 95
Online Resourcesp. 96
Endnotesp. 96
6 International Perspective on Software Engineeringp. 97
Introductionp. 97
Objectivesp. 98
Study Questionsp. 98
Relevance for Software Engineeringp. 98
International Perspectives on Software Engineeringp. 99
Questionsp. 100
The High-Tech Industry in Different Countriesp. 101
Indiap. 103
Israelp. 104
Additional International Topics Related to Software Engineeringp. 106
Women and Minorities in Computer Science and Software Engineeringp. 107
Summary Questionsp. 111
For Further Reviewp. 111
References and Additional Resourcesp. 111
Associations that Deal with the Promotion of Women in Computer Sciencep. 112
7 Different Perspectives on Software Engineeringp. 113
Introductionp. 113
Objectivesp. 114
Study Questionsp. 114
Relevance for Software Engineeringp. 115
Software Engineering: A Multifaceted Fieldp. 115
The Product versus Process Perspectives of Software Engineeringp. 117
The Agility Paradigm versus the Heavyweight Approach toward Software Developmentp. 119
Additional Approachesp. 121
Summary Questionsp. 122
For Further Reviewp. 122
Referencesp. 123
8 The History of Software Engineeringp. 125
Introductionp. 125
Objectivesp. 126
Study Questionsp. 126
The Early Days of Computingp. 126
Information Hiding--The First Budding of Software Development Methodsp. 129
Abstraction--Another Part of Methodsp. 129
The Beginning of Software Development Methodsp. 130
The Customer's Task in the Early Days of Software Development Methodsp. 133
Abstraction and Information Hiding Come to the Forep. 134
Software Development Methods Become Part of the Profession of Software Engineeringp. 135
Objects Arisep. 138
Agile Methods Enter the Software Engineering Worldp. 138
For Further Reviewp. 139
Referencesp. 139
Part III Software-Human Interactionp. 141
9 Program Comprehension, Code Inspections, and Refactoringp. 143
Introductionp. 143
Objectivesp. 144
Relevance for Software Engineeringp. 144
Program Comprehensionp. 145
Study Questionsp. 145
Theories of Program Comprehensionp. 146
Activityp. 151
Code Inspections (Code Review)p. 151
Study Questionsp. 151
Refactoringp. 154
Study Questionsp. 154
Summary Questionsp. 157
For Further Reviewp. 158
References and Additional Resourcesp. 158
Endnotesp. 159
10 Learning Processes in Software Engineeringp. 161
Introductionp. 161
Objectivesp. 162
Study Questionsp. 162
Relevance for Software Engineeringp. 162
Software Engineering as a Reflective Practicep. 163
Conclusion--Software Engineering as a Reflective Practicep. 170
Activitiesp. 170
Learning Organizationsp. 171
Activityp. 176
Conclusionsp. 177
Summary Questionsp. 177
For Further Reviewp. 177
References and Additional Resourcesp. 179
Endnotesp. 180
12 Abstraction and Other Heuristics of Software Developmentp. 181
Introductionp. 181
Objectivesp. 182
Study Questionsp. 182
Relevance for Software Engineeringp. 183
Central Heuristics of Software Developmentp. 183
Structured Programmingp. 184
Successive Refinementp. 184
Abstractionp. 186
Illumination of Previous Chapters by Abstractionp. 187
Additional Topics Related to Abstractionp. 193
The Human Aspects of Software Architecturep. 193
Architecture versus Designp. 193
Quality Attribute Workshopsp. 194
Metaphors in Science and Philosophyp. 197
Abstraction in Computer Science and Software Engineering Educationp. 197
Summary Questionsp. 198
Referencesp. 199
Endnotesp. 200
12 The Characteristics of Software and the Human Aspects of Software Engineeringp. 203
Introductionp. 203
Objectivesp. 204
Study Questionsp. 204
Relevance for Software Engineeringp. 205
Software Characteristicsp. 206
Programming Stylep. 207
Abstractionp. 209
Refactoringp. 210
Simplicityp. 210
Evaluation of Programming Stylep. 211
Affective Aspects of Human-Software Interactionp. 211
Summary Questionsp. 218
For Further Reviewp. 218
References and Additional Resourcesp. 219
Programming Style Linksp. 220
Endnotesp. 220
Appendix Questionnairep. 220
Part IV Business Analysis of Software Engineeringp. 223
13 Software Project Estimation and Trackingp. 225
Introductionp. 225
Objectivesp. 226
Study Questionsp. 226
Relevance for Software Engineeringp. 226
Poor Software Project Managementp. 226
"Better, Faster, Cheaper"p. 227
Overtimep. 228
Avoiding Overtimep. 229
Historical Datap. 229
Clark's Methodp. 230
COCOMO IIp. 230
Earned Valuep. 234
The Planning Gamep. 235
Requirementsp. 236
The Method of Up-Front Requirements Elicitationp. 236
Requirements Elicitation in Agile Methodsp. 236
Difficulties for Estimation Caused by Agile Methods of Gathering Requirementsp. 237
The Team Software Process Development Managerp. 238
Playing Games with Estimates and Deadlinesp. 238
Summary Questionp. 239
For Further Reviewp. 240
Referencesp. 240
14 Software as a Businessp. 243
Introductionp. 243
Objectivesp. 243
Study Questionsp. 244
Relevance to Software Engineeringp. 244
A Brief History of the Software Businessp. 244
Time-to-Marketp. 247
Business Casesp. 247
Business Plansp. 248
Statement of Workp. 249
Summary Questionsp. 250
For Further Reviewp. 250
References and Additional Resourcesp. 250
15 The Internet and the Human Aspects of Software Engineeringp. 251
Introductionp. 251
Objectivesp. 252
Study Questionsp. 252
Relevance for Software Engineeringp. 253
E-Commercep. 254
What Is E-Commerce?p. 254
Cognitive Analysis of E-Commercep. 256
Social Perspective of E-Commercep. 258
The Timeless Nature of the Internetp. 259
Communicationp. 261
Summary Questionsp. 263
For Further Reviewp. 263
References and Additional Resourcesp. 264
Part V Software Engineering Educationp. 267
16 Case Studies in Software Engineeringp. 269
Introductionp. 269
Objectivesp. 270
Study Questionsp. 270
Relevance for Software Engineeringp. 270
Software Managementp. 271
Case 1 Overtimep. 271
Case 2 Schedulep. 272
Case 3 Getting New Businessp. 273
Case 4 Discovering Informationp. 274
Software Development Paradigmp. 275
Case 5 Specifyingp. 275
Case 6 Designingp. 275
Case 7 Codingp. 276
Case 8 Testingp. 276
General Principlesp. 277
Case 9 The Recycling Principlep. 277
Case 10 Multiple Representationsp. 277
Case 11 Alternative Tasksp. 278
Case 12 Reflectionp. 278
Case 13 Fingerprintsp. 279
Case 14 Divide and Conquerp. 279
Case 15 Finding Hidden Bugsp. 280
Case 16 Literacyp. 280
For Further Reviewp. 281
Referencesp. 281
17 Students' Summary Projects and Presentationsp. 283
Introductionp. 283
Objectivesp. 284
Study Questionsp. 284
Relevance for Software Engineeringp. 284
Case Studiesp. 285
Construction of Case Studiesp. 286
Option 1 Construction of a Theoretical Case Studyp. 286
Option 2 Construction of a Case Study Based on a Field Studyp. 292
Option 3 Construction of a Case Study Based on an Event in the Pastp. 293
Presentation of Case Studiesp. 294
Additional Resourcesp. 294
18 Remarks about Software Engineering Educationp. 295
Introductionp. 295
Objectivesp. 296
Study Questionsp. 296
Relevance for Software Engineeringp. 297
The History of Software Engineering Educationp. 297
The Education of Software Engineers Todayp. 298
Teaching Human Aspects of Software Engineeringp. 300
References and Additional Resourcesp. 302
Endnotesp. 302
19 Additional Information on Resources Used in This Bookp. 303
Booksp. 13
Articlesp. 314
Web Sitesp. 315
Appendixp. 317
Indexp. 333