Melhoria da Qualidade do Processo em Fábricas de Software Open Source através do Personal Software Process Julio Maravitch Maurício Neto [email protected] VI Encontro CIn sobre Qualidade, Processos e Gestão de Software 27/03/2007 Agenda • • • • • Modelo Open Source de Desenvolvimento Fábricas de Software Open Source Personal Software Process Utilizando PSP em Fábricas OS Conclusões e Trabalhos Futuros Objetivo • Entender como funciona o ecossistema OS • Atender às necessidades do ambiente – Promover a melhoria da qualidade do processo de desenvolvimento – Pode ser melhorado? – Como? Free Software Projects • Nascem como iniciativa isolada e particular • Usuários são codesenvolvedores • Divulgação “boca-a-boca” • Teste massificado pelos usuários • Gerência de versões é complexa e “bem-definida” Open Source Projects • • • • • • • • • • • • • • • • • • • (Sun apr 16 00:10:21 BRT 2006) 133,421 projects! Communications (13469) Database (5388) Desktop Environment (2822) Education (3252) Formats and Protocols (1292) Games/Entertainment (12694) Internet (21951) Multimedia (11518) Office/Business (6136) Other/Nonlisted Topic (2065) Printing (417) Religion and Philosophy (274) Scientific/Engineering (9942) Security (2494) Sociology (355) Software Development (18587) System (17790) Text Editors (2436) Open Source Projects • (Tue mar 27 11:57:45 BRT 2007) 184,564 projects! • • • • • • • • • • • • • • • • • • • Communications (18433) Database (6942) Desktop Environment (3760) Education (4920) Formats and Protocols (2870) Games/Entertainment (17237) Internet (28264) Multimedia (15505) Office/Business (9655) Other/Nonlisted Topic (2560) Printing (511) Religion and Philosophy (333) Scientific/Engineering (14895) Security (3274) Sociology (429) Software Development (28149) System (22952) Terminals (688) Text Editors (3187) Causas de Descontinuidade de Projetos SW Livre • Falta de interesse, tempo ou motivação – mudança de liderança nos projetos impactam sua continuidade • Code Forking – cada usuário tem acesso ao código e pode alterá-lo e redistribuí-lo sem o conhecimento do líder do projeto Free Software Engineering Resume • “A Field to Explore” • “is still in its infancy” (2003!) • “How to create free software? Issues: – Classification of free software projects – Creation of a methodology – Methods + classification + models ++ Simulation (intelligent agents) = Free SW Engineering” The OSS model • Three dimensions: – structure, process and culture Division of labour Co-ordination mechanisms structure culture Eletronic communication Multicultural community Distribution od decisionmaking Informal structure Values: reciprocity, gift giving, reputation, ideology Political structure Core assumptions Organizational boundaries Legitimate basis of authority process OSS development process • • • • • • • Problem discovery Finding volunteers Solution identification Code development and testing Code change review Code commit and documentation Release management building a software factory... [Making the software factory work... 1990-1999] http://www.cin.ufpe.br/~in953/papers/MakingTheSoftwareFactoryWorkLessonsFromADecadeOfFactory.pdf 1. to define a detailed software development process 2. staff members were given extensive training in the new process 3. process specification separated from process execution 4. data collection and analysis 1. 2. 3. 4. 5. interviews software process assesments process attributes for each project configuration management system project tracking data o PROCESSO é complexo! (c) MERX LLC processo é complexo... Ex.: Ampla F á E l a r b o b r i a d o : O J S - f o S e d a c R e v t i s ã o r a t i f i c n e I d q s a d n a m e s m a s s o e p s a i d d n e d s a r e á n e i m c e h n e d p e t a o c a l i d a V r r i t o o Prospecção o o ã ç a m r o f 0 e s t i s ã c s s o e / l a s c r n L í t e D R U C d e r T é i u q E p r e G t e n d e e e p e G e r r n e t P n e r t o e s s l i a r c i a g l o o a u Q e e n c e T e c m o C e d s o a l i d d e s o T é d í L 2 e p i u q E e d í L 1 e e r T é q E i u n e d p G i c n c s o s o i c n c n c i c s o s o o p o ? t j e o r P e d e t n e r e r e G S f r e r s t a j e e c a o r P t i n r t o f t o e r t a i p c R D T q e c P R O D R T ? K O N R D s e c f a s o r i t t e i s i n u r a r G p G s e O l i d e a V r a l C e D P i n s R P T p e c a f r e t i n r a t j e o r P S ? O R P u q e l i e G R G R r o t e i r D C R E A o ã ç i t i s u q e n p G s a c G l C N I ã o t M e s e u r s l a c G i t i s v r a d n e g t a n e s r e p a r a o ã ç i t a l i c e u / o s i t o i s u q r e A a r e V - i D c G p m e a B A C : o i r o t l d o i c í n a v Prospecção I u s o r p A - R n o C a M G , L M l p m A P J , B A C : a d e r a w N S R D Contrato Proposta r d e e C r t i n r a i s i t o i s c , s M e v e R u q e e c f a o s u R C U M E M é T r P r i a a i c n c P e d r P j e R D R F s o F P P o ã ç t n o P e n d u e l i s e d á r e P r i a C r C F P P m o o r i a t s o i a p c D p G c G o n p G E R c G a t s l a t o o p o e o n C U s o R p G R D R D A , s s a E R E M c G p G C P l C U T P P T 1 P P R E M 1 p , C P r R a D t n e e s T e P r p A G c G i D C P R D p Proposta G Execução r p a v j e a t d õ e o o ? s ? g e R s u s N n e r p p o i s s j e r t r a o ã t o o d C S F P P , F P i s P C P , T P , R D e r a P C P T O R i s v e R S . T O R R D T P F P P v e R T O R o r o P T P P P P C o C r m a t s o l c o c i a r e c i s r r l i a a v p s P P P P c G p p i a r o r c P e A P P C G a i s v e R L p G P i D o g e n e R S ? Execução N a e R e c t r e e n P P s s i n r n r a l i a m u h f t w o s r d a h a v a e R a w e s v n e i e b m a e l v r d o a r a p n t t n e i m L p t l a e n i t s e T i o i s P r a r A e T L P C R E P r E s t j e o Execução u n p r t a DR DR R E M d q s u e r r a a r a o n ã s a ç t a m l e b o n e m l e i c r n u m d o C S ? P o a o r j e Gp Gc D o P r e d í L t o 2 B-1 - p i m m p l e m e n t d i n r r e s r n e t e t n e D S ( o ) D ( I ) o M E i s v n l a e p R e S ? o i d I R T ? s e d a e D r r a d o e e u q r p i s o i r i g r r o C 2 - B P R Gp B N ? r a r g e t n I P D DR p G i t o t j e P P D R UC t i e d i s u r q p e r r a o i s n o n e R m P R C P l i z t n a e r g r N m ç a e d e t s ã e T r m Execução ã o i d o c S ? s e d a G q G o f n o c A n p i m s o l i c r a o n v ç a a s G p i t ç a ã S M S M c o r s N ? s E o c n l i c F e i t i r a p r a ã ç Function Point Analysis G PPF c r o m MER P P T I R o e d o a l G p d A u S q G I ç G r l i a a v A M UC T P 3 a e R ã ç n a a i t d l i c u o S P D S , c r i a c o g e o C p L s i t o t o j e G C P i c C P o i ã í n I T P T P e p G v l a e n u n r e l i e r c a d m l p D R n o e c g C R 3 s o p G C p L o i d l v e o s e m a Revise Requirements, interfaces, E-R and Use Cases e r a A D e d e e d a t s e T ã N m S N I S ? K r f n S e D r P a o d A o R D P P T P C P e D p t n e s e p i t o i s e l v o v n O o r i d A T L P e N e e a n N e L A r l i z U ) s o s a c d r e d a o p L i f i c s t e i d e d e d o c n s a o b d r a a d c e p T L ( I D c p L P ) o e d s o ( S D p L M e D a e R T L P 1 - o s u p G r a s a c r a l i z a e e o D R p d a o d o n A e r c u l e q e S L p e p L r L a p e P B g r m a a i s r v o n o r c s B-2 p p o r s t o l i a e d n e L d e L s , s o e r e r e a a v a i d m a e R r P r u e D p ã n r a l i s a n e d a i d r m f o r j a e n l a p ç t a n e m l e o s e B o ã N q G MER Entrega ã N m r o f n o c m e o i d t s a e T r a t i s l i z S a e R s e d a P P e d e I R P T o c S ? A n p i m G ã n r a l i s a n e d a i d r m f o r j a e n l a p ç t a n e m l e D p G q o s P MER e B o ã P P e N R D ( c e e d t e o ã ç i t a t n l i e c a p ç a s e T a o c e i t m n p G l C ) a I A R e t o l ? i c i a e P n r a o í t i a d 0 9 r n e a p r g ( e d o d i a ) s R A o Garantia ã r t o c i a l N d a e n t a m e m a i n e r a e R t r a l i z n e m s o t f f t l a a u i g a w P r r a e A r A r t e t e r F l u r R e f a t o f a t o s p o o e P r o i d A c c o s s e o ã i s o s n C s a b i l i d a d D C G G G G L D i l c t p q p e D C G G G G L D r t o i r e t e n l i e t e n r e e t e n r e e t e n r e e t e n r e e o d r e í d o v n e s e t o r e s l i a r c e m o C l o o n c e T e d s t o j e r o P e d s s e c r o P e d t o j e r o P r o d e l v e MER g i a o s e Q u a l i d a o o l e t r b n m d a a o A S ? P r n a o c l i s e d D p e D r a e DR ? S R B Gp Gc P d e a < _ > t o j e r o P o d . d ó C < _ R < V _ > t o j e r o P o d . d ó C < _ R < V _ > t o j e r o P o d . d ó C < _ T < V _ > t o j e r o P o d . d ó C < _ C < V _ > t o j e r o P o d . d ó C < _ P V _ > t o j e r o P o d . d ó C < _ R E V _ > t o j e r o P o d . d ó C < _ T L < V _ > t o j e r o P o d . d ó C < _ I T < V _ > t o j e r o P o d . d ó C < _ U > t o j e r o P o d o i g d ó C < _ O > d d m m a a a a < _ T O R < V _ > t o j e r o P o d . d ó C < _ M < V _ > t o j e r o P o d . d ó C < _ C > t o j e r o P o d o i g d ó C < _ F P _ > t o j e r o P o d o i g d ó C < _ C _ > t o j e r o P o d o i g d ó C < _ S V _ > t o j e r o P o d o i g d ó C < I _ _ > t o j e r o P o d o i g d ó C < _ A _ > t o j e r o P o d o i g d ó C < _ M B A D P P P M P R M P P S U P D D D R R K ( o ) = O p c i o n a PP l N N Gc p G e r R e C n c e a r e p r t r a i s g n e m a t o j e r o G A D p G q R n p e e r q F 9 9 9 9 9 9 9 9 9 9 9 9 9 V < V V < < 9 < < > > > > < 9 9 9 9 9 PT d d m > 9 9 . < > 9 9 . < > 9 9 . < > 9 9 . < 9 9 . < > > 9 9 < > 9 9 < > 9 9 . < > 9 9 _ V V 9 9 < 9 9 m a > > > > a a 9 > 9 9 . < > 9 9 . < . < > 9 9 9 . < > 9 9 . < > 9 9 9 . < > 9 . < > 9 9 . < > 9 > > 9 9 9 > 9 9 9 > > > > > r t f e A D P P P M P R M P P S C P D D D R R K a t t a o r o r o l a o l a e a e r o o a o i a i a i a e e n o e r n u e c r r l i a o d a e ( < p o u q s e i n r u s o i G p s t n P O R M K o ) e p L e d e o d l t a t o u j e o i ã m a i p a R PPF p i s o i ã q v i G p r a l i z e d A o d o t G R A r d z t e n p u d o f o e d s e r p o d t o c o t o o x n o P f a t e A P P Build Technical Proposal and Project Plan UC r c O e r Encerramento Encerramento c P s n n o I P T B e D DR R P e e o t r D l r i a t o D p G a p G q G r a i n r e a t r p e e l i s a e D r P D n A o t n e u r a d n m e a g i n c p G e r G q G A S A t B Gp Di Build Commercial PC Proposal e D m s o i ã n u e R e d s i t o i s u q e R e d t o n e m u a i c n c é T t a s o l i a r c e m o C t a s o t o j e r o P e d o e R e s e d a t i d n E e d l o e t e s e T e d o e d s t e n e i d c I n e d r i o t ó r i o á u s U o d l a u o i ã i n p O e d a i s u q I ) t a s a p a ( N o t i p t ó s a ç n a d u M e d o ã ç i t a l i c o s U e d o s o ã ç n u F r o p s t o n s e s s l a C e d a m r a g i a c n ê u q e S e d a m r a g o ã ç r a t e I n e d a m r a g o ã ç i t a e c A e d r i o t ó l a o n s r i a o l h e M e d r i o t ó l a e s a B e g d l e w o c p p n d n l a n c l a e m a n i o t e s e T s P r o c e s s o n t o s PT 1 To do an effective job, you need to... • Plan your work • Do your work according to this plan • Strive to produce the highest quality products Personal Software Process (PSP) • It is a disciplined way of writing software which can lead to dramatic improvements in – the quality of the software you write – your productivity – the quality of your plans and estimates. • Following a discipline like this can lead to greater self-knowledge, a valuable thing in itself Personal Software Process (PSP) • It shows how to apply advanced engineering methods to their daily tasks • Provides detailed estimating and planning methods • Shows how to track sw engineers' performance against these plans • Explains how defined process can guide their work • Will lead you away from random hacking and towards professional software eng. PSP is not... • a Silver Bullet solution • a radically different approach to development PSP is • a framework that allows detailed planning and tracking of project status • a vehicle to collect “in process” metrics to provide insight and opportunities to improvement • a way to protect development steps needed to “build in” quality What does PSP provide? • Measurements – Size – Time – Defects Time estimating error Defect Level Improvement Productivity Results PSP processes PSP Process Flow Benefits • PSP has the potential to increase your effectiveness as a programmer dramatically • The data you collect and the conclusions you infer from them can empower you in negotiations with your boss • Deeper benefits are possible too. Any selfknowledge has the potential to lead to personal growth Best practices • • • • • • • • Task breakdown (detailed planning) Time alloted to Design Size estimation methods Time alloted to Review/Inspection Time tracking Defect tracking Metric analysis Coding standards Why are we doing all this? • The quality of a software system is determined by the quality of its worst components. • The quality of a software components is determined by the quality of its developer’s knowledge, discipline, and commitment. • As software professionals you should now how to measure, track, and analyze your own performance. • You should be able to learn from your past failures and improve your personal practices. Utilizando PSP em OS • Dificuldades das Fábricas OS – Motivação dos participantes • Melhoria pessoal – Configuraçao inconstante no espaco-tempo – Coordenacao de atividades de forma isolada e assíncrona • Modelos tradicionais se mostraram ineficientes • Alternativa bottom-up Utilizando PSP em OS • Metodologia – Definição de um processo de desenvolvimento de fábricas OS – Execução do processo {caos...} – Identificação das necessidades de fábricas OS – Busca por alternativas de melhoria {PSP} • Casamento de melhorias oferecidas com as necessidades requeridas Conclusions & Future Work • Open Source é um oceano azul a ser explorado • A qualidade deve acontecer de forma bottom-up • Indicativamente, PSP pode auxiliar OSS na busca por melhoria da qualidade • Estudos Empíricos – Desenvolvedor – Gerente – Cliente Referências Alvaro, A., Santos, T., Andrade, P., Vasconcelos, J. Albuquerque, J. and Meira, S. (2004) “Lições Aprendidas na Criação de uma Fábrica de Software Open-Source”, 5o Workshop de Software Livre, WSL’2004, Porto Alegre, RS. Baker, E. (2001) “Wich way, SQA?”, IEEE Software 18(1), pp. 16-18 Belleza, C., Levi, F., Ochner, J., Maravitch, J., Vieira, H. and Marcuschi, R. (2006) “Fases de Criação de uma Fábrica de Software Open Source Distribuída”, Universidade Federal de Pernambuco Cavalcanti, A., Lucena, L., Lucena, R., Moraes, A., de Fernandes, D., Pereira, S., Albuquerque, J. and Meira, S. (2005) “Towards an Open Source Software Factory”, In: 2nd Experimental Software Engineering Latin American Workshop, Uberlândia, MG, 2005. Crowston, K., Annabi, H., Howison, J. and Masango, C. (2004) “Effective Work Practices for Software Engineering: Free/Libre Open Source Software Development”, WISER. El Emam, K., Shostak, B. and Madhavji, N. (1996) “Implementing Concepts from the Personal Software Process in an Industrial Setting”, In: Proceedings of the 4th International Conference of Software Process, Brighton, England Fabriks (2005) “An Experience of Modelling and Implementing an Open Source Software Factory Methodology”, SIMS2005 X Simpósio de Informática. SBC – Sociedade Brasileira de Computação, Uruguaiana – RS. Fagan, M. (1986) “Advances in Software Inspections”, IEEE Transactions on Software Engineering 12(7), pp. 744-751 Feller, J. and Fitzgerald, B. (2002a) “Understanding Open Source software Development”, London: Addison-Wesley Feller, J. and Fitzgerald, B (2002b) “A further investigation of open source software: community, co-ordination, code quality and security issues”, Information Systems Journal, 12(1), pp. 3-7 Finkelstein, A. and Kramer, J. (2000) “Software Engineering: A Roadmap”, ICSE. Frank, P., Hamlet, R., Littlewood, B., Strigini, L. (1998) “Evaluating Testing Methods by Delivered Reliability”, IEE Transactions on Software Engineering 24(8), pp. 586-601 Ferguson, P., Humprey, W., Khajenoori, S., Macke, S. and Matvya, A. (1997) “Introducing the Personal Software Process: Three Industry Cases”, IEEE Computer 30(5), pp. 24-31 de Groot, A., Kugler, S., Adams, P.J. and Gousios, G. (2006) “Call for Quality: Open Source Quality Observation”, In: IFIP International Federation for Information Processing, Volume 203, Open Source Systems, eds. Damiani, E., Fitzgerald, B., Scacchi, W., Scotto, G., (Boston: Springer), pp. 57-62 Goth, G. (2005) “Open Source Business Models: Ready for Prime Time”, Disponível em:http://www.computer.org/portal/cms_docs_software/software/content/promo/promo4.pdf. Acessado em: 07/05/2006. Referências Gosh, R., Glott, R., Krieger, B. and Robles, G. (2002) “Free/Libre and Open Source Software: Survey and Study”, Part 4: Survey of Developers, International Institute of Infonomics, University of Maastricht Harris, B. (2006). “Virtual man chooses Internet over office”, DesMoinesRegister.com. Hayes, W. and Over, J. (1997) “The Personal Software Process (PSP): An Empirical Study of the Impact of PSP on Individual Engineers”, CMU/SEI-97-TR-001. von Hippel, E. and von Krogh, G. (2003) “Open source software and the private-collective innovation model: Issues for organization science”. Organization Science, 14(2), pp. 209-223 Humprey, W. (1989) “Managing the Software Process”, The SEI Series in software engineering. Addison-Wesley Humprey, W. (1994) “A Discipline for Software Engineering”, Addison-Wesley. Humprey, W. (1996) “Introduction to the Personal Software Process”, Addison-Wesley. Johnson, P. and Disney, M. (1998) “The Personal Software Process: A Cautionary Case Study”. IEEE Software, 15(6). Johnson, P. and Disney, M. (1999) “A Critical Analysis of PSP Data Quality: Results from a Case Study”, Empirical Software Engineering: An International Journal. Krishnamurthy, S. (2003) “An Analysis of Open Source Business Models”, University of Washington. Lessig, L. (2002) “The Future of Ideas: The Fate of the Commons in a Connected World”, New York: Vintage Books. Michlmayr, M. and Hill, B. (2003) “Quality and Reliance on Individuals in Free Software Projects”, In: Proceedings of the 3rd Workshop on Open Source Engineering, Portland, USA: ICSE, pp.105-109. Michlmayr, M. (2004) “Managing Volunteer Activity in Free Software Projects”, In: Proceedings of the 2004 USENIX Annual Technical Conference, FREENIX Track, Boston, USA, pp. 93-102 Mockus, A., Fielding, R. and Herbsleb, J. (2000) “A Case Study of Open Source Software Development: the Apache Server”, In: The 22nd International Conference on Software Engineering, pp. 263-272. Mockus, A., Fielding, R. and Herbsleb, J, (2002) “Two Case Study of Open Source Software Development: Apache and Mozilla”, ACM Transactions on Software Engineering and Methodology, Vol. 11, No. 3, pp. 309-346 Morisio M. (2000) “Applying the PSP in industry”, IEEE Software, 17(6), pp. 90-95 O’Connor, R., Duncan, H., Coleman, G., Morisio, M., McGowan, C., Mercier, C. and Wang, Y., “Improving Professional Software Skills in Industry - A Training Experiment", Technical Report CA-0201, Dublin City University, 2001 OpenBRR (2005) “Modelo de Levantamento para Avaliação de Preparo para Negócios”, Disponível em: http://www.openbrr.org, Acessado em: 18/02/2007. OSMM (2005) “Making the Open Source Ready for the Enterprise: The Open Source Maturity Model”, Disponível em: http://www.navicasoft.com/Newsletters/OSMMWhitepaper.pdf, Acessado em: 18/02/2007. Referências Perens, B. (1999) “The open source definition. in Open Sources: Voices from the Open Source Revolution” C. Dibona, S. Ockman, and M. Stone, Eds., O’Reilly, Sebastopol, Calif., 171–188. Perry, D., Staudenmayer, P., Votta, L. (1994) “People, Organizations, And Process Improvment”, IEEE Software 11(4), pp. 36-45 Prechelt, L. and Unger, B. “An Experiment Measuring the Effect of Personal Software Process (PSP) Training”, IEEE Transactions on Software Engineering Porter, A., Votta, L. (1995) “Comparing Detection Methods for Software Requirements Inspections: A Replication Using Professional Subjects”, Empirical Software Engineering: An International Journal 3(4), pp. 355-379 Raymond, E. (1999) “The Cathedral and the Bazaar”. 1st. O'Reilly & Associates, Inc. Raymond, E. (2001) “The Cathedral and the Bazaar. Musgins on Linux and Open Source by an Accidental Revolutionary”, revised edn, Sebastopol, CA: O’Reilly & Associates, Inc. Rothermel, G., Harrold, M. (1996) “Analyzing Regression Test Selecion Techniques”, IEEE Transaction on Software Engineering 22(8), pp. 529-551 Schulmeyer, G., McManus, J. (1999) “Handbook of Software Quality Assurance”, Prentice hall Sison, R., Diaz, D., Lam, E., Navarro, D. and Navarro, J. (2005) “Personal Software Process (PSP) Assistant”, In: Proceedings of the 12th Asia-Pacific Software Engineering Conference (APSEC’05) Stallman, R. (1999) “The GNU Operating System and the Free Software Movement”, In: Open Sources: Voices from the Open Source Revolution, O’Reilly, Sebastopol, Calif., 53–70. Turkle, S. (1985) “The Second Self: Computers and the Human Spirit”, New York: Simon and Schuster. Wu, S. (2004) “The Impact of Open Source Software”, Disponível em: http://www2.cs.uh.edu/~schwu/nOSS_TermPaper1.pdf. Acessado em: 07/05/2006. Yang, C. (2006) “Problems in Quality Assurance under Open Source Development Model”, Freie Universitat, Berlin Zhao, L. and Elbaum, S. (2003) “Quality Assurance under the Open Source Development Model”, The Journal of Systems and Software, volume 66, pp. 65-75 Melhoria da Qualidade do Processo em Fábricas de Software Open Source através do Personal Software Process Julio Maravitch Maurício Neto [email protected] VI Encontro CIn sobre Qualidade, Processos e Gestão de Software 27/03/2007