SlideShare a Scribd company logo
1 of 81
Download to read offline
www.humane-assessment.com
humane
assessment
on cards
the missing method
for making software
engineering decisions
Humane assessment is a method for
making software engineering decisions.
It can be used for steering agile
architecture, for managing technical
debt, for guiding migrations or for
splitting monolithic applications.
2
humane |(h)yoōˈmān|
adjective
intended to have a civilizing or refining effect on people
assessment |əˈsesmənt|
noun
the process of understanding a given situation to
support decision making
3
context
processes
method
assessment
development
organization
daily
spike
strategic facilitator
tooling
craft
analysis
decision
buildup
throwaway
stakeholder
4
context
5
the process of understanding a
situation surrounding a software
system to support decision making
what is
assessment?
Assessment is a human
activity. Its goal is to produce
enough knowledge to lead to
a decision that leads to action.
Only then it is useful.
The input is a situation that typically
involves variables scattered across
many bits of data. Even a medium-
size software system presents
millions of such bits.
decisiondata
6
Assessment aims to produce
knowledge that leads to a decision
that leads to action. When it comes
to large systems and data, it has to
rely on reverse engineering to scale.
But ultimately, it is a human activity.
Reverse engineering and
software analysis aim to create
representations of the system
at a higher level of abstraction.
They are mostly a tool issue.
assessment = analysis + decision making
decisionanalyses modelsdata
assessment
reverse engineering
7
everyone
makes decisions
Managers decide about the overall
development. Architects decide the broad
technical direction. Developers decide
daily the course of the implementation.
You might not regard these as decisions,
but they are. These decisions are similar
in that they all require accurate
information about the state of the system.
engineermanager
architect
8
what’s in a decision?
What does it take
to implement this?
Is the architecture preserved
after this change?
How do I perform
this change?
9
example
What is the cost of migrating to a new
technology?
Can we build a new version on top of the
existing system?
What parts of the system need refactoring
most prominently?
What parts of the system depend on other
parts that should be replaced?
Does the system conform to the desired
architecture?
What causes the performance problems?
assessment questions
Are all model properties meta-described
correctly?
Are all remote calls to the server error handled
on the client side?
Are all scripting properties properly initialized in
the settings?
Where is the time lost during execution: script,
code or SQL?
Or, from what parts of the system is the
persistency manager called, outside of the
dedicated components, tests, and generated
code?
example
10
size
is the challenge
Even a medium size system contains millions of
details. You handle this size by retaining what you
think matters. You will never grasp the complete
picture in your head, even though you might think
you do. That is why data must become part of the
conversation.
11
assessment
development
assessment is
pervasive
When we think of software development, we
think of the active part of building the system.
However, several studies show that software
engineers spend up to 50% of the time
assessing the state of the system to know
what to do next.
These are the only the direct costs of
assessment. The indirect costs can be seen
in the consequences of the made decisions.
Assessment is important and pervasive.
12
decision
assessment
development
assessment provides the
basis for development
13
Forward engineering receives much attention
in various forms such as patterns and
technology. While assessment can be equally
expensive, it is currently dealt with implicitly,
in an ad-hoc way. This needs to change.
The challenge is significant because it
requires a paradigm shift. The promise lies in
the costs that can be decreased when going
from ad-hoc to structured.
The good news is that the budget is already
allocated. You are already paying for it.
assessment
development
technology
...
?
patterns
idioms
14
assessment
challenge
assessment is
the elephant
Even though it is both pervasive
and expensive, it is not an
explicit concern. Everyone pays
for it, but nobody really talks
about it.
It’s the elephant in the software
development room.
15
Me: Do you agree that you spend most of your time reading
code?
Developer: Hmm. Yes.
Me: Ok. When was the last time you talked about it?
Developer: About what?
Me: About how you read code?
Developer: Talk about reading code … I don’t remember …
never?
Me: In fact, nobody really talks about it. But, don’t you find it
strange that we, as an industry, are spending most of our
budget on something we never talk about?
Developer: Hmm. Indeed, I never thought of it in this way.
storya code reading
conversation
value is always
specific
shared technology
project specific
value
The main value of your project comes from
the specifics of the project, and not from the
shared infrastructure, such as the language
or the framework used.
That is why using generic checks, such as
off-the-shelf static analyses, has a limited
impact.
Make sure that you check what is
important, and not just what is simply easy.
17
assessment
development
assessment is a
discipline
tailored
explicit
educated
must be
Assessment must be approached
explicitly during the development
process. It is too important to do
otherwise. Only by making it
explicit can it be optimized.
Software systems are complex and
present many contextual problems
that can only be answered with
appropriately tailored solutions.
The ability to assess a situation is a
skill. Like any skill, it needs to and
can be educated.
18
method
19
the method
hypothesize
existing
analysis?
craft
analysis
apply
analysis
interpret
results
confident?
For the assessment effort to
be useful, it must result in a
definite path of action.
Drive the assessment effort
by formulating and refining
hypotheses explicitly.
Custom problems require
custom solutions. To be
effective, it is critical to
craft an analysis tool for it.
Regardless how smart
an analysis tool is, it is
the human that must
interpret the results to
decide what to do next.
no
yes
ye
no
20
generic
automaticmanual
tailored
why
humane?
A manual analysis does not
scale because systems are too
large. A generic analysis is not
useful because the value is in
the context.
As humans, we need
automatic support, but we
need it to be tailored to the
context. This is the humane
solution.
21
processes
22
assessment
precedes action
Agile development replaces upfront
design with the ability to react to new
situations. But, to make the right
decision we need to be able to assess
the situation accurately. Thus, we
need to integrate assessment deep
into the process.
Decisions are made
all the time. They can
be course grained In
between iterations,
or fine grained on a
daily basis.
Projects typically build on top of
existing software. Thus, we first need
to understand what we are building on.
Often, before placing a product into
production a final check needs to ensure
that certain characteristics are met.
23
When a concern needs to be
ensured on a long term, its
assessment needs to be
integrated deep into the
development effort. Whether
large or small, through the
daily assessment process
these concerns get captured
and distilled into immediate
actions.
daily
assessment
strategic
assessment
spike
assessment
continuous one-time
narrow
broad
When the concern is larger
in scope and the decision
requires a thorough
investigation we need a
more structured and detailed
strategic assessment.
Some problems appear
singularly, they have a
narrow scope, and they need
to be dealt fast with. Through
spike assessment, the
assessor uses throwaway
analysis tools to gather facts
fast and to support on the
spot decision making.
assessment in the
process
24
code has an
emergent structure
25
The architecture of a software system is
not a document, but the reality from the
system. It is the result of multiple
developers working at the same time and
committing code concomitantly in different
corners of the system. It is the result of
following the constraints posed by the
system’s current state. It is the result of the
social interactions between stakeholders. It
is the result of what is possible with the
underlying languages and technologies. It
is the result of skills. It is the result of taste.
It is the result of dreams.
In short, architecture is an emergent
property created by multiple agents
interacting constantly with each other. It
cannot be fully controlled, but it can be
steered.
1
2
3
basics of steering
agile architecture
know where you are
know where you
want to go to
ensure you
go where you
want to
26
daily
assessment
Daily assessment relies on
having the team continuously
identify, check and fix
relevant technical concerns.
identify
concern
agree?
craft
checker
discuss
results
small
task?
solve
now
plan for
later
yes
no
yes no
27
story
The client was responsible for the
development of multiple software projects.
The teams were following Scrum. As the size
of the projects increased, they needed a
means to control the emerging design. We
introduced the daily assessment routine.
Each day, new concerns were raised by team
members. After the regular Scrum stand-up,
developers met in an assessment stand-up to
discuss the validity of the concerns and
identify potential improvements.
If the cost of fixing a concern was larger than
15 minutes, it got either decomposed or
added to the project backlog. If it took less
than 15 minutes, it got pinned to the board
and became a task for the day. After a couple
of months, the architecture got documented
and followed by everyone.
daily assessment
in scrum projects
to do in progress done
story
task 1
story
task 2
concern
task A
concern
task B
story
task 4
story
task 3
28
15 minutes
15 minutes is magical.
First, everyone has 15 minutes. Second, 15
minutes is also long enough to actually do
something with it: it is about the time it takes for a
good stand-up meeting; it is about the time it
takes to have a focused brainstorming session; it
is also about the amount of time it takes to
perform, test and commit a simple refactoring.
15 minutes is a truly magical pattern. That is why
daily assessment can benefit from it.
29
pattern
start from an
empty report
report
Do not start from a report
containing hundreds of rules that
might or might not be relevant for
your project. Start from an empty
one and grow it as the project
evolves with only rules that you
have a need for. In this way, the
report will only provide information
that is valuable for your context.
30
pattern
daily assessment standup
One critical part of daily assessment is to
get the whole technical team involved in
architectural decision making. One way to
implement that is through a standup that is
separate from the typical daily standup.
First, this standup only includes technical
people to enable highly technical
discussions. Second, any considered
concern must have a concrete stakeholder
and evidence to support the claim. Third,
the goal is to reach an agreement and
decide a concrete path to action.
31
pattern
spike
assessment
focus
Spike assessment
addresses technical
problems that require
technical answers fast.
approximate
use
throwaways
It’s not spike if it’s
not short and
focused.
The main goal is to
find a satisfying
answer.
Build throwaway
analysis tools. Use
them aggressively.
explore
Ask data about the
cause. Explore.
Experiment.
32
story
The Moose platform ships with an engine for
building browsers. For a while we had a serious
bug in the rendering code that we could not
track down. After several attempts and many
hours of effort, we were able to capture the
problem in a test. However, we still did not
know where the issue came from. Due to the
engine depending on deep copying of objects,
using the debugger was close to useless.
We then approached the problem differently:
we built an interactive visualization to expose
the problem. An example can be seen to the
right. Without going into details, there should
have been no two red lines getting into the
same node from the right. As there were, we
confirmed our original suspicion. Knowing the
exact nodes that generated the problems lead
us to find the solution in a matter of minutes.
The fix was exactly one line of code.
chasing a tough bug
33
strategic
assessment
Strategic assessment tackles problems that have a broad
scope and that are typically not formulated in technical terms.
The process focuses on involving the stakeholders, and on
refining the questions until they get answerable with hard facts.
set
goal
confident?
no
yes
spike
get
data
compile
spike
spike
34
story
The system had a history of more than a decade of
development using multiple technologies. A set of
functionalities was reported to have performance
issues. This finding had an impact on the strategic
decision to open the system for more users.
To assess the effort required to solve the situation,
we first instrumented the runtime to produce more
detailed logs that included information about the
executed functions and the SQL statements.
These logs were parsed to recover the execution
traces. The traces were related to the static
structure so that we could locate the problematic
cases in the source code.
All analyses were integrated in a browser that
produced live reports and helped us identify
multiple problems interactively. As a result, a team
got assembled and improved the situation.
strategic assessment of
performance problems
code logs
unified
model
interactive
analyses
35
splitting the monolith:
a multifaceted assessment problem
One problem that requires deep understanding of the system is that of splitting a monolithic application into
(micro)services. Such a monolith is often poorly understood and its inner pieces have unclear boundaries.
Splitting a monolith is typically a long term project involving strategic assessment, piecemeal changes guided
through daily assessment, and multiple fine grained spike assessments.
example
36
organization
37
assessment in the
organization
To be effective assessment must
be recognized explicitly as an
activity during the development
process. But, assessment also
requires dedicated skills.
For this reason, assessment
must also be explicitly captured
through roles and responsibilities
in the organization.
facilitatorstakeholder
38
assessment
stakeholder
The stakeholder is the driver of the
assessment process. He has to solve a
problem related to the system, and is the
one responsible for the end decision.
39
assessment
facilitator
Assessment is a too important
engineering skill to not have in-
house when developing software
systems. To ensure its presence
we have to have an explicit role:
the assessment facilitator.
The job of the facilitator is not to
dictate what is right and what is
wrong. His job is to support the
stakeholders in their assessments.
In the end, it is the stakeholders
that know what is and is not
important in their context.
stakeholder
facilitator
40
assessment
department
integrated
in project teams
dedicated department
Facilitators must work together with the
software project teams. However, in
most cases it is important to form an
explicit assessment department that
builds its own culture and learns from
past experiences.
The assessment department is
essentially a software team specialized
in the domain of analysis with the clients
being the rest of the software teams.
41
pattern
empowerment
not enforcement
Traditionally, assessment is positioned as a process
of enforcing rules by an authority external to the
actual development. This authority resembles a
police that is in charge with controlling and making
sure things conform to the standard. The problem is
that enforcement induces a negative feedback loop,
and this leads to lack of cooperation from those that
are supposed to benefit from the service.
+-
The goal of assessment is decision making. The
main actor is the one that has to make a decision.
It is him that should be benefit from assessment.
Thus, assessment is best seen as a service.
Positioning assessment as a support service,
rather than a controlling one, generates a positive
feedback loop. This leads to better decisions.
42
present
your assessment
As long as you do not work alone, decisions must be shared. To
convince others of your finding, you first have to let them know.
Presenting is key.
And the act of presenting does not have to match the path of
finding. In fact, it most often isn’t the most efficient approach.
43
stakeholder & facilitator
are roles
The stakeholder and the
facilitator are roles. They can be
played by the same person.
44
functional roles
assessment roles
assessment roles
complement functional roles
45
adopting
assessment
specify
act
drive
identify
craft
facilitate
Stakeholders must learn to specify
concerns explicitly. The second
step is to learn how to transform
the analysis output into actions.
Finally, they have to learn how to
initiate and drive the process.
Facilitators have to learn to work
with stakeholders to identify
valuable concerns. They have to
learn to craft tools fast. Finally, they
have to learn to facilitate and ensure
that stakeholders make a decision.
46
assessment
in scrum
daily
assessment
spike
assessment
assessment
tasks
assessment-aided
planning
strategic
assessment
47
The planning game is an agile technique that
brings together what the product owner wants,
with what the team can do.
When the affected system is already significantly
developed, the ability of the team to implement
new stories is highly dependent on what the
system allows the team to do. You simply cannot
ignore the system.
For a constructive planning, you need to make
the system part of the conversation. Appoint a
facilitator to quickly check things in the system
while hypothesis are being thrown across the
room.
assessment-aided
planning
48
tooling
49
our tools
shape us
Marshall McLuhan warned us since the
previous century that we shape our tools and
thereafter our tools shape us. It follows that we
should be choose carefully the tools we expose
ourselves to because they determine the way
we understand problems.
To do this properly, we first have to understand
the characteristics that those tools should offer.
50
crafting tools
economics
The essence of humane assessment
consists of using dedicated tools for
custom problems. Using the right tool
will always outperform manual work.
The key is to have the right tool.
craft tool use
manual checks
Crafting a dedicated tool does not have
to be expensive. The cost decreases
significantly with the appropriate skill,
and the technical infrastructure.
skill infrastructure
cost depends on
51
analysis cost vs
usefulness
Often, building the perfect analysis
implies a significant effort and resources.
That is because data is never clean.
However, when you perceive analysis as
an assessment tool, the goal transforms
from getting the exact automatic result to
reducing the scope for manual
interpretation. From this point of view,
good enough can become cheap.
cost
usefulness
good enough
52
easy analysis with
conventions
Conventions and standards are at the
heart of quality assurance. Automatic
detections can be used to ensure them.
detection convention
ensures
eases
When a tool costs too much, it is often
because the system does not have a
clear structure. Instill conventions to get
the implementation of the analysis cheap.
53
story
During the introduction of daily assessment in
a Scrum team, we noticed that the rules were
difficult to capture in automatic analyses. At a
closer look, the issues stemmed from the
difficulty of locating concepts and
components in the source code due to a lack
of conventions for naming packages and
classes.
For example, concerns like “component A
should only be used by component B” were
difficult to implement simply because there
was no easy way to locate A and B.
We created concerns for controlling the
naming conventions. Once the conventions
were in place, “component A should only be
used by component B” became trivial.
conventions to the rescue
54
story
One developer raised the concern that his
component must be used only through the
intended public API. The main reason was to
ensure that she can extend and refactor the
internals of the component. As a
consequence, a checker was created to
detect all the violations, and through the daily
assessment process, the team went through
all the calls that were using the internal
interfaces.
However, one of the calls could not leave with
the intended public API because of
performance issues. As such, the team
agreed that this was a reasonable exception
to the rule, and it was explicitly marked in the
concern.
the good exception
API
55
analyses modelsdata
analysis
anatomy
To interpret an analysis, you need to know
what the input data is, and what exactly the
analysis algorithm is doing.
control to interpret
Conceptually, an analysis has an input set of
data, an algorithm, and an output model
which holds a representation of the original
data. This applies to any kind of analysis from
a simple metric to a complex visualization.
56
introspection
navigation
selection
presentation
basic analysis actions
Given an entity, retrieve its
properties
Given an entity, retrieve other
entities that are related
Given a group of entities, retrieve
those that match a criterion
Given a group of entities, arrange
them according to a criterion
57
example
Consider the Java class to the right.
How many methods are there? 7. But, is
a constructor a method? If the metric
computation does not consider it as a
method, we get only 6. What about
accessors? Are they to be considered as
methods? If no, we have only 4. Do we
count the private methods? If not, we get
3. Finally, equals() is expected by default,
so we might as well not consider it a real
method. Perhaps the result is 2.
How many methods are there? It
depends on what the metric captures.
Now, let us turn consider a report that
says a class has 70 methods. What does
it mean? You have to know what the
actual computation does.
what’s in a metric? example
public class Library {
List books;
public Library() {…}
public void addBook(Book b) {…}
public void removeBook(Book b) {…}
private boolean hasBook(Book b) {…}
protected List getBooks() {…}
protected void setBooks(List books) {…}
public boolean equals(…) {…}
}
constructor
accessors
default
private
58
x := compute(y)
what is a parser example
parser
Assignment
Variable (x)
Call (compute)
Parameter (y)
Variable (y)
A parser is a magic machinery that transforms some input
format into an internal representation. Often the input is
formed by code written in a programming language, and the
output is an abstract syntax tree. Parsing is usually the first
step in building a model useful for high-level analysis.
59
what is a
visualization
example
A visualization is an analysis that
produces picture that reveals the inner
structure of the data.
Visualizations are often confused with
visual languages. While both rely on the
eye as a receptor, they differ in intent:
visual languages are meant as tools for
communicating ideas, while visualizations
are tools for discovering them from
unknown data.
60
what is a
browser
example
A browser is a user interface whose purpose is
to facilitate the manipulation of models. At its
core, the browser offers means to navigate
through models, and to present their different
facets.
For example, a file browser let’s you browse
the file system. The code browser let’s you
browse the code. These tools make you
productive because they match the workflow.
Any workflow should benefits from it.
61
software
is data
Source code is not text. Logs are not text.
Configuration specifications are not text either. They
are all data. It’s just takes you to look at them as such.
62
systems are
heterogenous
build
scripts
versions
configurations
code in multiple
languages & technologies
runtime
info
documentation
issue
reports
A thorough assessment must take into
account the multidimensionality of
modern systems. It’s almost never just
source code written in a single language.
persistency
63
engine
analysis
dedicated
engine
tooling
buildup
Assessment requires analysis tools
tailored to the context of the problem and
of the system at hand. Generic engines
offer reusable high level support to make
tool building effective.
Yet, often there are less generic pieces
that are still repeatedly needed in various
analysis contexts.
When reuse is needed, dedicate a buildup
phase to construct this dedicated engine
that is reusable in the given context.
There are several cases for when
such reusable components are
needed.
An example is a dedicated importer
for a proprietary language or data
format that can be reused in
several language-specific analyses.
Another example consists in
building a model and a query
interface for a specific set of
problems.
64
story
The client had a system written in multiple
languages including a proprietary scripting
language and several formats for other data. To
enable engineers to assess the state of the
system, we allocated an explicit project to build up
a dedicated infrastructure.
The process was made more difficult by the non-
existence of an explicit grammar for the scripting
language or for the other file formats. The first step
was to reverse engineer these grammars. This
was achieved by taking a large body of examples
and iteratively constructing parsers that consumed
all examples.
We used these parser to construct internal
abstract syntax trees. Out of these we created an
importer to produce a unified high level model.
This model was then used as a basis for several
assessment projects and tools.
tooling buildup for a
proprietary language
abstract
syntax
trees
sources
model
importer
65
throwaway
analysis tool
Crafting custom analysis tools should be cheap. Not fancy analyses.
Effective ones. Creating effective analyses should be so cheap that it
should still be profitable to use the crafted tool only once and throw it
away afterwards.
All we need is the right infrastructure. And, the right skill.
craft
tool use
throw
away
66
educate
your requirements
Be selective when choosing your tools.
When faced with a new tool, do not stop at what
it can do out of the box. Get to understand your
context and formulate your own requirements.
Ask in what ways you can tailor the tool. It is the
engine behind the tool that is the most
important, because your problems are specific
and they deserve a tailored analysis.
67
models
are central
system
model
meta
model
represents
described by
Models are central to the analysis workflow.
A model is a simplification of the system
under analysis, and its goal is to help answer
questions about this system.
To reason about a model we need to know its
structure. This is the responsibility of the
meta-model. The effectiveness of a model
stems from the ability of the meta-model to
offer the information needed for the desired
analysis.
68
analysis
must be iterative
models analyses
Assessment is seldom a static game. An
effective assessment is most often carried
out as a conversation with data. Thus, an
analysis tool must support an iterative
workflow that enables you to refine your
hypothesis as you drill in the data.
69
enginesenable tailoring
An analysis transforms an input data into an
output model. The value of an analysis
comes from the answers provided by the
resulting model.
An analysis engine is a piece of software
whose output is an analysis tool. The goal of
an engine is to enable the creation of custom
analyses.
Thus, an engine is to be judged from two
points of view: the kinds of analysis it lets you
build, and the costs associated with creating
a new analysis. Engines are instrumental in
making humane assessment possible. engine
analyses modelsdata
70
importers modelsdata
importers
handle raw data
An example of an importer can be a
parser that takes source code and
produces a high level model.
Another example can be a processor of
log files that builds an execution model.
An importer is an analysis that
takes raw data and transforms
it into a model that is more
suitable for analysis.
71
importer model
select relevant parts custom visualization
visualization engine
end result
sources
a simple analysis
decomposed
example
Through this analysis, we
import the sources, we
select a subset of relevant
parts, and we show them
using a custom visualization.
The entire workflow is
supported by Moose.
query engine
72
www.moosetechnology.org
Moose offers several generic
engines that enable the analyst to
craft new tools fast and cheap.
engines
importers models analysesdata
Moose is a platform for software and data
analysis that makes assessment practical.
Various kinds of data in
various formats can be
imported into Moose, such
as software systems written
in Java or C++.
Moose offers various
tools that deal with
metrics, clustering,
querying, visualizing,
and interactive
browsing. A key
concept is that the
results of any analyses
are fed back into the
model and are
available for further
analysis.
73
beyond tools
74
beyond
tools
Tools are important, but assessment is ultimately a human activity.
75
assessment > code metrics
assessment
analysis
code metrics
76
metrics
inner
radar
To find solutions, you first need to formulate the
problem. To formulate the problem you first need
to be able to identify it. To identify it, you need a
radar. An inner radar. You cannot buy such a
radar, but you can build and train your own.
77
story
The client had a system in which one central
class seemed to incorporate most of the
system knowledge. The class had some
5000 lines of code.
We noticed that there seemed to be too
many somewhat similar if statements. We
ran a duplication analysis, and indeed, large
chunks of code were duplicated multiple
times, and they included long lists of if
statements. In the end, the solution was to
introduce a state design pattern.
The client got excited at the prospect, but we
announced that the root of the problem is
the broken radar: someone opened the
class, entered line number 5000, committed
the code, and then slept well at night.
the root
of trouble
1
2
3
...
4998
4999
5000
78
analysis
design
implementation
testing
assessment
10%
10%
30%
30%
20%
the end
goal
Assessment is a pervasive
activity that must be
captured explicitly during a
software project.
For the state of practice to
change, we need to
acknowledge the existence
of assessment and plan for
it explicitly.
management spreadsheet
79
Stakeholder (Manager/PO) Stakeholder (Developer)
FacilitatorStakeholder (Architect)
DecisionProblem
Data Model
Analysis engineAnalysis
(c) Tudor Gîrba
tudorgirba.com

