The humane software assessment (Choose Forum 2009)
-
Upload
tudor-girba -
Category
Technology
-
view
1.210 -
download
2
description
Transcript of The humane software assessment (Choose Forum 2009)
the humanesoftware assessment
Tudor Gîrbawww.tudorgirba.com
the humanesoftware assessment
Tudor Gîrbawww.tudorgirba.com
www.sw-eng.ch
software assessment
}
{
}
{
}
{
}
{
forw
ard
engi
neer
ing
actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
forw
ard
engi
neer
ing
actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
forw
ard
engi
neer
ing
reve
rse
engi
neer
ing
}
{
}
{
}
{}
{
}
{
reve
rse
engi
neer
ing
}
{
}
{
}
{}
{
}
{
reve
rse
engi
neer
ing
}
{
}
{
}
{}
{
}
{
reve
rse
engi
neer
ing
}
{
}
{
}
{}
{
}
{
reve
rse
engi
neer
ing
assessment
software assessment
software assessmentis a human activity
the humanesoftware assessment
humans1. build the system
2. perform the assessment
3. consume the assessment
humans1. build the system
2. perform the assessment
3. consume the assessment
Conway, 1968
the shape of the
influences the shape of the system
organization
Conway, 1968
system
organization
Gîrba etal 2005
Junker 2008
Lungu etal 2007
Conway, 1968
system
organization
system
organization
humans1. build the system
2. perform the assessment
3. consume the assessment
humans1. build the system
2. perform the assessment
3. consume the assessment
humans1. build the system
2. perform the assessment
3. consume the assessment
humans are not machines
it is humane to identify patterns
read all code in one hour?
humans identify patterns
humans identify patterns
humans identify patterns
Lanza, Ducasse 2003
it is humane to jump to conclusions
it’s not lupus
it is humane to have preconceived ideas
NOM = ?
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(…) {…}
}
NOM = 7
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(…) {…}
}
NOM = 7 6
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(…) {…}
}
NOM = 7 6 4
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(…) {…}
}
NOM = 7 6 4 3
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(…) {…}
}
NOM = 7 6 4 3 2
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(…) {…}
}
NOM = 7, 6, 4, 3, 2 ?
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(…) {…}
}
NOM = 7, 6, 4, 3, 2 ?
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(…) {…}
}
you decide
analysis
control
analysis
control to interpret
analysis
Lanza, Ducasse 2003
requires
interpretation
Lanza, Ducasse 2003
requires
interpretation
control to interpret
analysis
it is humane to ask questions
WhatWhereWhenWhoHow
WhatWhereWhenWhoHowWhy
it is humane to hypothesize
Model
GUI
Model
Helpers GUI
Model
Murphy etal 1995
Helpers GUI
Model
Brühlmann etal 2008
Brühlmann etal 2008
humans are not machines
tools shouldnot drive
tools shouldnot drive
empower
}
{
}
{
}
{}
{
}
{
reve
rse
engi
neer
ing
assessment
Spinellis 2003
package 1
package 2
...
Class A
Class B
...
method M
method N
...
source code
package 1
package 2
...
Class A
Class B
...
method M
method N
...
source code
Bunge etal 2009
b := TableLa
youtBrowser
new.
b column: #n
amespaces;
column: #c
lasses;
column: #m
ethods.
b showOn: #n
amespaces;
using: [
b tree
displa
y: [ :model
|
mode
l allNamespa
ces
sele
ct: #isRoot
];
childr
en: #childSc
opes;
format
: #name ].
b showOn: #c
lasses;
from: #nam
espaces; usi
ng: [
b list
displa
y: #classes;
format
: #name ].
b showOn: #m
ethods;
from: #cla
sses; using:
[
b list
displa
y: #methods;
format
: #signature
].
b sendToOuts
ide: #class
from: #cla
sses.
b sendToOuts
ide: #method
from: #met
hods.
B := TableLa
youtBrowser
new.
B title: 'Gl
amorous Brow
ser'.
B row: #nav;
row: #deta
ils.
B showOn: #n
av;
using: [
B custom
: b ].
B showOn: #d
etails;
from: #nav
->#class;
using: [
B text
displa
y: #sourceTe
xt ].
B showOn: #d
etails;
from: #nav
->#method;
using: [
B text
displa
y: #sourceTe
xt ].
moose.unibe.ch
Bunge etal 2009
what you can,governs what youwish
humans1. build the system
2. perform the assessment
3. consume the assessment
humans1. build the system
2. perform the assessment
3. consume the assessment
the humanesoftware assessment
Tudor Gîrbawww.tudorgirba.com
Tudor Gîrbawww.tudorgirba.com
creativecommons.org/licenses/by/3.0/