Handbook of Software Engineering MethodsLaraLetaw
Handbook of Software Engineering MethodsLaraLetaw
2
Handbook of Software Engineering Methods
Lara Letaw
1 Introduction 7
1.1 What’s software engineering? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 What’s the philosophy behind this book? . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Software engineering is not black and white . . . . . . . . . . . . . . . . . 8
1.2.2 Studying every detail of software engineering is a waste of time . . . . . . 9
1.2.3 Agile isn’t perfect but I really like it (and other people do too) . . . . . . . 9
1.3 What’s this book like? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 What’s the future of this book? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Agile 13
2.1 Software Development Lifecycle (SDLC) . . . . . . . . . . . . . . . . . . . . . . 14
2.1.1 Why care about Agile, other software process models, and software engi-
neering methods? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Agile, Scrum, and Agile Methods . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.2 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3
4 CONTENTS
4 Requirements 39
4.1 Types of Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Why Requirements Matter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3 What Makes a Good Requirement . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4 Requirements Elicitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.5 Non-Functional Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5.1 Quality Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.6 Functional Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.6.1 User Stories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.6.2 Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.7 Requirements Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.9 Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7 Paper Prototyping 67
7.1 Showing Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.2 Showing Your Concept to Others . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.4 Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.6 Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
10 Conclusion 99
Glossary 101
Bibliography 110
Index 117
Chapter 1
Introduction
7
8 CHAPTER 1. INTRODUCTION
This book might get shorter before It’s short and meant to be readable:
it gets longer; I’ve tried to keep
chapters concise but informative. • Important terms and concepts are bolded
• Margins contain term definitions and side notes (relevant ad-
ditional thoughts)
• Additional resources are listed at the end of each major chap-
ter
• Debugging
• Deployment
• DevOps
• Ethics
• More software architectures
• More software process models
• Object-oriented design principles
• Professionalism
• Software used by software engineers
• Testing your code (verification)
1.5. LICENSE 11
• More examples, figures, and images * * Yep, I’m the “illustrator” (a gen-
erous title).
This book could also become part of your own book / course /
blog / etc.—feel free to use the whole thing or pieces of it (non-
commercially).
1.5 License
Creative Commons Attribution-NonCommercial (CC BY-NC)
1.6 Acknowledgments
Thanks to Caius Brindescu, Raffaele de Amicis, Sèanar Letaw, and
Tiffany Rockwell for their feedback, advice, and support. Additional
thanks to family and friends for their support. Thanks to the many
software engineering students and other individuals who gave feed-
back, including Richard Brinkley, Maximillian Davensmith, Brian
Doyle, and Jack LaBarba. Thanks to the Oregon State University
Open Educational Resources (OER) Unit for making the whole ef-
fort possible.
12 CHAPTER 1. INTRODUCTION
Chapter 2
Agile
This book is geared toward Agile, but there are other software Agile: A software process model
process models. Each software process model has a different way and philosophy for managing and
of proceeding through the software development lifecycle (SDLC). developing software projects. Ag-
This chapter starts by describing the SDLC and Agile versus another ile values: Individuals and inter-
software process model. That is followed by a discussion of Scrum actions, working software, cus-
(an Agile framework) and Agile methods. tomer collaboration, and respond-
ing to change.
This chapter will give you the flavor of Agile and Scrum rather
..............................
than being a comprehensive guide. For more detailed information
about topics introduced here, see the Additional Resource section at software process model: A phi-
the end of the chapter. losophy and/or set of approaches
for software development and/or
13 software project management.
14 CHAPTER 2. AGILE
We are uncovering better ways of developing software by doing it and helping others
do it. Through this work we have come to value:
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left
more.
Why does this book have a whole chapter about Agile and not one about Waterfall or any other
software process model? Because most organizations use Agile methods for software or IT projects.
For example, according to a 2017 survey by Hewlett Packard with 601 respondents, here is the
distribution of what organizations use as their primary development method:
• 51%: Leaning toward Agile
• 46%: Hybrid
• 16%: Pure Agile
• 7%: Leaning toward Waterfall
• 2%: Pure Waterfall
Why do organizations choose Agile? According to HP:
Percent of respondents agreeing with statement about Agile development (respondents=403 orga-
nizations that have primarily adopted Agile):
• 54%: Enhances collaboration between teams that don’t usually work together
• 52%: Increases the level of software quality in organizations
• 49%: Results in increased customer satisfaction
• 43%: Shortens time to market
• 42%: Reduces cost of development
2.2.2 Scrum
Scrum is a set of methods that align with the Agile philosophy. For example, the Scrum Guide
(ever-evolving manual for Scrum) (Schwaber and Sutherland 2020) says that, to reflect the “re-
sponding to change” value, a software project should be broken into development Sprints that are
usually two to four weeks long. Each Sprint has a Sprint Plan. The Sprint Plan can be defined
shortly before the Sprint; Teams (and their customers) might only know what they’re doing for two
weeks at a time.
Scrum gives teams high-level methods for carrying out a software development project. For
example, it says nothing about how to code.
2.2. AGILE, SCRUM, AND AGILE METHODS 17
In the current version of the Scrum Guide, the methods are divided into three categories: the
team, the events, and the artifacts. To give you a quick, convenient introduction to Scrum, the
methods are listed below.
The Team
The Scrum Team “consists of one Scrum Master, one Product Owner, and Developers.”
The Scrum Master’s focus is process, the Product Owner’s focus is the product (software), and
the Developers’ focus is creating a product while following Scrum processes.
The Events
Method (Event) Definition
Sprint “fixed length events of one month or less ... A new Sprint starts immediately
after the conclusion of the previous Sprint”
Sprint Planning “initiates the Sprint by laying out the work to be performed”
Daily Scrum “a 15-minute event for the Developers of the Scrum Team ... focuses on
progress toward the Sprint Goal and produces an actionable plan for the
next day of work”
Sprint Review “to inspect the outcome of the Sprint and determine future adaptations ...
Scrum Team and stakeholders”
Sprint Retrospective “to plan ways to increase quality and effectiveness ... Scrum Team”
A Sprint is a development period that occurs in a series of Sprints, which are each laid out
during Sprint Planning. Each day, the Developers have a 15 minute meeting about planning the
next workday. Sprints end with a Sprint Review (Team and stakeholders) and a Sprint Retrospective
(Team only).
The Artifacts
Method (Artifact) Definition
Product Backlog “an emergent, ordered list of what is needed to improve the product”
Sprint Backlog “composed of the Sprint Goal (why), the set of Product Backlog items
selected for the Sprint (what), as well as an actionable plan for delivering
the Increment (how)”
Increment “a concrete stepping stone toward the Product Goal”
18 CHAPTER 2. AGILE
The Product Backlog contains a rough list of tasks the Team is planning to do sometime, but the
tasks haven’t yet been scheduled and may not be defined in detail. The Sprint Backlog contains tasks
the Team has decided to work on and has added details about completing the tasks. An Increment
is an achievement toward creating the product (e.g., finishing a feature implementation).
The Scrum Guide (Schwaber and Sutherland 2020) describes the Scrum methods in more detail
and defines some of the terms that were unexplained here (e.g., Sprint Goal).
2.3 Conclusion
“Agile” has associated values but no concrete meaning: It’s a philosophy and there’s not just one
way to follow it. Agile frameworks, such as Scrum, give more concrete guidance on software
development and project management. Scrum is defined by the current version of the Scrum Guide
(Schwaber and Sutherland 2020), which changes frequently.
Additional Resources
Kent Beck (2000). Extreme programming explained: embrace change. addison-wesley profes-
sional
Hewlett Packard Enterprise (2017). “Agile is the new normal: Adopting Agile project manage-
ment”. In: Hewlett Packard Enterprise Development LP
Winston W Royce (1987). “Managing the development of large software systems: concepts and
techniques”. In: Proceedings of the 9th international conference on Software Engineering,
pp. 328–338
Ken Schwaber and Jeff Sutherland (Nov. 2020). “The Scrum Guide”. In: Scrum Alliance
Standish Group International (2015). “The chaos report”. In: United States of America. url:
https://web.archive.org/web/20210325103248/https://www.standishgroup.
com/sample_research_files/CHAOSReport2015-Final.pdf
20 CHAPTER 2. AGILE
Chapter 3
21
22 CHAPTER 3. PROJECT MANAGEMENT & TEAMWORK
• You’re meeting with a client and they say, “Oh I forgot to men-
tion we want this feature, that won’t be a big deal, right?” (af-
fects scope)
• You realize late in the project that, to implement feature A,
you’ll need to implement B, C, and D as well. (affects cost)
• Your team’s estimates were overly optimistic. (affects the time
constraint)
These situations are so common that you can assume they’re go-
ing to happen and come up with a mitigation plan even before the mitigation plan: What you will
project starts. But many situations are more complicated (more fac- do if a contingency happens.
tors with more interrelationships), more unique to your context, and
have factors that leak from your professional life to your personal life.
Examples:
other constraints.
• This model only goes so far. Don’t, for example, get caught
up with trying to keep the area or perimeter of the triangle
The triple constraint triangle constant.
(a.k.a. project management tri-
angle) is sometimes shown with
each vertex labelled instead of
each edge. However, that triangle
isn’t as useful for imagining the
impact of your project decisions.
If you want your project to take less time, you might have to tol-
erate it costing more or having a reduced scope.
The rest of this section will discuss specific methods a team can
use to improve communication. Consider where each might fit in to
these stages (there’s not just one answer).
Frontend Developers
Backend Developers
Frontend Designers
Frontend Lead
Backend Lead
Team Lead
Phase 1: MVP
Focus groups C R R/A C C R/A
Requirements spec. R R A/I R A/I C
Throwaway code design I R A I
Implementation R C A R A C
User acceptance testing R R R/A R C C
whether I’m achieving balance? How does this fit into how the project
is run? One method for more concretely stating the desired balance
is the project priority matrix: project priority matrix: 3x3
grid for documenting how to re-
Time Cost Scope spond when there are potential
Constrain changes to a project’s time, cost,
Enhance or scope. Options: Only positive
Accept change allowed (constrain), neg-
ative change allowed (accept), or
• Constrain: The constraint is fixed (can get better but must not positive change sought (enhance).
get worse) ..............................
• Enhance: Try to improve (e.g., take less time, spend less, have
more features) “I have two kinds of problems, the
• Accept: Can worsen (e.g., more time, more personnel, fewer urgent and the important. The ur-
features) if necessary gent are not important, and the
For example, if you have a grant from the National Institutes of important are never urgent.” –
Health (NIH) to write and test software for a medical device that Dwight D. Eisenhower
automatically regulates a person’s pain level, your project priority ..............................
matrix might look like this:
Extreme Programming (XP):
Time Cost Scope Agile framework that prioritiz-
Constrain ing customer satisfaction and
Enhance communication, short develop-
ment cycles, iteration, frequent
Accept
releases, code review, teamwork,
Scope: Fixed. Your team must do what they said they’d do, and pair programming, required unit
cannot scrimp on quality. If the device only partially works, that testing, and only implementing
would be a disaster—you’ll be testing it on human subjects! Cost: functionality that’s needed.
Needs to be tightly controlled because the grant is for a fixed amount ..............................
and funded by taxpayers. Time: While hopefully the project stays Scrum: An Agile framework “for
on track and delivers as promised, if needed your team can submit developing and sustaining com-
intermediate results to the NIH and (hopefully) use those results to plex products.” (Schwaber and
get another grant. Sutherland 2020)
Ideally, the project priority matrix would be defined before the
project starts (with the client) and referenced throughout the project
as needed. Developing and adhering to the matrix can reduce risk by
helping the team or project manager balance constraints in ways that
are acceptable to the client.
Note that, even though Task 2 must happen before Task 4, it’s not
listed as a predecessor because it’s not an immediate predecessor.
Depending on the software you choose for creating your project
network, you might have access to more complex options like specific
dates by which individual tasks must be completed.
3.6 Conclusion
Project management and teamwork can reduce the risk of a project
failing and make it possible to complete larger projects. Part of good
project management is balancing time, scope, and cost.
36 CHAPTER 3. PROJECT MANAGEMENT & TEAMWORK
Kevin Brennan et al. (2009). A Guide to the Business Analysis Body of Knowledger. Iiba
Karen A Brown, Nancy Lea Hyer, and Richard Ettenson (2013). “The question every project team
should answer”. In: MIT Sloan Management Review 55.1, p. 49
Shawn Belling (2020). “Agile Values and Practices”. In: Succeeding with Agile Hybrids. Springer,
pp. 47–61
Gayle Cotton (2013). “Gestures to avoid in cross-cultural business: In other words,‘Keep your
fingers to yourself!’” In: The Huffington Post. Avaiable at:< http://www. huffingtonpost.
com/gayle-cotton/cross-cultural-gestures_b_3437653. html>(retrieved July 7, 2017)
A Fletcher (2002). “FireStarter youth power curriculum: Participant guidebook”. In: Olympia,
WA: Freechild Project
Jarett Hailes (2014). Business Analysis Based on BABOK® Guide Version 2–A Pocket Guide. Van
Haren
Brian Hambling and Pauline Van Goethem (2013). “User acceptance testing: a step-by-step
guide”. In: BCS
Andrea R Hulshult and Timothy C Krehbiel (2019). “Using Eight Agile Practices in an Online
Course to Improve Student Learning and Team Project Quality.” In: Journal of Higher Edu-
cation Theory & Practice 19.3
J Mike Jacka and Paulette J Keller (2009). Business process mapping: improving customer satis-
faction. John Wiley & Sons
Erik Larson and Clifford Gray (2018). Project management: The managerial process. Irwin/McGraw-
Hill
Viljan Mahnič and Tomaž Hovelja (2012). “On using planning poker for estimating user stories”.
In: Journal of Systems and Software 85.9, pp. 2086–2095
Debbie Thorne McAlister (2006). “The project management plan: Improving team process and
performance”. In: Marketing Education Review 16.1, pp. 97–103
Andy Stuart (2014). “Ground rules for a high performing team”. In: Paper presented at PMI®Global
Congress 2014—North America, Phoenix, AZ. Newtown Square, PA: Project Management
Institute. Pp. 328–338
Bruce W Tuckman (1965). “Developmental sequence in small groups.” In: Psychological bulletin
63.6, p. 384
Bruce W Tuckman and Mary Ann C Jensen (1977). “Stages of small-group development revis-
ited”. In: Group & Organization Studies 2.4, pp. 419–427
Jasim MohJasim Mohamed Lahdan Fhadel Al Qubaisi et al. (2015). “Leadership, culture and
team communication: analysis of project success causality-a UAE case”. In: International
Journal of Applied Management Science 7.3, pp. 223–243
Muhammad Usman et al. (2014). “Effort estimation in agile software development: a systematic
literature review”. In: Proceedings of the 10th international conference on predictive models
in software engineering, pp. 82–91
C Jurie Van Wyngaard, Jan-Harm C Pretorius, and Leon Pretorius (2012). “Theory of the triple
constraint—A conceptual review”. In: 2012 IEEE International Conference on Industrial
Engineering and Engineering Management. IEEE, pp. 1991–1997
Li-Ren Yang, Chung-Fah Huang, and Kun-Shan Wu (2011). “The association among project man-
ager’s leadership style, teamwork and project success”. In: International journal of project
management 29.3, pp. 258–267
38 CHAPTER 3. PROJECT MANAGEMENT & TEAMWORK
Chapter 4
Requirements
A software requirement is a rule the software must conform to: requirement: A rule the software
What it must do, how well, and within what constraints or limits. must conform to: What the soft-
ware must to, how well it must do
what it does, or the software’s lim-
4.1 Types of Requirements itations or constraints.
..............................
There are two types of requirements:
non-functional requirement:
1. Non-functional requirements specify qualities the software Description of how well software
should have (e.g., usable, portable, modular, etc.). They an- is expected to perform.
swer the questions, “How well should the software perform?” ..............................
and “What limits or constraints is the software subject to?”
functional requirement: De-
This chapter includes a discussion of how quality attributes
scription of what functionality the
can be used in specifying non-functional requirements.
software needs to have.
quality attribute: A characteris-
39
tic of software used to describe
how good it is.
40 CHAPTER 4. REQUIREMENTS
4.8 Conclusion
Gathering and writing down requirements for a project can help with keeping the project on track
and communicating about the project to others. Doing requirements well can save a project from
failing.
Roger Atkinson (1999). “Project management: cost, time and quality, two best guesses and a
phenomenon, its time to accept other success criteria”. eng. In: International journal of
project management 17.6, pp. 337–342. issn: 0263-7863
Carol M. Barnum (2020). Usability Testing Essentials: Ready, Set...Test! 2nd ed. Morgan Kauf-
mann
Mike Cohn (n.d.). User Stories and User Story Examples. https://web.archive.org/web/
20201124004807/https://www.mountaingoatsoftware.com/agile/user-stories
Martin Fowler (2004). UML distilled : a brief guide to the standard object modeling language.
Boston
Clifford Odimegwu (July 2000). “Methodological Issues in the Use of Focus Group Discussion
as a Data Collection Tool”. In: Journal of Social Sciences 4, pp. 207–212. doi: 10.1080/
09718923.2000.11892269
Dan Olsen (2015). The lean product playbook : how to innovate with minimum viable products
and rapid customer feedback. Hoboken: Wiley. isbn: 9781118961025
Rebecca Parsons (June 2003). “Components and the world of chaos”. In: Software, IEEE 20,
pp. 83–85. doi: 10.1109/MS.2003.1196326
Bill Wake (Aug. 2003). INVEST in Good Stories, and SMART Tasks. https://xp123.com/
articles/invest-in-good-stories-and-smart-tasks/. Accessed: 2020-12-31
Chapter 5
Martin Fowler
5.1 How Diagrams Help UML Distilled (3rd Ed.)
51
52 CHAPTER 5. UML DIAGRAMS
class diagram: Visualization of 2. They can help you describe software you’ve already created.
how classes are built in relation
If your software is already created, diagrams are good for doc-
to other classes in object-oriented
umentation and, as mentioned above, for evaluating how satis-
software. Includes properties and
factory your software is. The purpose of including diagrams in
methods of individual classes and
documentation is to communicate something about your soft-
“has a” and “is a” relationships be-
ware to somebody. There are many different audiences you
tween classes.
could be trying to communicate with.
..............................
sequence diagram: Interaction Example audiences for your diagrams: Other developers on the
diagram showing how different project, your supervisor or manager, developers who might be inter-
participants (e.g., users, software ested in joining the team, developers who want to integrate with your
components, classes, etc.) collab- system, curious end users, and students of software engineering.
orate during a single use case.
Depending on the IDE/tools you’re using, diagrams can be auto-
..............................
matically generated from your code, which helps make documenta-
tion maintenance easier and more likely to happen.
Audiences often have short atten-
tion spans.
..............................
5.2 What Diagrams Must Do Well
IDE: Integrated development en-
vironment. Software specifically To be helpful, diagrams must communicate clearly and at an appro-
for creating software. priate level of detail for your intended audience. If your intended
audience does not understand your diagram—or misunderstands it—
your diagram has failed.
• UML diagrams give you a way to tell people about your soft-
ware’s structure without asking them to look through code.
This is nice, for example, when onboarding new developers or
communicating with managers.
54 CHAPTER 5. UML DIAGRAMS
• People tend to vary their UML notation, which can cause confusion. Tips for avoiding that
problem: (1) Keep your notation basic and (2) explain more complex notation usage to the
people you’re trying to communicate with.
• Trying to get the UML notation details right can take a lot of time. Remember that diagrams
are for communicating; If creating the diagram takes longer than explaining the code a dif-
ferent way, the diagram isn’t helping.
• UML diagrams can require a lot of maintenance. If your software design changes fre-
quently, so must your UML diagrams if you want them to be accurate. Fortunately, some
IDEs can generate some UML diagrams from your code.
This class diagram shows the relationships between three classes: Customer, Order, and Share-
dOrder. An Order has one Customer—but the same Customer can be on multiple Orders. A Share-
dOrder is a type of Order that can have multiple Customers. The classes have “attributes” (e.g., id)
and “operations” (e.g., getId()).
The next page explains each of the notational elements shown in the example. Class diagram
notations gets more complicated than is described here; see publications in Additional Resources.
5.6. CLASS DIAGRAMS 55
5.8 Conclusion
UML diagrams can be helpful for communicating how your code works. Class diagrams and se-
quence diagrams are two common-used types of UML diagrams. Each type of diagram emphasizes
some part of the code design while leaving out other parts. This is because UML diagrams are for
communicating with humans—not computers.
Martin Fowler, Kendall Scott, et al. (2003). UML distilled: a brief guide to the standard object
Chapter 6
59
60 CHAPTER 6. MONOLITH VS. MICROSERVICES
communication pipes. While microservices communication pipes are less complex, that means
the endpoints need to be smarter. Also, communication over a network can be less reliable.
6.4 Conclusion
The microservices architecture has advantage of being modular, where each service can be independently-
managed. Communication mechanisms between modules can be standardized. However, creating
6.5. ADDITIONAL RESOURCES 65
a monolith can require less planning ahead of time and modules within a monolith can commu-
nicate directly, which can be more reliable, less expensive, and provide better consistency than
communicating to many pieces of software through a network.
IBM Cloud Education (Apr. 2021a). ESB (Enterprise Service Bus). https://www.ibm.com/
cloud/learn/esb
Vaughan Michell (2011). “A focussed approach to business capability”. In: First International
Symposium on Business Modelling and Software Design–BMSD, pp. 105–113
Sam Newman (2015). Building microservices: designing fine-grained systems. O’Reilly Media,
Inc.
66 CHAPTER 6. MONOLITH VS. MICROSERVICES
Chapter 7
Paper Prototyping
67
68 CHAPTER 7. PAPER PROTOTYPING
to show how UI elements may move. I’ve even seen people use brass
brads for spinnable elements. But keep in mind that, if your client
doesn’t like your design, you might have saved time and communi-
cated your concept just as well with a less elaborate paper prototype.
7.3 Conclusion
Paper prototyping can help reduce project costs by giving a way to detect user interface design
flaws before they are implemented. It can also help teams communicate about the software with
each other, clients, and users.
Don Norman (2013). The Design of Everyday Things: Revised and Expanded Edition. eng. Rev.
and expanded ed. Boulder: Basic Books. isbn: 9780465050659
Carolyn Snyder (2003). Paper Prototyping: The Fast and Easy Way to Design and Refine User
Interfaces. eng. The Morgan Kaufmann series in interactive technologies. Kidlington: El-
sevier Science & Technology. isbn: 9781558608702. url: https://web.archive.org/
web/20140628171628/http://www.paperprototyping.com/
72 CHAPTER 7. PAPER PROTOTYPING
Chapter 8
The Cognitive Style Heuristics (CSH) are eight principles of inter- Cognitive Style Heuristics
action design used to improve software usability. They are framed (CSH): Eight principles of in-
around how different people use software in different ways. The CSH teraction design for finding and
were created by a research team headed by Margaret Burnett, one of fixing usability bugs in software.
the world’s leading experts in usability research and inclusive soft- They are based around different
ware design. cognitive styles different people
use when they problem-solve in
The CSH were created with new users in mind: People who have software.
never seen, interacted with, or received previous direction on the soft- ..............................
ware. They can also improve usability for more seasoned users who
have figured out how to use the software to complete their tasks but interaction design: An approach
may still be unhappy with the software. to technology design that involves
helping users understand what’s
73 happening with the technology,
what just happened, and what they
can do (Norman 2013).
74 CHAPTER 8. COGNITIVE STYLE HEURISTICS
Abi (Abigail/Abishek)
Pat (Patricia/Patrick)
Tim (Timara/Timothy)
Motivation: Likes learning all the available functionality on all their devices
Computer self-efficacy: High confidence in technical abilities. If a problem can’t be fixed,
blame goes to software vendor.
Attitude toward risk: Doesn’t mind taking risk using features of technology
Information processing style: Selective
Learning style: Likes tinkering and exploring
8.3. THE HEURISTICS 77
Note: The designs shown below were modelled after examples found in published software.
8.3.1 Heuristic #1 (of 8): Explain the benefits of using new and existing fea-
tures
• Abi and Pat are task-motivated so might lose interest if they don’t see how a feature relates
to their task.
• Abi is risk-averse so might avoid features with too many unknowns.
• Tim is risk-tolerant and motivated by tech interest so might take a chance on features then
be disappointed at how mundane they are.
To support users’ motivations and attitudes toward risk, provide Abi and Pat ways to decide
whether a feature relates to their task and provide Tim ways to decide whether a feature
is new and unique.
Example 1: Each featured extension has a brief description that says what the extension does
and why somebody would use it.
Example 2: Announcement briefly describes a new feature and how to use it.
Example 4: Each tile explains a feature and the benefit of using the feature.
8.3.2 Heuristic #2 (of 8): Explain the costs of using new and existing features
• Abi and Pat are risk-averse, so they may want to avoid features with high effort costs if the
benefits of using these features are unclear.
• Tim is risk-tolerant, so may begin using features that require extra effort and time, and that
are unrelated to the task at hand.
To support their attitudes toward risk, allow Abi and Pat to decide whether or not a feature will
require too much effort to use. To help Tim stay on track with their task, allow them to understand
that a feature may take extra effort, and thus more time.
Example 1: Placing “Advanced Options” at the bottom of the menu indicates to the user that
“advanced” features may take more effort.
8.3. THE HEURISTICS 79
Example 2: The dialog indicates that “cor launcher” will be needed to “associate files with
Coral” and that the user will need write permissions for the installation folder.
8.3.3 Heuristic #3 (of 8): Let people gather as much information as they
want, and no more than they want
• Abi and Pat gather and read relevant information comprehensively before acting.
• Tim likes to delve into the first option and pursue it, backtracking if need be.
To support their information processing styles, allow Abi and Pat to easily obtain as much informa-
tion they want, but don’t require them to spend excessive time or effort gathering that information.
Allow Tim to get to directly useful information immediately so that they can act upon it without
wading through a lot of information they don’t want.
Example 1: Users can choose to view code documentation while still viewing their code.
80 CHAPTER 8. COGNITIVE STYLE HEURISTICS
Example 2: Users can quickly see the contents of the webpage and jump to the section they’re
interested in.
Example 1: Although the “following” page is gone, the new update looks similar to the previ-
ous version so that users are still familiar with the app.
8.3. THE HEURISTICS 81
Example 2: The smartphone and tablet versions of this app offer the same features which
makes switching between the two easy.
Example 1: Browser back/forward buttons allow users to backtrack through their browsing
history.
Example 2: An undo button allow users to make and recover from mistakes. Also, version
control systems allow users to revert to any previously-committed code state.
8.3.6 Heuristic #6 (of 8): Provide an explicit path through the task
• Abi is a process-oriented learner, so prefers to proceed through tasks step-by-step.
• Tim and Pat learn by tinkering, and therefore prefer not to be constrained by rigid, pre-
determined processes.
To support their learning styles, explicitly provide Abi a clear process to go through the task, and
provide Tim and Pat a way to bypass step-by-step processes and tutorials if those are not required
for learning the technology.
Example 1: Users can choose their entry point, and each path is explained.
8.3. THE HEURISTICS 83
Example 2: Users get to choose either the path of learning more about the new feature or
going back to what they were doing.
8.3.7 Heuristic #7 (of 8): Provide ways to try out different approaches
• Abi has lower computer self-efficacy than Tim, so if a problem arises when they are trying
to use technology, Abi blames themself and stops using the tech.
• Pat has medium self-efficacy with technology, so if a problem arises when they are trying to
use technology, Pat will try alternative ways of succeeding for a while.
• Tim has higher computer self-efficacy than Abi, so if a problem arises when they are trying to
use technology, they’ll blame the tech, and then will try numerous workarounds to get around
the problem.
To support their computer self-efficacies, point Abi toward a different approach when they feel
unable to proceed with the current one. This will also point Tim and Pat to multiple ways they can
try to solve the problem.
Example 1: If users don’t find what they need on the “Choose a Question” drop-down menu,
they can try the chat.
84 CHAPTER 8. COGNITIVE STYLE HEURISTICS
Example 2: If users encounter a problem using the SecureChat UI, they can attempt the same
operations using the command line interface.
Example 1: This design encourages users to tinker mindfully by showing they will notify them
before impactful actions are executed, like emailing 237 people.
8.3. THE HEURISTICS 85
Example 2: This design encourages users to try out new “slash” commands by showing all
the commands when a user types “/”, and explaining what each does and how to use it.
86 CHAPTER 8. COGNITIVE STYLE HEURISTICS
8.4 Background
heuristic evaluation: A usabil-
ity inspection method where eval- The Cognitive Style Heuristics are meant to be used in a heuris-
uators independently check that a tic evaluation, a process where software designers or evaluators go
design reflects a set of heuristics, through heuristics one-by-one like a checklist, deciding whether the
then compare results (Nielsen and design does or does not reflect the heuristic. The evaluation is done
Molich 1990). independently by two or more people, who then compare findings.
.............................. The Cognitive Style Heuristics are derived from the GenderMag
Heuristics (Burnett, Sarma, Hilderbrand, Steine-Hanson, Mendez,
The cognitive style personas are and Perdriau 2018) and the GenderMag Method (Burnett, Stumpf,
simplified versions of the Gender- et al. 2016). The GenderMag Method is a process for finding and
Mag personas. You can find the fixing gender-inclusivity bugs in software. Instead of heuristic eval-
the GenderMag personas, and a uation, it uses a cognitive walkthrough. It uses the same personas:
full description of their research Abi, Pat, and Tim. However, in addition to their cognitive styles,
origins, at GenderMag.org each GenderMag persona has additional sections, such as one with
.............................. customizable background information.
GenderMag Method: A method What do cognitive styles have to do with gender? Software tends
for finding and fixing gender- to be biased against the cognitive styles often favored by women. De-
inclusivity bugs in software that signing with cognitive styles in mind can make software less gender-
uses a specialized cognitive walk- biased (Vorvoreanu et al. 2019).
through and the customizable Abi, In addition, “designing software so that it works for diverse pop-
Pat, and Tim personas (Burnett, ulations matters to software companies’ profitability, to equity in the
Stumpf, et al. 2016) workplace and at home, and to anyone in a situation that changes the
.............................. way they think, such as when under deadline pressure.”(Mendez et
al. 2019)
cognitive walkthrough: A us-
ability inspection method that in-
volves stepping through a user in- 8.5 Conclusion
terface as a user, stopping to ask
specific questions about the user’s The Cognitive Style Heuristics are a set a eight software usability
experience (Nielsen and Mack heuristics for evaluating and improving the usability of UIs across
1994). users with different cognitive styles.
8.6. ADDITIONAL RESOURCES 87
Charles G Hill et al. (2017). “Gender-Inclusiveness Personas vs. Stereotyping: Can we have it
both ways?” In: Proceedings of the 2017 chi conference on human factors in computing
systems, pp. 6658–6671
Margaret Burnett, Anita Sarma, Claudia Hilderbrand, Zoe Steine-Hanson, Christopher Mendez,
and Christopher Perdriau (July 2018). The GenderMag Heuristics (Beta Version). https:
//gendermag.org/flyers_handouts.php
Bella Martin (2012). Universal methods of design : 100 ways to research complex problems,
develop innovative ideas, and design effective solutions. Digital ed. Beverly, MA: Rockport
Publishers. isbn: 9781610581998
Jakob Nielsen and Rolf Molich (1990). “Heuristic Evaluation of User Interfaces”. In: IN: PRO-
CEEDINGS OF THE CHI´90 CONFERENCE, SEATTLE. S, pp. 249–256
Jakob Nielsen and Robert L. Mack (1994). Usability inspection methods. New York
Don Norman (2013). The Design of Everyday Things: Revised and Expanded Edition. eng. Rev.
and expanded ed. Boulder: Basic Books. isbn: 9780465050659
John Pruitt (2010). The essential persona lifecycle : your guide to building and using personas.
San Francisco, Calif. : Oxford: Morgan Kaufmann ; Elsevier Science [distributor]. isbn:
9780123814180
Mihaela Vorvoreanu et al. (2019). “From Gender Biases to Gender-Inclusive Design: An Em-
pirical Investigation”. In: Proceedings of the 2019 CHI Conference on Human Factors in
Computing Systems. CHI ’19. Glasgow, Scotland Uk: Association for Computing Machin-
ery, pp. 1–14. isbn: 9781450359702. doi: 10.1145/3290605.3300283. url: https:
//doi.org/10.1145/3290605.3300283
88 CHAPTER 8. COGNITIVE STYLE HEURISTICS
Chapter 9
Code smells are aspects of code that indicate the code needs to
be reorganized—signs your software is decaying. Your code might code smell: Aspect of code that
need attention if you’re having thoughts like these: indicates the code is of poor qual-
• “I would never show this code during an interview.” ity (e.g., has detriments to read-
• “I’m going to start over and re-write this code from scratch.” ability and maintainability).
• “Every time I look at this code, I have to re-figure-out what it ..............................
does.”
code decay (AKA software rot):
• “I don’t think these code comments match what the code is
Reduction of code quality over
doing...”
time. Can result in decreased
• “Why is this code repeated in three different places?”
maintainability, more bugs, and ir-
• “I want to switch out this component, but that’ll break X, Y,
retrievable failure.
and Z in this other place and I don’t want to deal with that.”
89
90 CHAPTER 9. CODE SMELLS AND REFACTORING
• Smelly code leads to smellier code. When you let your code
become disorganized, you are giving yourself and others the
message that smelly code is acceptable. Disorganized code
also tends to give us an excuse to be lazy coders. A web de-
velopment example: If you’ve used CSS, you may have en-
countered frustrating situations where the style you’re trying
to apply is not working—somewhere in the code (e.g., other
CSS, HTML, or JS), your style is being overridden. Instead
of tracking down the competing code or markup, you use the
“!important” property which forces the style to be applied. The
If you think it’s more fun to write codebase is a mess anyway, so who cares? Your future self.
code than organize code, you may
need to be strict with yourself • Smelly code builds up technical debt. If the code is working,
about using good programming there’s never a reason to change it, right? Wrong. Each time
practices. you write sloppy code, you are contributing to your project’s
technical debt. Maybe it works now but, as sloppy software
grows, it will get more difficult to deal with. That can mean
your company needing to hire more developers to keep produc-
tivity up. Instead, productivity can go down because now the
old developers are struggling to teach the new developers and
everyone is continuing to write sloppy code. Ultimately, the
software may have to be redeveloped entirely (which doesn’t
always solve the problem). Or, the project could fail.
9.2. YOUR CODE STINKS, NOW WHAT? 91
9.4 Functions
If you’re only writing a short pro-
A natural way to code is to start writing a function and then, as the gram, does coding style matter?
program gets more complicated, keep adding to it. For example, if Treating code as disposable is a
your program’s GUI only has a start and a stop button, the function self-fulfilling prophecy.
for populating the screen with UI elements need only draw those two
buttons. Then, when you add a menu and a settings button, you could
update the function to draw those elements, too. Then you add user
accounts and decide that function is a fine place to check if the user
is logged in, their level of inactivity, show a pop-up about cool new
features... and your function balloons. Understanding the small de-
tails of how the function works can even make one feel proud—until
the code becomes unmaintainable and bug-ridden.
• Function with Many Jobs (doing more than what its name
suggests, doing things that aren’t closely related, doing many
things)
Break into multiple functions.
1 # BEFORE
2 def updateGUI () :
3 updateTime ()
4 upd ateTim eDispl ay ()
5 updateScores ()
6 up da te Sc or eD is pl ay ()
7 refreshWindow ()
8
94 CHAPTER 9. CODE SMELLS AND REFACTORING
9 # AFTER
10 def updateState () :
11 updateTime ()
12 updateScores ()
13
14 def updateGUI () :
15 upd ateTim eDispl ay ()
16 up da te Sc or eD is pl ay ()
17 refreshWindow ()
9.5 Code
Code smells should not be refac-
tored blindly. Always consider Code gets messy fast if you’re not paying attention. One reason is
how your changes might affect because many of us weren’t trained to be neat with code when we first
the rest of your software; living learned it. To write tidy code, you may have to frequently stop and
with smells is sometimes the wiser think about its design, or be strict with yourself about refactoring
choice. regularly. Over time, you might adopt better habits.
5 else
6 setLevelOfAlarm (500)
7 react ( npc )
8
9 def react ( npc ) :
10 if ( npc . isWalking () && npc . isAlive () &&
npc . isFriendly () )
11 keepWalking ()
12 else
13 runAway ()
14
15 # AFTER
16 def react ( npc ) :
17 if ( npc . isHarmless () )
18 setLevelOfAlarm (0)
19 keepWalking ()
20 else
21 setLevelOfAlarm (500)
22 runAway ()
23
3 a c t i v a t e A u d i o R e c o r d i n g D e v i c e () ;
4 } else {
5 r e c o r d i n g _ d e v i c e _ o f f _ c o n f i r m a t i o n _ c h e c k () ;
6 }
7
8 if ( starfish . blockingCamera )
9 {
10 AirCannon . Spray ( camera . coordinates ) ;
11 }
12
13 # AFTER
14 if ( Whale . isSinging ) {
15 a c t i v a t e A u d i o R e c o r d i n g D e v i c e () ;
16 } else {
17 c o n f i r m R e c o r d i n g D e v i c e O f f () ;
18 }
19
20 if ( Starfish . isBlockingCamera ) {
21 AirCannon . spray ( Camera . coordinates ) ;
22 }
9.6 Conclusion
Cleaning up your code can help make your software sustainable and extensible and can make your
teammates happier too.
Conclusion
I hope you’re now better equipped for your next software project. Updated versions of this book
will be available at https://github.com/setextbook
99
100 CHAPTER 10. CONCLUSION
Glossary
A
acceptance criterion: A statement about functionality that, when satisfied, mean the functionality
has been satisfactorily implemented.
Agile: A software process model and philosophy for managing and developing software projects.
Agile values: Individuals and interactions, working software, customer collaboration, and respond-
ing to change.
attitude toward risk CSF: How willing a person is to take chances in software (risk-tolerant vs.
risk-averse)
B
business capability: “the potential of a business resource (or groups of resources) to produce
customer value by acting on their environment via a process using other tangible and intangible
resources” (Michell 2011)
101
102 GLOSSARY
C
class diagram: Visualization of how classes are built in relation to other classes in object-oriented
software. Includes properties and methods of individual classes and “has a” and “is a” relationships
between classes.
client (a.k.a. customer): One or more people or organizations who are requesting the software be
made and have decision-making authority about the software (e.g., because they are paying for it
or otherwise providing resources).
client-server architecture: Overall code design characterized by one component (the server) re-
sponding to requests and providing resources while other components (clients) request those re-
sources.
code decay (AKA software rot): Reduction of code quality over time. Can result in decreased
maintainability, more bugs, and irretrievable failure.
code smell: Aspect of code that indicates the code is of poor quality (e.g., has detriments to read-
ability and maintainability).
cognitive style facets (CSFs): Five aspects of users that affect how they solve problems in soft-
ware: Motivations, information processing style, computer self-efficacy, attitude toward risk, learn-
ing style
cognitive style facet value (A.K.A., cognitive style): A position on the spectrum of a cognitive
style facet
Cognitive Style Heuristics (CSH): Eight principles of interaction design for finding and fixing
usability bugs in software. They are based around different cognitive styles different people use
when they problem-solve in software.
cognitive style personas: Three specialized personas (Abi, Pat, and Tim) used for making software
UI designs more usable to people with different cognitive styles.
cognitive walkthrough: A usability inspection method that involves stepping through a user in-
terface as a user, stopping to ask specific questions about the user’s experience (Nielsen and Mack
1994).
component: Within a codebase, a unit of the code containing related functionality. Ideally, is both
replaceable and reusable.
computer self-efficacy CSF: A person’s confidence in their ability to use computers or software
(low vs. high)
contingency: A future event or circumstance that may occur but depends on known and unknown
103
D
Definition of Done (DoD): The set of acceptance criteria which, once satisfied, mean a user story
has been satisfactorily implemented.
E
Eisenhower matrix: 2x2 grid for helping decide whether to do, delegate, schedule, or eliminate a
task based on its urgency and importance.
encapsulation: In object-oriented programming, (1) combining data and the methods that act upon
that data into one unit of code or (2) preventing external direct access to data within a unit of code.
estimation: Figuring out ahead of time how long a task is likely to take.
eventual consistency: Characteristic of software systems where different parts of the system can
have less up-to-date information (e.g., state, data) than other parts but the inconsistencies are tem-
porary.
Extreme Programming (XP): Agile framework that prioritizing customer satisfaction and com-
munication, short development cycles, iteration, frequent releases, code review, teamwork, pair
programming, required unit testing, and only implementing functionality that’s needed.
F
fist of five: A method for gauging and building group consensus that uses a 6-level voting system
(zero to five fingers).
focus group (in usability engineering): A moderated discussion between researcher and a small
number of potential users (usually 6-12) during which the researcher tries to gather information
about the participants’ attitudes, opinions, motivations, concerns, and problems related to a spe-
cific product or topic.(Odimegwu 2000)
G
Gantt chart: Horizontal bar chart showing start and end times of activities within a project sched-
ule, along a timeline.
GenderMag Method: A method for finding and fixing gender-inclusivity bugs in software that
uses a specialized cognitive walkthrough and the customizable Abi, Pat, and Tim personas (Bur-
nett, Stumpf, et al. 2016)
graphical user interface (GUI): A user interface with interactive graphics, in contrast to a text-
based user interface.
ground rules: A set of statements about the team, agreed to by each team member, for avoiding
team conflict and dysfunction.
H
heuristic evaluation: A usability inspection method where evaluators independently check that a
design reflects a set of heuristics, then compare results (Nielsen and Molich 1990).
high-fidelity prototype: A polished illustration that looks like a finished, publishable user inter-
face design (especially a GUI). Almost always digital.
high-level architecture: Abstract representation of overall code design; covers all parts of the
software.
I
IDE: Integrated development environment. Software specifically for creating software.
ideal days: The number of days it would take to complete the work if the work could be 100%
focused on.
inclusive software design: A type of software user interface design with the goal of increasing
usability for traditionally under-served user populations while also increasing usability for main-
stream users.
interaction design: An approach to technology design that involves helping users understand
what’s happening with the technology, what just happened, and what they can do (Norman 2013).
105
INVEST: Characteristics of good user stories (independent, negotiable, valuable, estimable, small,
testable) (Wake 2003).
iteration: Verb: Revision. Noun (in Agile): A time-boxed software development cycle.
iteration plan: In Agile, establishing what will be done during a development cycle.
L
learning style CSF: How a person prefers to move through software (tinkering vs. by process)
low-fidelity prototype: A rough sketch of a user interface design (especially a GUI). Can be hand-
drawn or digital.
M
maintenance: Development activities that improve software but that are unrelated to implementing
new features (e.g., correcting bugs, improving organization of code, etc.).
managerial skill mix (MSM): Three categories of skills used by managers: (1) interpersonal, (2)
technical, (3) administrative/conceptual.
medium-fidelity prototype: A careful and detailed illustration of a user interface design (espe-
cially a GUI). Can be hand-drawn, but digital is more common.
monolith architecture: Overall code design characterized by being in one or few pieces; cannot
be easily divided into components that run separately and are independently useful.
motivation CSF: Why someone is using the software (task completion vs. interest)
minimum viable product (MVP): A low-effort or low-expense effort that results in you being
able to better estimate whether people will want to use your product—before the product is fully
developed.(Olsen 2015)
106 GLOSSARY
N
non-functional requirement: Description of how well software is expected to perform.
P
paper prototype: A hand-drawn sketch used to communicate a potential user interface design to
be implemented, especially a graphical user interface design (Snyder 2003).
persona: A fictional character that represents a subset of users in a target audience. Personas are
used in marketing and UI design to help with focusing on particular groups of users and customers
(Pruitt 2010; B. Martin 2012).
planning poker: In Agile, a consensus-based method of assigning estimates to a task that involves
individuals on a team each making their own estimate privately, then sharing with the team, dis-
cussing, and re-estimating as needed.
Product Backlog: In Agile Scrum, an ordered list of all that is known to be needed to improve a
product.
project management: The process of planning and executing a project while balancing the time,
cost, and scope constraints.
project management system: Software for planning, organizing, and otherwise carrying out a
project.
project network: Graph showing the order in which a project’s activities are to be completed.
project priority matrix: 3x3 grid for documenting how to respond when there are potential changes
to a project’s time, cost, or scope. Options: Only positive change allowed (constrain), negative
change allowed (accept), or positive change sought (enhance).
Q
quality attribute: A characteristic of software used to describe how good it is.
R
RACI matrix: In project management, a chart for defining which roles are responsible (R) and
accountable (A) for a task or deliverable and which roles should be consulted (C) or informed (I)
about the status of the task or deliverable.
107
refactoring: Improving code design without changing what the code does.
release plan: What will be completed for a specific software release and when the release will occur.
requirement: A rule the software must conform to: What the software must to, how well it must
do what it does, or the software’s limitations or constraints.
risk: Estimated probability of a negative contingency given known and unknown factors.
S
sequence diagram: Interaction diagram showing how different participants (e.g., users, software
components, classes, etc.) collaborate during a single use case.
scheduling: Deciding when project activities are to be completed, how long they will take, and
what resources are needed to complete them.
Scrum: An Agile framework “for developing and sustaining complex products.” (Schwaber and
Sutherland 2020)
software development lifecycle (SDLC): Phases through which a software’s development pro-
ceeds: requirements, design, implementation, testing, maintenance.
software architecture: Code design. Can be shown at different levels of abstraction and detail.
software engineering: The art and science of using different methods to efficiently create extensi-
ble, sustainable programs that solve problems people care about.
software process model: A philosophy and/or set of approaches for software development and/or
software project management.
spike: A quick and to-the-point investigation for gathering information to help the team answer a
question or choose a development path.
Sprint Backlog: In Scrum, the set of activities to be completed during a Sprint (from Product
Backlog), the associated Sprint Goal, and a plan for completing the activities.
108 GLOSSARY
stakeholder: Anyone who is or will be affected by the software or its development (e.g., clients,
companies, users, developers, managers, politicians, etc.)
story points: A method for estimating an activity based on its size relative to other activities. Scale
established by team.
sustainability: Degree to which software can continue to function over time (e.g., measured in
time and how well the software is functioning).
T
task management system: Software for planning and organizing project activities.
technical debt: Time and resources you (or someone else) will need to spend on modifying your
software in the future because of the poor decisions you’re making in the present.
tech stack: The set of programming languages, frameworks, and other technologies chosen or
needed for implementing a piece of software.
think-aloud protocol: A method for gathering feedback about the usability of a design that in-
volves a test user speaking their thoughts as they interact with the design (C. Lewis, Rieman, and
Blustein 1993). More information: https://tinyurl.com/think-aloud-protocol
triple constraint: In project management, the three limiting factors that govern project execution:
time, cost, and scope. Scope includes quality. Cost includes spending money and resources.
Tuckman’s model of team development: A five-stage model of how a team develops over time:
(1) forming, (2) storming, (3) norming, (4) performing, (5) adjourning.
U
user acceptance testing (UAT): Formally testing software with end-users to check not only whether
it performs as expected but also whether end-users will use it. Typically performed before the soft-
ware is released.
UML: Unified modeling language: A set of notation and methods for describing and designing
software.
usability testing: Observing people while they try to use your software.(Barnum 2020)
109
use case: “A contract for the behavior of the system under discussion” (Cockburn 2001)
user interface (UI): What a user interacts with to operate a system (e.g., a graphical user interface,
a command-line interface, a virtual or augmented reality interface, etc.).
user story: “Short, simple descriptions of a feature told from the perspective of the person who
desires the new capability, usually a user or customer of the system.” (Cohn n.d.)
V
validation: Confirming that software meets users’ needs (“did we build the right software?”).
verification: Confirming that software satisfied its requirements (“did we build the software right?”).
W
waterfall (software process model): Way of going about software development and management
that is characterized by extensive planning, comprehensive documentation, and moving linearly
through stages of the software development lifecycle (SDLC).
110 GLOSSARY
Bibliography
Alliance, Agile (n.d.). What is “Given - When - Then?” https : / / web . archive . org / web /
20201124202211/https://www.agilealliance.org/glossary/gwt.
Atkinson, Roger (1999). “Project management: cost, time and quality, two best guesses and a phe-
nomenon, its time to accept other success criteria”. eng. In: International journal of project
management 17.6, pp. 337–342. issn: 0263-7863.
Badawy, Michael K (1995). Developing managerial skills in engineers and scientists: Succeeding
as a technical manager. John Wiley & Sons.
Barnum, Carol M. (2020). Usability Testing Essentials: Ready, Set...Test! 2nd ed. Morgan Kauf-
mann.
Beck, Kent (2000). Extreme programming explained: embrace change. addison-wesley profes-
sional.
Belling, Shawn (2020). “Agile Values and Practices”. In: Succeeding with Agile Hybrids. Springer,
pp. 47–61.
Brennan, Kevin et al. (2009). A Guide to the Business Analysis Body of Knowledger. Iiba.
Brown, Karen A, Nancy Lea Hyer, and Richard Ettenson (2013). “The question every project team
should answer”. In: MIT Sloan Management Review 55.1, p. 49.
Burnett, Margaret, Anita Sarma, Claudia Hilderbrand, Zoe Steine-Hanson, Christopher Mendez,
and Christopher Perdriau (July 2018). The GenderMag Heuristics (Beta Version). https://
gendermag.org/flyers_handouts.php.
111
112 BIBLIOGRAPHY
Burnett, Margaret, Anita Sarma, Claudia Hilderbrand, Zoe Steine-Hanson, Christopher Mendez,
Christopher Perdriau, et al. (Mar. 2021). Cognitive Style Heuristics (from the GenderMag Project.
url: %5Curl%7Bhttps://web.archive.org/web/20210804014933/http://gendermag.
org/Docs/Cognitive-Style-Heuristics-from-the-GenderMag-Project-2021-03-
07-1537.pdf%7D.
Burnett, Margaret, Simone Stumpf, et al. (Oct. 2016). “GenderMag: A Method for Evaluating Soft-
ware’s Gender Inclusiveness”. In: Interacting with Computers 28.6, pp. 760–787. issn: 0953-
5438. doi: 10.1093/iwc/iwv046. eprint: https://academic.oup.com/iwc/article-
pdf/28/6/760/7919992/iwv046.pdf. url: https://doi.org/10.1093/iwc/iwv046.
Cockburn, Alistair (2001). Writing effective use cases. Boston.
Cohn, Mike (2005). Agile estimating and planning. Pearson Education.
— (n.d.). User Stories and User Story Examples. https://web.archive.org/web/20201124004807/
https://www.mountaingoatsoftware.com/agile/user-stories.
Cotton, Gayle (2013). “Gestures to avoid in cross-cultural business: In other words,‘Keep your fin-
gers to yourself!’” In: The Huffington Post. Avaiable at:< http://www. huffingtonpost. com/gayle-
cotton/cross-cultural-gestures_b_3437653. html>(retrieved July 7, 2017).
Eaker, Fred (Nov. 2006). Software Requirements Specification for Vyasa. https://web.archive.
org / web / 20161127184329 / http : / / vyasa . sourceforge . net / vyasa _ software _
requirements_specification.pdf.
Education, IBM Cloud (Apr. 2021a). ESB (Enterprise Service Bus). https://www.ibm.com/
cloud/learn/esb.
— (Apr. 2021b). REST APIs. https://www.ibm.com/cloud/learn/rest-apis.
Enterprise, Hewlett Packard (2017). “Agile is the new normal: Adopting Agile project manage-
ment”. In: Hewlett Packard Enterprise Development LP.
Extreme Programming: A Gentle Introduction (n.d.). http://www.extremeprogramming.org/.
Accessed: 2021-01-01.
Fletcher, A (2002). “FireStarter youth power curriculum: Participant guidebook”. In: Olympia, WA:
Freechild Project.
Fowler, Martin (2004). UML distilled : a brief guide to the standard object modeling language.
Boston.
— (May 2011). TolerantReader. https://martinfowler.com/bliki/TolerantReader.html.
— (July 2015). Microservice Trade-Offs. https://martinfowler.com/articles/microservice-
trade-offs.html.
— (2019a). “Agile Software Guide”. In: url: https://web.archive.org/web/20210429215912/
https://martinfowler.com/agile.html.
— (2019b). Refactoring : improving the design of existing code. Boston.
Fowler, Martin and J Lewis (Aug. 2019). Microservices Guide. https://martinfowler.com/
microservices/.
Fowler, Martin, Kendall Scott, et al. (2003). UML distilled: a brief guide to the standard object.
GenderMag.org (n.d.). http://gendermag.org. Accessed: 2020-12-27.
Hailes, Jarett (2014). Business Analysis Based on BABOK® Guide Version 2–A Pocket Guide. Van
Haren.
Hambling, Brian and Pauline Van Goethem (2013). “User acceptance testing: a step-by-step guide”.
In: BCS.
BIBLIOGRAPHY 113
Hill, Charles G et al. (2017). “Gender-Inclusiveness Personas vs. Stereotyping: Can we have it both
ways?” In: Proceedings of the 2017 chi conference on human factors in computing systems,
pp. 6658–6671.
Hulshult, Andrea R and Timothy C Krehbiel (2019). “Using Eight Agile Practices in an Online
Course to Improve Student Learning and Team Project Quality.” In: Journal of Higher Educa-
tion Theory & Practice 19.3.
IBM (n.d.). HTTP Responses. https : / / www . ibm . com / docs / en / cics - ts / 5 . 3 ? topic =
protocol-http-responses. Accessed: 2021-01-01.
International, Standish Group (2015). “The chaos report”. In: United States of America. url: https:
/ / web . archive . org / web / 20210325103248 / https : / / www . standishgroup . com /
sample_research_files/CHAOSReport2015-Final.pdf.
Jacka, J Mike and Paulette J Keller (2009). Business process mapping: improving customer satis-
faction. John Wiley & Sons.
Jr., Thomas Hedberg, Moneer Helu, and Marcus Newrock (Dec. 2017). Software Requirements
Specification to Distribute Manufacturing Data. https://web.archive.org/web/20201208070659/
https://nvlpubs.nist.gov/nistpubs/ams/NIST.AMS.300-2.pdf.
Lab, Inria Innovation (n.d.). Software Requirement Specification for CertiViBE, v1.0. https://
web.archive.org/web/20190710221933/http://openvibe.inria.fr/openvibe/wp-
content/uploads/2018/04/CERT-Software-Requirement-Specification.pdf.
Larson, Erik and Clifford Gray (2018). Project management: The managerial process. Irwin/McGraw-
Hill.
Lewis, Clayton, John Rieman, and Amended J. Blustein (1993). Task-Centered User Interface De-
sign: A practical introduction. A shareware book published by the authors. url: https : / /
web.archive.org/web/20201126014548/http://www.hcibib.org/tcuid/tcuid.pdf.
Lucid (n.d.). What is Fist to Five? https://www.lucidmeetings.com/glossary/fist-five.
Accessed: 2021-01-01.
Mahnič, Viljan and Tomaž Hovelja (2012). “On using planning poker for estimating user stories”.
In: Journal of Systems and Software 85.9, pp. 2086–2095.
Martin, Bella (2012). Universal methods of design : 100 ways to research complex problems, de-
velop innovative ideas, and design effective solutions. Digital ed. Beverly, MA: Rockport Pub-
lishers. isbn: 9781610581998.
Martin, Robert C. (2013). Clean Code.
McAlister, Debbie Thorne (2006). “The project management plan: Improving team process and
performance”. In: Marketing Education Review 16.1, pp. 97–103.
Mendez, Christopher et al. (2019). “From GenderMag to InclusiveMag: An Inclusive Design Meta-
Method”. eng. In:
Michell, Vaughan (2011). “A focussed approach to business capability”. In: First International
Symposium on Business Modelling and Software Design–BMSD, pp. 105–113.
Microsoft (n.d.). The project triangle. https://support.microsoft.com/en-us/office/the-
project-triangle-8c892e06-d761-4d40-8e1f-17b33fdcf810. Accessed: 2021-01-01.
Miles, Russ and Kim Hamilton (2006). Learning UML 2.0: a pragmatic introduction to UML.
O’Reilly Media, Inc.
Network, Mozilla Developer (n.d.). HTTP Messages. https://developer.mozilla.org/en-
US/docs/Web/HTTP/Messages. Accessed: 2021-01-01.
114 BIBLIOGRAPHY
Newman, Sam (2015). Building microservices: designing fine-grained systems. O’Reilly Media,
Inc.
Nielsen, Jakob and Robert L. Mack (1994). Usability inspection methods. New York.
Nielsen, Jakob and Rolf Molich (1990). “Heuristic Evaluation of User Interfaces”. In: IN: PRO-
CEEDINGS OF THE CHI´90 CONFERENCE, SEATTLE. S, pp. 249–256.
Norman, Don (2013). The Design of Everyday Things: Revised and Expanded Edition. eng. Rev.
and expanded ed. Boulder: Basic Books. isbn: 9780465050659.
Odimegwu, Clifford (July 2000). “Methodological Issues in the Use of Focus Group Discussion
as a Data Collection Tool”. In: Journal of Social Sciences 4, pp. 207–212. doi: 10 . 1080 /
09718923.2000.11892269.
Olsen, Dan (2015). The lean product playbook : how to innovate with minimum viable products
and rapid customer feedback. Hoboken: Wiley. isbn: 9781118961025.
Overeem, Barry (2016). Characteristics of a Great Scrum Team.
Parsons, Rebecca (June 2003). “Components and the world of chaos”. In: Software, IEEE 20,
pp. 83–85. doi: 10.1109/MS.2003.1196326.
Pruitt, John (2010). The essential persona lifecycle : your guide to building and using personas. San
Francisco, Calif. : Oxford: Morgan Kaufmann ; Elsevier Science [distributor]. isbn: 9780123814180.
Qubaisi, Jasim MohJasim Mohamed Lahdan Fhadel Al et al. (2015). “Leadership, culture and team
communication: analysis of project success causality-a UAE case”. In: International Journal of
Applied Management Science 7.3, pp. 223–243.
Royce, Winston W (1987). “Managing the development of large software systems: concepts and
techniques”. In: Proceedings of the 9th international conference on Software Engineering, pp. 328–
338.
Schwaber, Ken and Jeff Sutherland (Nov. 2020). “The Scrum Guide”. In: Scrum Alliance.
Shvets, Alexander (2021). Refactoring Guru. Accessed: 2021-01-05. url: https://refactoring.
guru/.
Snyder, Carolyn (2003). Paper Prototyping: The Fast and Easy Way to Design and Refine User
Interfaces. eng. The Morgan Kaufmann series in interactive technologies. Kidlington: Elsevier
Science & Technology. isbn: 9781558608702. url: https : / / web . archive . org / web /
20140628171628/http://www.paperprototyping.com/.
Spyridonos, Ploutarchos (Feb. 2010). Software Requirements Specification for PDF Split and Merge,
Version 2.1.0. https : / / web . archive . org / web / 20170225043950 / http : / / selab .
netlab.uky.edu/%7Eashlee/cs617/project2/PDFSam.pdf.
Stuart, Andy (2014). “Ground rules for a high performing team”. In: Paper presented at PMI®Global
Congress 2014—North America, Phoenix, AZ. Newtown Square, PA: Project Management In-
stitute. Pp. 328–338.
Team, Data System (n.d.). System Requirements Specification for STEWARDS. https : / / web .
archive.org/web/20200923200038/https://www.nrcs.usda.gov/Internet/FSE_
DOCUMENTS/nrcs143_013173.pdf.
Tuckman, Bruce W (1965). “Developmental sequence in small groups.” In: Psychological bulletin
63.6, p. 384.
Tuckman, Bruce W and Mary Ann C Jensen (1977). “Stages of small-group development revisited”.
In: Group & Organization Studies 2.4, pp. 419–427.
BIBLIOGRAPHY 115
Usman, Muhammad et al. (2014). “Effort estimation in agile software development: a systematic
literature review”. In: Proceedings of the 10th international conference on predictive models in
software engineering, pp. 82–91.
Van Wyngaard, C Jurie, Jan-Harm C Pretorius, and Leon Pretorius (2012). “Theory of the triple
constraint—A conceptual review”. In: 2012 IEEE International Conference on Industrial En-
gineering and Engineering Management. IEEE, pp. 1991–1997.
Vorvoreanu, Mihaela et al. (2019). “From Gender Biases to Gender-Inclusive Design: An Empirical
Investigation”. In: Proceedings of the 2019 CHI Conference on Human Factors in Computing
Systems. CHI ’19. Glasgow, Scotland Uk: Association for Computing Machinery, pp. 1–14.
isbn: 9781450359702. doi: 10 . 1145 / 3290605 . 3300283. url: https : / / doi . org / 10 .
1145/3290605.3300283.
Wake, Bill (Aug. 2003). INVEST in Good Stories, and SMART Tasks. https : / / xp123 . com /
articles/invest-in-good-stories-and-smart-tasks/. Accessed: 2020-12-31.
Yang, Li-Ren, Chung-Fah Huang, and Kun-Shan Wu (2011). “The association among project man-
ager’s leadership style, teamwork and project success”. In: International journal of project man-
agement 29.3, pp. 258–267.
116 BIBLIOGRAPHY
Index
117
118 INDEX
extensions (in use cases), 48 motivations (cognitive style facet), 74, 102
extreme programming (XP), 14, 30 MSM (managerial skill mix), 24
task management, 28
task management system, 34
task performance, 25
task predecessor, 34
task prioritization, 29, 30, 32
task scheduling, 33
team communication, 25, 26
team conflict, 25
team dynamics, 25
team expectations, 26