More Related Content

What's hot

SDLC & Project Team roles_in practice
SDLC & Project Team roles_in practiceSDLC & Project Team roles_in practice
SDLC & Project Team roles_in practicebizpresenter
 
Information systems development methodologies (autosaved)
Information systems development methodologies (autosaved)Information systems development methodologies (autosaved)
Information systems development methodologies (autosaved)Vaska Shefteroska
 
SQuADpresentation2014 vpdf
SQuADpresentation2014 vpdfSQuADpresentation2014 vpdf
SQuADpresentation2014 vpdfScott Allman
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
Unit 1 sepm introduction to software
Unit 1 sepm introduction to softwareUnit 1 sepm introduction to software
Unit 1 sepm introduction to softwareKanchanPatil34
 
Software Project Planning IV
Software Project Planning IVSoftware Project Planning IV
Software Project Planning IVGagan Deep
 
21.5 Estimating Agile Softare Development
21.5 Estimating Agile Softare Development21.5 Estimating Agile Softare Development
21.5 Estimating Agile Softare DevelopmentGlen Alleman
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringHitesh Mohapatra
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
5.0 Estimating Agile Development Projects
5.0 Estimating Agile Development Projects5.0 Estimating Agile Development Projects
5.0 Estimating Agile Development ProjectsGlen Alleman
 
