pos.cin.ufpe.br::es.2003.1:uma fábrica de software
silvio lemos meira, [email protected]
jones oliveira de albuquerque, [email protected]
software: uma coisa estranha
• Lei da Complexidade do Software
– Qualquer programa ou sistema, por mais complicado
que seja, tornar-se-á AINDA MAIS complicado se for
observado da forma correta.
• Corolário de Quéops {para software}
– Nenhum programa ou sistema é construído dentro do
prazo ou do custo
• Observação de Herr Baygon
– Em qualquer programa ou sistema, sempre há um
bug a mais...
Lines of Code in Service: U.S. Dept. of Defense
10
15
1000000
10
14
100000
10
13
10000
10
12
1000
10
11
100
10
10
10
Total LOCS
quatrilhões de linhas
de código...
LOCS
10
9
1
10
8
0.1
10
7
0.01
10
6
0.001
10
5
0.0001
10
4
0.00001
$
LOCS
Total $/LOCS
1950
1960
1970
1980
Years
1990
2000
Trends in Software Expansion (Bernstein, 1997)
Projection
1000
638
475
Expansion
Factor
The ratio
of machine
lines of
code to a
source line
of code
113
100
75
142
81
47
37.5
produtividade:
linguagens de
programação
30
15
10
3
1
Order of Magnitude Increase Every Twenty Years
1960
1965
1970
1975
1980
1985
1990
1995
2000
Machine
Instructions
Macro
Assembler
High Level
Language
Database
Manager
On-line
Prototyping
Subsecond
Time
Sharing
Object
Oriented
Programming
Large Scale
Reuse
Regression
Testing
4GL
Small
Scale
Reuse
bilhões pelo ralo... 20% de US$2.7T
= um Bra$il por ano em sw no lixo!
PIB do Brasil
mas do jeito que vai... podemos
acabar no...
{jaron lenier}
÷ ...the "planet of the Help Desks", in
which the human race will be largely
engaged in maintaining very large
software systems... not an entirely
unappealing prospect, since it would
keep humanity gainfully employed...
qual parece ser o problema?
• status ONTOLÓGICO de software
– o que é mesmo? pista: software NÃO está sujeito às
LEIS DA NATUREZA!...
• como chegamos ao entendimento atual?
• como fazemos software?
• The Roots Of Software Engineering
procurar
& ler!
– Michael S. Mahoney
• Development and Structure of the International Software
Industry, 1950-1990
– Martin Campbell-Kelly
• todo este auê... e construir software é TRIVIAL!
– vide...
dá pra ensinar em ½ dia!
é isso que se deve saber?
usar isso leva a quê?
• As you may know, three hundred years ago at the end of
the twentieth century, a monstrous earthquake shook the
west coast of California. The island on which we are
standing used to be part of a mountain range leading to a
city that was called San Francisco...
• A conspiratorial theory of social history holds that this
labor-intensive, low-quality industry was deliberately
created to supply artificial employment to the explosively
growing population characteristic of that era and not
curbed until after the catastrophes at the end of the
twenty-first century...
• The Software Factory, stwww.weizmann.ac.il/G-CS/BENARI/articles/factory.pdf
sw: o produto e o processo
• o produto não é trivial:
– tem VIDA, no sentido em que tem um longo e
mutante processo de desenvolvimento e
utilização;
– NÃO obedece leis da natureza;
– o SISTEMA modifica a INSTITUIÇÃO
• a natureza de software é INTENSIONAL
– e a instituição JÁ ESTÁ MUDANDO enquanto
o software está sendo desenvolvido
• quem mandou lidar com a vida real?
onde a fábrica entra...
• no ciclo de VIDA de software?
– na produção “inicial”, apenas?
(c) MERX LLC
o PROCESSO é complexo!
(c) MERX LLC
e as pessoas?...
(c) MERX LLC
problema real: qual é o problema?
http://mockus.us/papers/factory.pdf
• There are factors that create similarities and differences
among projects; this means that one model for software
development does not work in all situations;
• There is a direct relationship between process and
product; this means one must choose the right processes
to create the desired product characteristics;
• Measurement is necessary and must be based on the
appropriate goals and models; that is, appropriate
measurement provides visibility;
• Evaluation and feedback are necessary for project
control: this means a closed loop process for project
control is needed;
• Software development follows an experimental paradigm,
thus, learning and feedback are natural activities for
software development and maintenance.
...
• Process, product, knowledge, and quality models need to
be better defined and tailored; the components of the
software business have an evolutionary nature and must
be defined according to it;
• Evaluation and feedback are necessary for learning; a
closed loop for long range improvement, as well as for
individual project control, is needed;
• New technologies must be continually introduced;
organizations and researchers need to experiment with
technologies;
• Reusing experience in the form of processes, products,
and other forms of knowledge is essential for
improvement, that is, reuse of knowledge is the basis of
improvement;
...
• Experience needs to be packaged;
organizations must build competencies in
software;
• Experiences must be evaluated for reuse
potential; an analysis process is required;
• Software development and maintenance
processes must support reuse of
experience, where reuse must be defined
in terms of what, how and when to reuse;
...
• A variety of experiences can be packaged:
process, product, resource, defect and quality
models can be developed and updated based on
experience;
• Experiences can be packaged in a variety of
ways; we can use equations, histograms,
algorithms, etc. as mechanisms for packaging
experience;
• Packaged experiences need to be integrated; an
experience base is a repository of integrated
information, relating similar projects, products,
characteristics, phenomena, etc.
o que nós “sabemos”, aqui?
• java & TODO o pressman ou sommerville
• ou seja:
– requisitos, especificações, refinamento,
validação e verificação, métodos, técnicas,
linguagens e ferramentas, componentes,
reutilização, manutenção, modelagem de
processos, qualidade, reengenharia,,
verificação, validação e teste... além de
programação!...
– {falta o quê?}
o que vamos fazer?
• montar uma fábrica de software!
• como? em 4 meses? SIM!
– definir a fábrica, treinar o pessoal: um mês;
– rodar um piloto e afinar o processo: um mês;
– desenvolver uma aplicação real: DOIS meses!
• resultados:
– fábrica;
– produto!
– relatório detalhado avaliando o experimento!
quem vai fazer?
• VOCÊS!
– nós seremos “experts”... e avaliadores
• An expert is a man who has made all the mistakes
which can be made in a very narrow field.
– Niels Bohr. Nobel Prize. Physics. Twice.
• avaliação
– incluirá a AVALIAÇÃO INTERNA da fábrica!
– como?
• vocês hão de dizer...
• uma fábrica de software, como TODO negócio, tem
que ser EFICAZ e EFICIENTE. resolvam-se!
o que vai contar? aprendizado!
• resultados
– The essence of competitiveness is liberated when we
make people believe that what they think and do is
important - and then get out of their way while they do
it.
• Jack Welch. GE former CEO
• criatividade
– Some men see things as they are and say, why?
I dream things that never were and say, why not?
• George Bernard Shaw. Genius.
• capacidade de abstração
– 1. Out of clutter, find simplicity. 2. From discord, find
harmony. 3. In the middle of difficulty lies opportunity.
• Albert Einstein. Genius as well.
próxima aula:
• quem são as fábricas
• como se organizarão
– negócios
– processos
– ferramental
• como vão sair do zero
–
–
–
–
–
–
qual é o plano para as três semanas até o piloto?
em três semanas, o processo deve estar definido
deve haver um piloto (interno) rodando na quarta...
pois haverá RFPs no ar nesta época...
que terão que ser respondidos até o fim do piloto
e entregues até o fim do curso...
guddorakku!...
Download

es.2003.1: uma fábrica de software