pos.cin.ufpe.br::es.2003.1:-uma fábrica de software
silvio lemos meira, [email protected] 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...
10 4
10 5
10 6
10 7
10 8
10 9
10 10
10 11
10 12
10 13
10 14
10 15
1950 1960 1970 1980 1990 2000
LOCS
0.00001
0.0001
0.001
0.01
0.1
1
10
100
1000
10000
100000
1000000
$
LOCS
Total $/LOCS
Total LOCS
Years
Lines of Code in Service: U.S. Dept. of Defense
quatrilhões de linhas de código...
ExpansionFactor
The ratioof machine
lines ofcode to asource lineof code
1
10
100
1000
1960 1965 1970 1975 1980 1985 1990 20001995
Order of Magnitude Increase Every Twenty Years
MachineInstructions
MacroAssembler
High LevelLanguage
DatabaseManager
On-line
RegressionTesting
Prototyping
4GL
SubsecondTime
Sharing
SmallScaleReuse
Object Oriented
Programming
Large ScaleReuse
142113
8175
4737.5
30
15
3
475638
Projection
Trends in Software Expansion (Bernstein, 1997)
produtividade:linguagens deprogramação
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
– Michael S. Mahoney• Development and Structure of the International Software
Industry, 1950-1990– Martin Campbell-Kelly
• todo este auê... e construir software é TRIVIAL!– vide...
procurar& ler!
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
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...