Requirements engineering
Requirements engineeringRequirements engineering
Requirements engineeringvucevic
 

What's hot (20)

SDLC & Project Team roles_in practice
SDLC & Project Team roles_in practiceSDLC & Project Team roles_in practice
SDLC & Project Team roles_in practice
 
7. requirement-engineering
7. requirement-engineering7. requirement-engineering
7. requirement-engineering
 
Software developer
Software developerSoftware developer
Software developer
 
Daniel dumitrescu
Daniel dumitrescuDaniel dumitrescu
Daniel dumitrescu
 
Chapter five HCI
Chapter five HCIChapter five HCI
Chapter five HCI
 
Information systems development methodologies (autosaved)
Information systems development methodologies (autosaved)Information systems development methodologies (autosaved)
Information systems development methodologies (autosaved)
 
Ba notes
Ba notesBa notes
Ba notes
 
SQuADpresentation2014 vpdf
SQuADpresentation2014 vpdfSQuADpresentation2014 vpdf
SQuADpresentation2014 vpdf
 
7 5-94-101
7 5-94-1017 5-94-101
7 5-94-101
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Unit 1 sepm introduction to software
Unit 1 sepm introduction to softwareUnit 1 sepm introduction to software
Unit 1 sepm introduction to software
 
8. project-management
8. project-management8. project-management
8. project-management
 
