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