24
pos.cin.ufpe.br::es.200 3.1:- uma fábrica de software silvio lemos meira, [email protected] jones oliveira de albuquerque, [email protected]

Pos.cin.ufpe.br::es.2003.1:- uma fábrica de software silvio lemos meira, [email protected] jones oliveira de albuquerque, [email protected]

Embed Size (px)

Citation preview

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

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

– 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!

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!...