Software Project Planning IV
Software Project Planning IVSoftware Project Planning IV
Software Project Planning IV
 
21.5 Estimating Agile Softare Development
21.5 Estimating Agile Softare Development21.5 Estimating Agile Softare Development
21.5 Estimating Agile Softare Development
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
System development methodologies
System development methodologiesSystem development methodologies
System development methodologies
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
5.0 Estimating Agile Development Projects
5.0 Estimating Agile Development Projects5.0 Estimating Agile Development Projects
5.0 Estimating Agile Development Projects
 
Requirements engineering
Requirements engineeringRequirements engineering
Requirements engineering
 

Viewers also liked

Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Tudor Girba
 
Moose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeMoose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeTudor Girba
 
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...Tudor Girba
 
Underneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingUnderneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingTudor Girba
 
Beyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismBeyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismTudor Girba
 
O Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no JavaO Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no JavaBruno Borges
 
Decreto aprobado lft 20121113
Decreto aprobado lft 20121113Decreto aprobado lft 20121113
Decreto aprobado lft 20121113Martin Triana
 
您不可不知的部落格行銷
您不可不知的部落格行銷您不可不知的部落格行銷
您不可不知的部落格行銷Alice Liu
 
Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)Tudor Girba
 
Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)Tudor Girba
 
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)Tudor Girba
 
1800+ TED talks later
1800+ TED talks later1800+ TED talks later
1800+ TED talks laterTudor Girba
 
Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Tudor Girba
 
Logic Notes
Logic NotesLogic Notes
Logic Notesacavis
 
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)Tudor Girba
 

Viewers also liked (20)

Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Don't demo facts. Demo stories!
Don't demo facts. Demo stories!
 
Moose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeMoose: how to solve real problems without reading code
Moose: how to solve real problems without reading code
 
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
 
Underneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingUnderneath Scrum: Reflective Thinking
Underneath Scrum: Reflective Thinking
 
Beyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismBeyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalism
 
GT Spotter
GT SpotterGT Spotter
GT Spotter
 
O Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no JavaO Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no Java
 
Direct Marketing Online
Direct Marketing OnlineDirect Marketing Online
Direct Marketing Online
 
Decreto aprobado lft 20121113
Decreto aprobado lft 20121113Decreto aprobado lft 20121113
Decreto aprobado lft 20121113
 
您不可不知的部落格行銷
您不可不知的部落格行銷您不可不知的部落格行銷
您不可不知的部落格行銷
 
Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)
 
Gripe
GripeGripe
Gripe
 
04 - Sets
04 - Sets04 - Sets
04 - Sets
 
Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)
 
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
 
