Intro Software Engineering Lecture #1
Intro Software Engineering Lecture #1
CS 633 EX
January 23, 2016
Agenda
Course Structure and Expectations
Logistics
One live class, bi-weekly, Saturdays
Term project team meeting
Submissions are due Friday morning
Module 1
Off shoring
Requirements
Engineering Management
Learning Objectives
Upon successful completion of this course, you will be prepared to:
Introduction
Introduction
Focus on learning . You should assume that you will be successful with the course
and hence, grades will be reflective of that. Focus on those best practices that you
learn here and be able to actually apply.
This is an overview course. It delves into multiple topics. Buckle up. You cannot
afford spending all your time on a single topic.
Time box your assignments. This is not about a PhD thesis. This is about becoming
aware of an important concept and then moving to the next concept.
This course is not about a specific language or a framework.
Some assignments and discussions - are optional, aimed to stimulate your thinking
Term project brings it all together. All predefined deliverables of a term project are
introduced in lectures.
How does it all fits together? It is all about how to do software better, about
software engineering and program management. You cannot function as a
professional software engineer or a project manager if you are unaware of these
key concepts covered in the class.
MET
CS473
Principles
Process has no goal in itself
Process
Improvement
Process
A Glue. A Heart bit. A Librarian. Architecture
Data-driven design
Test
Essentials
Unit
Test
Deployment pipeline
Continuous
Delivery
Globalization
Offshoring
Taxonomy
Requirements
Backlog
Grooming
Engineering
Management
Software
Configuration
Management
2
4
Estimation
Identification , Control,
Auditing, Reporting
Precision equal to accuracy
Software
Design
Agile
SW Tools
Evaluation
Peer
Reviews
MET
CS473
Responsibilities
Find the shortest path
Separate released from drafts
Unit
Test
Continuous
Delivery
Requirements
Backlog
Grooming
Process
Improvement
Engineering
Management
Process
Architecture
Test
Essentials
Globalization
Offshoring
Taxonomy
2
4
Software
Configuration
Management
Estimation
Control changes
Retain historical estimates
Software
Design
Agile
SW Tools
Evaluation
Peer
Reviews
Split
Ask for and provide comments
Terminology and
Taxonomy
terminology
taxonomy
Taxonomy
Engineering
Management
UML
Git
ISO
Test Essentials
Faults & Failures
Cost Of Delay
Black Swan
Requirements
Pivotal
Version
One
Rally
Backlog Grooming
5/20 Rule
Story Points
Architecture
Asset Library
Motivation
Peer Reviews
Estimation
Continuous
Delivery
SW Tools
Evaluation
Agile Manifesto
Scrum
CMM
Regression
Cone Of Uncertainty
Software Process
Configuration
Management
MVC
Unit Test
Process Improvement
Three Trends
The "A"-word
There are certain words around us that are over-used, over-loaded and have started losing
their original meaning. Such an over-exposure is also driven by the key-words approach to
the search of relevant content.
The A Word is a perfect example of such an evolution. Conventional wisdom suggests
that you cannot publish a book or a paper these days without sticking this word inside the
title. It became synonym with the GP Good Practice. For example writing down test
cases or reviewing a project objective is a good thing to do - hence it must be an A Word.
So, unfortunately, we have to stop using this term, since it does not mean anything any
longer; and for all practical purposes it is dead.
Sources of Terms
There are several standard ways to research and clarify the terminology in front of us,
Wikipedia, Margaret Rouse...
.. engineering is the
study and application of
engineering to the design,
development, and
maintenance of
software.
..Continuous software
development is a blanket
term that covers several
aspects of
an iterative..
Off Shoring
Requirements
Requirements Engineering
Taxonomy
Requirements Engineering
Elicitation
Analysis
Specification
Validation
Management
Each sub-process is not static. It continues throughout the whole product development.
Context-free Interviewing is a perfect examples of Requirements Elicitation.
Attributes of a Requirements
system shall be
user-friendly
Forbidden Terms
Karl Wiegers [1] has a long list of terms that should be avoided within the language of
a solid requirements. Simply scanning through the list provides a clear direction away
from ambiguity toward a more detailed refinement.
Acceptable
Adequate
Efficient
Fast
Flexible
State-of-the-art
User-friendly
Several
Graceful
Definition of Personas
We should have a clear understanding who is the user of the system we are building. It is
prudent to start the requirements process with documenting the so-called personas (users,
actors, roles). Assuming each persona has a different set of needs, we are aiming to
assemble a complete list of product requirements. R.A.S.C.I. is a common method to define
system roles. There are obvious advantages in providing a consistent definition of roles
across a development organization undertaking several product lines.
ROLES
Task
Submitter Tester Developer Guest Manager
Enter Defects
R
R
R
R
R
Assign User Priority
R
I
I
R
I
Assign Dev Severity
I
C
R
I
A
Resolve Duplicates
I
R
C
I
I
Reproduce Defects
C
R
C
I
I
Provide Fixes
I
I
R
I
I
Retest Fixes
I
R
S
I
I
Close records
I
R
C
I
I
Distribute Reports
I
I
I
I
R
Create assignments and quizzes
Analize Common Trends
I
S
S
I
R
Take quizzes, complete assignments
Grade submissions
R: Responsible
Owns task execution and outcome
Review reports on grading
A: Accountable
To whom "R" is accountable: Respons
Back up the system
S: Supporting
Support the task completion
C: Consulted
I: Informed
Professor Student
R
C
R
I
I
I
R
I
I
C
I
A
R
A
Note that definition of personas is a controlled document, since its changes might result in a
significant product ramifications.
In a well-documented case of IBM Shuttle division, software developers display in their cubicles
photos of cosmonauts perished during Apollo 13 mission.
Canonical Form
Canonical form is an established language of defining requirements. It's simple template leading
one to clearly state three parts of a requirement (a) role, (b) action, and (c) value.
Cards from "Braintrust", see above, are commonly used to document product requirements
(stories).
Personas could be both "humans" and "non-humans". In many cases, a key requirement arrives
from interaction with another "software system" in addition to interaction with a certain
"individual".
Finding and reviewing defects in someone else's requirements is a great method to avoid
such defects in the future. Pictorial below has a series of common defects.
Pivotal Tracker
https://www.pivotaltracker.com/help/gettingstarted
Individual requirements propagate from right to left, from "Icebox" into "Backlog", then into
"Current" and eventually into "Done." In a traditional environment, one might be
accustomed to a separate Project Plan, Gantt Chart, Tasks beneath Activities, etc. Pivotal
Tracker combines these pieces into a fairly simple dashboard.
Examine the key software process called Feature Backlog Grooming and Scoping, based on an
example provided below. The swim flow diagram depicts both Grooming and Scoping in
different colors. Grooming deals with feature definition and scoping deals with initial estimation.
Additional context
These swim lanes are taken from a real organization, to clarify the context.
organization consists of approximately 2,000 people
involved 30 architects; 30 product managers; 21 scrum teams
after re-organization from waterfall into agile, 600 test engineers were divided; 200
testers have joined scrum teams and 400 testers remained supporting the system test
revenue generated by this product line exceeds $1B per quarter
there is uninterrupted flow of features proceeding through this process; at any point of
time there are 500 active features in the database
Apparently, the scope of these swim lanes does cover requirements and does not include
development, testing, release, etc.
You have an exercise covering these swim lanes. Benchmarking is important in developing an
"organizational compassion", a skill to relate to other teams/environments.
To support the notion that requirements are universal, let me bring about an example from a
different area. When you order food in a restaurant, in effect, you provide your "requirements"
to a chef. A waiter has a notebook that is a bona-fide centralized repository of requirements.
And then there is a size estimation, when you match your appetite against the order (five course
meal or a cup of coffee).
Human Factors
Practice Assessment
Six organizations were benchmarked regarding their requirements process. The following scenarios (interviews of
software engineers) were recorded during an assessment. Based on these testimonies, rank each company, from least
mature to the most mature. Supplement your ranking with a one-line justification.
Testimony 1
A product manager bumps into a software engineer in a crowded subway and whispers into his ear a new requirement.
Software engineer has no chance to respond since he has to get off the train to drop his two-years old to a
kindergarten. Within next hour, PM commits this requirement to a customer who expects it to be installed Wednesday
at 9:45 pm.
Testimony 2.
A company president walks into the weekly meeting of a project team. He announces an emergency customer request
with all-hands on deck. Everyone has to drop whatever he / she are doing and to engage with implementing a new
feature for the upcoming show in Vegas.
Testimony 3.
Requirements are kept in a unified repository with multiple attributes. There is a consistent set of states for each
requirement, as it advances along a product life cycle. Requirements are reviewed using a standard peer review
process, involving architects and testers.
Testimony 4.
Every Friday, for an hour or so our project team gets together in a caf. We brainstorm new requirements and then go
to our individual cubicles and start implementing these requirements right away. Next Friday we resume the
brainstorming.
Testimony 5.
Product Managers are not allowed to provide details or elaborate on requirements. Their interaction with us is time
boxed to 3 minutes. We are not engineers, we are ARTISTS. We must guess, extrapolate, and fantasize. We are not
asking questions. Our process stimulates an "artistic" approach to software design. We are not complying with anyone's
requests; we breathe software life into the cold machines.
Testimony 6.
We plan our requirements as stories for one iteration only. Product owner ranks the backlog covering multiple
iterations. Customer value drives the ranking. Architects contribute their requirements to the same product backlog.
Possible Responses
Company (3) and (6) stand out with their meaningful process. Other companies have
apparent issues that need to be addressed.
(1) requirements are not documented
(2) product owner is bypassed
(4) requirements are not ranked&approved
(5) users are ignored and customer value does not come into a picture
Additional considerations, while looking at the same glass that is half full
(1) Fast delivery is what any company is striving for. The process here is quick and simple to
the bone; what else would you want?
(2) Bean counting is the only thing many presidents do. Their only worry is the financial
bottom line. This president is different. He actually knows the product and its features. He is
confident and in command.
(3) One of the biggest advantages of a unified repository is the ability to copy requirements
from one release to another. A huge simplification.
(4) Sign me up for this team. These guys are jelled, they are together, they collaborate and
help each other.
(5) Steve Jobs famously posed the question ...
Do customers really know what they want?
(6) When architects contribute their changes through the same pipeline,
it is a sign of a certain maturity.
Requirements Documented
No
No
Yes
No
No
Yes
Requirements Controlled
No
No
Yes
No
No
Yes
Requirements reviewed
including architects&testers
No
No
Yes
Yes
Yes
Yes
Requirements Approved
No
No
Yes
No
No
Yes
Yes
No
Yes
No
No
Yes
No
No
Yes
No
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Level D
Level C
Level B
4
3
2
Level A
Requirements
Documented
Requirements
Controlled
Requirements
review ed including
architects&testers
Requirements
Approved
Customer Value
Drives Ranking
Common Process
Effective
Engineering
Management
Engineering Management
The purpose of this section is to delve into selected aspects of engineering management.
Software engineers often ask - what do managers do? In a context of our course, it is
important to shed some light on presumed responsibilities of a software leader.
Taxonomy
A software manager is bound to perform the same tasks as any other non-software manager.
The universality of management with its five aspects - is reflected on the diagram below.
A software manager is supposed to master some definite expertise in these five aspects.
Planning - Predetermining a course of actions for accomplishing organizational objectives
Organizing - Arranging the relationships among work units for accomplishment of
objectives, and granting of responsibility and authority to obtain those objectives.
Staffing - Selecting and training people for positions in the organization
Directing - Creating an atmosphere that will assist and motivate people to achieve
desirable result
Establishing, measuring, and evaluating performance of activities toward planned
objectives
Organizational Culture
Policies
Sr.
Management
Project
Managers
Software Developers
Test Engineers
SCM
Inspections
Test Cases
When you are sitting in front a blank sheet of paper trying to capture a key thought that is both
elusive and fundamental, the idea of you reporting to someone else - seems so irrelevant. What
difference does it make how many organizational levels are above you or below you? How could
it possibly help with solving the task at hand? In fact, it does not.
It is a natural tendency to flatten the hierarchy, to open up barriers and shorten communication
paths. Although, realities of a software company teach us differently. Managers do own a
certain function that must be accomplished one way or another.
Reading about companies that grew quickly, e.g. Akamai, Google, we learn that, at some initial
point, a senior manager decided to abandon a hierarchy and make a large group of people
reporting directly to him. Such decision could go only so far. Eventually a certain structure had to
be put in place.
Organizational Value
Release
Value
Sprint
Value
Motivational Models
Facilitating a learning
environment, where folks
are able to unleash their true
potentials - is the
motivational strategy
belonging to the top level
of Maslow hierarchy.
Elaboration
Frederick Taylor
Elton Mayo
Kurt Lewin
Douglas McGregor
Maslow
Fredrick Herzberg
Chris Argyris
Rensis Likert
Arch Patton
Theory Z
SelfActualization
Esteem and
Recognition
Social Needs
Security and Safety
Biological Survival
Many motivational models suggest "taking money off the table" so to speak. Here is the
link to an insightful video with Dan Pink saying that The best use of money as a
motivator is to pay people enough to take the issue of money- off the table. Your
assignment illustrates this notion further.
Motivational strategy responds to a "Why" question. This is the second order question,
considering the "What" being the first order. As many folks first learn what they are
supposed to accomplish (e.g. obtain a university degree) and then become fully aware of
why they are engaged in a degree program.
Consider several individual motivations to obtaining a degree. It is important we map them
into the MMM Hierarchy.
Fear of failing the course and losing paid tuition
Fear of being unable to get a job and support basic needs
Fear of getting a poor grade, being rebuked by a supervisor and ridiculed by peers
Desire to get a new job through a better resume
Desire to learn new skills and broaden knowledge
Desire to apply new techniques at current work
Desire to stay current, as a personal interest, without a specific plan to apply new skills
Should note the personal aspect of motivation..
In agile, the greatest motivation is peer pressure. A poor performer, who is unable to share
the load, will be surely dismissed by a scrum team.