1800+ TED talks later
1800+ TED talks later1800+ TED talks later
1800+ TED talks later
 
Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)
 
Familia
Familia Familia
Familia
 
Logic Notes
Logic NotesLogic Notes
Logic Notes
 
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
 

Similar to Humane assessment on cards

Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
Software engineering project management
Software engineering project managementSoftware engineering project management
Software engineering project managementjhudyne
 
Software For Software Development Life Cycle
Software For Software Development Life CycleSoftware For Software Development Life Cycle
Software For Software Development Life CycleChristina Padilla
 
Managing Software Project
Managing Software ProjectManaging Software Project
Managing Software ProjectAnas Bilal
 
Strengths And Weaknesses Of Software Development
Strengths And Weaknesses Of Software DevelopmentStrengths And Weaknesses Of Software Development
Strengths And Weaknesses Of Software DevelopmentBrianna Johnson
 
Managing software development
Managing software developmentManaging software development
Managing software developmentRespa Peter
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
Software Product and Software Process
Software Product and Software ProcessSoftware Product and Software Process
Software Product and Software ProcessShouvikDhali
 
Lecture 2 introduction to Software Engineering 1
Lecture 2   introduction to Software Engineering 1Lecture 2   introduction to Software Engineering 1
Lecture 2 introduction to Software Engineering 1IIUI
 
No silver bullet summary (paper)
No silver bullet summary (paper)No silver bullet summary (paper)
No silver bullet summary (paper)shakeel khan
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st CenturyHenry Jacob
 
Applying AI to software engineering problems: Do not forget the human!
Applying AI to software engineering problems: Do not forget the human!Applying AI to software engineering problems: Do not forget the human!
Applying AI to software engineering problems: Do not forget the human!University of Córdoba
 
Chapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewChapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewBule Hora University
 
Management Information Systems – Week 7 Lecture 2Developme.docx
Management Information Systems – Week 7 Lecture 2Developme.docxManagement Information Systems – Week 7 Lecture 2Developme.docx
Management Information Systems – Week 7 Lecture 2Developme.docxcroysierkathey
 
Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"Peter Marshall
 
World Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for DevelopersWorld Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for DevelopersSarah Dutkiewicz
 

Similar to Humane assessment on cards (20)

Software engineering
Software engineeringSoftware engineering
Software engineering
 
Software engineering project management
Software engineering project managementSoftware engineering project management
Software engineering project management
 
Software For Software Development Life Cycle
Software For Software Development Life CycleSoftware For Software Development Life Cycle
Software For Software Development Life Cycle
 
Managing Software Project
Managing Software ProjectManaging Software Project
Managing Software Project
 
Strengths And Weaknesses Of Software Development
Strengths And Weaknesses Of Software DevelopmentStrengths And Weaknesses Of Software Development
Strengths And Weaknesses Of Software Development
 
Managing software development
Managing software developmentManaging software development
Managing software development
 
Lecture 1 SE.pptx
Lecture 1 SE.pptxLecture 1 SE.pptx
Lecture 1 SE.pptx
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Software Product and Software Process
Software Product and Software ProcessSoftware Product and Software Process
Software Product and Software Process
 
Lecture 2 introduction to Software Engineering 1
Lecture 2   introduction to Software Engineering 1Lecture 2   introduction to Software Engineering 1
Lecture 2 introduction to Software Engineering 1
 
No silver bullet summary (paper)
No silver bullet summary (paper)No silver bullet summary (paper)
No silver bullet summary (paper)
 
Session3
Session3Session3
Session3
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
Software models
Software modelsSoftware models
Software models
 
Applying AI to software engineering problems: Do not forget the human!
Applying AI to software engineering problems: Do not forget the human!Applying AI to software engineering problems: Do not forget the human!
Applying AI to software engineering problems: Do not forget the human!
 
Chapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overviewChapter1 Advanced Software Engineering overview
Chapter1 Advanced Software Engineering overview
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
Management Information Systems – Week 7 Lecture 2Developme.docx
Management Information Systems – Week 7 Lecture 2Developme.docxManagement Information Systems – Week 7 Lecture 2Developme.docx
Management Information Systems – Week 7 Lecture 2Developme.docx
 
Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"
 
World Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for DevelopersWorld Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for Developers
 

More from Tudor Girba

Humane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development roomHumane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development roomTudor Girba
 
The emergent nature of software systems
The emergent nature of software systemsThe emergent nature of software systems
The emergent nature of software systemsTudor Girba
 
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)Tudor Girba
 
Demo-driven innovation teaser
Demo-driven innovation teaserDemo-driven innovation teaser
Demo-driven innovation teaserTudor Girba
 
Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)Tudor Girba
 
Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)Tudor Girba
 
Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011Tudor Girba
 
Flexible analysis with Moose at Jazoon 2011
Flexible analysis with Moose at Jazoon 2011Flexible analysis with Moose at Jazoon 2011
Flexible analysis with Moose at Jazoon 2011Tudor Girba
 
Holistic software assessment at the University of Zurich
Holistic software assessment at the University of ZurichHolistic software assessment at the University of Zurich
Holistic software assessment at the University of ZurichTudor Girba
 
Petitparser at the Deep into Smalltalk School 2011
Petitparser at the Deep into Smalltalk School 2011Petitparser at the Deep into Smalltalk School 2011
Petitparser at the Deep into Smalltalk School 2011Tudor Girba
 
11 - Programming languages
11 - Programming languages11 - Programming languages
11 - Programming languagesTudor Girba
 
10 - Models and languages
10 - Models and languages10 - Models and languages
10 - Models and languagesTudor Girba
 
09 - Program verification
09 - Program verification09 - Program verification
09 - Program verificationTudor Girba
 
Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Tudor Girba
 

More from Tudor Girba (18)

Humane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development roomHumane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development room
 
The emergent nature of software systems
The emergent nature of software systemsThe emergent nature of software systems
The emergent nature of software systems
 
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
 
Demo-driven innovation teaser
Demo-driven innovation teaserDemo-driven innovation teaser
Demo-driven innovation teaser
 
Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)
 
Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)
 
Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011
 
Flexible analysis with Moose at Jazoon 2011
Flexible analysis with Moose at Jazoon 2011Flexible analysis with Moose at Jazoon 2011
Flexible analysis with Moose at Jazoon 2011
 
Holistic software assessment at the University of Zurich
Holistic software assessment at the University of ZurichHolistic software assessment at the University of Zurich
Holistic software assessment at the University of Zurich
 
Petitparser at the Deep into Smalltalk School 2011
Petitparser at the Deep into Smalltalk School 2011Petitparser at the Deep into Smalltalk School 2011
Petitparser at the Deep into Smalltalk School 2011
 
12 - Overview
12 - Overview12 - Overview
12 - Overview
 
11 - Programming languages
11 - Programming languages11 - Programming languages
11 - Programming languages
 
10 - Models and languages
10 - Models and languages10 - Models and languages
10 - Models and languages
 
09 - Program verification
09 - Program verification09 - Program verification
09 - Program verification
 
08 - Complexity
08 - Complexity08 - Complexity
08 - Complexity
 
07 - Graphs
07 - Graphs07 - Graphs
07 - Graphs
 
Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010
 
06 - Trees
06 - Trees06 - Trees
06 - Trees
 

Recently uploaded

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 

Recently uploaded (20)

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 

Humane assessment on cards

  • 1. www.humane-assessment.com humane assessment on cards the missing method for making software engineering decisions
  • 2. Humane assessment is a method for making software engineering decisions. It can be used for steering agile architecture, for managing technical debt, for guiding migrations or for splitting monolithic applications. 2
  • 3. humane |(h)yoōˈmān| adjective intended to have a civilizing or refining effect on people assessment |əˈsesmənt| noun the process of understanding a given situation to support decision making 3
  • 6. the process of understanding a situation surrounding a software system to support decision making what is assessment? Assessment is a human activity. Its goal is to produce enough knowledge to lead to a decision that leads to action. Only then it is useful. The input is a situation that typically involves variables scattered across many bits of data. Even a medium- size software system presents millions of such bits. decisiondata 6
  • 7. Assessment aims to produce knowledge that leads to a decision that leads to action. When it comes to large systems and data, it has to rely on reverse engineering to scale. But ultimately, it is a human activity. Reverse engineering and software analysis aim to create representations of the system at a higher level of abstraction. They are mostly a tool issue. assessment = analysis + decision making decisionanalyses modelsdata assessment reverse engineering 7
  • 8. everyone makes decisions Managers decide about the overall development. Architects decide the broad technical direction. Developers decide daily the course of the implementation. You might not regard these as decisions, but they are. These decisions are similar in that they all require accurate information about the state of the system. engineermanager architect 8
  • 9. what’s in a decision? What does it take to implement this? Is the architecture preserved after this change? How do I perform this change? 9 example
  • 10. What is the cost of migrating to a new technology? Can we build a new version on top of the existing system? What parts of the system need refactoring most prominently? What parts of the system depend on other parts that should be replaced? Does the system conform to the desired architecture? What causes the performance problems? assessment questions Are all model properties meta-described correctly? Are all remote calls to the server error handled on the client side? Are all scripting properties properly initialized in the settings? Where is the time lost during execution: script, code or SQL? Or, from what parts of the system is the persistency manager called, outside of the dedicated components, tests, and generated code? example 10
  • 11. size is the challenge Even a medium size system contains millions of details. You handle this size by retaining what you think matters. You will never grasp the complete picture in your head, even though you might think you do. That is why data must become part of the conversation. 11
  • 12. assessment development assessment is pervasive When we think of software development, we think of the active part of building the system. However, several studies show that software engineers spend up to 50% of the time assessing the state of the system to know what to do next. These are the only the direct costs of assessment. The indirect costs can be seen in the consequences of the made decisions. Assessment is important and pervasive. 12
  • 14. Forward engineering receives much attention in various forms such as patterns and technology. While assessment can be equally expensive, it is currently dealt with implicitly, in an ad-hoc way. This needs to change. The challenge is significant because it requires a paradigm shift. The promise lies in the costs that can be decreased when going from ad-hoc to structured. The good news is that the budget is already allocated. You are already paying for it. assessment development technology ... ? patterns idioms 14 assessment challenge
  • 15. assessment is the elephant Even though it is both pervasive and expensive, it is not an explicit concern. Everyone pays for it, but nobody really talks about it. It’s the elephant in the software development room. 15
  • 16. Me: Do you agree that you spend most of your time reading code? Developer: Hmm. Yes. Me: Ok. When was the last time you talked about it? Developer: About what? Me: About how you read code? Developer: Talk about reading code … I don’t remember … never? Me: In fact, nobody really talks about it. But, don’t you find it strange that we, as an industry, are spending most of our budget on something we never talk about? Developer: Hmm. Indeed, I never thought of it in this way. storya code reading conversation
  • 17. value is always specific shared technology project specific value The main value of your project comes from the specifics of the project, and not from the shared infrastructure, such as the language or the framework used. That is why using generic checks, such as off-the-shelf static analyses, has a limited impact. Make sure that you check what is important, and not just what is simply easy. 17
  • 18. assessment development assessment is a discipline tailored explicit educated must be Assessment must be approached explicitly during the development process. It is too important to do otherwise. Only by making it explicit can it be optimized. Software systems are complex and present many contextual problems that can only be answered with appropriately tailored solutions. The ability to assess a situation is a skill. Like any skill, it needs to and can be educated. 18
  • 20. the method hypothesize existing analysis? craft analysis apply analysis interpret results confident? For the assessment effort to be useful, it must result in a definite path of action. Drive the assessment effort by formulating and refining hypotheses explicitly. Custom problems require custom solutions. To be effective, it is critical to craft an analysis tool for it. Regardless how smart an analysis tool is, it is the human that must interpret the results to decide what to do next. no yes ye no 20
  • 21. generic automaticmanual tailored why humane? A manual analysis does not scale because systems are too large. A generic analysis is not useful because the value is in the context. As humans, we need automatic support, but we need it to be tailored to the context. This is the humane solution. 21
  • 23. assessment precedes action Agile development replaces upfront design with the ability to react to new situations. But, to make the right decision we need to be able to assess the situation accurately. Thus, we need to integrate assessment deep into the process. Decisions are made all the time. They can be course grained In between iterations, or fine grained on a daily basis. Projects typically build on top of existing software. Thus, we first need to understand what we are building on. Often, before placing a product into production a final check needs to ensure that certain characteristics are met. 23
  • 24. When a concern needs to be ensured on a long term, its assessment needs to be integrated deep into the development effort. Whether large or small, through the daily assessment process these concerns get captured and distilled into immediate actions. daily assessment strategic assessment spike assessment continuous one-time narrow broad When the concern is larger in scope and the decision requires a thorough investigation we need a more structured and detailed strategic assessment. Some problems appear singularly, they have a narrow scope, and they need to be dealt fast with. Through spike assessment, the assessor uses throwaway analysis tools to gather facts fast and to support on the spot decision making. assessment in the process 24
  • 25. code has an emergent structure 25 The architecture of a software system is not a document, but the reality from the system. It is the result of multiple developers working at the same time and committing code concomitantly in different corners of the system. It is the result of following the constraints posed by the system’s current state. It is the result of the social interactions between stakeholders. It is the result of what is possible with the underlying languages and technologies. It is the result of skills. It is the result of taste. It is the result of dreams. In short, architecture is an emergent property created by multiple agents interacting constantly with each other. It cannot be fully controlled, but it can be steered.
  • 26. 1 2 3 basics of steering agile architecture know where you are know where you want to go to ensure you go where you want to 26
  • 27. daily assessment Daily assessment relies on having the team continuously identify, check and fix relevant technical concerns. identify concern agree? craft checker discuss results small task? solve now plan for later yes no yes no 27
  • 28. story The client was responsible for the development of multiple software projects. The teams were following Scrum. As the size of the projects increased, they needed a means to control the emerging design. We introduced the daily assessment routine. Each day, new concerns were raised by team members. After the regular Scrum stand-up, developers met in an assessment stand-up to discuss the validity of the concerns and identify potential improvements. If the cost of fixing a concern was larger than 15 minutes, it got either decomposed or added to the project backlog. If it took less than 15 minutes, it got pinned to the board and became a task for the day. After a couple of months, the architecture got documented and followed by everyone. daily assessment in scrum projects to do in progress done story task 1 story task 2 concern task A concern task B story task 4 story task 3 28
  • 29. 15 minutes 15 minutes is magical. First, everyone has 15 minutes. Second, 15 minutes is also long enough to actually do something with it: it is about the time it takes for a good stand-up meeting; it is about the time it takes to have a focused brainstorming session; it is also about the amount of time it takes to perform, test and commit a simple refactoring. 15 minutes is a truly magical pattern. That is why daily assessment can benefit from it. 29 pattern
  • 30. start from an empty report report Do not start from a report containing hundreds of rules that might or might not be relevant for your project. Start from an empty one and grow it as the project evolves with only rules that you have a need for. In this way, the report will only provide information that is valuable for your context. 30 pattern
  • 31. daily assessment standup One critical part of daily assessment is to get the whole technical team involved in architectural decision making. One way to implement that is through a standup that is separate from the typical daily standup. First, this standup only includes technical people to enable highly technical discussions. Second, any considered concern must have a concrete stakeholder and evidence to support the claim. Third, the goal is to reach an agreement and decide a concrete path to action. 31 pattern
  • 32. spike assessment focus Spike assessment addresses technical problems that require technical answers fast. approximate use throwaways It’s not spike if it’s not short and focused. The main goal is to find a satisfying answer. Build throwaway analysis tools. Use them aggressively. explore Ask data about the cause. Explore. Experiment. 32
  • 33. story The Moose platform ships with an engine for building browsers. For a while we had a serious bug in the rendering code that we could not track down. After several attempts and many hours of effort, we were able to capture the problem in a test. However, we still did not know where the issue came from. Due to the engine depending on deep copying of objects, using the debugger was close to useless. We then approached the problem differently: we built an interactive visualization to expose the problem. An example can be seen to the right. Without going into details, there should have been no two red lines getting into the same node from the right. As there were, we confirmed our original suspicion. Knowing the exact nodes that generated the problems lead us to find the solution in a matter of minutes. The fix was exactly one line of code. chasing a tough bug 33
  • 34. strategic assessment Strategic assessment tackles problems that have a broad scope and that are typically not formulated in technical terms. The process focuses on involving the stakeholders, and on refining the questions until they get answerable with hard facts. set goal confident? no yes spike get data compile spike spike 34
  • 35. story The system had a history of more than a decade of development using multiple technologies. A set of functionalities was reported to have performance issues. This finding had an impact on the strategic decision to open the system for more users. To assess the effort required to solve the situation, we first instrumented the runtime to produce more detailed logs that included information about the executed functions and the SQL statements. These logs were parsed to recover the execution traces. The traces were related to the static structure so that we could locate the problematic cases in the source code. All analyses were integrated in a browser that produced live reports and helped us identify multiple problems interactively. As a result, a team got assembled and improved the situation. strategic assessment of performance problems code logs unified model interactive analyses 35
  • 36. splitting the monolith: a multifaceted assessment problem One problem that requires deep understanding of the system is that of splitting a monolithic application into (micro)services. Such a monolith is often poorly understood and its inner pieces have unclear boundaries. Splitting a monolith is typically a long term project involving strategic assessment, piecemeal changes guided through daily assessment, and multiple fine grained spike assessments. example 36
  • 38. assessment in the organization To be effective assessment must be recognized explicitly as an activity during the development process. But, assessment also requires dedicated skills. For this reason, assessment must also be explicitly captured through roles and responsibilities in the organization. facilitatorstakeholder 38
  • 39. assessment stakeholder The stakeholder is the driver of the assessment process. He has to solve a problem related to the system, and is the one responsible for the end decision. 39
  • 40. assessment facilitator Assessment is a too important engineering skill to not have in- house when developing software systems. To ensure its presence we have to have an explicit role: the assessment facilitator. The job of the facilitator is not to dictate what is right and what is wrong. His job is to support the stakeholders in their assessments. In the end, it is the stakeholders that know what is and is not important in their context. stakeholder facilitator 40
  • 41. assessment department integrated in project teams dedicated department Facilitators must work together with the software project teams. However, in most cases it is important to form an explicit assessment department that builds its own culture and learns from past experiences. The assessment department is essentially a software team specialized in the domain of analysis with the clients being the rest of the software teams. 41 pattern
  • 42. empowerment not enforcement Traditionally, assessment is positioned as a process of enforcing rules by an authority external to the actual development. This authority resembles a police that is in charge with controlling and making sure things conform to the standard. The problem is that enforcement induces a negative feedback loop, and this leads to lack of cooperation from those that are supposed to benefit from the service. +- The goal of assessment is decision making. The main actor is the one that has to make a decision. It is him that should be benefit from assessment. Thus, assessment is best seen as a service. Positioning assessment as a support service, rather than a controlling one, generates a positive feedback loop. This leads to better decisions. 42
  • 43. present your assessment As long as you do not work alone, decisions must be shared. To convince others of your finding, you first have to let them know. Presenting is key. And the act of presenting does not have to match the path of finding. In fact, it most often isn’t the most efficient approach. 43
  • 44. stakeholder & facilitator are roles The stakeholder and the facilitator are roles. They can be played by the same person. 44
  • 45. functional roles assessment roles assessment roles complement functional roles 45
  • 46. adopting assessment specify act drive identify craft facilitate Stakeholders must learn to specify concerns explicitly. The second step is to learn how to transform the analysis output into actions. Finally, they have to learn how to initiate and drive the process. Facilitators have to learn to work with stakeholders to identify valuable concerns. They have to learn to craft tools fast. Finally, they have to learn to facilitate and ensure that stakeholders make a decision. 46
  • 48. The planning game is an agile technique that brings together what the product owner wants, with what the team can do. When the affected system is already significantly developed, the ability of the team to implement new stories is highly dependent on what the system allows the team to do. You simply cannot ignore the system. For a constructive planning, you need to make the system part of the conversation. Appoint a facilitator to quickly check things in the system while hypothesis are being thrown across the room. assessment-aided planning 48
  • 50. our tools shape us Marshall McLuhan warned us since the previous century that we shape our tools and thereafter our tools shape us. It follows that we should be choose carefully the tools we expose ourselves to because they determine the way we understand problems. To do this properly, we first have to understand the characteristics that those tools should offer. 50
  • 51. crafting tools economics The essence of humane assessment consists of using dedicated tools for custom problems. Using the right tool will always outperform manual work. The key is to have the right tool. craft tool use manual checks Crafting a dedicated tool does not have to be expensive. The cost decreases significantly with the appropriate skill, and the technical infrastructure. skill infrastructure cost depends on 51
  • 52. analysis cost vs usefulness Often, building the perfect analysis implies a significant effort and resources. That is because data is never clean. However, when you perceive analysis as an assessment tool, the goal transforms from getting the exact automatic result to reducing the scope for manual interpretation. From this point of view, good enough can become cheap. cost usefulness good enough 52
  • 53. easy analysis with conventions Conventions and standards are at the heart of quality assurance. Automatic detections can be used to ensure them. detection convention ensures eases When a tool costs too much, it is often because the system does not have a clear structure. Instill conventions to get the implementation of the analysis cheap. 53
  • 54. story During the introduction of daily assessment in a Scrum team, we noticed that the rules were difficult to capture in automatic analyses. At a closer look, the issues stemmed from the difficulty of locating concepts and components in the source code due to a lack of conventions for naming packages and classes. For example, concerns like “component A should only be used by component B” were difficult to implement simply because there was no easy way to locate A and B. We created concerns for controlling the naming conventions. Once the conventions were in place, “component A should only be used by component B” became trivial. conventions to the rescue 54
  • 55. story One developer raised the concern that his component must be used only through the intended public API. The main reason was to ensure that she can extend and refactor the internals of the component. As a consequence, a checker was created to detect all the violations, and through the daily assessment process, the team went through all the calls that were using the internal interfaces. However, one of the calls could not leave with the intended public API because of performance issues. As such, the team agreed that this was a reasonable exception to the rule, and it was explicitly marked in the concern. the good exception API 55
  • 56. analyses modelsdata analysis anatomy To interpret an analysis, you need to know what the input data is, and what exactly the analysis algorithm is doing. control to interpret Conceptually, an analysis has an input set of data, an algorithm, and an output model which holds a representation of the original data. This applies to any kind of analysis from a simple metric to a complex visualization. 56
  • 57. introspection navigation selection presentation basic analysis actions Given an entity, retrieve its properties Given an entity, retrieve other entities that are related Given a group of entities, retrieve those that match a criterion Given a group of entities, arrange them according to a criterion 57 example
  • 58. Consider the Java class to the right. How many methods are there? 7. But, is a constructor a method? If the metric computation does not consider it as a method, we get only 6. What about accessors? Are they to be considered as methods? If no, we have only 4. Do we count the private methods? If not, we get 3. Finally, equals() is expected by default, so we might as well not consider it a real method. Perhaps the result is 2. How many methods are there? It depends on what the metric captures. Now, let us turn consider a report that says a class has 70 methods. What does it mean? You have to know what the actual computation does. what’s in a metric? example public class Library { List books; public Library() {…} public void addBook(Book b) {…} public void removeBook(Book b) {…} private boolean hasBook(Book b) {…} protected List getBooks() {…} protected void setBooks(List books) {…} public boolean equals(…) {…} } constructor accessors default private 58
  • 59. x := compute(y) what is a parser example parser Assignment Variable (x) Call (compute) Parameter (y) Variable (y) A parser is a magic machinery that transforms some input format into an internal representation. Often the input is formed by code written in a programming language, and the output is an abstract syntax tree. Parsing is usually the first step in building a model useful for high-level analysis. 59
  • 60. what is a visualization example A visualization is an analysis that produces picture that reveals the inner structure of the data. Visualizations are often confused with visual languages. While both rely on the eye as a receptor, they differ in intent: visual languages are meant as tools for communicating ideas, while visualizations are tools for discovering them from unknown data. 60
  • 61. what is a browser example A browser is a user interface whose purpose is to facilitate the manipulation of models. At its core, the browser offers means to navigate through models, and to present their different facets. For example, a file browser let’s you browse the file system. The code browser let’s you browse the code. These tools make you productive because they match the workflow. Any workflow should benefits from it. 61
  • 62. software is data Source code is not text. Logs are not text. Configuration specifications are not text either. They are all data. It’s just takes you to look at them as such. 62
  • 63. systems are heterogenous build scripts versions configurations code in multiple languages & technologies runtime info documentation issue reports A thorough assessment must take into account the multidimensionality of modern systems. It’s almost never just source code written in a single language. persistency 63
  • 64. engine analysis dedicated engine tooling buildup Assessment requires analysis tools tailored to the context of the problem and of the system at hand. Generic engines offer reusable high level support to make tool building effective. Yet, often there are less generic pieces that are still repeatedly needed in various analysis contexts. When reuse is needed, dedicate a buildup phase to construct this dedicated engine that is reusable in the given context. There are several cases for when such reusable components are needed. An example is a dedicated importer for a proprietary language or data format that can be reused in several language-specific analyses. Another example consists in building a model and a query interface for a specific set of problems. 64
  • 65. story The client had a system written in multiple languages including a proprietary scripting language and several formats for other data. To enable engineers to assess the state of the system, we allocated an explicit project to build up a dedicated infrastructure. The process was made more difficult by the non- existence of an explicit grammar for the scripting language or for the other file formats. The first step was to reverse engineer these grammars. This was achieved by taking a large body of examples and iteratively constructing parsers that consumed all examples. We used these parser to construct internal abstract syntax trees. Out of these we created an importer to produce a unified high level model. This model was then used as a basis for several assessment projects and tools. tooling buildup for a proprietary language abstract syntax trees sources model importer 65
  • 66. throwaway analysis tool Crafting custom analysis tools should be cheap. Not fancy analyses. Effective ones. Creating effective analyses should be so cheap that it should still be profitable to use the crafted tool only once and throw it away afterwards. All we need is the right infrastructure. And, the right skill. craft tool use throw away 66
  • 67. educate your requirements Be selective when choosing your tools. When faced with a new tool, do not stop at what it can do out of the box. Get to understand your context and formulate your own requirements. Ask in what ways you can tailor the tool. It is the engine behind the tool that is the most important, because your problems are specific and they deserve a tailored analysis. 67
  • 68. models are central system model meta model represents described by Models are central to the analysis workflow. A model is a simplification of the system under analysis, and its goal is to help answer questions about this system. To reason about a model we need to know its structure. This is the responsibility of the meta-model. The effectiveness of a model stems from the ability of the meta-model to offer the information needed for the desired analysis. 68
  • 69. analysis must be iterative models analyses Assessment is seldom a static game. An effective assessment is most often carried out as a conversation with data. Thus, an analysis tool must support an iterative workflow that enables you to refine your hypothesis as you drill in the data. 69
  • 70. enginesenable tailoring An analysis transforms an input data into an output model. The value of an analysis comes from the answers provided by the resulting model. An analysis engine is a piece of software whose output is an analysis tool. The goal of an engine is to enable the creation of custom analyses. Thus, an engine is to be judged from two points of view: the kinds of analysis it lets you build, and the costs associated with creating a new analysis. Engines are instrumental in making humane assessment possible. engine analyses modelsdata 70
  • 71. importers modelsdata importers handle raw data An example of an importer can be a parser that takes source code and produces a high level model. Another example can be a processor of log files that builds an execution model. An importer is an analysis that takes raw data and transforms it into a model that is more suitable for analysis. 71
  • 72. importer model select relevant parts custom visualization visualization engine end result sources a simple analysis decomposed example Through this analysis, we import the sources, we select a subset of relevant parts, and we show them using a custom visualization. The entire workflow is supported by Moose. query engine 72
  • 73. www.moosetechnology.org Moose offers several generic engines that enable the analyst to craft new tools fast and cheap. engines importers models analysesdata Moose is a platform for software and data analysis that makes assessment practical. Various kinds of data in various formats can be imported into Moose, such as software systems written in Java or C++. Moose offers various tools that deal with metrics, clustering, querying, visualizing, and interactive browsing. A key concept is that the results of any analyses are fed back into the model and are available for further analysis. 73
  • 75. beyond tools Tools are important, but assessment is ultimately a human activity. 75
  • 76. assessment > code metrics assessment analysis code metrics 76 metrics
  • 77. inner radar To find solutions, you first need to formulate the problem. To formulate the problem you first need to be able to identify it. To identify it, you need a radar. An inner radar. You cannot buy such a radar, but you can build and train your own. 77
  • 78. story The client had a system in which one central class seemed to incorporate most of the system knowledge. The class had some 5000 lines of code. We noticed that there seemed to be too many somewhat similar if statements. We ran a duplication analysis, and indeed, large chunks of code were duplicated multiple times, and they included long lists of if statements. In the end, the solution was to introduce a state design pattern. The client got excited at the prospect, but we announced that the root of the problem is the broken radar: someone opened the class, entered line number 5000, committed the code, and then slept well at night. the root of trouble 1 2 3 ... 4998 4999 5000 78
  • 79. analysis design implementation testing assessment 10% 10% 30% 30% 20% the end goal Assessment is a pervasive activity that must be captured explicitly during a software project. For the state of practice to change, we need to acknowledge the existence of assessment and plan for it explicitly. management spreadsheet 79
  • 80. Stakeholder (Manager/PO) Stakeholder (Developer) FacilitatorStakeholder (Architect) DecisionProblem Data Model Analysis engineAnalysis