Você está na página 1de 215

GUA AL CUERPO DE CONOCIMIENTO DE LA INGENIERA DEL

SOFTWARE

VERSIN 2004

SWEBOK
UN PROYECTO DEL COMIT DE LA PRCTICA PROFESIONAL DEL IEEE COMPUTER SOCIETY BORRADOR - ESPAOL

GUA AL CUERPO DE CONOCIMIENTO DE LA INGENIERA DEL


SOFTWARE

VERSIN 2004

SWEBOK
Directores ejecutivos Alain Abran, cole de Technologie Superieure James W. Moore, The Mitre Corp. Directores Pierre Bourque, cole De Technologie Superieure Robert Dupuis, Universite Du Quebec A Montreal

Jefe de proyecto Leonard L. Tripp, Chair, Professional Practices Committee, IEEE Computer Society (2001-2003)

Copyright 2004 por The Institute of Electrical and Electronics Engineers, Inc. Todos los derechos reservados.

Copyright y permisos de impresin: Este documento puede ser copiado, completo o parcialmente, de cualquier forma o para cualquier propsito, y con alteraciones, siempre que (1) dichas alteraciones son claramente indicadas como alteraciones y (2) que esta nota de copyright est incluida sin modificacin en cualquier copia. Cualquier uso o distribucin de este documento est prohibido sin el consentimiento expreso de la IEEE.
Use este documento bajo la condicin de que asegure y mantenga fuera de toda ofensa a IEEE de cualquier y toda responsabilidad o dao a usted o su hardware o software, o terceras partes, incluyendo las cuotas de abogados, costes del juicio, y otros costes y gastos relacionados que surjan del uso de este documento independientemente de la causa de dicha responsabilidad. IEEE PONE ESTE DOCUMENTO A DISPOSICIN TAL CUAL EST, SIN GARANTA ALGUNA, EXPRESADA O IMPLICADA, COMO LA EXACTITUD, CAPACIDAD, EFICIENCIA COMERCIAL, O FUNCIONALIDAD DE ESTE DOCUMENTO IEEE NO SER RESPONSABLE DE CUALQUIER CONSECUENCIA, INDIRECTA, FORTUITA, EJEMPLAR, O DE PELIGROS ESPECIALES, AN SI IEEE HA ADVERTIDO DE LA POSIBILIDAD DE DICHOS PELIGROS.

Nmero de Pedido C2330 de la Sociedad de Computadores IEEE ISBN 0-7695-2330-7 Biblioteca del Congreso Nmero 2005921729 Copias adicionales deben ser pedidas desde: Sociedad de Computadores IEEE Centro de Servicio al Consumidor 10662 Los Vaqueros Circle P.O. Box 3014 Los Alamitos, CA 90720-1314 Tel: +1-714-821-8380 Fax:+1-714-821-4641 E-mail: cs.books@computer.org Centro de Servicio IEEE 445 Hoes Lane P.O. Box 1331 Piscataway, NJ 08855-1331 Tel: +1-732-981-0060 Fax: +1-732-981-9667 http://shop.ieee.org/store/customerservice@ieee.org Sociedad de Computadores IEEE Oficina de Asia/Pacfico Watanabe Bldg., 1-4-2 Minami-Aoyama Minatu-ku, Tokio 107-0062 Japn Tel: +81-3-3408-3118 Fax: +81-3-3408-3553 Tokio.ofc@computer.org

Publicadora: ngela Burgess Editora del Grupo de Gestin, Prensa CS: Deborah Plummer Publicidad/Promociones: Tom Fink Production Editor: Bob Werner Impreso en los Estados Unidos de Amrica

TABLA DE CONTENIDOS
PRLOGO .............................................................................................................................................. vii PREFACIO ............................................................................................................................................ xvii CAPTULO 1. INTRODUCCIN A LA GUA ............................................................................................... 1-1 CAPTULO 2. REQUERIMIENTOS DEL SOFTWARE ................................................................................... 2-1 CAPTULO 3. DISEO DE SOFTWARE .................................................................................................... 3-1 CAPTULO 4. CONSTRUCCIN DE SOFTWARE ....................................................................................... 4-1 CAPTULO 5. PRUEBAS DEL SOFTWARE ................................................................................................ 5-1 CAPTULO 6. MANTENIMIENTO DEL SOFTWARE ................................................................................... 6-1 CAPTULO 7. GESTIN DE LA CONFIGURACIN DEL SOFTWARE .......................................................... 7-1 CAPTULO 8. GESTIN DE LA INGENIERA DEL SOFTWARE ................................................................... 8-1 CAPTULO 9. PROCESO DE LA INGENIERA DEL SOFTWARE .................................................................. 9-1 CAPTULO 10. INSTRUMENTOS Y MTODOS DEL LA INGENIERA DEL SOFTWARE ............................... 10-1 CAPTULO 11. CALIDAD DEL SOFTWARE ............................................................................................ 11-1 CAPTULO 12. DISCIPLINAS RELACIONADAS CON LA INGENIERA DEL SOFTWARE ............................. 12-1 APNDICE A. ESPECIFICACIONES DE LA DESCRIPCIN DE REAS DE REAS DE CONOCIMIENTO PARA LA GUA HOMBRE DE HIERRO DE LA GUA DEL CUERPO DE CONOCIMIENTO DE LA INGENIERA DEL SOFTWARE .......................................... A-1 APNDICE B. EVOLUCIN DE LA GUA DEL CUERPO DE CONOCIMIENTO DE LA INGENIERA DEL SOFTWARE ..............................................................................................................B-1 APNDICE C. IEEE E ISO ESTNDARES A LAS REAS DE CONOCIMIENTO DEL SWEBOK ...................C-1 APNDICE D. CLASIFICACIN DE CONTENIDOS ACORDE A LA TAXONOMA DE BLOOM ....................... D-1

PRLOGO
En esta gua, el IEEE Computer Society establece por primera vez una base para el cuerpo de conocimiento del campo de la ingeniera del software, y el trabajo, y el trabajo cubre parcialmente la responsabilidad de la Sociedad de promover el avance de la teora y prctica de este campo. Llevando a cabo esta tarea, la Sociedad ha sido guiada por la experiencia de otras disciplinas ms maduras sin ligarse a sus problemas o soluciones. Ntese que la Gua no pretende definir el cuerpo de conocimiento, sino servir como un compendio y gua al cuerpo de conocimiento que se ha desarrollado y evolucionado durante 4 dcadas. Es ms, este cuerpo de conocimiento no es esttico. La Gua debe necesariamente desarrollarse y evolucionar segn madura la ingeniera del software. Sin embargo, constituye un valioso elemento a la infraestructura de la ingeniera del software. En 1958, el renombrado matemtico estadstico John Tukey, acuo el trmino software. El trmino Ingeniera del Software se utiliz por primera vez en el ttulo de una conferencia de la OTAN celebrada en Alemania en 1968. La IEEE Computer Society public las primeras Transacciones en Ingeniera del Software (Transactions on Software Engineering) en 1972. El comit creado por la IEEE Computer Society para el desarrollo de estndares de ingeniera del software se fund en 1976. La primera vista global de la ingeniera del software emerge del trabajo del equipo liderado por Fletcher Buckley para desarrollar el estndar IEEE Std 730 para la calidad del software finalizado en 1979. El objetivo de dicho estndar fue el de proporcionar un mnimo de requerimientos aceptables y uniformes para el aseguramiento de la calidad. Este estndar influy en el desarrollo de otros estndares posteriores relacionados con la gestin de la configuracin, pruebas de software, requerimientos del software, diseo del software y verificacin y validacin del software. Durante los aos 1981-1985, la IEEE Computer Society organiz una serie de talleres de trabajo sobre la aplicacin de los estndares de ingeniera del software en donde los profesionales que participaron compartieron sus experiencias con los estndares existentes y planificaron futuros estndares incluyendo uno sobre medicin y mtricas para procesos y productos de la ingeniera del software. El resultado fue el IEEE Std 1002, Taxonoma de estndares de ingeniera del software (1986), el cual proporciono una visin global de la ingeniera del software. El estndar describe la forma y contenido de una taxonoma de estndares de ingeniera del software. Explica los diferentes tipos de estndares de ingeniera del software, sus relaciones externas y funcionales, y el rol de las distintas funciones en el ciclo de vida del software. En 1990 comenz una planificacin para un estndar internacional con una visin general. La planificacin se centr en reconciliar las vistas de los procesos del software del estndar IEEE Std 1074 y el estndar 2167A del departamento de defensa (DoD, en sus siglas en ingls) de los EE.UU. La revisin del estndar se public como DoD Std 498. El estndar fue completado en 1995 como ISO/IEC 12207, Estndar para los procesos del ciclo de vida del software. Este estndar proporciono un importante punto de arranque para el cuerpo de conocimiento contenido en este libro. La aprobacin de la mocin por parte de la junta de gobierno del IEEE Computer Society supuso el arranque por parte de Fletcher Buckley para la escritura de este libro. El consejo de la ACM (Association for Computing Machinery) aprob la mocin en agosto de 1993. Las dos mociones llevaron a la creacin de un comit conjunto dirigido por Mario Barbacci y Stuart Zweben. La misin del comit conjunto fue: establecer un conjunto apropiado de criterios y normas para la prctica profesional de la ingeniera del software sobre las que puedan basarse decisiones industriales, certificaciones profesionales y planes de estudios. El comit directivo organiz el trabajo en las siguientes reas: 1. 2. 3. Definir el cuerpo de conocimiento y prcticas recomendadas. Definir estndares ticos y profesionales Definir planes de estudios para cursos de grado, postgrado y formacin continua.

Este libro proporciona el primer punto, el cuerpo de conocimiento necesario y prcticas recomendadas. El cdigo tico y conducta profesional para la Ingeniera del software fue terminado en 1998 y aprobado por la juntas de gobierno de la ACM e IEEE Computer Society. Ha sido adoptado por numerosas empresas y organizaciones y se incluye en libros de texto recientes. El plan de estudios para estudios de grado fue completado en 2004.

Aunque no siempre definidas de manera precisa, cada profesin se basa en un cuerpo de conocimiento y prcticas recomendadas. En muchos casos, estn formalmente documentadas, generalmente en un formato que permite que sean usadas para acreditaciones de planes acadmicos, desarrollo de cursos y programas educativos, certificaciones profesionales o licencias profesionales. Generalmente, una sociedad profesional o cuerpo relacionado mantiene la custodia de la definicin formal. En los casos en los que no existe esa formalidad, el cuerpo de conocimiento y prcticas recomendadas son generalmente reconocidas por profesionales y pueden ser codificadas en una variedad de formas por los distintos usuarios. Se espera que los lectores encuentren este libro til como gua para el conocimiento y recursos necesarios en el desarrollo de su profesin como profesionales de la ingeniera del software. Este libro est dedicado a Fletcher Buckley en reconocimiento a su empeo en el promover la ingeniera del software como una disciplina profesional y su excelente profesionalidad como ingeniero de software para radares.

Leonard L. Tripp, IEEE Fellow 2003 Chair, Professional Practices Committee, IEEE Computer Society (2001-2003) Chair, Joint IEEE Computer Society and ACM Steering Committee for the Establishment of Software Engineering as a Profession (1998-1999) Chair, Software Engineering Standards Committee, IEEE Computer Society (1992-1998)

EDITORES ASOCIADOS
Las siguientes personas trabajaron como directores asociados bien para la versin de prueba 2001 o bien la versin 2004. Requerimientos del Software Peter Sawyer and Gerald Kotonya, Computing Department, Lancaster University, Reino Unido, {p.sawy er, g.kotonya}@lancaster.ac.uk Diseo del Software Guy Tremblay, Dpartement dinformatique, UQAM, Canad, tremblay.guy@uqam.ca Construccin del software Steve McConnell, Construx Software, EEUU, Steve.McConnell@construx.com Terry Bollinger, the MITRE Corporation, EEUU, terry@mitre.org Philippe Gabrini, Dpartement dinformatique, UQAM, Canad, gabrini.philippe@uqam.ca Louis Martin, Dpartement dinformatique, UQAM, Canad, martin.louis@uqam.ca Pruebas del software Antonia Bertolino y Eda Marchetti, ISTI-CNR, Italia, {antonia.bertolino}{eda.marchetti}@isti.cnr.it Mantenimiento del software Thomas M. Pigoski, Techsoft Inc., EEUU, tmpigoski@techsoft.com Alain April, cole de technologie suprieure, Canad, aapril@ele.etsmtl.ca Gestin de la configuracin del software John A. Scott, Lawrence Livermore National Laboratory, EEUU, scott7@llnl.gov David Nisse, EEUU, nissed@worldnet.att.net Gestin en la ingeniera del software Dennis Frailey, Raytheon Company, EEUU, DJFrailey@Raytheon.com Stephen G. MacDonell, Auckland University of technology, Nueva Zelanda, smacdone@aut.ac.nz Andrew R. Gray, University of Otago, Nueva Zelanda Procesos de ingeneniera del software Khaled El Emam, Canadian National Research Council, Canad, khaled.el-emam@nrc-cnrc.gc.ca Herramientas y mtodos en la ingeniera del software David Carrington, School of Information Technology and Electrical Engineering, The University of Queensland, Australia, davec@itee.uq.edu.au Calidad del software Alain April, cole de technologie suprieure, Canad, aapril@ele.etsmtl.ca Dolores Wallace, retired from the National Institute of Standards and Technology, EEUU, Dolores.Wallace@nist.gov Larry Reeker, NIST, EEUU, Larry.Reeker@nist.gov Coordinador de referencias Marc Bouisset, Dpartement dinformatique, UQAM, Bouisset.Marc@uqam.ca

COMIT EJECUTIVO PROFESIONAL


A fecha de publicacin, las personas nombradas a continuacin formaron el comit ejecutivo profesional: Mario R. Barbacci, Software Engineering Institute, representando al IEEE Computer Society Carl Chang, representando a Computing Curricula 2001 Franois Coallier, cole de technologie suprieure, como director de ISO/IEC JTC 1/SC7 Charles Howell, The MITRE Corporation Anatol Kark, National Research Council of Canad Philippe Kruchten, University of British Columbia, como representante de Rational Software Laure Le Bars, SAP Labs (Canad) Steve McConnell, Construx Software Dan Nash, Raytheon Company Fred Otto, Canadian Council of Professional Engineers (CCPE) Richard Metz, The Boeing Company Larry Reeker, National Institute of Standards and Technology, Department of Commerce, EEUU

Las siguientes personas trabajaron con este comit en el control de cambios de la edicin del 2004: Donald Bagert, Rose-Hulman Institute of Technology, representing the IEEE Computer Society Professional Practices Committee Ann Sobel, Miami University, representado a la junta ejecutiva del Computing Curricula Software Engineering

PANEL DE EXPERTOS
Las siguientes personas trabajaron como panel de expertos en la preparacin de la versin de prueba (Trial) de la Gua: Steve McConnell, Construx Software Roger Pressman, R.S. Pressman and Associates Ian Sommerville, Lancaster University, Reino Unido

REVISORES
Las siguientes personas trabajaron como directores asociados en la versin de prueba (Trial) 2001 y/o la versin 2004.

Abbas, Rasha, Australia Abran, Alain, Canad Accioly, Carlos, Brasil Ackerman, Frank, EEUU Akiyama, Yoshihiro, Japn Al-Abdullah, Mohammad, EEUU Alarcon, Miren Idoia, Espaa Alawy, Ahmed, EEUU Alleman, Glen, EEUU Allen, Bob, Canad Allen, David, EEUU Amorosa, Franciasco, Italia Amyot, Daniel, Canad Andrade, Daniel, Brasil April, Alain, Canad Arroyo-Figueror, Javier, EEUU Ashford, Sonny, EEUU Atsushi, Sawada, Japn Backitis Jr., Frank, EEUU Bagert, Donald, EEUU Baker, Jr., David, EEUU Baker, Theodore, EEUU Baldwin, Mark, EEUU Bales, David, Reino Unido Bamberger, Judy, EEUU Banerjee, Bakul, EEUU Barber, Scott, EEUU Barker, Harry, Reino Unido Barnes, Julie, EEUU Barney, David, Australia Barros, Rafael, Colombia Bastarache, Louis, Canad Bayer, Steven, EEUU Beaulac, Adeline, Canad Beck, William, EEUU Beckman, Kathleen, EEUU Below, Doreen, EEUU Benediktsson, Oddur, Islandia Ben-Menachem, Mordechai, Israel Bergeron, Alain, Canad Berler, Alexander, Grecia Bernet, Martin, EEUU Bernstein, Larry, EEUU Bertram, Martin, Alemania Bialik, Tracy, EEUU Bielikova, Maria, Eslovaquia

Bierwolf, Robert, The Pases Bajos Bisbal, Jesus, Irlanda Boivin, Michel, Canad Bolton, Michael, Canad Bomitali, Evelino, Italia Bonderer, Reto, Suiza Bonk, Francis, EEUU Booch, Grady, EEUU Booker, Glenn, EEUU Brstler, Jrgen, Suecia Borzovs, Juris, Latvia Botting, Richard, EEUU Bourque, Pierre, Canad Bowen, Thomas, EEUU Boyd, Milt, EEUU Boyer, Ken, EEUU Brashear, Phil, EEUU Briggs, Steve, EEUU Bright, Daniela, EEUU Brosseau, Jim, Canad Brotbeck, George, EEUU Brown, Normand, Canad Bruhn, Anna, EEUU Brune, Kevin, EEUU Bryant, Jeanne, EEUU Buglione, Luigi, Italia Bullock, James, EEUU Burns, Robert, EEUU Burnstein, Ilene, EEUU Byrne, Edward, EEUU Calizaya, Percy, Per Carreon, Juan, EEUU Carroll, Sue, EEUU Carruthers, Kate, Australia Caruso, Richard, EEUU Carvalho, Paul, Canad Case, Pam, EEUU Cavanaugh, John, EEUU Celia, John A., EEUU Chalupa Sampaio, Alberto Antonio, Portugal Chan, F.T., Hong Kong Chan, Keith, Hong Kong Chandra, A.K., India Chang, Wen-Kui, Taiwan Chapin, Ned, EEUU

Charette, Robert, EEUU Chevrier, Marielle, Canad Chi, Donald, EEUU Chiew, Vincent, Canad Chilenski, John, EEUU Chow, Keith, Italia Ciciliani, Ricardo, Argentina Clark, Glenda, EEUU Cleavenger, Darrell, EEUU Cloos, Romain, Luxembourg Coallier, Franois, Canad Coblentz, Brenda, EEUU Cohen, Phil, Australia Collard, Ross, Nueva Zelanda Collignon, Stephane, Australia Connors, Kathy Jo, EEUU Cooper, Daniel, EEUU Councill, Bill, EEUU Cox, Margery, EEUU Cunin, Pierre-Yves, Francia DaLuz, Joseph, EEUU Dampier, David, EEUU Daneva, Maya, Canad Daneva, Maya, Canad Daughtry, Taz, EEUU Davis, Ruth, EEUU De Cesare, Sergio, Reino Unido Dekleva, Sasa, EEUU Del Castillo, Federico, Per Del Dago, Gustavo, Argentina DeWeese, Perry, EEUU Di Nunno, Donn, EEUU Diaz-Herrera, Jorge, EEUU Dieste, Oscar, Espaa Dion, Francis, Canad Dixon, Wes, EEUU Dolado, Javier, Espaa Donaldson, John, Reino Unido Dorantes, Marco, Mexico Dorofee, Audrey, EEUU Douglass, Keith, Canad Du, Weichang, Canad Duben, Anthony, EEUU Dudash, Edward, EEUU Duncan, Scott, EEUU Duong, Vinh, Canad Durham, George, EEUU

Dutil, Daniel, Canad Dutton, Jeffrey, EEUU Ebert, Christof, Francia Edge, Gary, EEUU Edwards, Helen Maria, Reino Unido El-Kadi, Amr, Ejipto Endres, David, EEUU Engelmann, Franz, Suiza Escue, Marilyn, EEUU Espinoza, Marco, Per Fay, Istvan, Hungra Fayad, Mohamed, EEUU Fendrich, John, EEUU Ferguson, Robert, EEUU Fernandez, Eduardo, EEUU Fernandez-Sanchez, Jose Luis, Espaa Filgueiras, Lucia, Brasil Finkelstein, Anthony, Reino Unido Flinchbaugh, Scott, EEUU Forrey, Arden, EEUU Fortenberry, Kirby, EEUU Foster, Henrietta, EEUU Fowler, Martin, EEUU Fowler, John Jr., EEUU Fox, Christopher, EEUU Frankl, Phyllis, EEUU Freibergs, Imants, Latvia Frezza, Stephen, EEUU Fruehauf, Karol, Suiza Fuggetta, Alphonso, Italia Fujii, Roger, EEUU FUSCHI, David Luigi, Italia Fuschi, David Luigi, Italia Gabrini, Philippe, Canad Gagnon, Eric, Canad Ganor, Eitan, Israel Garbajosa, Juan, Espaa Garceau, Benot, Canad Garcia-Palencia, Omar, Colombia Garner, Barry, EEUU Gelperin, David, EEUU Gersting, Judith, Hawaii Giesler, Gregg, EEUU Gil, Indalecio, Espaa Gilchrist, Thomas, EEUU Giurescu, Nicolae, Canad Glass, Robert, EEUU Glynn, Garth, Reino Unido Goers, Ron, EEUU Gogates, Gregory, EEUU Goldsmith, Robin, EEUU Goodbrand, Alan, Canad Gorski, Janusz, Polonia Graybill, Mark, EEUU

Gresse von Wangenheim, Christiane, Brasil Grigonis, George, EEUU Gupta, Arun, EEUU Gustafson, David, EEUU Gutcher, Frank, EEUU Haas, Bob, EEUU Hagar, Jon, EEUU Hagstrom, Erick, EEUU Hailey, Victoria, Canad Hall, Duncan, Nueva Zelanda Haller, John, EEUU Halstead-Nussloch, Richard, EEUU Hamm, Linda, EEUU Hankewitz, Lutz, Alemania Harker, Rob, EEUU Hart, Hal, EEUU Hart, Ronald, EEUU Hartner, Clinton, EEUU Hayeck, Elie, EEUU He, Zhonglin, Reino Unido Hedger, Dick, EEUU Hefner, Rick, EEUU Heinrich, Mark, EEUU Heinze, Sherry, Canad Hensel, Alan, EEUU Herrmann, Debra, EEUU Hesse, Wolfgang, Alemania Hilburn, Thomas, EEUU Hill, Michael, EEUU Ho, Vinh, Canad Hodgen, Bruce, Australia Hodges, Brett, Canad Hoffman, Douglas, Canad Hoffman, Michael, EEUU Hoganson, Tammy, EEUU Hollocker, Chuck, EEUU Horch, John, EEUU Howard, Adrian, Reino Unido Huang, Hui Min, EEUU Hung, Chih-Cheng, EEUU Hung, Peter, EEUU Hunt, Theresa, EEUU Hunter, John, EEUU Hvannberg, Ebba Thora, Islandia Hybertson, Duane, EEUU Ikiz, Seckin, Turkey Iyengar, Dwaraka, EEUU Jackelen, George, EEUU Jaeger, Dawn, EEUU Jahnke, Jens, Canad James, Jean, EEUU Jino, Mario, Brasil Johnson, Vandy, EEUU Jones, Griffin, EEUU

Jones, James E., EEUU Jones, Alan, Reino Unido Jones, James, EEUU Jones, Larry, Canad Jones, Paul, EEUU Ju, Dehua, China Juan-Martinez, ManuelFernando, Espaa Juhasz, Zoltan, Hungra Juristo, Natalia, Espaa Kaiser, Michael, Suiza Kambic, George, EEUU Kamthan, Pankaj, Canad Kaner, Cem, EEUU Kark, Anatol, Canad Kasser, Joe, EEUU Kasser, Joseph, Australia Katz, Alf, Australia Kececi, Nihal, Canad Kell, Penelope, EEUU Kelly, Diane, Canad Kelly, Frank, EEUU Kenett, Ron, Israel Kenney, Mary L., EEUU Kerievsky, Joshua, EEUU Kerr, John, EEUU Kierzyk, Robert, EEUU Kinsner, W., Canad Kirkpatrick, Harry, EEUU Kittiel, Linda, EEUU Klappholz, David, EEUU Klein, Joshua, Israel Knight, Claire, Reino Unido Knoke, Peter, EEUU Ko, Roy, Hong Kong Kolewe, Ralph, Canad Komal, Surinder Singh, Canad Kovalovsky, Stefan, Austria Krauth, Pter, Hungra Krishnan, Nirmala, EEUU Kromholz, Alfred, Canad Kruchten, Philippe, Canad Kuehner, Nathanael, Canad Kwok, Shui Hung, Canad Lacroix, Dominique, Canad LaMotte, Stephen W., EEUU Land, Susan, EEUU Lange, Douglas, EEUU Laporte, Claude, Canad Lawlis, Patricia, EEUU Le, Thach, EEUU Leavitt, Randal, Canad LeBel, Rjean, Canad Leciston, David, EEUU Lee, Chanyoung, EEUU Lehman, Meir (Manny), Reino Unido

Leigh, William, EEUU Lembo, Jim, EEUU Lenss, John, EEUU Leonard, Eugene, EEUU Lethbridge, Timothy, Canad Leung, Hareton, Hong Kong Lever, Ronald, Pases Bajos Levesque, Ghislain, Canad Ley, Earl, EEUU Linders, Ben, Pases Bajos Linscomb, Dennis, EEUU Little, Joyce Currie, EEUU Logan, Jim, EEUU Long, Carol, Reino Unido Lounis, Hakim, Canad Low, Graham, Australia Lutz, Michael, EEUU Lynch, Gary, EEUU Machado, Cristina, Brasil MacKay, Stephen, Canad MacKenzie, Garth, EEUU MacNeil, Paul, EEUU Magel, Kenneth, EEUU Mains, Harold, EEUU Malak, Renee, EEUU Maldonado, Jos Carlos, Brasil Marcos, Esperanza, Espaa Marinescu, Radu, Rumana Marm, Waldo, Per Marusca, Ioan, Canad Matlen, Duane, EEUU Matsumoto, Yoshihiro, Japn McBride, Tom, Australia McCarthy, Glenn, EEUU McChesney, Ian, Reino Unido McCormick, Thomas, Canad McCown, Christian, EEUU McDonald, Jim, EEUU McGrath Carroll, Sue, EEUU McHutchison, Diane, EEUU McKinnell, Brian, Canad McMichael, Robert, EEUU McMillan, William, EEUU McQuaid, Patricia, EEUU Mead, Nancy, EEUU Meeuse, Jaap, Pases Bajos Meier, Michael, EEUU Meisenzahl, Christopher, EEUU Melhart, Bonnie, EEUU Mengel, Susan, EEUU Meredith, Denis, EEUU Meyerhoff, Dirk, Alemania Mili, Hafedh, Canad Miller, Chris, Pases Bajos Miller, Keith, EEUU Miller, Mark, EEUU

Miranda, Eduardo, Canad Mistrik, Ivan, Alemania Mitasiunas, Antanas, Lituania Modell, Howard, EEUU Modell, Staiger,EEUU Modesitt, Kenneth, EEUU Moland, Kathryn, EEUU Moldavsky, Symon, Ucrania Montequn, Vicente R., Espaa Moreno, Ana Maria, Espaa Mosiuoa, Tseliso, Lesotho Moudry, James, EEUU Msheik, Hamdan, Canad Mularz, Diane, EEUU Mullens, David, EEUU Mllerburg, Monika, Alemania Murali, Nagarajan, Australia Murphy, Mike, EEUU Napier, John, EEUU Narasimhadevara, Sudha, Canad Narawane, Ranjana, India Narayanan, Ramanathan, India Navarro Ramirez, Daniel, Mxico Navas Plano, Francisco, Espaa Navrat, Pavol, Eslovaquia Neumann, Dolly, EEUU Nguyen-Kim, Hong, Canad Nikandros, George, Australia Nishiyama, Tetsuto, Japn Nunn, David, EEUU O'Donoghue, David, Irlanda Oliver, David John, Australia Olson, Keith, EEUU Oskarsson, sten, Suecia Ostrom, Donald, EEUU Oudshoorn, Michael, Australia Owen, Cherry, EEUU Pai, Hsueh-Ieng, Canad Parrish, Lee, EEUU Parsons, Samuel, EEUU Patel, Dilip, Reino Unido Paulk, Mark, EEUU Paella, Jan, Repblica Checa Pavlov, Vladimir, Ucrania Pawlyszyn, Blanche, EEUU Pecceu, Didier, Francia Perisic, Branko, Yugoslavia Perry, Dale, EEUU Peters, Dennis, Canad Petersen, Erik, Australia Pfahl, Dietmar, Alemania Pfeiffer, Martin, Alemania Phillips, Dwayne, EEUU Phipps, Robert, EEUU

Phister, Paul, EEUU Phister, Jr., Paul, EEUU Piattini, Mario, Espaa Piersall, Jeff, EEUU Pillai, S.K., India Pinder, Alan, Reino Unido Pinheiro, Francisco A., Brasil Plekhanova, Valentina, Reino Unido Poon, Peter, EEUU Poppendieck, Mary, EEUU Powell, Mace, EEUU Predenkoski, Mary, EEUU Prescott, Allen, EEUU Pressman, Roger, EEUU Price, Art, EEUU Price, Margaretha, EEUU Pullum, Laura, EEUU Purser, Keith, EEUU Purssey, John, Australia Pustaver, John, EEUU Quinn, Anne, EEUU Radnell, David, Australia Rae, Andrew, Reino Unido Rafea, Ahmed, Ejipto Ramsden, Patrick, Australia Rao, N.Vyaghrewara, India Rawsthorne, Dan, EEUU Reader, Katherine, EEUU Reddy, Vijay,EEUU Redwine, Samuel, EEUU Reed, Karl, Australia Reedy, Ann, EEUU Reeker, Larry, EEUU Rethard, Tom, EEUU Reussner, Ralf, Alemania Rios, Joaquin, Espaa Risbec, Philippe, Francia Roach, Steve, EEUU Robillard, Pierre, Canad Rocha, Zalkind, Brasil Rodeiro Iglesias, Javier, Espaa Rodriguez-Dapena, Patricia, Espaa Rogoway, Paul, Israel Rontondi, Guido, Italia Roose, Philippe, Francia Rosca, Daniela, EEUU Rosenberg, Linda, EEUU Rourke, Michael, Australia Rout, Terry, Australia Rufer, Russ, EEUU Ruiz, Francisco, Espaa Ruocco, Anthony, EEUU Rutherfoord, Rebecca, EEUU Ryan, Michael, Irlanda Salustri, Filippo, Canad

Salustri, Filippo, Canad Salwin, Arthur, EEUU Sanden, Bo, EEUU Sandmayr, Helmut, Suiza Santana Filho, Ozeas Vieira, Brasil Sato, Tomonobu, Japn satyadas, antony, EEUU Satyadas, Antony, EEUU Schaaf, Robert, EEUU Scheper, Charlotte, EEUU Schiffel, Jeffrey, EEUU Schlicht, Bill, EEUU Schrott, William, EEUU Schwarm, Stephen, EEUU Schweppe, Edmund, EEUU Sebern, Mark, EEUU Seffah, Ahmed, Canad Selby, Nancy, EEUU Selph, William, EEUU Sen, Dhruba, EEUU Senechal, Raymond, EEUU Sepulveda, Christian, EEUU Setlur, Atul, EEUU Sharp, David, EEUU Shepard, Terry, Canad Shepherd, Alan, Alemania Shillato, Rrobert W, EEUU Shintani, Katsutoshi, Japn Silva, Andres, Espaa Silva, Andres, Espaa Singer, Carl, EEUU Sinnett, Paul, Reino Unido Sintzoff, Andr, Francia Sitte, Renate, Australia Sky, Richard, EEUU Smilie, Kevin, EEUU Smith, David, EEUU Sophatsathit, Peraphon, Tailandia Sorensen, Reed, EEUU

Soundarajan, Neelam, EEUU Sousa Santos, Frederico, Portugal Spillers, Mark, EEUU Spinellis, Diomidis, Grecia Splaine, Steve, EEUU Springer, Donald, EEUU Staiger, John, EEUU Starai, Thomas, EEUU Steurs, Stefan, Belgium St-Pierre, Denis, Canad Stroulia, Eleni, Canad Subramanian, K.S., India Sundaram, Sai, Reino Unido Swanek, James, EEUU Swearingen, Sandra, EEUU Szymkowiak, Paul, Canad Tamai, Tetsuo, Japn Tasker, Dan, Nueva Zelanda Taylor, Stanford, EEUU Terekhov, Andrey A., Russian Federation Terski, Matt, EEUU Thayer, Richard, EEUU Thomas, Michael, EEUU Thompson, A. Allan, Australia Thompson, John Barrie, Reino Unido Titus, Jason, EEUU Tockey, Steve, EEUU Tovar, Edmundo, Espaa Towhidnejad, Massood, EEUU Trellue, Patricia, EEUU Trves, Nicolas, Francia Troy, Elliot, EEUU Tsui, Frank, EEUU Tsuneo, Furuyama, Japn Tuohy, Kenney, EEUU Tuohy, Marsha P., EEUU Turczyn, Stephen, EEUU Upchurch, Richard, EEUU

Urbanowicz, Theodore, EEUU Van Duine, Dan, EEUU Van Ekris, Jaap, Pases Bajos Van Oosterhout, Bram, Australia Vander Plaats, Jim, EEUU Vegas, Sira, Espaa Verner, June, EEUU Villas-Boas, Andr, Brasil Vollman, Thomas, EEUU Walker, Richard, Australia Walsh, Bucky, EEUU Wang, Yingxu, Suecia Wear, Larry, EEUU Weigel, richard, EEUU Weinstock, Charles, EEUU Wenyin, Liu, China Werner, Linda, EEUU Wheeler, David, EEUU White, Nathan, EEUU White, Stephanie, EEUU Whitmire, Scott, EEUU Wijbrans, Klaas, The Pases Bajos Wijbrans-Roodbergen, Margot, Pases Bajos Wilkie, Frederick, Reino Unido Wille, Cornelius, Alemania Wilson, Charles, EEUU Wilson, Leon, EEUU Wilson, Russell, EEUU Woechan, Kenneth, EEUU Woit, Denise, Canad Yadin, Aharon, Israel Yih, Swu, Taiwan Young, Michal, EEUU Yrivarren, Jorge, Per Znotka, Juergen, Alemania Zuser, Wolfgang, Austria Zvegintzov, Nicholas, EEUU Zweben, Stu, EEUU

La siguiente mocin fue unnimemente aprobada por el comit ejecutivo profesional el 6 de febrero de 2004.
El comit ejecutivo profesional afirma que el cuerpo de conocimiento de la ingeniera del software iniciado en 1998 se ha completado satisfactoriamente y endorsa la versin 2004 de la gua al SWEBOK y lo recomienda su aprobacin a junta de gobierno de IEEE Computer Society.

La siguiente mocin fue unnimemente aprobada por el junta de gobierno del IEEE Computer Society en febrero del 2004.
La junta de gobierno de IEEE Computer Society aprueba la edicin del 2004 de la Gua al cuerpo de conocimiento de la ingeniera del software y autoriza al director del comit de prcticas profesionales a proceder con su impresin.

PREFACIO
La ingeniera del software es una disciplina emergente y hay tendencias que indican un incremento en su nivel de madurez: Varias universidades en el mundo ofrecen titulaciones en ingeniera del software. Ejemplos de tales titulaciones se incluyen: University of New South Wales (Australia), McMaster University (Canad), Rochester Institute of Technology (EE.UU.), University of Sheffield (Reino Unido), etc. En los EE.UU., la comisin de acreditacin de ingenieras de ABET (Accreditation Board for Engineering and Technology) es el responsable de la acreditacin de planes de estudios de grado de ingeniera del software. La Canadian Information Processing Society ha publicado los criterios para acreditar programas universitarios de grado de ingeniera del software. El CMM (Capability Maturiry Model) y el CMMI (Capability Maturiry Model Integration) del SEI (Software Enginering Institute) se emplean para evaluar la capacidad/madurez de la ingeniera del software en las empresas. Los estndares de gestin de calidad ISO 9000 han sido aplicados a la ingeniera del software en el estndar ISO/IEC 90003. La Junta de Ingenieros Profesionales de Texas ha comenzado a emitir licencias a los profesionales de la ingeniera del software. La APEGBC (Association of Professional Engineers and Geoscientists of British Columbia) inscribe a ingenieros del software y la PEO (Professional Engineers of Ontario) ha anunciado los requerimientos para las licencias. La ACM (Association for Computing Machinery) y el IEEE Computer Society han desarrollado conjuntamente y adoptado el cdigo tico y conducta profesional1. El IEEE Computer Society ofrece el Certificado de desarrollador de software profesional. El ICCP (Institute for Certification of Computing Professionals) lleva tiempo ofreciendo una certificacin a profesionales de la informtica. PROPSITO El propsito de la gua al conocimiento de la ingeniera del software es proporcional una caracterizacin validada y consensuada de los lmites de la disciplina de la ingeniera del software, y proporcionar un acceso a los temas del cuerpo de conocimiento apoyando la disciplina. El cuerpo de conocimiento est dividido en 10 reas del conocimiento (AC), KA, Knowledge Areas) ms un captulo adicional proporcionando una perspectiva general de las AC. Las descripciones de las AC estn diseadas para discernir entre los varios conceptos importantes, permitiendo al lector encontrar rpidamente los temas de inters. Una vez encontrado el tema de inters, el lector es referido a artculos clave o captulos de libro seleccionados por presentar el conocimiento de manera sucinta. Con una ojeada a la gua, los lectores notarn que el contenido es sustancialmente diferente de la ciencia de la informtica. Al igual que el ingeniero electrnico se basa en fsica, el ingeniero del software se debera basar, entre otras cosas, en la informtica. En estos dos casos, el nfasis es necesariamente diferente. Los cientficos (fsicos, informticos) incrementan nuestro conocimiento de las leyes de la naturaleza, sin embargo, los ingenieros aplican esas leyes para construir artefactos tiles bajo ciertas condiciones. Por tanto, el nfasis de esta gua se centra en la construccin de artefactos de software tiles bajo ciertas restricciones. Los lectores tambin notarn en muchos aspectos importantes de la tecnologa de la informacin pueden constituir conocimientos importantes en la ingeniera del software an no cubiertos en esta gua, por ejemplo, lenguajes de programacin especficos, bases de datos relacionales y redes. Todo esto es consecuencia del punto de vista de la ingeniera de software tomado. En todas las reas no solamente en informtica los diseadores de los planes de estudios en ingeniera se han dado cuenta que tecnologas especficas estn siendo reemplazadas mucho ms rpidamente que la vida laboral de los ingenieros que las utilizan. Por tanto, los ingenieros de tener un conocimiento en el que basar la seleccin de la tecnologa apropiada en cierto momento y bajo unas circunstancias determinadas. Por ejemplo, un programa puede ser construido en Fortran utilizando descomposicin funcional o en C++ utilizando tcnicas orientadas a objeto. Aunque las tcnicas para configuracin de dichos sistemas seran bastante diferentes, los principios y objetivos en la gestin de configuracin son los mismos. La gua, por tanto, no se centra en el constante cambio de tecnologas, sino en los principios generales relevantes descritos en las reas de conocimiento.

Todos estos esfuerzos estn basados en la presuncin de que existe un cuerpo de conocimiento que debera ser dominado por los profesionales del software. Dicho cuerpo de conocimiento existe en la literatura acumulada en los ltimos 30 aos. Este libro proporciona una gua al cuerpo de conocimiento.
1

El cdigo tico y conducta profesional est disponible en espaol en: http://www.sc.ehu.es/jiwdocoj/codeacm.htm e ingls: http://www.computer.org/certification/ethics.htm

Estas exclusiones demuestran que la gua es necesariamente incompleta. La gua cumbre conocimiento sobre la ingeniera del software que es condicin necesaria pero no suficiente para los ingenieros del software. Los profesionales de la ingeniera del software necesitarn tener amplios conocimientos de, por ejemplo, informtica, gestin de proyectos, y la ingeniera de sistemas que estn fuera del cuerpo de conocimiento caracterizado en esta gua; sin embargo decir que todos esos conceptos deberan ser conocidos por los ingenieros del software no es lo mismo que decir que este conocimiento cae dentro de las fronteras de la ingeniera del software. No obstante, s que se afirma que los ingenieros del software necesitan conocimientos de otras disciplinas. Ese es el punto de vista adoptado en esta gua. Por tanto, esta gua caracteriza el cuerpo de conocimiento que cae dentro del mbito de la ingeniera de software y proporciona referencias a otros conocimientos relevantes en otras disciplinas. Un captulo de la gua proporciona una visin global taxonmica de disciplinas relacionadas derivadas de importantes fuentes. El nfasis en la prctica de la ingeniera lleva a la gua a tener una fuerte relacin con literatura normativa. La mayora de la literatura en la informtica, tecnologas de la informacin e ingeniera de software proporciona informacin til a los ingenieros del software, pero slo una pequea parte de ella es normativa. Una referencia normativa prescribe que debera hacer un ingeniero en una situacin especfica en vez de proporcionar informacin que podra ser til. La literatura normativa est validada por consenso entre los profesionales, y se concentra en estndares y documentos relacionados. Desde la concepcin del SWEBOK, ste fue concebido con una fuerte relacin a la literatura normativa en la ingeniera del software. Las dos entidades ms importantes en la creacin de estndares de ingeniera de software IEEE Computer Society e ISO/IEC JCT1/SC7 estn siendo representadas en el proyecto. En ltima instancia, esperamos que los estndares en la prctica de la ingeniera del software contengan los principios contenidos en esta gua. A QUIN VA DIRIGIDO La gua est orientada hacia una gran variedad de audiencias en todo el mundo. Intenta proporcionar a organismos pblicos o privados con una visin estable de la ingeniera de software para definir requerimientos en educacin, competencias para trabajos, desarrollo de polticas de evaluacin, o la especificacin de tareas de desarrollo de software. Tambin se dirige a la prctica o gestin, ingenieros de software y responsables de polticas relacionadas con licencias y guas de profesionales. Adems, se beneficiarn del SWEBOK las sociedades profesionales y acadmicos que definen las normas de certificacin, polticas de acreditacin para planes de estudio universitarios y guas para la prctica profesional. Finalmente, estudiantes de ingeniera de software y acadmicos relacionados con la definicin de planes de estudio y contenidos de asignaturas.

EVOLUCIN DE LA GUA Desde 1993 hasta el 2000, el IEEE Computer Society y la ACM cooperaron en promover la profesionalizacin de la ingeniera de software a travs de un comit para la coordinacin de la ingeniera del software (Software Engineering Coordinating Committee SWECC). El cdigo de tica y conducta profesional fue completado bajo la tutela de SWECC en1998 a travs de esfuerzos voluntarios. El SWEBOK fue iniciado por el SWECC en 1998. El mbito del proyecto SWEBOK, la gran variedad de comunidades involucradas, y la necesidad de una amplia participacin sugirieron la necesidad de una gestin a tiempo completo en lugar de esfuerzos voluntarios y altruistas. Con este fin, el IEEE Computer Society contrato con el laboratorio de investigacin de ingeniera de software de la Universidad de Qubec en Montreal (Universit du Qubec Montral -UQAM) para gestionar el proyecto. En los ltimos aos, UQAM se ha unido a la Escuela de Tecnologa Superior de Montral, Quebec (TS cole technologie suprieure). El proyecto se dividi en tres fases: Hombre de Paja, Hombre de Piedra y Hombre de Hierro. Un prototipo inicial, Hombre de Paja, demostr como el proyecto podra ser organizado. La publicacin de la ampliamente circulada versin de prueba de la gua en el 2001 (Trial Version) marc fin de la fase Hombre de Piedra e inicio un periodo de prueba en uso. La gua actual marca el fin de del periodo Hombre de Hierro proporcionando una gua que ha alcanzado un consenso mediante revisiones y pruebas. El equipo que desarroll el proyecto se bas en dos principios fundamentales para el desarrollo de la gua: transparencia y consenso. Por transparencia, se quiere decir que el proceso de desarrollo en s mismo est documentado, publicado y publicitado de manera que las decisiones importantes y progreso son visibles a todas las partes constituyentes por consenso. Por consenso, queremos decir que el nico mtodo prctico para legitimar afirmaciones es a travs de una amplia participacin y acuerdos por todos los sectores relevantes en la comunidad. Literalmente cientos de copartcipes, revisores y usuarios durante el periodo de prueba han contribuido en la produccin del actual documento. Como cualquier proyecto de software, el en SWEBOK contribuyeron muchos participantes algunos de los cuales estn formalmente representados. El proyecto ha sido financiado por un comit ejecutivo profesional compuesto por representantes de la empresa (Boeing, Construx Software, the MITRE Corporation, Rational Software, Raytheon Systems, and SAP Labs-Canad), institutos de investigacin (National Institute of Standards

and Technology, National Research Council of Canad), CCPE (Canadian Council of Professional Engineers) y el IEEE Computer Society. Su generosidad nos ha permitido proporcionar el SWEBOK sin coste alguno (ver http://www.swebok.org/). El comit ejecutivo profesional se complementa con los directores de ISO/IEC JTC1/SC7 y con la iniciativa Computing Curricula 2001. El comit revisa y aprueba los planes del proyecto, dndole credibilidad. En general, se asegura que el esfuerzo del proyecto es relevante a las necesidades del mundo real. La versin de prueba de la gua ha sido el resultado de extensivas revisiones y comentarios. En tres ciclos de revisin pblica, un total de unos 500 revisores de 42 pases proporcionaron aproximadamente 9.000 comentarios, los cuales estn todos disponibles en http://www.swebok.org/. Para producir la versin actual, la versin de prueba (Trial Version) se utilizo ampliablemente durante un periodo durante el cual se generaron 17 artculos describiendo los beneficios aspectos de la gua al igual que otros aspectos en los que se deba mejorar. Una encuesta a travs de la Web, recopilo informacin adicional: 573 personas de 55 pases se registraron para la encuesta; 124 revisores de 51 pases proporcionaron 1.020 comentarios. Se sugirieron otras mejoras a travs de otros proyectos relacionados: IEEECS/ACM Computing Curricula, le proyecto IEEE CS Certified Software Development Professional, ISO/IEC JTC1/SC7 (estndares de ingeniera del software y sistemas); el comit de estndares de ingeniera del software del IEEE, la divisin de software de la ASQS (American Society for Quality), y una sociedad de ingenieros profesionales, la CCPE (Canadian Council of Professional Engineers).

LIMITACIONES Aunque la gua ha pasado un elaborado proceso de desarrollo y revisin, las siguientes limitaciones en este proceso deben ser consideradas y expuestas: La ingeniera del software continua siendo infundida con nuevas tecnologas y nuevas prcticas. La aceptacin de las nuevas tcnicas crece y las antiguas descartadas. Los temas globalmente aceptados que se que han incluido en esta gua han sido cuidadosamente seleccionados. Aunque inevitablemente, esta seleccin tendr que ser actualizada. El volumen de literatura publicado sobre la ingeniera del software es abundante y las referencias incluidas en esta gua no deberan ser consideradas como la seleccin definitiva sino como una seleccin razonable. Obviamente, hay excelentes autores y excelentes referencias que no estn incluidos en esta gua. En este trabajo, la referencias seleccionadas lo fueron por estar en ingls, fcilmente accesibles, recientes, fciles de leer y por cubrir los temas de las AC. Hay referencias importantes y relevantes que no han sido escritas en ingls que han sido omitidas del material seleccionado.

Adems uno debe considerar que: La ingeniera del software es una disciplina emergente, esto es especialmente cierto si se compara con otras disciplinas ms maduras. Por tanto, las fronteras entre las AC de la ingeniera del software y entre la ingeniera del software y otras disciplinas relacionadas continan evolucionando.

CAMBIOS DESDE LA VERSIN DE PRUEBA El objetivo general de la versin actual fue mejorar la legibilidad, consistencia y usabilidad de la gua. Esto implic una reescritura todo el texto para hacer el estilo ms consistente a lo largo de todo el documento. En varias ocasiones la descomposicin de las reas de conocimiento (AC) fue reordenada para hacerla ms usable, pero siendo cuidadoso en que incluyese la informacin aprobada por consenso. Se actualiz la lista de referencias de manera que fuesen ms fciles de conseguir. Tras el perodo de prueba se recomend la reescritura de 3 AC. Se destac que el AC de la construccin del software era difcil de aplicar en un contexto prctico. El AC de gestin fue percibido como prximo al concepto de gestin en general y no lo suficientemente especfico a la ingeniera del software. Del AC de calidad se percibi que mezclaba la calidad en el proceso y calidad en el producto, y por tanto, tambin fue revisada. Finalmente algunas AC fueron revisadas para quitar material contenido en otras AC.

Los contenidos de esta gua deben ser vistos como una informada y razonable caracterizacin del cuerpo de conocimiento de la ingeniera de software, y base de su futura evolucin. Adems, ntese que la gua no es un intento, ni intenta reemplazar o corregir ninguna de las leyes, normas o procedimientos definidos por organismos oficiales con respecto a la prctica y definicin de la ingeniera, y de la ingeniera del sobre el particular.

Alain Abran cole de technologie suprieure

Coordinadores ejecutivos de la Gua al cuerpo de conocimiento de la ingeniera del software Coordinadores de la Gua al cuerpo de conocimiento de la ingeniera del software Director del comit ejecutivo profesional, IEEE Computer Society (2001-2003)

James W. Moore The MITRE Corporation

Pierre Bourque cole de Technologie Suprieure

Robert Dupuis Universit du Qubec Montral

Leonard Tripp 1999 President IEEE Computer Society

Diciembre 2004 La Web del proyecto SWEBOK es: http://www.swebok.org/

RECONOCIMIENTOS El equipo de coordinacin del SWEBOK reconoce la gratitud por la ayuda por parte de los miembros del comit ejecutivo profesional. La financiacin de este proyecto se ha debido a las siguientes organizaciones: ACM, Boing, CCPE (Canadian Council of Professional Engineers), Construx Software, IEEE Computer Society, the MITRE Corporation, NIST (National Institute of Standards and Technology), NRC Canad (National Research Council of Canad), Rational Software, Raytheon Company, y SAP Labs (Canad). El equipo tambin agradece a los miembros del panel de expertos. Tambin queremos expresar nuestro agradecimiento por el trabajo inicial en la descripcin de las reas de conocimiento completadas por Imants Freibergs, Stephen Frezza, Andrew Gray, Vinh T. Ho, Michael Lutz, Larry Reeker, Guy Tremblay, Chris Verhoef, y Sybille Wolff. El equipo de coordinacin tambin agradece a los cientos de revisores su valiosa contribucin. El equipo de coordinacin tambin quiere agradecer por su contribucin al proyecto a las siguientes personas: Mark Ardis, Yussef Belkebir, Michel Boivin, Julie Bonneau, Simon Bouchard, Franois Cossette, Vinh Duong, Gilles Gauthier, Michle Hbert, Paula Hawthorn, Richard W. Heiman, Julie Hudon, Idrissa Konkobo, Rene Kppel, Lucette Lapointe, Claude Laporte, Luis Molini, Hamdan Msheik, Iphignie NDiyae, Serge Oligny, Suzanne Paquette, Keith Paton, Dave Rayford, Normand Sguin, Paul Sinnett, Denis St-Pierre, Dale Strok, Pascale Tardif, Louise Thibaudeau, Dolores Wallace, variste Valery Bevo Wandji, y Michal Young. Finalmente, estamos seguros que hay otras personas que han contribuido a esta gua directa o indirectamente, cuyos nombres han sido omitidos inadvertidamente. A estas personas, ofrecemos nuestro agradecimiento tcito y disculpas por haber omitido un reconocimiento explicito.

CAPITULO 1 INTRODUCCIN A LA GUA


A pesar de los millones de profesionales del software en el mundo y de la presencia ubicua del software en nuestra sociedad, slo recientemente la ingeniera del software ha alcanzado el estado de disciplina ingenieril y reconocida profesin. Alczar un consenso por la profesin en un ncleo del cuerpo de conocimiento es un hito clave en todas las disciplinas y ha sido identificado por el IEEE Computer Society como crucial para la evolucin hacia un status profesional. Esta gua, escrita bajo los auspicios del comit del ejercicio profesional, es parte de un proyecto multianual para alcanzar tal consenso. QU ES LA INGENIERA DEL SOFTWARE? El IEEE Computer Society define la ingeniera del software como: (1) Aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin y mantenimiento del software, es decir, la aplicacin de la ingeniera al software. (2) El estudio de los mtodos en (1). 2 QU ES UNA PROFESIN RECONOCIDA? Para que la ingeniera del software sea una legtima disciplina y reconocida profesin, es imperativo un consenso sobre el cuerpo de conocimiento. Este hecho es bien ilustrado por Starr cuando define que puede considerarse como legtima disciplina reconocida profesin. En su libro, ganador del premio Pulitzer, sobre la historia de la profesin mdica de los EE.UU, indica: La legitimizacin de una autoridad profesional envuelve tres afirmaciones distintivas: primero, todo conocimiento y competencias de un profesional han sido validadas por una comunidad de compaeros de profesin; segundo, el conocimiento validado consensuadamente se basa en fundamentos cientficos racionales; y tercero, las opiniones profesionales y consejos estn orientadas hacia valores fundamentales como la salud. Estos aspectos de legitimidad corresponden con los tipos de atributos - generalmente cubiertos en el trmino profesin 3. CULES
SON LAS CARACTERSTICAS DE UNA

Concluyeron que la profesin de la ingeniera est caracterizada por varios componentes: Una educacin profesional inicial en un currculum validado por una sociedad de acreditacin. Registro de la correcta prctica por medio de una certificacin voluntaria o licencia obligatoria. Habilidad espacial de desarrollo y una continua educacin profesional. Soporte comunitario por medio de una sociedad profesional. Un compromiso con las normas de conducta a menudo prescritas en un cdigo de tica. Esta Gua contribuye a los primeros tres de estos componentes. La articulacin del Cuerpo del Conocimiento es un paso esencial hacia el desarrollar una profesin porque representa un amplio consenso en lo que respecta a qu debera conocer un profesional de la ingeniera del software. Sin tal consenso, ningn examen de licenciatura puede ser validado, ningn plan de estudios puede preparar a una persona para un examen, y no se puede formular unos criterios para la acreditacin de dicho plan de estudios. El desarrollo de un consenso es tambin un prerrequisito para la adopcin de unas habilidades coherentes de desarrollo y de un programa de educacin continua para los profesionales de una organizacin.

CULES SON SWEBOK?

LOS

OBJETIVOS

DEL

PROYECTO

La gua no debera ser confundida con el cuerpo de conocimiento en s mismo, el cual en la literatura publicada. El propsito de la gua es describir que parte del cuerpo de conocimiento es generalmente aceptada, organizar esa parte y proporcionar acceso a los temas de inters. Informacin adicional de que se entiende por generalmente aceptado se describe a continuacin y en el Apndice A. La gua al cuerpo de conocimiento de ingeniera del software se estableci con los siguientes 5 objetivos: 1. 2. Promover una visin consistente de la ingeniera del software en el mundo. Clarificar la situacin y definir fronteras de la ingeniera del software con respecto a otras disciplinas como la informtica, gestin de proyectos, ingeniera informtica y matemticas. caracterizar los contenidos de la disciplina de la ingeniera del software Proporcionar al cuerpo de conocimiento de la ingeniera del software con los temas de inters

PROFESIN?

Gary Ford y Norman Gibbs estudi varias profesiones, incluyendo medicina, derecho, ingeniera y contabilidad. IEEE Standard Glossary of Software Engineering Terminology, IEEE std 610.12-1990, 1990. 3 P. Starr, The Social Transformation of American Medicine, Basic Books, 1982, p. 15.
2

3. 4.

5.

Proporcionar una base para el desarrollo planes de estudio, certificaciones individuales y materiales para licencias.

Tabla 2 Disciplinas relacionadas Ingeniera informtica Informtica Gestin Matemticas Gestin de proyectos Gestin de calidad Ergonoma del software Ingeniera de sistemas ORGANIZACIN JERRQUICA La organizacin de las AC en los captulos proporciona el tercer objetivo del proyecto una caracterizacin de los contenidos de la ingeniera del software. Especificaciones detalladas por el equipo de coordinadores editoriales a los coordinadores asociados en encuentra en el Apndice A. La gua utiliza una organizacin jerrquica para descomponer cada rea de conocimiento en un conjunto de temas catalogados. Una descomposicin en 2 o 3 niveles proporciona una manera razonable de encontrar los temas. La gua trata los temas seleccionados de una manera compatible con las escuelas de pensamiento mayoritarias y con las descomposiciones encontradas en las organizaciones, literatura y estndares. La descomposicin no presupone ningn dominio de aplicacin particular, forma de negocio, filosofa de gestin, mtodos de desarrollo, etc. La extensin de cada tema es la justa para entender la naturaleza de los temas y para que el lector pueda referirse a la literatura de forma satisfactoria. Despus de todo, el cuerpo de conocimiento se encuentra en el material referenciado y no en la gua en s misma. MATERIALES DE REFERENCIA Y MATRICES Para proporcionar el acceso a los temas de inters de la gua el cuarto de los objetivos del proyecto la gua identifica material de referencia para cada AC, incluyendo captulos de libro, artculos u otras fuentes de reconocido prestigio. Cada AC incluye una matriz relacionando la literatura con los temas. El total de la literatura citada intenta ser el adecuado para un graduado con 4 aos de experiencia. En esta edicin de la gua, las referencias de todas las AC forman unas 500 pginas de material, lo cual era una de las especificaciones a la hora de crear el SWEBOK. Se puede argumentar que algunas AC, por ejemplo el diseo del software, se merecen ms referencias que otras, y puede que este criterio se aplique a futuras ediciones de la gua. Adems, ntese que la gua no busca la completitud en sus referencias. Existe mucho material importante y relevante que no se ha sido incluido. El material fue en parte seleccionado por que cubre los temas descritos.

El primero de estos objetivos una visin consistente de la ingeniera del software fue proporcionada por el proceso de desarrollo consistente en aproximadamente 500 revisores de 42 pases en la fase Hombre de Piedra, (19982001), la cual condujo a la versin de prueba; 120 revisores de 21 pases en la fase Hombre de Hierro (2003, la cual genero la versin 2004. Informacin adicional sobre el proceso, se encuentra disponible en Prefacio y en la Web (http://www.swebok.org/). Se contactaron sociedades profesionales y agencias pblicas involucradas con la ingeniera del software para que fueran conscientes del proyecto y se les invit a participar en el proceso de desarrollo. Se reclutaron coordinadores asociados en Amrica del Norte, los pases del pacfico y Europa. Se hicieron presentaciones del proyecto en acontecimientos internacionales y se planificaron otros para el ao posterior. El segundo de los objetivos, el deseo de definir fronteras para la ingeniera del software, motiva la organizacin fundamental de esta gua. El material reconocido como perteneciente a la Ingeniera del software est organizado en las 10 reas de conocimiento (AC) enumeradas en la Tabla 1. Cada una de estas AC es tratada como un captulo de la gua.

Tabla 1 reas de conocimiento del SWEBOK Requerimientos del software Diseo del software Construccin del software Pruebas del software Mantenimiento del software Gestin de la configuracin del software Gestin en la ingeniera del software Mtodos y Herramientas de la ingeniera del software Calidad del software

Al establecer la frontera, tambin es importante identificar que disciplinas comparten tal frontera, y a menudo, una interseccin comn con la ingeniera del software, A tal respecto, la gua reconoce otras 8 disciplinas relacionadas, enumeradas en la Tabla 2 (ver Captulo 12, Disciplinas relacionadas con la ingeniera del software). Sin embargo, no es objetivo de la gua del SWEBOK caracterizar el conocimiento de las disciplinas relacionadas, sino el conociendo que es visto como especfico a la ingeniera del software

PROFUNDIDAD DEL TRATAMIENTO Una de las cuestiones que surgieron desde el comienzo del proyecto, fue el nivel de detalle que la Gua debera proporcionar. El equipo del proyecto adapt un enfoque que ayuda con el quinto de los requerimientos proveer la base para el desarrollo curricular, certificaciones y licencias. El equipo editorial aplico el criterio de conocimiento generalmente aceptado, conocimiento consensuado, distinguindolo de conocimientos avanzados o de investigacin (en base a la madurez) y de conocimiento especializado (en base a la generalidad de aplicacin). La definicin viene del Project Management Institute (PMI): El conocimiento generalmente aceptado se aplica a la mayora de los proyectos la mayora del tiempo, y su amplio consenso valida su valor y efectividad4. Especializado Prcticas utilizadas solamente en ciertos tipos de software Generalmente aceptado Prcticas tradicionales establecidas que son recomendadas por muchas organizaciones. Avanzados y de investigacin Practicas innovadoras probadas y usadas solo por algunas organizaciones y conceptos que estn todava siendo desarrollados y probados en organizaciones de investigacin

Algunas fronteras entre AC, subreas, etc. son a veces, arbitrarias, pero no hay que darle mucha importancia. En lo posible, se dan enlaces en el texto done son relevantes y tiles. Los enlaces entre las AC, no son del tipo entrada-salida. Las reas de conocimiento proporcionan vistas al conocimiento que uno debera poseer con respecto a cada AC en la ingeniera del software. La descomposicin de la disciplina dentro de cada AC y el orden en el cual las reas de conocimiento son presentadas, no tienen por qu integrarse con ningn mtodo o modelo particular. Los mtodos son descritos en las apropiadas AC dentro de la gua, y la gua en s misma no es parte de ellos. LAS REAS DE CONOCIMIENTO (AC) La Figura 1 describe los 11 captulos y los temas importantes de cada uno de ellos. Las 5 primeras reas de conocimiento son presentadas siguiendo el tradicional ciclo de vida en cascada. Sin embargo, esto no implica que la gua adopta o fomenta el ciclo de vida en cascada o ningn otro. Las subsecuentes AC se presentan en orden alfabtico, y las disciplinas relacionadas se presentan en el ultimo capitulo. ESTRUCTURA DE LAS DESCRIPCIONES DE LAS AC Las reas de conocimiento se estructuran como se describe a continuacin. En la introduccin, de cada AC se proporciona una breve definicin y una visin general de su mbito y relaciones con otras reas de conocimiento. La descomposicin de los temas constituye la parte fundamental de cada AC en reas, subreas y subtemas. Para cada tema o subtema, se da una breve descripcin y referencias. El material de referencia fue seleccionado por considerar que constitua la mejor presentacin del conocimiento relacionado con un tema teniendo en cuenta las restricciones impuestas en la limitacin de las referencias (ver arriba). Una matriz enlaza los temas con las referencias. La ltima parte de la descripcin de las AC es una lista de referencias recomendadas. El apndice A de cada AC incluye sugerencias para los lectores que quieran profundizar en un tema particular. Los apndices B presentan la lista de estndares ms relevantes para cada rea de conocimiento. Ntese que las citas entre corchetes [] en el texto indican las referencias recomendadas, mientras que las que estn en parntesis () identifican las referencias usuales usadas al escribir o argumentar el texto. Las primeras se encuentran en la seccin correspondiente del AC y las ultimas en el Apndice A de cada AC.

Sin embargo, el trmino generalmente aceptado, no implica que el conocimiento nombrado deba aplicarse uniformemente a todos los proyectos software cada proyecto necesita determinarlos pero implica que todos los ingenieros competentes deberan de estar equipados con estos conocimientos. Siendo ms precisos, el conocimiento generalmente aceptado debera ser incluido en los materiales de estudio de licencias que los graduados deberan de adquirir tras cuatro aos de experiencia laboral. Aunque este criterio es especfico al estilo de educacin en los EEUU y puede que no se aplique a otros pases, se considera til. Sin embargo, las dos definiciones de conocimiento generalmente aceptado deberan ser vistas como complementarias. LIMITACIONES
LIBRO RELACIONADAS CON EL FORMATO DEL

El formato en el cual este libro ha sido concebido tiene sus limitaciones. La naturaleza de los contenidos podra mostrarse mejor en formato de hipertexto, donde cada tema podra ser unido a otros temas que no sean el anterior y posterior a una lista.
4

A Guide to the Project Management Body of Knowledge, 2000 ed., Project Management Institute, http://www.pmi.org/

A continuacin se resumen las reas de conocimiento y apndices. REQUERIMIENTOS COLUMNA A)


DEL SOFTWARE

(FIGURA

2,

Un requerimiento se define como una propiedad que debe exhibir el software para resolver algn problema del mundo real. La primera subrea de conocimiento es Fundamentos de los Requerimientos del Software. Incluye las definiciones de requerimientos del software y sus principales tipos: producto vs. proceso, funcional vs. no funcional, propiedades emergentes. La subrea adems describe la importancia de que los requerimientos cuantificables y distingue entre sistemas y requerimientos software. La segunda subrea de conocimiento son los requerimientos del proceso, el cual introduce el proceso y orienta las 5 subreas restantes y cmo la ingeniera de requerimientos encaja en otras con otros procesos de la ingeniera del software. Describe los modelos de proceso, actores del proceso, procesos de soporte y gestin, y la calidad mejora del proceso. La tercera subrea, es la Captura de requisitos, la cual se centra en de dnde vienen los requerimientos y cmo el ingeniero de software puede obtenerlos. Incluye las fuentes de los requerimientos y las tcnicas de captura. La cuarta subrea, Anlisis de requerimientos, se centra en los procesos de anlisis de requerimientos para:

La sexta subrea es la Validacin de Requerimientos, cuyo objetivo, es descubrir problemas antes de asignar recursos a abordar los requerimientos. La validacin de requerimientos concierne proceso de examinar los documentos de requerimientos y asegurarse de que definen el sistema correcto, es decir, el sistema que los usuarios esperan. Esta subdividido en las descripciones para llevar a cabo revisiones de requerimientos, prototipos y validacin y aceptacin de pruebas. La sptima subrea son las Consideraciones Practicas, la cual describe los temas que necesitan ser entendidos en la prctica. El primer tema es la naturaleza del proceso iterativo de los requerimientos. Los tres temas siguientes son sobre la gestin del cambio, el mantenimiento de los requerimientos que reflejen el sistema a construir o ya construido. Incluye gestin de cambios, atributos de los requerimientos y trazas de los requerimientos. El ltimo tema es la medicin de los requerimientos. DISEO DEL SOFTWARE (FIGURA 2, COLUMNA B) Segn la definicin de IEEE [IEEE 610.12-90], el diseo es el proceso de definir la arquitectura, componentes, interfaces y otras caractersticas de un sistema o componente y el resultado de [ese] proceso. El AC est dividido en 6 subreas. La primera subrea presenta los Fundamentos del Diseo del Software, el cual forma la base para entender el rol y mbito del diseo del software. Estos son conceptos generales del software, el contexto del diseo del software, el proceso del diseo del software, las tcnicas que permiten el diseo del software. La segunda subrea agrupa los Temas Clave en el Diseo del Software. Incluye concurrencia, control y manejo de eventos, distribucin de componentes, manejo de errores, excepciones y tolerancia a fallos, interaccin y presentacin y persistencia de datos. La tercera subrea es la Estructura del Software y la Arquitectura, los temas son las estructuras arquitecturales y los puntos de vista, estilos arquitecturales, patrones de diseo, y finalmente, familias de programas y frameworks. La cuarta subrea describe la Calidad Evaluacin de las del Diseo del Software. Aunque existe una AC dedicada exclusivamente a la calidad del software, esta subrea se centra en los aspectos especficos del diseo. Estos aspectos son atributos de calidad, anlisis de calidad y tcnicas de evaluacin y medicin. La quinta subrea son las Notaciones del Diseo del Software, que se dividen en descripciones estructurales y de comportamiento. La ltima subrea describe las Estrategias y Mtodos del diseo del Software. Primero, se describen estrategias generales, seguidas por mtodos funcionales, mtodos de

Detectar y resolver conflictos entre requerimientos Descubrir las fronteras del software y como deben interactuar con el entorno Elaborar los requerimientos del sistema a requerimientos software.

El anlisis de requerimientos incluye su clasificacin, el modelado conceptual, diseo arquitectural, asignacin de requerimientos y negociacin de requerimientos. La quitan subrea es la Especificacin de requerimientos, que tpicamente se refiere a la produccin de un documento o su equivalente electrnico, que puede ser sistemticamente revisado, evaluado y aprobado. Para sistemas complejos, particularmente los sistemas con una parte substancial de componentes no-software, se pueden producir hasta 3 tipos diferentes de documentos: definiciones del sistema, especificacin de requerimientos del sistema, y especificacin de requerimientos software. La subrea, describe los 3 documentos y actividades asociadas.

diseo orientados a objetos, mtodos de diseo centrados en la estructura de datos, diseo basado en componentes y otros. CONSTRUCCIN C)
DEL

La ltima subrea describe el Proceso de Pruebas e incluye las consideraciones prcticas y las actividades de pruebas. MANTENIMIENTO DEL SOFTWARE (FIGURA 2, COLUMNA E) Una vez en produccin, se descubren anomalas, los entornos de trabajo cambian y aparecen nuevos requerimientos de trabajo. La fase del ciclo de vida mantenimiento comienza una vez entregado el sistema, sin embargo, las actividades de mantenimiento ocurren mucho antes. El AC de mantenimiento del software est dividido en 4 subreas. La primera presenta los Fundamentos del Mantenimiento del Software: definiciones y terminologa, la naturaleza del mantenimiento, la necesidad del mantenimiento, los costes, la evolucin del software, y las categoras de mantenimiento. La segunda subrea agrupa los Temas Clave del Mantenimiento del Software. Estos comprenden temas tcnicos, de gestin, estimacin del coste de mantenimiento y la medicin del mantenimiento. La tercera subrea describe el Proceso de Mantenimiento. Los temas aqu presentados son el proceso de mantenimiento y las actividades de mantenimiento. Las Tcnicas para el Mantenimiento constituye la cuarta subrea. Estas incluyen la compresin del software, la reingeniera y la ingeniera inversa. GESTIN DE LA CONFIGURACIN (FIGURA 3, COLUMNA F)
DEL SOFTWARE

SOFTWARE (FIGURA 2, COLUMNA

La construccin del software se refiere la creacin de software mediante una combinacin de codificacin, verificacin, pruebas unitarias, pruebas de integracin, y depuracin. Est dividida en tres subreas. La primera subrea son los Fundamentos de la Construccin del Software. Los tres primeros temas son los principios bsicos de la construccin: minimizacin de la complejidad, anticipacin al cambio, y la construccin y verificacin. La segunda subrea describe la Gestin de la Construccin. Los temas son la construccin de modelos, planificacin de la construccin y la medicin de la construccin. La tercera subrea cubre las Consideraciones Practicas. Los temas son el diseo de la construccin, lenguajes de construccin, codificacin, pruebas de construccin, reutilizacin, calidad de construccin e integracin. PRUEBAS DEL SOFTWARE (FIGURA 2, COLUMNA D) Las pruebas de software se componen de la verificacin dinmica del comportamiento de un programa con un conjunto finito de casos de pruebas, adecuadamente seleccionados del un infinito nmero de posibles ejecuciones del dominio. Comienza con una descripcin de los Fundamentos de las Pruebas del Software. Primero, se presenta la terminologa relacionada con las pruebas, despus se presentan los aspectos fundamentales de las pruebas, y finalmente, la relacin de las pruebas con otras actividades. La segunda subrea son los Niveles de Pruebas. Estos estn divididos entre el objeto de la prueba y los objetivos de las pruebas. La tercera subrea son las Tcnicas para Pruebas. La primera categora incluye las pruebas basadas en la intuicin del probador/a y experiencia. El segundo grupo comprende las tcnicas basadas en la especificacin, seguido de las tcnicas basadas en el cdigo, y las tcnicas relativas a la naturaleza de la aplicacin. Tambin se presenta cmo seleccionar y combinar las tcnicas ms apropiadas. La cuarta subrea cubre las Medidas relacionadas con las Pruebas. Las medidas se agrupan en aquellas relacionadas con la evaluacin del programa que se est probando y la evaluacin de las pruebas realizadas.

La Gestin de la Configuracin del Software (GCS) es la disciplina de la identificacin del software en distintos puntos en el tiempo con el propsito de controlar los cambios sistemticamente, y del mantenimiento de la integridad y trazabilidad de la configuracin durante todo el ciclo de vida. Esta AC incluye 6 subreas. La primera subrea es la Gestin del proceso de la GCS. Cubre los temas del contexto organizacional para la GSC, restricciones y guas para la GCS, el plan de SGC, y el control del GCS. La segunda subrea es la Identificacin en la Configuracin del Software, la cual establece los tems a ser controlados, establece la identificacin de esquemas, para los tems y sus versiones, y establece las herramientas y tcnicas usadas en la adquisicin y gestin de los tems controlados. Los primeros temas en esta subrea son la identificacin de los tems a ser controlados y las bibliotecas de software. La tercera subrea es el Control de Configuracin del Software, trata la gestiona de cambios durante el ciclo de

vida del software. Las reas son: primero, solicitud, evaluacin y aprobacin de cambios; segundo, implementacin de cambios de software; tercero, desviaciones y remisiones. La cuarta rea es Registro del Estado de la Configuracin. Sus temas son la informacin sobre el estado de la configuracin e informes sobre el estado de la configuracin. La quita rea es Auditoria de Configuracin Software. Se compone de auditora de la configuracin funcional, auditora de la configuracin fsica y auditoras de una Lnea Base de software. GESTIN DE LA INGENIERA COLUMNA G)
DEL SOFTWARE

PROCESO DE LA INGENIERA DEL SOFTWARE (FIGURA 2, COLUMNA H) El AC de proceso de la ingeniera del software se centra en la definicin, implementacin, evaluacin, gestin, cambio y mejora del proceso de ingeniera del software. Est dividido en cuatro subreas. La primera subrea presenta el Proceso de Implementacin y Cambios. Aqu los temas son infraestructura del proceso, ciclo de gestin del proceso software, modelos para el proceso de implementacin y cambios y consideraciones practicas. La segunda subrea trata la Definicin del Procesos Incluye los modelos del ciclo de vida del software, procesos del ciclo de vida del software, notaciones para la definicin de procesos, adaptacin de procesos y automatizacin. La tercera subrea es la Evolucin del Proceso. Los temas incluyen modelos de evaluacin del proceso y los mtodos de evaluacin del proceso. La cuarta subrea describe las Mediciones de Proceso y de Producto. El proceso de ingeniera del software cubre genricamente la medicin de producto y proceso. Mediciones especficas a cada AC se describen en las respectivas AC. Los temas son la medicin del proceso, la medicin de productos software, calidad de los resultados de las medicin, modelos de informacin software y tcnicas de medicin de procesos. HERRAMIENTAS Y MTODOS EN LA SOFTWARE (FIGURA 2, COLUMNA I)
INGENIERA DEL

(FIGURA 2,

El AC de de la Gestin de la Ingeniera del Software trata la gestin y medicin de la ingeniera del software. Mientras la medicin es aspecto importante en todas las AC, es aqu donde se presenta el tema de programas de medicin. Hay seis subreas en la gestin de ingeniera del software. Las 5 primeras cubren la gestin de proyectos software y la ltima describe los programas de medicin software. La primera subrea es Iniciacin y Definicin del Alcance, la cual comprende la determinacin y negociacin de los requisitos, estudios de viabilidad, y consideracin y revisin de requisitos. La segunda subrea es la Planificacin de Proyectos Software e incluye la planificacin del proceso, determinacin de los entregables, esfuerzo, plazos y estimacin de costes, asignacin de recursos, gestin de riesgos, gestin de la calidad y gestin de planes. La tercera subrea es la Promulgacin del Proyecto Software. Los temas son los planes de implementacin, gestin de contratos con proveedores, implementacin de procesos de medicin, monitorizacin del proceso, control del proceso e informes. La cuarta subrea es Revisin y Evolucin, la cual incluye los temas de determinacin de la satisfaccin de requisitos, y revisin y evaluacin de la ejecucin. La quita subrea describe el Cierre: determinacin del cierre y actividades del cierre. Finalmente, la sexta subrea describe la Medicin de la Ingeniera del Software, ms concretamente, los programas de medicin. Las mediciones de procesos y productos se describen en el AC de los procesos de la Ingeniera del Software. Muchas de las otras AC tambin describen mediciones especficas a sus AC. Los temas de esta subrea incluyen el establecimiento y mantenimiento de la medicin, realizacin del proceso de medicin y evaluacin de las mediciones.

El AC de Herramientas y Mtodos de la ingeniera del software incluye ambas, herramientas de la ingeniera del software y mtodos de la ingeniera del software. Las subrea de Herramientas de la Ingeniera del Software utiliza la misma estructura que la gua en s misma, con un tema por cada una de las otras nueve AC de la ingeniera del software. Se aade un tema adicional: cuestiones varias sobre herramientas como tcnicas de integracin de herramientas que son potencialmente aplicables a todo tipo de herramientas. La subrea de Mtodos de Ingeniera del Software se divide en cuatro subsecciones: mtodos heursticos que tratan aproximaciones informales, mtodos formales basados en aproximaciones matemticas, mtodos de prototipado tratando varias formas de prototipados. CALIDAD DEL SOFTWARE (FIGURA 2, COLUMNA J) El AC de la calidad del software se ocupa de las consideraciones sobre la calidad del software las cuales transcienden los procesos del ciclo de vida del software. Al ser la calidad del software un tema ubicuo a toda la

ingeniera del software, tambin es considerada en muchas otras AC, por lo que el lector notar referencias a otras AC en toda esta AC. La primera subrea describe los Fundamentos de la Calidad del Software como la tica y cultura de la ingeniera del software, valor y coste de la calidad, modelos y caractersticas de la calidad y la mejora de la calidad. La segunda subrea cubre los Procesos de Gestin de la Calidad del Software. Aqu los temas son el aseguramiento de la calidad, verificacin y validacin, y revisin y auditorias. La tercera y ltima subrea describe las consideraciones prcticas relacionadas con la calidad del software. Los temas son requerimientos de calidad del software, caracterizacin de defectos, tcnicas de gestin de la calidad del software, y medicin de la calidad del software. DISCIPLINAS RELACIONADAS DE LA SOFTWARE (FIGURA 2, COLUMNA K)
INGENIERA DEL

APNDICE A. DESCRIPCIN EN LAS AC

DE LAS ESPECIFICACIONES

El apndice describe las especificaciones proporcionadas por el equipo editorial a los editores asociados para el contenido, referencias recomendadas, formato, y estilo de las descripciones de las AC. APNDICE B. EVOLUCIN DE LA GUA El segundo apndice describe la propuesta de la evolucin de la Gua. La Gua del 2004 es la edicin actual, la cual continuara evolucionando para alcanzar las necesidades de la comunidad de la ingeniera del software. La planificacin de la evolucin no est todava completada, pero un esquema provisional se proporciona en el apndice. En el momento de esta escritura, este proceso ha sido aprobado por el Comit Ejecutivo Profesional y comunicado a la junta de gobierno del IEEE Computer Society; sin embargo no ha sido ni financiada ni implementada. APNDICE C. ASIGNACIN DE ESTNDARES A AC El tercer apndice es una tabla comentada de los estndares ms relevantes, principalmente de IEEE e ISO, asignados a las AC de la Gua del SWEBOK. APNDICE D. NDICES DE BLOOM Como ayuda, principalmente a los creadores de planes de estudio (y otros usuarios), para alcanzar el quito objetivo, el cuarto apndice clasifica cada tema con una de las categoras pedaggicas atribuidas a Benjamin Bloom. El concepto es que los objetivos educacionales pueden ser clasificados en seis categoras incrementando la profundidad: conocimiento, comprensin, aplicacin, anlisis, sntesis y evaluacin. Los resultados de este ejercicio para todas las AC se encuentran en el Apndice D. Este apndice no debe ser visto como una clasificacin definitiva, sino como un punto de partida.

El ltimo captulo se titula Disciplinas relacionadas de la Ingeniera del Software. Para circunscribir la ingeniera del software, es necesario identificar las disciplinas con las que la ingeniera del software comparte una frontera comn. Este captulo identifica en orden alfabtico, estas disciplinas relacionadas. Para cada disciplina relacionada, y mediante consenso, se identifica: Una definicin informativa (donde sea posible) Una lista de reas de Conocimiento

Las disciplinas relacionadas son Ingeniera de ordenadores Informtica Gestin Matemticas Gestin de proyectos Gestin de la Calidad Ergonoma Ingeniera de sistemas

APNDICES

Gua del Cuerpo del Conocimiento de la Ingeniera del Software Versin 2004

Requerimientos del software

Diseo de software
Fundamentos del diseo del software Cuestiones claves en diseo del software Estructura y arquitectura del software Anlisis y evaluacin de la calidad del diseo del software Notaciones del diseo del software Estrategias y mtodos del diseo de software

Construccin de software

Pruebas del software

Mantenimiento del software

Fundamentos de los requisitos del software Proceso de los requisitos Captura de los requisitos Anlisis de requisitos Especificacin de requisitos Validacin de los requisitos Consideraciones prcticas

Fundamentos de la Construccin del Software Gestin de la Construccin

Fundamentos de pruebas software Niveles de prueba Tcnicas de pruebas Medidas de las pruebas Proceso de pruebas

Fundamentos de mantenimiento del software Problemas clave en mantenimiento de software Proceso de mantenimiento Tcnicas de mantenimiento

Consideraciones Prcticas

Figura 2: Las 5 primeras reas de conocimiento

Gua del Cuerpo del Conocimiento de la Ingeniera del Software Versin 2004

Gestin de configuracin software


Gestin del proceso SCM Identificacin de la configuracin Control de configuracin software Registro del estado de la configuracin Auditora de configuracin software Gestin de lanzamiento y entrega

Gestin de la ingeniera del software


Iniciacin y alcance Planificacin de un proyecto software Promulgacin del proyecto software Revisin y evaluacin

Proceso de ingeniera del software

Herramientas y Mtodos de Ingeniera del software


Herramientas de Ingeniera del software Requerimiento s de las herramientas sw Herramientas de Diseo SW Herramientas de Construccin SW Herramientas de Pruebas de SW Herramientas de Mantenimiento de SW Las Herramientas de Direccin de Configuracin de SW Herramientas de Direccin en la Ingeniera de Software Las Herramientas de Proceso de Ingeniera de Software Herramientas de Calidad de Software Cuestiones de Herramientas Compuestas

Calidad del Software

Disciplinas relacionadas a la ingeniera del software Ingeniera de la computacin Ciencia de la computacin Gestin

Proceso de implementaci n y cambios Definicin de procesos Valoracin del proceso Medidas de productos y procesos

Fundamentos de Calidad de Software Consideraciones Prcticas Procesos de Gestin de Calidad del Software

Matemticas

Cierre Medidas de la ingeniera del software

Gestin de proyectos Gestin de calidad Software a medida Ingeniera de sistemas

Mtodos de Ingeniera del software Mtodos heursticos Mtodos formales Mtodos de prototipado

Figura 3: Las 6 ltimas reas de conocimiento

CAPITULO 2 REQUERIMIENTOS DE SOFTWARE


ACRNIMOS DAG Grafo Acclico Dirigido complejo FSM Medida Funcional del Tamao INCOSE Consejo Internacional sobre la Ingeniera de Sistemas SADT Anlisis Estructurados y Tcnicas de Diseo UML Lenguaje de Modelado Unificado INTRODUCCIN El rea del conocimiento de los requisitos del software (KA) se refiere al anlisis, a la especificacin, y a la validacin de los requisitos del software. Est extensamente reconocido dentro de la industria del software que los proyectos de la ingeniera de software son crticamente vulnerables cuando estas actividades se realizan mal. Los requisitos del software expresan las necesidades y los apremios colocados en un producto de software que contribuye a la solucin de un cierto problema del mundo real. [Kot00] El trmino ingeniera de requisitos es ampliamente utilizado en el campo para denotar la direccin sistemtica de requisitos. Aunque por razones de consistencia, este trmino no ser utilizado en la gua, pues se ha decidido que el uso del trmino ingeniera para las actividades con excepcin de la tecnologa de dotacin lgica debe ser evitado en esta edicin de la gua. Por la misma razn, tampoco se utilizar ingeniero de los requisitos, un trmino que aparece en algo de la literatura. En su lugar se utilizar el trmino Ingeniero de Software o, en algunos casos especficos, especialista de los requisitos, el ltimo donde el papel en la pregunta es realizado generalmente por un individuo con excepcin de una Ingeniera de Software. Esto no implica, sin embargo, que una Ingeniera de Software no podra realizar la funcin. La interrupcin de KA es ampliamente compatible con secciones de IEEE 12207 que se refieren a actividades de requisitos. (IEEE12207.1-96) Un riesgo inherente en la interrupcin propuesta es que un proceso en cascada puede ser deducido. Para evitar esto, los procesos de requisitos de la subzona 2, se disean para proporcionar una descripcin de alto nivel del proceso de los requisitos precisando los recursos y los apremios bajo los cuales el proceso funciona y los cuales actan para configurarlo. Una descomposicin alternativa poda utilizar una estructura basada en producto (requisitos del sistema, requisitos del software, prototipos, casos de uso, y as sucesivamente). Las interrupciones basadas en procesos reflejan el hecho de que el proceso de los requisitos, si es acertado, se debe considerar como proceso que implica actividades complejas, firmemente unidas (ambas secuencial y concurrentemente), ms que una nica actividad discreta realizada al principio de un proyecto de desarrollo de software. El KA de los requisitos del software se relaciona de cerca con el Diseo del software, pruebas, mantenimiento del software, gerencia de la configuracin del software, tecnologa de dotacin lgica, proceso de la tecnologa de dotacin lgica, y KAs de Calidad de software.

INTERRUPCIN
DEL SOFTWARE

DE LOS ASUNTOS PARA LOS REQUISITOS

1. 1.1.

Fundamentos de los requisitos del software Definicin de un requisito del software

Bsicamente, un requisito del software es una caracterstica que se debe exhibir para solucionar un cierto problema en el del mundo real. La gua se refiere a requisitos de software porque se refiere a los problemas que se tratarn por el software. Por lo tanto, un requisito del software es una caracterstica que se debe exhibir por el software desarrollado o adaptado para solucionar un problema particular. El problema puede ser automatizar la parte de una tarea de alguien que utilizar el software, para apoyar los procesos del negocio de la organizacin que ha comisionado el software, a corregir los defectos del software existente, al control de dispositivos, y muchos ms. El funcionamiento de los usuarios, los procesos del negocio, y los dispositivos es tpicamente complejo. Por extensin, por lo tanto, los requisitos de software son tpicamente una combinacin compleja de requisitos de diversa gente en diversos niveles de una organizacin y del ambiente en el cual el software funcionar. Una caracterstica esencial de todos los requisitos del software es que sean comprobables. Puede ser difcil o costoso verificar ciertos requisitos del software. Por ejemplo, la verificacin del requisito del rendimiento de procesamiento en el centro de la llamada puede hacer necesario el desarrollo del software de la simulacin. Los requisitos del software y el personal de la calidad del software deben asegurarse de que los requisitos se puedan verificar dentro de los apremios disponibles del recurso.

Los requisitos tienen otras cualidades adems de las caractersticas del comportamiento que expresan. Ejemplos comunes incluyen una tasa de prioridad para permitir compensaciones frente a recursos finitos y un valor del estado para permitir que el progreso del proyecto sea supervisado. Tpicamente, los requisitos de software se identifican nicamente de modo que puedan estar sujetos al control de configuracin del software y manejados sobre el ciclo vital entero del software. [Kot00; Pfl01; Som05; Tha97] 1.2. Producto y requisitos del proceso Se puede dibujar una distincin entre los parmetros del producto y los parmetros del proceso. Los parmetros del producto son requisitos en software para ser convertido (por ejemplo, El software verificar que un estudiante resuelva todos los requisitos previos antes de que l o ella se coloque para un curso.).

Un parmetro de proceso es esencialmente un constreimiento en el desarrollo del software (por ejemplo, el software ser escrito en el Ada.). stos se conocen a veces como requisitos de proceso. Algunos requisitos del software generan requisitos de proceso implcitos. La opcin de la tcnica de la verificacin es un ejemplo. Otro puede ser el uso de tcnicas rigurosas de anlisis (tales como mtodos formales de la especificacin) para reducir las averas que pueden conducir a una inadecuada confiabilidad. Los requisitos de proceso pueden tambin ser impuestos directamente por la organizacin del desarrollo, su cliente, o terceros tales como un regulador de seguridad [Kot00; Som97].

Figura 1: Descomposicin de materias para la KA Requisitos del Software

1.3. Requisitos funcionales y no funcionales Los requisitos funcionales describen las funciones que el software va a ejecutar; por ejemplo, ajustarse a un formato de texto o modular una seal. Se conocen tambin como capacidades. Los requisitos no funcionales son los que actan para obligar la solucin. Los requisitos no funcionales se conocen a veces como apremios o requisitos de calidad.

Pueden ser clasificados ms a fondo segn si son requisitos de funcionamiento, requisitos de capacidad de mantenimiento, requisitos de seguridad, requisitos de confiabilidad, o uno de muchos otros tipos de requisitos del software. Estos asuntos tambin se discuten en KA de la calidad del software. [Kot00; Som97]

1.4. Caractersticas inesperadas Algunos requisitos representan caractersticas inesperadas del software- esto es, los requisitos que no pueden ser tratados por un solo componente, pero que su satisfaccin va a depender de cmo todos los componentes de software nter operan. El requisito del rendimiento de procesamiento para un centro de llamadas, por ejemplo, dependera de cmo el sistema de telfono, el sistema de informacin, y los operadores obraron recprocamente bajo condiciones de funcionamiento reales. Las caractersticas inesperadas son crucialmente dependientes en la arquitectura del sistema. [Som05] 1.5. Requisitos cuantificables Los requisitos del software se deben indicar tan clara e inequvocamente como sea posible, y cuantitativamente. Es importante evitar requisitos vagos e inverificables que dependen para su interpretacin del juicio subjetivo (el software ser confiable; el software ser de uso fcil). Esto es particularmente importante para los requisitos no funcionales. Dos ejemplos de requisitos cuantificados son los siguientes: el software para un centro de llamadas debe aumentar el rendimiento del procesamiento del centro un 20%; y un sistema tendr una probabilidad de generar un error fatal durante cualquier hora de operacin menos de 1 * 108. El requisito de rendimiento de procesamiento est a un alto nivel y necesitar ser derivado en un nmero de requisitos detallados. El requisito de la confiabilidad determinar firmemente la arquitectura del sistema. [Dav93; Som05] 1.6. Requisitos del sistema y requisitos del software En este asunto, el sistema significa una combinacin recproca de los elementos para lograr un objetivo definido. stos incluyen el hardware, software, soporte lgico inalterable, gente, informacin, tcnicas, instalaciones, servicios, y otros elementos de apoyo, segn lo definido por el consejo internacional sobre la ingeniera de sistemas (INCOSE00). Los requisitos del sistema son los requisitos para el sistema en su totalidad. En un sistema que contiene componentes de software, los requisitos del software se derivan de los requisitos del sistema. La literatura sobre requisitos llama a veces a los requisitos del sistema exigencias del consumidor. La gua define exigencias del consumidor de una manera restricta como requisitos de los clientes o de los usuarios finales del sistema. Los requisitos del sistema, por el contrario, abarcan los requisitos del usuario, requisitos de otros tenedores de apuestas (por ejemplo autoridades reguladoras), y requisitos sin un origen identificable.

con el proceso de ingeniera del software. [Dav93; Som05] 2.1. Modelos de proceso El objetivo de este asunto es proporcionar una comprensin de que el proceso de los requisitos No es una actividad anticipada discreta del ciclo vital del software, sino un proceso iniciado en principio de un proyecto y a continuacin refinado a travs del ciclo vital Identifica los requisitos del software como elementos de configuracin, y los maneja usando las mismas prcticas de gerencia de la configuracin del software como otros productos de los procesos del ciclo vital del software Necesita ser adaptado a la organizacin y al contexto del proyecto

Particularmente, el asunto se refiere a cmo las actividades de anlisis, especificacin, y la validacin se configuran para diversos tipos de proyectos y apremios. El asunto tambin incluye las actividades que proporcionan la entrada en el proceso de los requisitos, por ejemplo estudios de la comercializacin y de viabilidad. [Kot00; Rob99; Som97; Som05] 2.2. Agentes de proceso Este asunto introduce los papeles de la gente que participa en el proceso de los requisitos. Este proceso es fundamental interdisciplinario, y el especialista de los requisitos necesita mediar entre el dominio del tenedor de apuestas y el de la tecnologa de dotacin lgica. Hay mucha gente implicada adems del especialista de los requisitos, cada uno de ellos tiene una funcin en el software. Los tenedores de apuestas variarn segn los proyectos, pero incluyen siempre usuarios/operadores y clientes (quines no necesitan ser iguales). [Gog93] Los ejemplos tpicos de los tenedores de apuestas del software incluyen (pero no restringen) Usuarios: Este grupo abarca a los que utilizan el software. Es a menudo un grupo heterogneo que abarca a gente con diversos papeles y requisitos. Clientes: Este grupo abarca a los que han comisionado el software o quin representa el blanco de mercado del software. Analistas de mercado: Un producto del massmarket no tendr un cliente que comisiona, de modo que la gente de comercializacin a menudo necesita establecer lo que el mercado necesita y actuar como clientes. Reguladores: Muchos dominios de aplicacin como por ejemplo el transporte pblico o la banca son regulados. El software en estos

2. Proceso de los requisitos Esta seccin introduce el proceso de los requisitos del software, orientando las cinco subzonas restantes y demostrando cmo el proceso de los requisitos encaja

dominios debe conformarse con los requisitos de las autoridades reguladoras. Ingenieros de software: Estos individuos tienen un inters legtimo en beneficiarse del desarrollo del software, por ejemplo, reutilizando componentes en otros productos. Si, en este escenario, un cliente de un producto particular tiene requisitos especficos que comprometen el potencial para la reutilizacin de componentes, los ingenieros de software deben pesar cuidadosamente sus propios intereses contra los del cliente.

La captura de los requisitos se refiere a de donde vienen los requisitos del software y cmo el ingeniero de software puede recogerlos. Es la primera etapa en la construccin de una comprensin del problema que el software requiere solucionar. Es fundamental una actividad humana, y es donde identifican a los stakeholders y las relaciones se establecen entre el equipo del desarrollo y el cliente. Tambin se conoce como descubrimiento de los requisitos, y adquisicin de los requisitos. Uno de los aspectos fundamentales de la buena ingeniera de software es que haya buena comunicacin entre los usuarios del software y los ingenieros. Antes de que comience el desarrollo, los especialistas de requisitos pueden formar el conducto para esta comunicacin. Deben mediar entre el dominio de los usuarios del software (y otros stakeholders) y el mundo tcnico del ingeniero de software.

No ser posible satisfacer perfectamente los requisitos de cada stakeholder, y es el trabajo de los ingenieros de software negociar las compensaciones que son aceptables a los stakeholder principales y dentro de presupuestario, tcnico, regulador, y otros apremios. Un requisito previo para esto es que identifiquen a todos los stakeholder, la naturaleza de su inters analizada, y sus requisitos sacados. [Dav93; Kot00; Rob99; Som97; You01] 2.3. Ayuda y gerencia de proceso Este asunto introduce los recursos de la gerencia de proyecto requeridos y consumidos por el proceso de los requisitos. l establece el contexto para la primera subzona (definicin de la iniciacin y del alcance) de la tecnologa de dotacin lgica KA de la gerencia. Su propsito principal es hacer el acoplamiento entre las actividades de proceso identificadas en 2.1 y los temas de coste, recursos humanos, entrenamiento, y herramientas. [Rob99; Som97; You01] 2.4. Calidad y mejora de proceso Este asunto se refiere al gravamen de la calidad y de la mejora del proceso de los requisitos. Su propsito es acentuar el papel dominante que los requisitos procesan en trminos de coste y puntualidad de un producto de software, y de la satisfaccin del cliente con ello [Som97]. Ayudar a orientar el proceso de los requisitos con estndares de calidad y modelos de mejora de proceso para el software y los sistemas. El proceso de calidad y la mejora se relacionan de cerca con la calidad del software y la tecnologa de dotacin lgica KA. De inters particular estn las aplicaciones de calidad del software, sus cualidades y medida, y la definicin de proceso de software. Este punto abarca Cobertura de proceso de los requisitos mediante estndares y modelos de la mejora Medidas de proceso de los requisitos y benchmarking Plan de mejora y puesta en prctica [Kot00; Som97; You01] Captura de los requisitos [Dav93; Gog93; Lou95; Pfl01]

3.

3.1.

Fuentes de los requisitos [Dav93; Gog93; Pfl01]

3.2. Tcnicas de Captura de requisitos [Dav93; Kot00; Lou95; Pfl01] Una vez que se hayan identificado las fuentes de los requisitos, ingenieros de software pueden comenzar a sacar requisitos de ellos. Este asunto se concentra en las tcnicas para conseguir que los stakeholders articulen sus requisitos. Es un rea muy difcil e ingenieros de software necesitan sensibilizarse al hecho que (por ejemplo) los usuarios pueden tener dificultad para describir sus tareas, puede dejar la informacin importante sin especificar, o pueden estar poco dispuestos o cooperar. Es particularmente importante entender que la captura no es una actividad pasiva, y que, ingenieros de software tienen que trabajar difcilmente para sacar la informacin adecuada. Existe un nmero de tcnicas para hacer esto, las principales son [Gog93] Entrevistas, medios tradicionales de sacar requisitos. Es importante entender las ventajas y limitaciones de las entrevistas y cmo deben ser conducidas. Escenarios, valiosos medios para proporcionar contexto a las exigencias del consumidor. Proporcionan un marco para preguntas sobre tareas del usuario permitiendo preguntas y si y cmo se hace esto. El tipo ms comn de escenario es el caso del uso. Prototipos, una herramienta valiosa para clarificar requisitos confusos. Pueden actuar de una manera similar a los escenarios, proveyendo a los usuarios un contexto dentro del cual pueden entender mejor qu informacin necesitan proporcionar. Hay una amplia gama de tcnicas de prototipado, maquetas de versiones de pruebas beta de los diseos de la pantalla del software, y un traslado fuerte de su uso para captura de los requisitos y el uso de prototipos para la validacin de los requisitos (vase el asunto 6.2 Prototipado). Reuniones. El propsito de stas es intentar alcanzar un efecto aditivo por el que un grupo de gente puede obtener ms penetracin en los requisitos del software que trabajando individualmente. Ellos pueden inspirarse y refinar las ideas que pueden ser difciles de traer a la superficie usando entrevistas. Otra ventaja es que dejan a los stakeholders reconocer donde hay requisitos en conflicto. Cuando se aplica bien, esta tcnica puede resultar en un rico y constante sistema de requisitos que difcilmente sera realizable de otro modo. Sin embargo, las reuniones necesitan ser dirigidas cuidadosamente (por lo tanto es necesario un facilitador) para evitar que una situacin ocurra donde las capacidades crticas del equipo son erosionadas por lealtad del grupo, o los requisitos que reflejan las

Los requisitos tienen muchas fuentes en software tpico, y es esencial que todas las fuentes potenciales estn identificadas y evaluadas para su impacto en l. Este asunto se disea para promover el conocimiento de las varias fuentes de los requisitos del software y de los armazones para manejarlos. Los puntos principales cubiertos son Metas: El trmino meta (a veces llamada preocupacin de negocio o factor crtico del xito) se refiere a los objetivos totales, de alto nivel del software. Las metas proporcionan la motivacin para el software, pero a menudo son formuladas vagamente. Es necesidad que los ingenieros de software presten atencin particular a determinar el valor (concerniente a prioridad) y coste de metas. Un estudio de viabilidad es una manera relativamente barata de hacer esto. [Lou95]. Conocimiento del dominio: Los ingenieros de software necesitan adquirir, o tener disponible, conocimiento sobre el uso del dominio. Esto permite deducir el conocimiento que los stakeholders no articulan, determinar las compensaciones que sern necesarias en requisitos que estn en conflicto, y, a veces, para actuar como campen del usuario. Stakeholders (vase a agentes de proceso del asunto 2.2). Mucho software se ha probado insatisfactorio porque haba tensionado los requisitos de un grupo de stakeholders a expensas de los de otros. Por lo tanto, se entrega el software que es difcil de utilizar o que derriba las estructuras culturales o polticas de la organizacin del cliente. Los ingenieros de software necesitan identificar, representar, y manejar puntos de vista de muchos diversos tipos de tenedores de apuestas. [Kot00] El entorno operacional. Los requisitos sern derivados del ambiente en el cual el software ser ejecutado. stos pueden ser, por ejemplo, el medir el tiempo en tiempo real del software o de la interoperabilidad en un ambiente de la oficina. stos deben ser buscados activamente, porque pueden afectar grandemente a la viabilidad y el coste del software, y restringen las opciones de diseo. [Tha97] El entorno de la organizacin. El software se requiere a menudo para apoyar un proceso del negocio, la seleccin del cual se puede condicionar por la estructura, cultura, y poltica interna de la organizacin. Los ingenieros de software necesitan ser sensibles a stos, puesto que, el nuevo software no debe forzar generalmente cambios imprevistos en el proceso del negocio.

preocupaciones de algunos favorecen la gente abierta (y quizs mayor) en detrimento de otros. Observacin. La importancia del contexto del software dentro del ambiente de organizacin ha conducido a la adaptacin de las tcnicas de observacin para captura de los requisitos. Los ingenieros de software aprenden sobre las tareas del usuario sumergindose en la observacin de cmo los usuarios obran recprocamente con su software. Estas tcnicas son relativamente costosas, pero son instructivas porque ilustran que muchas tareas del usuario y procesos del negocio son demasiado sutiles y complejos para que sus agentes los describan fcilmente. Anlisis de requisitos [Som05]

4.

Este asunto se refiere al proceso de analizar requisitos para Detectar y resolver los conflictos entre los requisitos Descubrir los lmites del software y cmo debe obrar recprocamente con su ambiente Elaborar los requisitos del sistema para derivar requisitos software La vista tradicional del anlisis de requisitos ha sido que est reducida a modelado conceptual utilizando uno de varios mtodos de anlisis tales como Anlisis Estructurados y Tcnicas de Diseo (SADT). Mientras que el modelado conceptual es importante, nosotros incluimos la clasificacin de requisitos para ayudar a informar a compensaciones entre los requisitos (clasificacin de los requisitos) y el proceso de establecer estas compensaciones (negociacin de los requisitos). [Dav93] El cuidado se debe tomar para describir requisitos con exactitud, suficientemente como para permitir que los requisitos sean validados, su implementacin sea verificada, y sus costes estimados. 4.1 Clasificacin de los requisitos [Dav93; Kot00; Som05]

ingeniera del software o los estndares que se adherirn. La prioridad del requisito. Generalmente cuanta ms alta es la prioridad, ms esencial es el requisito para satisfacer las metas finales del software. A menudo clasificado en una escala de punto fijo tal como obligatorio, altamente deseable, deseable u opcional, la prioridad a menudo tiene que ser equilibrada con el coste de desarrollo e implementacin. El alcance del requisito. El alcance se refiere al grado al cual un requisito afecta el software y componentes software. Algunos requisitos, particularmente los no funcionales, tienen un alcance global que no puede ser asignado a un componente discreto. Por lo tanto, el requisito con alcance global puede afectar fuertemente a la arquitectura del software y el diseo de muchos componentes, mientras que uno puede con un alcance estrecho ofrecer un nmero de opciones del diseo y no afectar demasiado a la satisfaccin de otros requisitos. Volatilidad/estabilidad. Algunos requisitos cambiarn durante el ciclo de vida del software, y se igualarn durante el proceso de desarrollo. Es til hacer estimaciones de la probabilidad de que se puedan hacer cambios. Por ejemplo, en actividades bancarias, los requisitos para las funciones para calcular y para acreditar los intereses en las cuentas son probablemente ms estables que un requisito para mantener un tipo particular de cuenta exenta de impuestos. Lo anterior refleja una caracterstica fundamental del dominio de las actividades bancarias (esas cuentas pueden ganar intereses), mientras que el ltimo se puede dejar obsoleto por un cambio de gobierno. Sealar requisitos potencialmente voltiles puede ayudar al ingeniero del software a establecer un diseo que sea ms tolerante al cambio.

Otras clasificaciones pueden ser apropiadas, dependiendo de la prctica normal y del uso que se le d. Hay un desfase fuerte entre la clasificacin de los requisitos y las cualidades de los requisitos (vase las cualidades de los requisitos del punto 7.3). 4.2. El modelo conceptual [Dav93; Kot00; Som05]

Los requisitos se pueden clasificar en un nmero de dimensiones. Los ejemplos incluyen: Si el requisito es funcional o no funcional (vase el asunto 1.3 funcional y requisitos no funcionales). Si el requisito est derivado de uno o ms requisitos de alto nivel o una propiedad emergente (vase las caractersticas inesperadas del asunto 1.4) o est impuesto directamente ante el software por un tenedor de apuestas u otra fuente. Si el requisito est en el producto o proceso. Los requisitos en el proceso pueden obligarnos a la opcin del contratista, a adaptar el proceso de la

El desarrollo de modelos de un problema del mundo real es clave para el anlisis de requisitos del software. Su propsito es ayudar a entender el problema, ms que iniciar el diseo de la solucin. Por lo tanto, modelos conceptuales abarcan modelos de entidades del dominio del problema, configurados para reflejar sus relaciones y dependencias con el mundo real. Varias clases de modelos pueden ser desarrollados. stos incluyen datos y controlan flujos, modelos de estado, rastros de evento, interacciones de usuario, modelos de

objeto, modelos de datos y muchos otros. Los factores que influencian la opcin del modelo incluyen La naturaleza del problema. Algunos tipos de software exigen que ciertos aspectos estn analizados rigurosamente. Por ejemplo, controlar el flujo y los modelos de estado son probablemente ms importantes para el software en tiempo real que para el software de gerencia de informacin, mientras que es generalmente lo contrario para los modelos de datos. La maestra del ingeniero del software. Es a menudo ms productivo adoptar una notacin que modele o mtodo con el cual el ingeniero del software tiene una experiencia. Los requisitos de proceso del cliente. Los clientes pueden imponer su notacin o mtodo favorecido, o prohibir cualquiera que le sea desconocido. Este factor puede estar en conflicto con el factor anterior. La disponibilidad de mtodos y de herramientas. Notaciones o mtodos que son mal apoyados por el entrenamiento y las herramientas pueden no alcanzar la aceptacin esperada aunque se satisfagan tipos particulares de problemas.

funcional; e IEEE Std 1320.2, IDEF1X97 (IDEFObject) para modelado de la informacin. 4.3. Asignacin arquitectnica del diseo y de los requisitos [Dav93; Som05]

En un cierto punto, la arquitectura de la solucin debe ser derivada. El diseo arquitectnico es el punto en el cual el proceso de los requisitos se junta con software o diseo de sistemas e ilustra cmo de imposible es desemparejar ambas tareas. [Som01] Este asunto est de cerca relacionado con el captulo de la estructura y de la arquitectura del software en KA del diseo del software. En muchos casos, el ingeniero del software acta como arquitecto del software porque el proceso de analizar y de elaborar los requisitos exige que los componentes que sern responsables de satisfacer los requisitos estn identificados. Esto es localizacin de requisitos-la asignacin, a los componentes, de la responsabilidad de satisfacer requisitos. La asignacin es importante para permitir anlisis detallado de requisitos. Por lo tanto, por ejemplo, una vez un sistema de requisitos se han asignado a un componente, los requisitos individuales se pueden analizar ms a fondo para descubrir otros requisitos de cmo el componente necesita obrar recprocamente con otros componentes para satisfacer los requisitos asignados. En proyectos grandes, la asignacin estimula un nuevo anlisis para cada subsistema. Como ejemplo, requisitos para el funcionamiento de los frenos de un coche (distancia que frena, seguridad en condiciones que conducen, suavidad del uso, la presin del pedal requerida, y as sucesivamente) se puede asignar un hardware que frena (montajes mecnicos e hidrulicos) y un sistema de frenos antibloqueo (ABS). Solamente cuando un requisito para un sistema de frenos antibloqueo ha sido identificado, y los requisitos asignados a l, pueden usarse las capacidades del ABS, el hardware de frenado identificado, y las caractersticas indefinidas (tales como el peso del coche) para identificar los requisitos detallados del software del ABS. El diseo arquitectnico se identifica de cerca con el modelado conceptual. El mapeado de las entidades del dominio del mundo real para componentes de software no siempre tiene un diseo obvio, as que arquitectnicamente se identifica como a asunto separado. Los requisitos de notaciones y los mtodos son ampliamente iguales para modelado conceptual y diseo arquitectnico. IEEE Std 1471-2000, prctica recomendada para la descripcin arquitectnica de sistemas orientados al software, sugiere un acercamiento del mltiple punto de vista para describir la arquitectura de sistemas y de sus artculos del software. (IEEE1471-00)

Observar que, en casi todos los casos, es til comenzar construyendo un modelo del contexto del software. El contexto del software proporciona una conexin entre el software previsto y su ambiente externo. Esto es crucial para entender el contexto del software en su ambiente operacional e identificar sus interfaces con el ambiente. La aplicacin de modelar se junta firmemente con la de los mtodos. Para los propsitos prcticos, un mtodo es una notacin (o sistema de notaciones) apoyado por un proceso que dirige el uso de las notaciones. Hay escasa evidencia emprica para apoyar las demandas de superioridad de una notacin sobre otra. Sin embargo, la extensa aceptacin de un mtodo o de una notacin particular puede conducir a nivel industrial al beneficio de habilidades y de conocimiento. sta es actualmente la situacin con el UML (Lenguaje de Modelado Unificado). (UML04) El modelado formal usando notaciones basadas en matemtica discreta, y que son detectables al razonamiento lgico, han tenido impacto en algunos dominios especializados. stos puede ser impuesto por los clientes o los estndares y puede ofrecer ventajas que obligan al anlisis de ciertas funciones o componentes crticos. Este asunto no busca ensear un estilo o una notacin de modelado particular sino proporcionar algo a la direccin con el propsito de modelar. Dos estndares proporcionan las notaciones que pueden ser tiles en desarrollo conceptual realizando modeladoIEEE conceptual Std 1320.1, IDEF0 para modelado

4.4. Negociacin de los requisitos Otro trmino comnmente utilizado para este tema es resolucin del conflicto. Esto se refiere a problemas de resolucin de los requisitos donde los conflictos ocurren entre dos stakeholders que requieren caractersticas mutuamente incompatibles, entre los requisitos y los recursos, o en entre requisitos funcionales y no funcionales, por ejemplo. [Kot00, Som97] en la mayora de los casos, es imprudente para el ingeniero del software tomar una decisin unilateral, y hace necesario consultar con los stakeholders para alcanzar un consenso en una compensacin apropiada. Es a menudo importante por esas razones contractuales que tales decisiones sean detectables de nuevo al cliente. Hemos clasificado esto como asunto del anlisis de requisitos del software porque los problemas emergen como resultado el anlisis. Sin embargo, un caso fuerte se puede tambin hacer para considerar los requisitos como asunto de la validacin. 5. Especificacin de requisitos

para el sistema, su ambiente de misin y una declaracin de apremios, asunciones, y requisitos no funcionales. Puede incluir los modelos conceptuales diseados para ilustrar el contexto del sistema, panoramas del uso y las entidades principales del dominio, as como datos, la informacin, y flujos de trabajo. IEEE Std 1362, concepto del documento de las operaciones, proporciona consejo sobre la preparacin y contenido de tal documento. (IEEE1362-98) Especificacin de requisitos del sistema [Dav93; Kot00; Rob99; Tha97] Desarrolladores de sistemas con los componentes software y no software, un avin de pasajeros moderno, por ejemplo, separa a menudo la descripcin de los requisitos del sistema de la descripcin de los requisitos del software. En esto se especifica la visin, requisitos del sistema, los requisitos software se derivan de los requisitos del sistema, y entonces los requisitos para los componentes de software se especifican. En sentido estricto, la especificacin de requisitos del sistema es una actividad de la ingeniera de sistemas y esta fuera del alcance de esta gua. IEEE Std 1233 es una gua para los requisitos del sistema que se convierten. (IEEE1233-98) 5.3. Especificacin de requisitos del software [Kot00; Rob99] 5.2.

Para la mayora de las profesiones de la ingeniera, el trmino especificacin se refiere a la asignacin de valores o lmites numricos para metas del diseo del producto. (Vin90) Los sistemas fsicos tpicos tienen un nmero relativamente pequeo de tales valores. Tpicamente el software tiene una gran cantidad de requisitos, y el nfasis se comparte entre la ejecucin de la cuantificacin numrica y el manejo de la complejidad de la interaccin entre el gran nmero de requisitos. As pues, en software el trmino, especificacin de requisitos del software se refiere tpicamente a la produccin de un documento, o a su equivalente electrnico, que puede estar sistemticamente repasado, evaluado, y aprobado. Para los sistemas complejos, particularmente sos que implican componentes nosoftware, se elaboran tres tipos de documentos: definicin de sistema, sistema requisitos, y requisitos del software. Para sistemas simples, solamente el tercero de stos es requerido. Los tres documentos se describen aqu, entendiendo que combinados pueden ser apropiados. Una descripcin de la ingeniera de sistemas se puede encontrar en el Captulo 12, disciplinas relacionadas de la tecnologa de dotacin lgica. 5.1. El documento de la definicin de sistema Este documento (conocido a veces como documento de exigencias del o concepto de operaciones) registra el sistema requisitos. Define los requisitos del sistema de alto nivel desde la perspectiva del dominio. Su nmero total de lectores incluye los representantes de los usuarios del sistema/de los clientes (la comercializacin puede desempear estos papeles del mercado software), as que su contenido debe estar en trminos de dominio. El documento enumera los requisitos del sistema junto con informacin de fondo sobre los objetivos totales

La especificacin de requisitos del software establece la base para el acuerdo entre los clientes y los contratistas o los proveedores (en proyectos del mercado, estos papeles se pueden desempear por las divisiones de comercializacin y desarrollo) en los que hay que hacer el producto de software, as como lo que no se espera que haga. Para los lectores no tcnicos, el documento de la especificacin de los requisitos es acompaado a menudo por un documento de la definicin de los requisitos del software. La especificacin de requisitos del software permite un riguroso gravamen de requisitos antes de que el diseo pueda comenzar y reducir un reajuste final. Debe tambin proporcionar una base realista para estimar costes, riesgos, y horario del producto. Las organizaciones pueden tambin utilizar un documento de especificacin de requisitos software para desarrollar su propia validacin y que la verificacin sea ms productiva. La especificacin de requisitos software proporciona una base informada para transferir un producto de software a los nuevos usuarios o a las mquinas nuevas. Finalmente, puede proporcionar una base para el realce de software. Los requisitos del software se escriben a menudo en lenguaje natural, pero, en la especificacin de requisitos del software, sta se puede suplir por formal o semi-

formal. La seleccin de notaciones apropiadas permite requisitos y los aspectos particulares de la arquitectura del software que se describir ms ajustadamente que en lengua natural. La regla general es que las notaciones deben ser utilizadas para que permitan a los requisitos ser descritos tan exactamente como sea posible. Esto es particularmente crucial para otros tipos seguridad-crtica y casos de software confiable. Sin embargo, la opcin de la notacin es obligada a menudo por el entrenamiento, las habilidades y las preferencias de los autores y de los lectores del documento. Se han desarrollado un nmero de indicadores de la calidad para relacionar la calidad de la especificacin de requisitos del software a otras variables del proyecto por ejemplo coste, aceptacin, funcionamiento, horario, reproducibilidad, indicadores de la calidad etc. para el individuo las declaraciones de la especificacin de requisitos del software incluyen imperativos, directorios, frases dbiles, opciones, y continuaciones. Indicadores para el documento de especificacin de requisitos software incluye tamao, legibilidad, especificacin, profundidad, y estructura del texto. [Dav93; Tha97] (Ros98) IEEE tiene un estndar, IEEE Std 830 [IEEE830-98], para produccin y contenido de la especificacin de los requisitos del software. Tambin, IEEE 1465 (similar a ISO/IEC 12119) es un estndar que trata requisitos de calidad en paquetes de software. (IEEE1465-98)

de que este define el software correctamente (es decir, el software que los usuarios esperan). [Kot00] 6.1 Revisiones de los requisitos [Kot00; Som05; Tha97]

Quizs los medios ms comunes de la validacin estn cerca de inspeccin o revisiones de los documentos de los requisitos. Asignan un grupo de revisores en un escrito para buscar errores, asunciones confundidas, la carencia de la claridad, y la desviacin de la costumbre. La composicin del grupo que conduce la revisin es importante (por lo menos un representante del cliente debe ser incluido para un proyecto cliente-conducido, por ejemplo), y puede ayudar a proporcionar la direccin en qu buscar bajo listas de comprobacin. Las revisiones se pueden constituir en el final del documento de definicin del sistema, el documento de la especificacin de sistema, el documento de la especificacin de requisitos del software, especificacin de la lnea de fondo para un nuevo lanzamiento, o en cualquier otro paso en el proceso. IEEE Std 1028 proporciona la direccin para conducir tales revisiones. (IEEE1028-97) Las revisiones son tambin cubiertas en KA de la calidad del software, punto 2.3 Revisiones e intervenciones. 6.2. Prototipado [Dav93; Kot00; Som05; Tha97]

6.

Validacin de los requisitos [Dav93]

Los documentos de los requisitos pueden estar conformes a la validacin y procedimientos de verificacin. Los requisitos pueden ser validados para asegurarse de que el ingeniero del software entiende los requisitos, y es tambin importante para verificar que un documento de requisitos se conforma con la compaa de los estndares, y ste es comprensible, constante, y finito. Las notaciones formales ofrecen la ventaja importante de permitir que las dos caractersticas pasadas sean probadas (en un sentido estricto, por lo menos). Diversos stakeholders, incluyendo los representantes del cliente y del revelador, deben tambin repasar los documentos. Los documentos de los requisitos son conformes a las mismas prcticas de gerencia de la configuracin del software como los otros puntos relevantes de los procesos del ciclo de vida del software. (Bry94, Ros98) Es normal programar explcitamente unos o ms puntos en el proceso de los requisitos donde estn los requisitos validados. La puntera es tomar cualquier problema antes de que los recursos se destinen a tratar los requisitos. La validacin de los requisitos se refiere al proceso de examinar el documento de los requisitos para asegurarse

Prototipar es comnmente el medio para validar la interpretacin del ingeniero del software de los requisitos del software, as como para sacar nuevos requisitos. Hay una gama de tcnicas de prototipado y un nmero de puntos en el proceso donde la validacin del prototipo puede ser apropiada. La ventaja de usar prototipos es que pueden hacer ms fcil la interpretacin de las asunciones del ingeniero del software y, donde lo necesite, dan la explicacin til de porqu son incorrectas. Por ejemplo, el comportamiento dinmico de un interfaz utilizador se puede entender mejor a travs de un prototipo animado que a travs de la descripcin textual o de modelos grficos. Hay tambin desventajas, sin embargo. stos incluyen el peligro de la atencin de los usuarios que es distrada de la base de la funcionalidad subyacente por las ediciones o los problemas cosmticos de la calidad con el prototipo. Por esta razn, algunas personas dicen que los prototipos que evitan. Los prototipos pueden ser costosos. Sin embargo, si evitan el despilfarro de los recursos causados intentando satisfacer requisitos errneos, su coste puede ser ms fcilmente justificado. 6.3. Validacin modelo [Dav93; Kot00; Tha97]

Es tpicamente necesario validar la calidad de los modelos desarrollados durante el anlisis. Por ejemplo, en modelos de objeto, es til para realizar un anlisis

esttico para verificar que las trayectorias de comunicacin existen entre los objetos que, en dominio de los stakeholders, intercambian datos. Si las notaciones de especificacin formal se utilizan, es posible utilizar el razonamiento formal para probar caractersticas de la especificacin. 6.4. Pruebas de aceptacin [Dav93]

Una caracterstica esencial de un requisito del software es que debe ser posible validar que el producto final lo satisface. Los requisitos que no pueden ser validados son deseos realmente justos. Una tarea importante es por lo tanto planear cmo verificar cada requisito. En la mayora de los casos, el diseo de pruebas de aceptacin hace esto. Identificar y disear pruebas de aceptacin pueden ser difcil para los requisitos no funcionales (vase el asunto los requisitos funcionales y no funcionales de 1.3). Para ser validados, deben primero ser analizados al punto donde pueden ser expresados cuantitativamente. La informacin adicional se puede encontrar en el software KA de prueba, conformidad de la prueba en el punto 2.2.4.

Hay presin general en la industria del software para ciclos de desarrollo ms cortos, y esto est particularmente pronunciado en sectores del mercado altamente competitivos. Por otra parte, la mayora de los proyectos son obligados de cierta manera por su ambiente, y muchas son mejoras, o revisiones, del software existente donde est la arquitectura dada. En la prctica, por lo tanto, es casi siempre imprctico poner el proceso de los requisitos en ejecucin como proceso lineal, determinista en el cual los requisitos del software se saquen de los stakeholders, asignado, y entregado al equipo de desarrollo del software. Es ciertamente un mito que los requisitos para los proyectos grandes del software siempre estn entendidos perfectamente o especificados perfectamente. [Som97] En su lugar, los requisitos iteran tpicamente hacia un nivel de calidad y detallan que es suficiente permitir las decisiones del diseo y de la consecucin que se harn. En algunos proyectos, esto puede dar lugar a requisitos antes de que todas sus caractersticas se entiendan completamente. Esto arriesga a una reanudacin costosa si los problemas emergen tarde en el proceso de la ingeniera del software. Sin embargo, los ingenieros del software son obligados necesariamente por planes de la gerencia de proyecto y deben por lo tanto tomar medidas para asegurarse de que la calidad de los requisitos es tan alta como sea posible dado los recursos disponibles. Deben, por ejemplo, hacer explcita cualquier asuncin que sostengan los requisitos, as como cualesquiera problemas sabidos. En casi todos los casos, el entendimiento de los requisitos contina desarrollndose mientras que procede el diseo y el desarrollo. Esto conduce a menudo a la revisin de requisitos tarde en el ciclo de vida. Quizs el punto ms crucial de entender la ingeniera de requisitos es que una proporcin significativa de los requisitos cambiar. Esto es a veces debido a los errores en el anlisis, pero es con frecuencia una consecuencia inevitable del cambio en el ambiente: por ejemplo, la funcionalidad del cliente o el ambiente del negocio, o el mercado en el cual software se va a vender. Cualquiera que sea la causa, es importante reconocer la inevitabilidad del cambio para atenuar sus efectos. El cambio tiene que ser manejado asegurando esos cambios propuestos mediante una revisin definida y un anlisis del proceso de aprobacin, y, aplicando los requisitos cuidadosos que remontan, del impacto, y la configuracin del software (vase la configuracin del software KA de la gerencia). Por lo tanto, el proceso de los requisitos no es simplemente una tarea anticipada en el desarrollo del software, pero atraviesa por completo el ciclo de vida del software. En un proyecto tpico, las actividades de los requisitos del software se desarrollan en un cierto. 7.2. Cambiar a gestin [Kot00]

7. Consideraciones prcticas El primer nivel de la descomposicin de los puntos presentados en este KA puede parecer que describe una secuencia lineal de actividades. sta es una vista simplificada del proceso. [Dav93] Los requisitos procesan palmos de todo el ciclo de vida del software. Cambiar la gerencia y el mantenimiento de los requisitos en un estado que refleja exactamente el software que se construir, o se ha construido, es clave para el xito del proceso ingeniera del software [Kot00; Lou95] No toda organizacin tiene una cultura de documentacin y manejo de requisitos. Es frecuente en las compaas de start-up dinmicas, conducidas por una visin fuerte del producto y recursos limitados, para ver la documentacin de los requisitos como gastos indirectos innecesarios. Ms a menudo, sin embargo, segn estas compaas crecen, mientras que su base de cliente crece, y como su producto comienza a desarrollarse, estas descubren que necesitan recuperar los requisitos que las caractersticas de producto motivadas para determinar el impacto de cambios propuestos. Por lo tanto, la documentacin de los requisitos y la gerencia del cambio son llave al xito de cualquier proceso de los requisitos. 7.1. Naturaleza iterativa requisitos [Kot00; You01] del proceso de los

La gestin del cambio es central en el anlisis de requisitos. Este asunto describe el papel de la gestin del cambio, los procedimientos que necesitan estar preparados, y el anlisis que se debe aplicar a los cambios propuestos. Tiene acoplamientos fuertes a la configuracin del software KA de la gestin. 7.3. Cualidades de los requisitos [Kot00]

requisitos y los stakeholders que lo motivaron (de un requisito del software de nuevo a los requisitos del sistema que ayudan a satisfacer, por ejemplo). Inversamente, un requisito debe ser detectable entidades del diseo que lo satisfacen (por ejemplo, de un requisito del sistema en el software requisitos que se han elaborado a partir de l, y encendido en los mdulos del cdigo que lo ponen en ejecucin). Los requisitos que remontan para un proyecto tpico formarn un grfico acclico dirigido complejo (DAG) de requisitos. 7.5 Requisitos que miden Como cuestin prctica, es tpicamente til tener cierto concepto del volumen de los requisitos para un producto de software particular. Este punto es til evaluando el tamao de un cambio en requisitos, en estimar el coste de una tarea del desarrollo o del mantenimiento, o simplemente para el uso como el denominador en otra medida. La medida funcional del tamao (FSM) es una tcnica para evaluar el tamao de un cuerpo de requisitos funcionales. IEEE Std 14143.1 define el concepto de FSM. [IEEE14143.1-00] Estndares de ISO/IEC y otras fuentes describen mtodos particulares del FSM. Informacin adicional sobre la medida del tamao y los estndares se encuentran en el proceso de la ingeniera del software.

Los requisitos deben consistir no slo una especificacin de qu se requiere, sino tambin de la informacin ancilar que las ayudas manejan e interpretan los requisitos. Esto debe incluir varias dimensiones de la clasificacin del requisito (vase la clasificacin de los requisitos del asunto 4.1) y el mtodo de la verificacin o el plan de prueba de aceptacin. Puede tambin incluir la informacin adicional tal como un resumen-anlisis razonado para cada requisito, la fuente de cada requisito, y una historia del cambio. Los requisitos ms importantes atribuyen, sin embargo, un identificador que permite requisitos identificados inequvocamente. 7.4 El remontar de los requisitos [Kot00]

El remontar de los requisitos se refiere a la fuente recuperacin de requisitos y de predecir los efectos de esos requisitos. El trazado es fundamental para el anlisis de la ejecucin del impacto cuando los requisitos cambian. Un requisito debe ser detectable al revs a

REFERENCIAS RECOMENDADAS PARA REQUSITOS SW [Dav93] A.M. Davis, Software Requirements: Objects, Functions and States, Prentice Hall, 1993. [Gog93] J. Goguen and C. Linde, Techniques for Requirements Elicitation, presented at International Symposium on Requirements Engineering, 1993. [IEEE830-98] IEEE Std 830-1998, IEEE Recommended Practice for Software Requirements Specifications, IEEE, 1998. (IEEE14143.1-00) IEEE Std 14143.1-2000//ISO/ IEC14143-1:1998, Information TechnologySoftware MeasurementFunctional Size MeasurementPart 1: Definitions of Concepts, IEEE, 2000. [Kot00] G. Kotonya and I. Sommerville, Requirements Engineering: Processes and Techniques, John Wiley & Sons, 2000. [Lou95] P. Loucopulos and V. Karakostas, Systems Requirements Engineering, McGraw-Hill, 1995. [Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001, Chap. 4. [Rob99] S. Robertson and J. Robertson, Mastering the Requirements Process, Addison-Wesley, 1999. [Som97] I. Sommerville and P. Sawyer, Requirements Engineering: A Good Practice Guide, John Wiley & Sons, 1997, Chap. 1-2. [Som05] I. Sommerville, Software Engineering, seventhed., Addison-Wesley, 2005. [Tha97] R.H. Thayer and M. Dorfman, eds., Software Requirements Engineering, IEEE Computer Society Press, 1997, pp. 176-205, 389-404. [You01] R.R. You, Effective Requirements Practices, Addison-Wesley, 2001.

APNDICE A. LISTA DE LECTURAS COMPLEMENTARIAS


(Ale02) I. Alexander and R. Stevens, Writing Better Requirements, Addison-Wesley, 2002. (Ard97) M. Ardis, Formal Methods for Telecommunication System Requirements: A Survey of Standardized Languages, Annals of Software Engineering, vol. 3, 1997. (Ber97) V. Berzins et al., A Requirements Evolution Model for Computer Aided Prototyping, presented at Ninth IEEE International Conference on Software Engineering and Knowledge Engineering, Knowledge Systems Institute, 1997. (Bey95) H. Beyer and K. Holtzblatt, Apprenticing with the Customer, Communications of the ACM, vol. 38, iss. 5, May 1995, pp. 45-52. (Bru95) G. Bruno and R. Agarwal, Validating Software Requirements Using Operational Models, presented at Second Symposium on Software Quality Techniques and Acquisition Criteria, 1995. (Bry94) E. Bryne, IEEE Standard 830: Recommended Practice for Software Requirements Specification, presented at IEEE International Conference on Requirements Engineering, 1994. (Buc94) G. Bucci et al., An Object-Oriented Dual Language for Specifying Reactive Systems, presented at IEEE International Conference on Requirements Engineering, 1994. (Bus95) D. Bustard and P. Lundy, Enhancing Soft Systems Analysis with Formal Modeling, presented at Second International Symposium on Requirements Engineering, 1995. (Che94) M. Chechik and J. Gannon, Automated Verification of Requirements Implementation, presented at Proceedings of the International Symposium on Software Testing and Analysis, special issue, 1994. (Chu95) L. Chung and B. Nixon, Dealing with NonFunctional Requirements: Three Experimental Studies of a Process-Oriented Approach, presented at Seventeenth IEEE International Conference on Software Engineering, 1995. (Cia97) P. Ciancarini et al., Engineering Formal Requirements: An Analysis and Testing Method for Z Documents, Annals of Software Engineering, vol. 3, 1997. (Cre94) R. Crespo, We Need to Identify the Requirements of the Statements of Non-Functional Requirements, presented at International Workshop on Requirements Engineering: Foundations of Software Quality, 1994. (Cur94) P. Curran et al., BORIS-R Specification of the Requirements of a Large-Scale Software Intensive System, presented at Requirements Elicitation for Software-Based Systems, 1994. (Dar97) R. Darimont and J. Souquieres, Reusing Operational Requirements: A Process-Oriented Approach, presented at IEEE International Symposium on Requirements Engineering, 1997. (Dav94) A. Davis and P. Hsia, Giving Voice to Requirements Engineering: Guest Editors Introduction, IEEE Software, vol. 11, iss. 2, March 1994, pp. 12-16.

(Def94) J. DeFoe, Requirements Engineering Technology in Industrial Education, presented at IEEE International Conference on Requirements Engineering,1994. (Dem97) E. Demirors, A Blackboard Framework for Supporting Teams in Software Development, presented at Ninth IEEE International Conference on Software Engineering and Knowledge Engineering, Knowledge Systems Institute, 1997. (Die95) M. Diepstraten, Command and Control System Requirements Analysis and System Requirements Specification for a Tactical System, presented at First IEEE International Conference on Engineering of complex Computer Systems, 1995. (Dob94) J. Dobson and R. Strens, Organizational Requirements Definition for Information Technology, presented at IEEE International Conference on Requirements Engineering, 1994. (Duf95) D. Duffy et al., A Framework for Requirements Analysis Using Automated Reasoning, presented at Seventh International Conference on Advanced Information Systems Engineering, 1995. (Eas95) S. Easterbrook and B. Nuseibeh, Managing Inconsistencies in an Evolving Specification, presented at Second International Symposium on Requirements Engineering, 1995. (Edw95) M. Edwards et al., RECAP: A Requirements Elicitation, Capture, and Analysis Process Prototype Tool for Large Complex Systems, presented at First IEEE International Conference on Engineering of Complex Computer Systems, 1995. (ElE95) K. El-Emam and N. Madhavji, Requirements Engineering Practices in Information Systems Development: A Multiple Case Study, presented at Second International Symposium on Requirements Engineering, 1995. (Fai97) R. Fairley and R. Thayer, The Concept of Operations: The Bridge from Operational Requirements to Technical Specifications, Annals of Software Engineering, vol. 3, 1997. (Fic95) S. Fickas and M. Feather, Requirements Monitoring in Dynamic Environments, presented at Second International Symposium on Requirements Engineering, 1995. (Fie95) R. Fields et al., A Task-Centered Approach to Analyzing Human Error Tolerance Requirements, resented at Second International Symposium on Requirements Engineering, 1995. (Gha94) J. Ghajar-Dowlatshahi and A. Varnekar, Rapid Prototyping in Requirements Specification Phase of Software Systems, presented at Fourth International Symposium on Systems Engineering, National Council on Systems Engineering, 1994. (Gib95) M. Gibson, Domain Knowledge Reuse During

Requirements Engineering, presented at Seventh International Conference on Advanced Information Systems Engineering (CAiSE 95), 1995. (Gol94) L. Goldin and D. Berry, AbstFinder: A Prototype Abstraction Finder for Natural Language Text for Use in Requirements Elicitation: Design, Methodology and Evaluation, presented at IEEE International Conference on Requirements Engineering, 1994.

(Got97) O. Gotel and A. Finkelstein, Extending Requirements Traceability: Lessons Learned from an Industrial Case Study, presented at IEEE International Symposium on Requirements Engineering, 1997. (Hei96) M. Heimdahl, Errors Introduced during the TACS II Requirements Specification Effort: A Retrospective Case Study, presented at Eighteenth IEEE International Conference on Software Engineering, 1996. (Hei96a) C. Heitmeyer et al., Automated Consistency Checking Requirements Specifications, ACM Transactions on Software Engineering and Methodology, vol. 5, iss. 3, July 1996, pp. 231-261. (Hol95) K. Holtzblatt and H. Beyer, Requirements Gathering: The Human Factor, Communications of the ACM, vol. 38, iss. 5, May 1995, pp. 31-32. (Hud96) E. Hudlicka, Requirements Elicitation with Indirect Knowledge Elicitation Techniques: Comparison of Three Methods, presented at Second IEEE International Conference on Requirements Engineering, 1996. (Hug94) K. Hughes et al., A Taxonomy for Requirements Analysis Techniques, presented at IEEE International Conference on Requirements Engineering, 1994. (Hug95) J. Hughes et al., Presenting Ethnography in the Requirements Process, presented at Second IEEE International Symposium on Requirements Engineering, 1995. (Hut94) A.T.F. Hutt, ed., Object Analysis and Design Comparison of Methods. Object Analysis and Design Description of Methods, John Wiley & Sons, 1994.(INCOSE00) INCOSE, How To: Guide for all Engineers, Version 2, International Council on Systems Engineering, 2000. (Jac95) M. Jackson, Software Requirements and Specifications, Addison-Wesley, 1995. (Jac97) M. Jackson, The Meaning of Requirements, Annals of Software Engineering, vol. 3, 1997. (Jon96) S. Jones and C. Britton, Early Elicitation and Definition of Requirements for an Interactive Multimedia Information System, presented at Second IEEE International Conference on Requirements Engineering, 1996. (Kir96) T. Kirner and A. Davis, Nonfunctional Requirements for Real-Time Systems, Advances in Computers, 1996. (Kle97) M. Klein, Handling Exceptions in Collaborative Requirements Acquisition, presented at IEEE International Symposium on Requirements Engineering, 1997. (Kos97) R. Kosman, A Two-Step Methodology to Reduce Requirements Defects, Annals of Software Engineering, vol. 3, 1997. (Kro95) J. Krogstie et al., Towards a Deeper Understanding of Quality in Requirements Engineering, presented at Seventh International Conference on Advanced Information Systems Engineering (CAiSE 95), 1995. (Lal95) V. Lalioti and B. Theodoulidis, Visual Scenarios for Validation of Requirements Specification, presented at Seventh International Conference on Software Engineering and Knowledge Engineering, Knowledge Systems Institute, 1995. (Lam95) A. v. Lamsweerde et al., Goal-Directed Elaboration of Requirements for a Meeting Scheduler: Problems and Lessons Learnt, presented at Second

International Symposium on Requirements Engineering, 1995. (Lei97) J. Leite et al., Enhancing a Requirements Baseline with Scenarios, presented at IEEE International Symposium on Requirements Engineering, 1997. (Ler97) F. Lerch et al.., Using Simulation-Based Experiments for Software Requirements Engineering, Annals of Software Engineering, vol. 3, 1997. (Lev94) N. Leveson et al., Requirements Specification or Process-Control Systems, IEEE Transactions on Software Engineering, vol. 20, iss. 9, September 1994, pp. 684-707. (Lut96a) R. Lutz and R. Woodhouse, Contributions of SFMEA to Requirements Analysis, presented at Second IEEE International Conference on Requirements Engineering, 1996. (Lut97) R. Lutz and R. Woodhouse, Requirements Analysis Using Forward and Backward Search, Annals of Software Engineering, vol. 3, 1997. (Mac96) L. Macaulay, Requirements Engineering, Springer-Verlag, 1996. (Mai95) N. Maiden et al., Computational Mechanisms for Distributed Requirements Engineering, presented at Seventh International Conference on Software Engineering and Knowledge Engineering, Knowledge Systems Institute, 1995. (Mar94) B. Mar, Requirements for Development of Software Requirements, presented at Fourth International Symposium on Systems Engineering, 1994. (Mas97) P. Massonet and A. v. Lamsweerde, Analogical Reuse of Requirements Frameworks, presented at IEEE International Symposium on Requirements Engineering, 1997. (McF95) I. McFarland and I. Reilly, Requirements Traceability in an Integrated Development Environment, presented at Second International Symposium on Requirements Engineering, 1995. (Mea94) N. Mead, The Role of Software Architecture in Requirements Engineering, presented at IEEE International Conference on Requirements Engineering, 1994. (Mos95) D. Mostert and S. v. Solms, A Technique to Include Computer Security, Safety, and Resilience Requirements as Part of the Requirements Specification, Journal of Systems and Software, vol. 31, iss. 1, October 1995, pp. 45-53. (Myl95) J. Mylopoulos et al., Multiple Viewpoints Analysis of Software Specification Process, IEEE Transactions on Software Engineering, 1995. (Nis92) K. Nishimura and S. Honiden, Representing and Using Non-Functional Requirements: A Process-Oriented Approach, IEEE Transactions on Software Engineering, December 1992. (Nis97) H. Nissen et al., View-Directed Requirements Engineering: A Framework and Metamodel, presented at Ninth IEEE International Conference on Software Engineering and Knowledge Engineering, Knowledge Systems Institute, 1997. (OBr96) L. OBrien, From Use Case to Database: Implementing a Requirements Tracking System, Software Development, vol. 4, iss. 2, February 1996, pp. 43-47. (UML04) Object Management Group, Unified Modeling Language, www.uml.org, 2004. (Opd94) A. Opdahl, Requirements Engineering for Software Performance,

presented at International Workshop on Requirements Engineering: Foundations of Software Quality, 1994. (Pin96) F. Pinheiro and J. Goguen, An Object-Oriented Tool for Tracing Requirements, IEEE Software, vol. 13, iss. 2, March 1996, pp. 52-64. (Pla96) G. Playle and C. Schroeder, Software Requirements Elicitation: Problems, Tools, and Techniques, Crosstalk: The Journal of Defense Software Engineering, vol. 9, iss. 12, December 1996, pp. 19-24. (Poh94) K. Pohl et al., Applying AI Techniques to Requirements Engineering: The NATURE Prototype, presented at IEEE Workshop on Research Issues in the Intersection Between Software Engineering and Artificial Intelligence, 1994. (Por95) A. Porter et al., Comparing Detection Methods for Software Requirements Inspections: A Replicated Experiment, IEEE Transactions on Software Engineering, vol. 21, iss. 6, June 1995, pp. 563-575. (Pot95) C. Potts et al., An Evaluation of Inquiry-Based Requirements Analysis for an Internet Server, presented at Second International Symposium on Requirements Engineering, 1995. (Pot97) C. Potts and I. Hsi, Abstraction and Context in Requirements Engineering: Toward a Synthesis, Annals of Software Engineering, vol. 3, 1997. (Pot97a) C. Potts and W. Newstetter, Naturalistic Inquiry and Requirements Engineering: Reconciling Their Theoretical Foundations, presented at IEEE International Symposium on Requirements Engineering, 1997. (Ram95) B. Ramesh et al., Implementing Requirements Traceability: A Case Study, presented at Second International Symposium on Requirements Engineering, 1995. (Reg95) B. Regnell et al., Improving the Use Case Driven Approach to Requirements Engineering, presented at Second IEEE International Symposium on Requirements Engineering, 1995. (Reu94) H. Reubenstein, The Role of Software Architecture in Software Requirements Engineering, presented at IEEE International Conference on Requirements Engineering, 1994. (Rob94) J. Robertson and S. Robertson, Complete Systems Analysis, Vol. 1 and 2, Prentice Hall, 1994. (Rob94a) W. Robinson and S. Fickas, Supporting MultiPerspective Requirements Engineering, presented at IEEE International Conference on Requirements Engineering, 1994. (Ros98) L. Rosenberg, T.F. Hammer, and L.L. Huffman, Requirements, testing and metrics, presented at 15th Annual Pacific Northwest Software Quality Conference, 1998. (Sch94) W. Schoening, The Next Big Step in Systems Engineering Tools: Integrating Automated Requirements Tools with Computer Simulated Synthesis and Test, presented at Fourth International Symposium on Systems Engineering, 1994. (She94) M. Shekaran, The Role of Software Architecture in Requirements Engineering, presented at IEEE International Conference on Requirements Engineering, 1994. (Sid97) J. Siddiqi et al., Towards Quality Requirements Via Animated Formal Specifications, Annals of Software Engineering, vol. 3, 1997.

(Span97) G. Spanoudakis and A. Finkelstein, Reconciling Requirements: A Method for Managing Interference, Inconsistency, and Conflict, Annals of Software Engineering, vol. 3, 1997. (Ste94) R. Stevens, Structured Requirements, presented at Fourth International Symposium on Systems Engineering, 1994. (Vin90) W.G. Vincenti, What Engineers Know and How They Know It - Analytical Studies form Aeronautical History, John Hopkins University Press, 1990. (Wei03) K. Weigers, Software Requirements, second ed., Microsoft Press, 2003. (Whi95) S. White and M. Edwards, A Requirements Taxonomy for Specifying Complex Systems, presented at First IEEE International Conference on Engineering of Complex Computer Systems, 1995. (Wil99) B. Wiley, Essential System Requirements: A Practical Guide to Event-Driven Methods, AddisonWesley, 1999. (Wyd96) T. Wyder, Capturing Requirements With Use Cases, Software Development, vol. 4, iss. 2, February 1996, pp. 36-40. (Yen97) J. Yen and W. Tiao, A Systematic Tradeoff Analysis for Conflicting Imprecise Requirements, presented at IEEE International Symposium on Requirements Engineering, 1997. (Yu97) E. Yu, Towards Modeling and Reasoning Support for Early-Phase Requirements Engineering, presented at IEEE International Symposium on Requirements Engineering, 1997. (Zav96) P. Zave and M. Jackson, Where Do Operations Come From? A Multiparadigm Specification Technique, IEEE Transactions on Software Engineering,, vol. 22, iss. 7, July 1996, pp. 508-528.

APNDICE B. LISTA DE ESTNDARES


(IEEE830-98) IEEE Std 830-1998, IEEE Recommended Practice for Software Requirements Specifications, IEEE, 1998. (IEEE1028-97) IEEE Std 1028-1997 (R2002), IEEE Standard for Software Reviews, IEEE, 1997. (IEEE1233-98) IEEE Std 1233-1998, IEEE Guide for Developing System Requirements Specifications, 1998. (IEEE1320.1-98) IEEE Std 1320.1-1998, IEEE Standard for Functional Modeling Language-Syntax and Semantics for IDEF0, IEEE, 1998. (IEEE1320.2-98) IEEE Std 1320.2-1998, IEEE Standard for Conceptual Modeling Language-Syntax and Semantics for IDEFIX97 (IDEFObjetct), IEEE, 1998. (IEEE1362-98) IEEE Std 1362-1998, IEEE Guide for Information Technology-System Definition-Concept of Operations (ConOps) Document, IEEE, 1998. (IEEE1465-98) IEEE Std 1465-1998//ISO/ IEC12119:1994, IEEE Standard Adoption of International Standard ISO/IEC12119:1994(E), Information Technology-Software Packages-Quality requirements and testing, IEEE, 1998. (IEEEP1471-00) IEEE Std 1471-2000, IEEE Recommended Practice for Architectural Descriptionos Software Intensive Systems, Architecture Working Group of the Software Engineering Standards Committee, 2000. (IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information TechnologySoftware Life Cycle Processes, IEEE, 1996. (IEEE14143.1-00) IEEE Std 14143.1-2000//ISO/ IEC14143-1:1998, Information Technology-Software Measurement-Functional Size Measurement-Part 1: Definitions of Concepts, IEEE, 2000.

CAPTULO 3 DISEO DE SOFTWARE

ACRNIMOS
ADL Lenguajes de Descripcin de Arquitecturas. CRC Tarjeta Clase-Responsabilidades-Colaboradores ERD Diagrama Entidad-Relacin IDL Lenguaje de Descripcin de Interfaz DFD Diagrama de Flujo de DatosData Flow Diagram PDL Pseudo-cdigo y lenguaje de Diseo de Programa CBD Diseo Basado en Componentes INTRODUCCIN El diseo se define en [IEEE610.12-90] como el proceso para definir la arquitectura, los componentes, los interfaces, y otras caractersticas de un sistema o un componente y el resultado de este proceso. Visto como proceso, el diseo del software es la actividad del ciclo de vida de la cual los requisitos del software se analizan para producir una descripcin de la estructura interna del software que servir como la base para su construccin. Ms exacto, un diseo del software (el resultado) debe describir la arquitectura del software, en cmo la descomposicin del software, la organizacin de los componentes, y los interfaces entre los mismos componentes. Debe tambin describir los componentes en un nivel de detalle que permita su construccin. El diseo del software desempea un papel importante en el desarrollo de software: permite que la Ingeniera del software produzca los diversos modelos para la solucin que se pondr en desarrollo. Podemos analizar y evaluar estos modelos para determinar si o no permitirn que se satisfaga los requisitos. Podemos tambin examinar y evaluar varias soluciones alternativas y compensaciones. Finalmente, podemos utilizar los modelos que resultan para planear las actividades subsecuentes del desarrollo, adems de usarlas como entrada o punto de partida de la construccin y prueba en un listado estndar de los procesos del ciclo de vida del software, tales como, procesos del ciclo de vida del software de IEEE/EIA 12207 [IEEE12207.0-96], diseo del software consiste en dos actividades que quepan entre el anlisis de requisitos del software y la construccin del software: Diseo de la arquitectura del software (a veces llamado diseo de nivel superior): describiendo la estructura del software y organizacin e identificar a nivel superior los varios componentes Diseo detallado software del: describiendo cada componente suficientemente para tener en cuenta su construccin.

Referente al alcance del rea del conocimiento del diseo del software (KA), la descripcin actual de KA no discute todos los asuntos del nombre del cual contenga la palabra diseo. En la terminologa de Tom DeMarco (DeM99), el KA discutido en este captulo trata principalmente del D-diseo (diseo de la descomposicin, traza del software en partes de componentes). Sin embargo, debido a su importancia en el campo cada vez mayor de la arquitectura del software, tambin trataremos el diseo desde el punto de congelacin (el diseo del patrn de familia, cual meta es establecer concordancias explotables en una familia del software). Por el contrario, el KA del diseo del software no trata el I-Diseo (el diseo de la Innovacin, realizado generalmente durante el proceso de los requisitos del software con el objetivo de conceptuar y de especificar el software para satisfacer las necesidades y los requisitos), puesto que este asunto se debe considerar parte del anlisis y la especificacin de requisitos la descripcin de KA del diseo del software se relaciona especficamente con los requisitos del software, la construccin del software, la gerencia de la ingeniera del software, la calidad del software, y las disciplinas relacionadas con la ingeniera del software INTERRUPCIN DE LOS ASUNTOS PARA EL DISEO DEL SOFTWARE 1. Fundamentos del diseo del software

Los conceptos, las nociones, y la terminologa introducida aqu forman una base subyacente para entender el papel y el alcance del diseo del software. 1.1. Conceptos generales de diseo

El software no es el nico campo donde est implicado el diseo. En el sentido amplio, podemos ver diseo como forma de solucionar un problema. [Bud03: c1] Por ejemplo, el concepto de un problema travieso del problema-uno sin definitivo solucin-es interesante en trminos de entender los lmites del diseo. [Bud04: c1] Un nmero de otras nociones y conceptos estn tambin de inters en diseo el entender en su sentido general: metas, apremios, alternativas, representaciones, y soluciones. [Smi93] 1.2. Contexto del diseo del software

Para entender el papel del diseo del software, es importante entender el contexto, el ciclo de vida de la tecnologa de dotacin lgica. As, es importante entender las caractersticas principales del anlisis de requisitos del software contra diseo del software contra

la construccin del software contra la prueba del software. [IEEE12207.0-96]; Lis01: c11; 2 Mar; Pfl01: c2; Pre04: c2] 1.3. Proceso del diseo del software

1.4.1.

El diseo del software generalmente se considera un proceso de dos etapas: [Bas03; Dor02: v1c4s2; Fre83: I; IEEE12207.0-96]; Lis01: c13; 2 Mar: D] 1.3.1. Diseo arquitectnico El diseo arquitectnico describe cmo el software se descompone y se organiza en los componentes (la arquitectura) del software [IEEEP1471-00]

Abstraccin La abstraccin es el proceso de olvidarse de la informacin para poder tratar las cosas que son diferentes como si fueran iguales. *Lis01+ En el contexto del diseo del software, dos mecanismos dominantes de la abstraccin son parametrizacin y especificacin. La abstraccin por la especificacin conduce a tres clases importantes de abstraccin: abstraccin procesal, abstraccin de los datos, y abstraccin del control (iteracin). [Bas98: c6; Jal97: c5, c6; Lis01: c1, c2, c5, c6; Pre04: c1] Acoplador y cohesin El acoplador se define como la fuerza de las relaciones entre los mdulos, mientras que la cohesin es definida por cmo los elementos que componen un mdulo son relacionados. [Bas98: c6; Jal97: c5; Pfl01: c5; Pre04: c9] Descomposicin y modularizacin Descomposicin y modularizacin del software en partes ms pequeas e independientes, generalmente con la meta de poner diversas funcionalidades o responsabilidades en diversos componentes. [Bas98: c6; Bus96: c6; Jal97: c5; Pfl01: c5; Pre04: c9] Encapsulacin/el ocultar de la informacin Medios que ocultan de la encapsulacin/de la informacin que agrupan y que empaquetan los elementos y los detalles internos de una abstraccin y que hacen esos detalles inaccesibles. [Bas98: c6; Bus96: c6; Jal97: c5; Pfl01: c5; Pre04: c9]

1.4.2.

1.3.2.

Diseo detallado El diseo detallado describe el comportamiento especfico de estos componentes. La salida de este proceso es un sistema de modelos y los artefactos que registran las decisiones principales que se han tomado. [Bud04: c2; IEE1016-98; Lis01: c13; Pre04: c9] 1.4. Permitir tcnicas

1.4.3.

Segn el diccionario del ingls de Oxford, un principio es una verdad bsica o una ley general que se utiliza como una base del razonamiento o gua de la accin. Los principios del diseo del software, tambin llamados tcnicas permisibles [Bus96], son nociones dominantes que consideran fundamental a los diversos acercamientos y conceptos del diseo del software. Las tcnicas que lo permiten son las siguientes: [Bas98: c6; Bus96: c6; IEEE1016-98; Jal97: c5, c6; Lis01: c1, c3; Pfl01: c5; Pre04: c9]

1.4.4.

Figura1 Descomposicin de los temas del KA Figura1 Descomposicin de los temas del KA de Diseo Software

1.4.5.

Separacin del interfaz y de la puesta en prctica La separacin del interfaz y de la puesta en prctica implica el definir de un componente especificando un interfaz pblico, a parte de los detalles de cmo se observa el componente. [Bas98: c6; Bos00: c10; Lis01: c1, c9] Desahogo, lo completo y deshacindose de lo primitivo Alcanzando desahogo, lo completo, y medios no primitivos se asegura que un componente de software captura todas las caractersticas importantes de una abstraccin, y nada ms. [Bus96: c6; Lis01: c5].

2.3 Distribucin de componentes Cmo distribuir el software a travs del hardware, cmo los componentes se comunican, cmo el middleware se puede utilizar para ocuparse de software heterogneo. [Bas03: c16; Bos00: c5; Bus96: c el 2 Mar de 94: DD; Mey97: c30; Pre04: c30] 2.1. Direccin del error y de excepcin y tolerancia de fallos Cmo prevenir y tolerar averas y ocuparse de condiciones excepcionales. [Lis01: c4; Mey97: c12; Pfl01: c5] 2.1. Interaccin y presentacin Cmo estructurar y organizar las interacciones con los usuarios y la presentacin de la informacin (por ejemplo, separacin de la presentacin y de la lgica del negocio usando el acercamiento del Modelo-VistaRegulador). [Bas98: c6; Bos00: c5; Bus96: c2; Lis01: c13; Mey97: c32] Debe ser observado que este asunto no est sobre especificar los detalles del interfaz utilizador, que es la tarea del diseo del interfaz utilizador (una parte de ergonmica del software); ver las disciplinas relacionadas de la tecnologa de dotacin lgica. 2.1. Persistencia de los datos Cmo los datos duraderos deben ser dirigidos. [Bos00: c5; Mey97: c31]; 3. Estructura y arquitectura del software

1.4.6.

2.

Cuestiones claves en diseo del software

Se tiene que tener en cuenta a la hora de disear software una serie de principios claves. Algunos son preocupaciones que todo el software debe tratar -por ejemplo, funcionamiento de la calidad. Otra edicin importante es cmo se descomponer, se organiza, y constituyen los paquetes de software. Esto es tan fundamental que todos los acercamientos del diseo deben tratarlo de un modo u otro (vase las tcnicas del asunto 1.4 y la subrea 6, los mtodos que permiten el diseo del software). En cambio, otras ediciones se ocupan de un cierto aspecto del comportamiento del software que no est en el dominio del uso, pero que trata algunos de los dominios de soporte. *Bos00+ Tales ediciones, que interseccionaron a menudo la funcionalidad del sistema, se han referido como aspectos: *aspectos+ tender para no ser unidades de la descomposicin funcional del software, sino algo para ser las caractersticas que afectan el funcionamiento o la semntica de los componentes de manera sistemticas (Kic97). Un nmero de estas claves, ediciones de la cruz-corte son los siguientes (presentado en orden alfabtico): Concurrencia Cmo descomponer el software en procesos, tareas, e hilos y reparto con eficacia relacionada, atomicidad, la sincronizacin, y ediciones programar. [Bos00: c5; 2 Mar: CSD; Mey97: c30; Pre04: c9] Control y direccin de acontecimientos Cmo organizar datos y controlar flujo, cmo manejar acontecimientos reactivos y temporales a travs de varios mecanismos tales como invocacin y servicios repetidos implcitos. [Bas98: c5; Mey97: c32; Pfl01: c5]

En su sentido terminante, una arquitectura del software es una descripcin de los subsistemas y de los componentes de un sistema de software y de las relaciones entre ellas. (Bus96: c6) La arquitectura procura as definir la estructura interna - segn el diccionario del ingls de Oxford, la manera de la cual se construye o se organiza algo - del software que resulta. Durante los mid-1990s, sin embargo, la arquitectura del software comenz a emerger como disciplina ms amplia que implicaba el estudio de las estructuras y de las arquitecturas del software en una manera ms genrica [Sha96]. Esto dio lugar a un nmero de ideas interesantes sobre diseo del software en diversos niveles de la abstraccin. Algunos de estos conceptos pueden ser tiles durante el diseo arquitectnico (por ejemplo, estilo arquitectnico) del software especfico, as como durante su diseo detallado (por ejemplo, patrones de nivel inferior del diseo). Pero pueden tambin ser tiles para disear sistemas genricos, conduciendo al diseo de familias de los programas (tambin conocidos como lneas de productos). Interesante, la mayor parte de estos conceptos se pueden considerar como tentativas de describir, y de reutilizar as, conocimiento genrico del diseo.

3.1. Estructuras y puntos de vista arquitectnicos Diversas facetas de alto nivel de una poder del diseo del software y deben ser descritas y ser documentadas. Estas facetas a menudo se llaman las opiniones: Una visin representa un aspecto parcial de una arquitectura del software que demuestre caractersticas especficas de un sistema de software *Bus96: c6]. Estas visiones distintas pertenecen a las ediciones distintas asociadas a diseo del software - por ejemplo, la visin lgica (que satisface los requisitos funcionales) contra la visin de proceso (ediciones de la concurrencia) contra la visin fsica (ediciones de la distribucin) contra la opinin del desarrollo (cmo el diseo se analiza en unidades de la puesta en prctica). Otros autores utilizan diversas terminologas, como del comportamiento contra funcional contra estructural contra los datos que modelan opiniones. Resumiendo, un diseo del software es un artefacto mltiple producido por el proceso del diseo e integrado generalmente por visiones relativamente independientes y ortogonal. [Bas03: c2; Boo99: c31; Bud04: c5; Bus96: c6; IEEE1016-98; IEEE1471-00] Estilos arquitectnicos (patrones arquitectnicos macro) Un estilo arquitectnico es un sistema de apremios en una arquitectura *que+ define un sistema o una familia de arquitecturas que las satisfagan *Bas03: c2+. Un estilo arquitectnico se puede considerar as mientras que un meta-modelo que pueda proporcionar la organizacin de alto nivel del software (su arquitectura macro). Los varios autores han identificado un nmero de estilos arquitectnicos importantes. [Bas03: c5; Boo99: c28; Bos00: c6; Bus96: c1, c6; Pfl01: c5] Estructura general (por ejemplo, capas, pipas, y filtros, pizarra) Sistemas distribuidos (por ejemplo, servidor de cliente, tres gradas, corredor) Sistemas interactivos (por ejemplo, regulador de la Modelo-Vista, Presentacin-Abstraccin-Control) Sistemas adaptables (por ejemplo, micro-ncleo, reflexin) Oros (por ejemplo, hornada, intrpretes, control, basados en las reglas de proceso). 3.2. Patrones del diseo (patrones arquitectnicos micro). Resumido brevemente, un patrn es una solucin comn a un problema comn en un contexto dado. (Jac99) Mientras que los estilos arquitectnicos se pueden ver como patrones que describen la organizacin de un nivel alto del software (su arquitectura macro); otros patrones del diseo se pueden utilizar para describir los detalles en un nivel ms bajo, ms local (su arquitectura micro). [Bas98: c13; Boo99: c28; Bus96: c1; 2 Mar: DP] Patrones de creacin (por ejemplo, builder, factory, prototipo, y singleton)

Patrones estructurales (por ejemplo, adapter, bridge, composite, decorator, faade, flyweight, and proxy) Patrones del comportamiento (por ejemplo, command, interpreter, iterator, mediator, memento, observer, state, strategy, template, visitor) 3.3 Familias de programas y de marcos.

Una posible opcin para permitir la reutilizacin de los diseos y de los componentes del software es disear las familias del software, tambin conocidas como lneas del producto de software. Estas pueden ser hechas identificando las concordancias entre los miembros de tales familias y por los componentes reutilizables y adaptables entre miembros de la familia. [Bos00: c7, c10; Bas98: c15; Pre04: c30] En programacin orientada a objetos, una clave relacionada es la del marco: un subsistema parcialmente completo del software que puede ser ampliado apropiadamente instalando los plug-ins especficos (tambin conocidos como puntos calientes). [Bos00: c11; Boo99: c28; Bus96: c6] 4. Anlisis y evaluacin de la calidad del diseo del software

Esta seccin incluye generalidades de la calidad y evaluacin que se relacionen especficamente con el diseo del software. La mayora se cubren de una manera general en Software Quality KA 4.1. Cualidades de los atributos Varias atributos son generalmente importantes para obtener un diseo del software de buenos calidad varios ilities (capacidad de mantenimiento, portabilidad, testeo, trazabilidad), los varios nesses (correccin, robustez), incluyendo la aptitud del propsito. *Bos00: c5; Bud04: c4; Bus96: c6; ISO9126.1-01; ISO15026-98; Mar de 94: D; Mey97: c3; Pfl01: c5] Una distincin interesante es la que est entre las cualidades de la calidad discernible en el tiempo de ejecucin (funcionamiento, seguridad, disponibilidad, funcionalidad, utilidad), sas no discernibles en el tiempo de ejecucin (modificabilidad, portabilidad, reutilidad, integridad, y testeabilidad), y sas relacionadas con las calidades intrnsecas de la arquitectura (integridad, correccin, y lo completo, capacidad conceptuales de la estructura). [Bas03: c4] 4.2 Tcnicas de evaluacin y calidad del anlisis.

Varias tcnicas pueden ayudar a asegurar la calidad de un diseo del software: Revisiones de diseo del software: informal o semiformal, a menudo basado en grupo, las tcnicas para verificar y para asegurar la calidad de los artefactos del diseo (por ejemplo, revisiones de la arquitectura [Bas03: c11], revisiones de diseo, e inspecciones [Bud04: c4; Fre83: VIII; IEEE102897; Jal97: c5, c7; Lis01: c14; Pfl01: c5], tcnicas

basadas en panorama [Bas98: c9; Bos00: c5], y la toma de los requisitos [Dor02: v1c4s2; Pfl01: ]) Anlisis esttico: anlisis esttico formal o semiformal (ningn ejecutable) que se puede utilizar para evaluar un diseo (por ejemplo, el anlisis o el cross-checking automatizado) [Jal97 del fault-tree: c5; Pfl01: ] Simulacin y prototipado: tcnicas dinmicas para evaluar un diseo (por ejemplo, simulacin o prototipo de la viabilidad [Bas98 del funcionamiento: c10; Bos00: c5; Bud04: c4; Pfl01: c5]) 4.3 Medidas.

Las medidas se pueden utilizar para determinar o para estimar cuantitativamente varios aspectos del tamao, de la estructura, o de la calidad de un diseo del software. La mayora de las medidas se han propuesto que dependen generalmente del acercamiento usado para producir el diseo. Estas medidas se clasifican en dos amplias categoras: Diseo de medidas orientada a funcin (estructuradas): Estructura del diseo, obtenida sobre todo con la descomposicin funcional; representado generalmente como una carta de estructura (a veces llamada un diagrama jerrquico) en la cual varias medidas pueden ser computadas [Jal97: c5, c7, Pre04: ] Diseo de medidas orientada a objetos: La estructura total del diseo se representa a menudo como diagrama de la clase, en el cual varias medidas pueden ser computadas. Las medidas en las caractersticas del contenido interno de cada clase pueden tambin ser computadas [Jal97: c6, c7; Pre04: c15] 5 Notaciones del diseo del software

Muchas notaciones e idiomas existen para representar los artefactos del diseo del software. Algunos se utilizan principalmente para describir la organizacin estructural de un diseo, otras para representar comportamiento del software. Ciertas notaciones se utilizan sobre todo durante el diseo arquitectnico y otros principalmente durante el diseo detallado, aunque algunas notaciones se pueden utilizar en ambos pasos. Adems, algunas notaciones se utilizan sobre todo en el contexto de mtodos especficos (vase el Software Design Strategies and Methods subrea). Aqu, se categorizan en las notaciones para describir la opinin (esttica) estructural contra la visin (dinmica) del comportamiento. 5.1 Descripcin estructural (vista esttica):

Lenguajes descriptivos de la arquitectura: textuales, a menudo formal, los lenguajes describan una arquitectura del software en trminos de componentes y conectadores [Bas03: c12] Diagramas de la clase y objeto: usados para representar un sistema de clases (y de objetos) y de sus correlaciones [Boo99: c8, c14; Jal97: ] Diagramas de componentes: usados para representar un sistema de componentes (parte fsica y reemplazable de un sistema al cual conforma y proporciona la realizacin de un sistema de interfaces *Boo99+) y de sus correlaciones *Boo99: + Tarjetas del colaborador de la responsabilidad de la clase (CRCs): denotan los nombres de los componentes (clases), de sus responsabilidades, y nombres de sus componentes de colaboracin [Boo99: c4; ] Diagramas de despliegue: representar un sistema de nodos (fsico) y de sus correlaciones, y, as, modelaban los aspectos fsicos de un sistema [Boo99: ] Diagramas de la Entidad-relacin (ERDs): representan modelos conceptuales de los datos almacenados en los sistemas de informacin [Bud04: c6; Dor02: v1c5; 2] Lenguaje descriptivo de la interfaz (IDLS): programacin como lenguajes usados para definir los interfaces (nombres y tipos de operaciones exportadas) de los componentes de software [Bas98: c8; Boo99: ] Diagramas de la estructura de Jackson: Usados para describir las estructuras de datos en trminos de secuencia, seleccin, e iteracin [Bud04: c6; 2 Mar: Estructura de cartas: Usados para describir la estructura que llamaba de los programas (el mdulo llama, y es llamado por otro mdulo) [Bud04: c6; Jal97: c5; 2 Mar: Dr; Pre04: c10]

5.2 Descripciones del comportamiento (visin dinmica): Las siguientes notaciones y lenguajes, algunos grficos y otros textuales, se utilizan para describir el comportamiento dinmico del software y de los componentes. Muchas de estas notaciones son tiles sobre todo, pero no exclusivamente, durante el diseo detallado. Diagramas de actividad: Muestran el flujo del control de la actividad (ejecucin no-atmica en curso dentro de una mquina del estado) a la actividad *Boo99: + Diagramas de colaboracin: Muestran las interacciones que ocurren entre un grupo de objetos, donde est el nfasis en los objetos, sus acoplamientos, y los mensajes que intercambian en estos acoplamientos [Boo99: ]

Las siguientes notaciones, sobre todo (pero no siempre) grficas, describen y representan los aspectos estructurales del diseo de software las cuales, describen los componentes principales y cmo se interconectan (visin esttica):

Organigramas de datos: Muestran los flujos de datos entre un sistema y los procesos [Bud04: c6; 2 Mar: Dr; Pre04: ] Tablas y diagramas de decisin: representan combinaciones complejas de las condiciones y de las acciones [Pre04: ] Organigramas y organigramas estructurados: Representan el control de flujo y de las acciones asociadas que se realizarn [Fre83: VII; 2 Mar: Dr; Pre04: ] Diagramas de secuencia: Muestran las interacciones entre un grupo de objetos, con nfasis sobre el tiempo de ordenacin de mensajes [Boo99: ] Transicin de estado y diagramas de carta de estado: demostraban el control de flujo de estado a estado en una mquina de estados[Boo99: c24; Bud04: c6; 2 Mar: Dr; Jal97: ] Lenguajes formales de especificacin: Lenguajes textuales que utilizan nociones bsicas de matemticas (por ejemplo, lgica, sistema, secuencia), para obtener de forma rigurosa y abstracta, definir interfaces y comportamientos del componente de software, a menudo en trminos de pre y postcondiciones [Bud04: c18; Dor02: v1c6s5; Mey97: ] Lenguajes del diseo de pseudo cdigo del programa (PDLs): Programa estructurado como los lenguajes usados para describir, generalmente en la etapa detallada del diseo, el comportamiento de un procedimiento o el mtodo [Bud04: c6; Fre83: VII; Jal97: c7; Pre04: c8, c11]

6.2 Diseo (estructurado) orientado a funcin: [Bud04: c14; Dor02: v1c6s4; Fre83: V; Jal97: c5; Pre04: est uno c9, c10] Esto es uno de los mtodos clsicos del diseo de software, donde los centros de descomposicin identifican las funciones del software y despus elaboran y refinan de una manera de arriba hacia abajo. El diseo estructurado se utiliza generalmente despus de anlisis estructurado, produciendo as, entre otras cosas, organigramas de datos y de descripciones de proceso asociados. Los investigadores han propuesto varias estrategias (por ejemplo, anlisis de la transformacin, anlisis de la transaccin) y la heurstica (por ejemplo, fan-in/fan-out, alcance del efecto contra el alcance del control) para transformar un DFD en una arquitectura del software representada generalmente como carta de estructura. 6.3 Diseo orientado a objeto [Bud0: c16; Dor02: v1: c6s2, s3; Fre83: VI; Jal97: c6; 2 Mar: D; Pre04: c9] Numerosos mtodos de diseo de software basados en objetos han sido propuestos. El campo se ha desarrollado basado en el diseo objeto de los mediados de los aos ochenta (sustantivo = objeto; verbo = mtodo; adjetivo = cualidad) con el diseo orientado a objetos, donde la herencia y el polimorfismo desempean un papel importante, el campo del diseo del componente-basado, donde la meta informacin puede ser definida y ser alcanzada (con la reflexin, por ejemplo). Aunque las races del diseo Orientado a Objetos provienen del concepto de la abstraccin de los datos, el diseo responsabilidad-conducido tambin se ha propuesto como alternativo al diseo Orientado a Objetos. 6.4 Diseo Dato-Estructura-Centrado [Bud04: c15; Fre83: III, VII; 2 Mar02:D] El diseo Dato-estructura-centrado (por ejemplo, Jackson, Warnier-Orr) comienza desde las estructuras de datos que un programa manipula ms bien que desde las funciones que realiza. La Ingeniera de software primero describe las estructuras de datos de entrada y de salida (que usan los diagramas de la estructura de Jackson, por ejemplo) y en seguida desarrolla la estructura de control del programa basada en estos diagramas de estructura de datos. La varia heurstica se ha propuesto para tratar como caso especial, cuando hay una unin mal hecha entre la entrada y las estructuras de la salida. 6.5 Diseo basado en componente (CBD): Un componente de software es una unidad independiente, teniendo bien definidos los interfaces y dependencias que se pueden componer y desplegar independientemente. El diseo basado en componente trata las ediciones relacionadas con el abastecimiento,

Estrategias y mtodos del diseo de software

Existen varias estrategias generales para ayudar a dirigir el proceso de diseo. [Bud04: c9, 2 Mar: D] Al contrario que en las estrategias generales, los mtodos son ms especficos, sugieren y proporcionan generalmente un sistema de notaciones que se utilizarn con el mtodo, una descripcin del proceso que se utilizar despus del mtodo y un sistema de pautas al usar el mtodo. [Bud04: c8] Tales mtodos son tiles como medios de transferir conocimiento y como marco comn para los equipos de los ingenieros de software. [Bud03: c8] Ver tambin Herramientas y mtodos KA de Ingeniera de software. 6.1 Estrategias generales Algunos de los ejemplos citados de las estrategias generales tiles en el proceso del diseo son dividir-yconquistar y el refinamiento[Bud04: c12; Fre83: V], de arriba hacia abajo contra las estrategias bottom-up [Jal97: c5; Lis01: c13], abstraccin de los datos y el ocultar de la informacin [Fre83: V], uso de la heurstica [Bud04: c8], uso de patrones y lenguajes de patrones [Bud04: c10; Bus96: c5], uso de un acercamiento iterativo e incremental. [Pfl01: c2]

desarrollo, e integracin de tales componentes para mejorar la reutilizacin. [Bud04: c11] 6.6 Otros mtodos Otros interesantes pero menos aprovechados tambin existen: mtodos formales y rigurosos [Bud04: c18; Dor02: c5; Fre83; Mey97: c11; Pre04: c29] y mtodos transformacionales. [Pfl98: c2]

MATRIZ DE TEMAS VS. MATERIAL DE REFERENCIA


[IEEE1016-98] [IEEE1471-00] [IEEE12207.096] [iEEE1028-97] [ISO15026-98] [ISO9126-01] [Mar02]* {Mar94}

[Mey97]

[Bud03]

[Bas03] {Bas98}

[Boo99]

1.Fundamentos del Diseo de Software 1.1Conceptos Generales de Diseo 1.2El contexto de Diseo Software

c11s1 c1 c13s1, c13s2 c1s1, c13s2, c3s1c3s3,c125128, c9s1c9s3

c2s2

1.3 El Proceso de Diseo Software

c2s1

c2

v1c4s2

222

* c5s1, c5s2, c6s2

1.4 Tcnicas Permitidas

{c6s1}

c10s3

c6s3

c5s2, c5s5

2.Elementos clave en el Diseo Software

2.1 Concurrencia

c5s4.1

CSD

c30 c32s4, c32s5 c30

2.2 Control y manejo de eventos

{c5s2} c16s3, c16s4

{DD}

c5s3

2.3 Distribucin de componentes

c5s4.1

c2s3

2.4 Manejo de errores y excepciones y tolerancia a fallos

c4s3-c4s5

c12

c5s5

2.5 Interaccin y presentacin

{c6s2}

c5s4.1

c2s4

c13s3

c32s2

2.6 Persistencia de Datos

c5s4.1 * ver siguiente seccin

c31

[Smi93]

[Dor02]

[Bus96]

[Li s01]

[Bos00]

[Jal 97]

[Fre83]

[Pre04]

[Pfl01]

c2

c9

c9

c9

c30

[IEEE101698] [iEEE102897] [IEEE147100] [IEEE12207. 0-96] [ISO912601] [ISO1502698]

[Mar02]* {Mar94}

[Mey97]

[Bud03]

[Bas03] {Bas98}

[Boo99]

[Dor02]

3. Estructura y Arquitectura Software 3.1 Estructuras de la Arquitectura 3.2 Estilos de Arquitectura c2s 5 c5s 9 {c1 3s3 } {c1 5s1, c15 s3}

c31 c28 c28 c6s3.1 c5 c6s1 c1s1c1s3, c6s2 c1s1c1s3 c7s1, c7s2, c10s2c10s4, c11s2 c11s4 DP * * c2s3

3.3 Patrones de Diseo

c28

3.4 Familias de programas y Marcos de Trabajo

c6s2

c30

4. Anlisis de la Calidad y Evaluacin del Diseo de Software 4.1 Atributos de Calidad c4s 2 c11 s3, [c9s 1, c9s 2, c10 s2, c10 s3} c5s2.3 c4 c6s4 * * {D} c3 c5s5

4.2 Tcnicas de Anlisis de Calidad y Evaluacin

c5s2.1, c5s2.2, c5s3, c5s4

c4

v1c4s2

542 576

c5s5, c7s3

c14s1

c5s6, c5s7, c11s5

4.3 Mtricas

c5s6, c6s5, c7s4

c15

[Smi93]

[Bus96]

[Li s01]

[Bos00]

[Jal 97]

[Fre83]

[Pre04]

[Pfl01]

[IEEE101698] [iEEE102897] [IEEE147100] [IEEE12207. 0-96] [ISO912601] [ISO1502698]

[Mar02]* {Mar94}

[Mey97]

[Bud03]

[Bas03] {Bas98}

[Boo99]

[Dor02]

5. Notaciones de Diseo de Software {c8s 4} c12s 1, c12s 2 c4, c8 c11, c12, c14, c30, c31

5.1 Descripciones estructurales (Vista Esttica

c6

429

c5s3, c6s3

DR

5.2 Descripciones del Comportamiento (Vista Dinmica) 6. Mtodos y Estrategias en Diseo de Software 6.1 Estrategias generales 6.2 Diseo Orientado a Funciones (Estructurado) 6.3 Diseo Orientado a Objetos 6.4 Diseo centrado en Estructuras de Datos

c6, c18

v1c5

485490, 506513

c7s2

DR

c10

c11 c8, c10, c12 c5s1c5s4 304320, 533539 328352 420436 201120, 514532

c8,c11

c5s1.4

c13s13

c5s4 c6s4 D

c2s2 c9,c10

c9

6.5 Diseo Basado en Componentes (CBD) 181192 c11 c2s2 c29

6.6 Otros

[Smi93]

[Bus96]

[Li s01]

[Bos00]

[Jal 97]

[Fre83]

[Pre04]

[Pfl01]

REFERENCIAS RECOMENDADAS PARA SOFTWARE

EL

DISEO

DE

[Bas98] L. Bass, P. Clements, and R. Kazman, Software Architecture in Practice, Addison-Wesley, 1998.[Bas03] L. Bass, P. Clements, and R. Kazman, Software Architecture in Practice, second ed., Addison-Wesley, 2003. [Boo99] G. Booch, J. Rumbaugh, and I. Jacobson, The Unified Modeling Language User Guide, Addison-Wesley, 1999. [Bos00] J. Bosch, Design & Use of Software Architectures: Adopting and Evolving a Product-Line Approach, first ed., ACM Press, 2000. [Bud04] D. Budgen, Software Design, second ed., Addison-Wesley, 2004. [Bus96] F. Buschmann et al., Pattern-Oriented Software Architecture: A System of Patterns, John Wiley & Sons, 1996. [Dor02] M. Dorfman and R.H. Thayer, eds., Software Engineering (Vol. 1 & Vol. 2), IEEE Computer Society Press, 2002. [Fre83] P. Freeman and A.I. Wasserman, Tutorial on Software Design Techniques, fourth ed., IEEE Computer Society Press, 1983. [IEEE610.12-90] IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. [IEEE1016-98] IEEE Std 1016-1998, IEEE Recommended Practice for Software Design Descriptions, IEEE, 1998. [IEEE1028-97] IEEE Std 1028-1997 (R2002), IEEE Standard for Software Reviews, IEEE, 1997. [IEEE1471-00] IEEE Std 1471-2000, IEEE Recommended Practice for Architectural Description of Software Intensive Systems, Architecture Working Group of the Software Engineering Standards Committee, 2000.

[IEEE12207.0-96] IEEE/EIA 12207.01996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996. [ISO9126-01] ISO/IEC 9126-1:2001, Software Engineering Product QualityPart 1: Quality Model, ISO and IEC, 2001. [ISO15026-98] ISO/IEC 15026-1998, Information Technology System and Software Integrity Levels, ISO and IEC, 1998. [Jal97] P. Jalote, An Integrated Approach to Software Engineering, second ed., Springer-Verlag, 1997. [Lis01] B. Liskov and J. Guttag, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison-Wesley, 2001. [Mar94] J.J. Marciniak, Encyclopedia of Software Engineering, J. Wiley & Sons, 1994. The references to the Encyclopedia are as follows: CBD = Component-Based Design D = Design DD = Design of the Distributed System DR = Design Representation [Mar02] J.J. Marciniak, Encyclopedia of Software Engineering, second ed., J. Wiley & Sons, 2002. [Mey97] B. Meyer, Object-Oriented Software Construction, second ed., Prentice-Hall, 1997. [Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice-Hall, 2001. [Pre04] R.S. Pressman, Software Engineering: A Practitioners Approach, sixth ed., McGraw-Hill, 2004. [Smi93] G. Smith and G. Browne, Conceptual Foundations of Design Problem-Solving, IEEE Transactions on Systems, Man and Cybernetics, vol. 23, iss. 5, 1209-1219, Sep.-Oct. 1993.

APNDICE A. LISTA COMPLEMENTARIAS

DE

LECTURAS

(Kic97) G. Kiczales et al., Aspect-Oriented Programming, presented at ECOOP 97 ObjectOriented Programming, 1997. (Kru95) P. B. Kruchten, The 4+1 View Model of Architecture, IEEE Software, vol. 12, iss. 6, 42-50, 1995 (Lar98) C. Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, Prentice-Hall, 1998. (McC93) S. McConnell, Code Complete: A Practical Handbook of Software Construction, Microsoft Press, 1993. (Pag00) M. Page-Jones, Fundamentals of Object-Oriented Design in UML, Addison-Wesley, 2000. (Pet92) H. Petroski, To Engineer Is Human: The Role of Failure in Successful Design, Vintage Books, 1992. (Pre95) W. Pree, Design Patterns for Object-Oriented Software Development, Addison-Wesley and ACM Press, 1995. (Rie96) A.J. Riel, Object-Oriented Design Heuristics, Addison-Wesley, 1996. (Rum91) J. Rumbaugh et al., Object-Oriented Modeling and Design, Prentice-Hall, 1991. (Sha96) M. Shaw and D. Garlan, Software Architecture: Perspectives on an Emerging Discipline, Prentice-Hall, 1996. (Som05) I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005. (Wie98) R. Wieringa, A Survey of Structured and ObjectOriented Software Specification Methods and Techniques, ACM Computing Surveys, vol. 30, iss. 4, 1998, pp. 459-527. (Wir90) R. Wirfs-Brock, B. Wilkerson, and L. Wiener, Designing Object-Oriented Software, Prentice-Hall, 1990.

(Boo94a) G. Booch, Object Oriented Analysis and Design with Applications, second ed., The Benjamin/Cummings Publishing Company, 1994. (Coa91) P. Coad and E. Yourdon, Object-Oriented Design, Yourdon Press, 1991. (Cro84) N. Cross, Developments in Design Methodology, John Wiley & Sons, 1984. (DSo99) D.F. DSouza and A.C. Wills, Objects, Components, and Frameworks with UML The Catlisis Approach, Addison-Wesley, 1999. (Dem99) T. DeMarco, The Paradox of Software Architecture and Design, Stevens Prize Lecture, Aug. 1999. (Fen98) N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, second ed., Internacional Thomson Computer Press, 1998. (Fow99) M. Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999. (Fow03) M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley, 2003. (Gam95) E. Gamma et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. (Hut94) A.T.F. Hutt, Object Analysis and Design Comparison of Methods. Object Analysis and Design Description of Methods, John Wiley & Sons, 1994. (Jac99) I. Jacobson, G. Booch, and J. Rumbaugh, The Unified Software Development Process, Addison-Wesley, 1999.

APNDICE B. LISTA DE ESTNDARES


(IEEE610.12-90) IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. (IEEE1016-98) IEEE Std 1016-1998, IEEE Recommended Practice for Software Design Descriptions, IEEE, 1998. (IEEE1028-97) IEEE Std 1028-1997 (R2002), IEEE Standard for Software Reviews, IEEE, 1997. (IEEE1471-00) IEEE Std 1471-2000, IEEE Recommended Practice for Architectural Descriptions of SoftwareIntensive Systems, Architecture Working Group of the Software Engineering Standards Committee, 2000.

(IEEE12207.0-96) IEEE/EIA 12207.01996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, vol. IEEE, 1996. (ISO9126-01) ISO/IEC 9126-1:2001, Software Engineering-Product Quality-Part 1: Quality Model, ISO and IEC, 2001. (ISO15026-98) ISO/IEC 15026-1998 Information Technology System and Software Integrity Levels, ISO and IEC, 1998.

CAPTULO 4 CONSTRUCCIN DEL SOFTWARE

ACRNIMOS
OMG UML Grupo de Gestin de Objetos Lenguaje Unificado de Modelado

INTRODUCCIN El trmino construccin del software hace referencia a la creacin detallada de software operativo y significativo, por medio de una combinacin de codificacin, verificacin, pruebas unitarias, pruebas de integracin y depuracin. El rea de Conocimiento de la Construccin del Software est vinculada a todas las otras KAs (reas de Conocimiento), ms fuertemente al Diseo del Software y a las Pruebas del Software. Esto se debe a que el proceso mismo de construccin del software cubre tanto el diseo significativo de software como las actividades de pruebas. Tambin utiliza las salidas del diseo y proporciona una de las entradas para las pruebas, consistiendo estas actividades en el diseo y en las pruebas, y en este caso no en las KAs. Las fronteras detalladas entre el diseo, la construccin y las pruebas (si es que existen) varan dependiendo de los procesos de ciclo de vida del software utilizados en un proyecto. A pesar de que se pueda realizar parte del diseo detallado antes de la construccin, mucho del trabajo del diseo se lleva a cabo durante la actividad misma de la construccin. Por lo que el KA de Construccin del Software est vinculado muy de cerca al KA de Diseo del Software. Por medio de la construccin los ingenieros del software realizan tanto pruebas unitarias, como pruebas de integracin de su trabajo. De tal manera que el KA de Construccin del Software est tambin vinculada de cerca al KA de Pruebas del Software. La construccin del software, por lo general, produce el mayor nmero de elementos de configuracin que se necesitan gestionar en un proyecto de software (archivos de cdigo fuente, contenido, casos de pruebas, etc.). De este modo, el KA de Construccin del Software tambin est vinculado de cerca al KA de Gestin de la Configuracin del Software. Dado que la construccin del software tiene una gran dependencia de las herramientas y de los mtodos, y de que se trata probablemente del KA que ms herramientas tienen y utiliza, est vinculada al KA de Herramientas y Mtodos de la Ingeniera del Software. Aunque la calidad del software es importante en todas las KAs, el cdigo es el ltimo entregable de un proyecto de software y, por tanto, la Calidad del

Software est vinculada de cerca a la Construccin del Software. Entre las Disciplinas Descritas de la Ingeniera del Software el KA de Construccin del Software es lo ms parecido a la ciencia informtica en su uso del conocimiento de algoritmos y de las prcticas detalladas de codificacin, ambas son consideradas, con frecuencia, como pertenecientes al dominio de la ciencia informtica. Tambin est relacionada con la gestin del proyecto en la medida en que la gestin de la construccin pueda presentar retos considerables.

DESCOMPOSICIN DE LOS TEMAS CONSTRUCCIN DEL SOFTWARE

DE

A continuacin se presenta la descomposicin del KA de la Construccin del Software junto con breves descripciones de los temas ms importantes asociados a este. La figura 1 ofrece una representacin grfica de la descomposicin de alto nivel de las divisiones de este KA. 1. Fundamentos de la Construccin del Software

Los fundamentos de la construccin del software incluyen: Minimizar la complejidad Anticiparse a los cambios Construir para verificar Estndares en la construccin Los tres primeros conceptos se aplican tanto al diseo como a la construccin. Las siguientes secciones definen estos conceptos y describen cmo se aplican a la construccin. 1.1 Minimizar la complejidad [Bec99; Ben00; Hun00; Ker99; Mag93; McC04] El principal factor que hace que la gente utilice ordenadores consiste en la limitadsima capacidad que tiene para retener estructuras complejas e informacin en su memoria operativa, especialmente durante largos perodos de tiempo. Esto lleva a uno de los ms fuertes impulsores de la construccin del software: minimizar la complejidad. La necesidad de reducir la complejidad se aplica esencialmente a todo aspecto de la construccin del software, y es de crtica importancia para el proceso de verificacin y pruebas de las construcciones del software. En la construccin del software slo se alcanza una reducida complejidad por medio del nfasis en la

creacin de cdigo que sea simple y legible, y no tanto inteligente. Se logra minimizar la complejidad mediante el uso de estndares, como se ve en el apartado 1.4 Estndares de Construccin, y mediante numerosas tcnicas especficas que estn resumidas en el apartado 3.3 Codificacin. Tambin se apoya en las tcnicas de calidad enfocadas a la construccin resumidas en el apartado 3.5 Calidad de la Construccin. 1.2 Anticiparse a los cambios [Ben00; Ker99; McC04] La mayora del software cambiar a lo largo del tiempo, y el anticiparse a los cambios dirige muchos aspectos de la construccin del software. El software es inevitablemente parte de los ambientes externos que cambian continuamente, y los cambios en esos ambientes externos afectan al software de diversos modos. El anticiparse a los cambios se apoya en muchas tcnicas especficas resumidas en el apartado 3.3 Codificacin. 1.3 Construir para verificar [Ben00; Hun00; Ker99; Mag93; McC04] Construir para verificar significa construir software de tal manera que los ingenieros del software puedan sacar a relucir los fallos con facilidad al estar escribiendo el cdigo, adems de cuando realizan pruebas independientes y actividades operacionales. Las tcnicas especficas que sirven de base para construir con vistas a verificar incluyen el seguimiento de estndares de codificacin que permitan las revisiones del cdigo, las pruebas unitarias, la organizacin del cdigo que permita pruebas automticas, y el uso restringido de estructuras de lenguaje que sean complejas o difciles de entender, entre otras.

1.4 Estndares en la construccin [IEEE12207-95; McC04] Los estndares que afectan directamente a elementos de la construccin incluyen: Mtodos de comunicacin (por ejemplo, estndares para los formatos de los documentos y de los contenidos) Programacin de lenguajes (por ejemplo, estndares de lenguaje para lenguajes como Java y C++) Plataformas (por ejemplo, estndares de interfaces del programador para llamadas al sistema operativo) Herramientas (por ejemplo, estndares diagramticos para notaciones como UML (Lenguaje Unificado de Modelado))

Uso de estndares externos. Construir depende del uso de estndares externos para los lenguajes de construccin, las herramientas de construccin, las interfaces tcnicas, y las interacciones entre la Construccin del Software y las otras KAs. Los estndares provienen de numerosas fuentes, incluyendo las especificaciones de interfaz del hardware y del software, tales como el Grupo de Gestin de Objetos (OMG) y las organizaciones internacionales tales como la IEEE o ISO. Uso de estndares internos. Los estndares tambin pueden crearse partiendo de una base organizacional a un nivel corporativo o para su uso en proyectos especficos. Estos estndares permiten la coordinacin de actividades de grupo, el minimizar la complejidad, el anticipar los cambios y el construir para verificar.

Figura 1 Descomposicin de los temas del KA de Construccin de Software

2.

Gestin de la Construccin

2.3 Medicin de la Construccin [McC04] Se pueden medir numerosas actividades de construccin y artefactos, incluidos el cdigo desarrollado, el cdigo modificado, el cdigo reutilizado, el cdigo destruido, la complejidad del cdigo, las estadsticas de la inspeccin del cdigo, las tasas de rectificacin de errores y de identificacin de errores, y los horarios. Estas mediciones pueden ser tiles para propsitos de gestin de la construccin, asegurando la calidad durante la construccin, mejorando los procesos de construccin, amn de otras razones. 3. Consideraciones Prcticas

2.1 Modelos de Construccin [Bec99; McC04] Se han creado numerosos modelos para el desarrollo del software, algunos de los cuales ponen ms nfasis en la construccin que otros. Algunos modelos son ms lineales que otros desde el punto de vista de la construccin tales como los modelos en cascada y los del ciclo de vida de entregas por etapas. Estos modelos tratan la construccin como una actividad que sucede slo despus de que se haya completado un significativo trabajo con los prerrequisitos incluyendo un trabajo detallado sobre los requisitos, un extensivo trabajo sobre el diseo y una planificacin detallada. Los enfoques ms lineales tienden a poner el nfasis en las actividades que preceden a la construccin (requisitos y diseo), y tienden a crear separaciones ms marcadas entre las actividades. En estos modelos, la codificacin sera el punto de mayor nfasis de la construccin. Otros modelos son ms iterativos, tales como el prototipado evolucionista, Programacin Extrema y Scrum. Estos enfoques tienden a tratar la construccin como una actividad que ocurre en estos momentos con otras actividades de desarrollo del software incluyendo los requisitos, el diseo y la planificacin, o que se traslapa con ellas. Estos enfoques tienden a mezclar el diseo, la codificacin y las actividades de pruebas, y con frecuencia tratan la combinacin de actividades como una construccin. Por consiguiente, lo que est considerado como construccin depende hasta cierto grado del modelo de ciclo de vida utilizado. 2.2 Planificacin de la Construccin [Bec99; McC04] La eleccin de un mtodo de construccin es un aspecto clave de la planificacin de la actividad de construccin. La eleccin de un mtodo de construccin afecta hasta dnde se realizan los prerrequisitos de construccin, el orden en el que se realizan, y el grado hasta el que se espera que se completen antes de que comience el trabajo de construccin. El modo como se afronta la construccin afecta a la habilidad del proyecto para reducir la complejidad, anticipar cambios y construir para verificar. Cada uno de estos objetivos puede tambin afrontarse en los niveles de proceso, requisitos y diseo pero tambin estarn influenciados por la eleccin de un mtodo de construccin. La planificacin de la construccin tambin define el orden en el que se crean e integran, segn el mtodo elegido, los componentes, los procesos de gestin de la calidad del software, la asignacin de tareas a ingenieros del software especficos y el resto de las tareas.

La construccin es una actividad en la cual el software se las tiene que ver con restricciones arbitrarias y caticas del mundo real, y hacer exactamente lo que piden. Gracias a su proximidad a las restricciones del mundo real, la construccin est guiada por consideraciones prcticas ms que otras KAs, y la ingeniera del software es quizs el rea de construccin ms artesanal. 3.1 Diseo de la Construccin [Bec99; Ben00; Hun00; IEEE12207-95; Mag93; McC04] Algunos proyectos asignan una mayor actividad de diseo a la construccin; otros a una fase que se centra explcitamente en el diseo. Independientemente de su asignacin exacta, en el nivel de construccin tambin se trabaja algo el diseo detallado y ese trabajo de diseo tiende a estar dictaminado por restricciones inamovibles impuestas por un problema del mundo real que est siendo afrontado por el software. As como los obreros de una construccin que construyen una estructura fsica tienen que realizar modificaciones a pequea escala para cubrir huecos no previstos en los planes del constructor, los obreros de la construccin del software tendrn que hacer modificaciones en una mayor o menor escala para revelar los detalles del diseo de software durante la construccin. Los detalles de la actividad de diseo a nivel de la construccin son esencialmente los mismos que se describen en el KA del Diseo del Software, pero se aplican en una escala inferior. 3.2 Lenguajes de Construccin [Hun00; McC04] Los lenguajes de construccin incluyen todos los tipos de comunicacin mediante los cuales un humano puede especificar una solucin ejecutable para un problema de un ordenador. El tipo ms simple de lenguaje de construccin es un lenguaje de configuracin en el que los ingenieros del software eligen de entre un conjunto limitado de opciones predefinidas para crear nuevas o tpicas

instalaciones del software. Los archivos de configuracin basados en texto utilizados tanto en los sistemas operativos de Windows como de Unix son ejemplos de esto, y otro ejemplo son las listas de seleccin en forma de men de algunos generadores de programas. Los lenguajes de herramientas se utilizan para construir aplicaciones partiendo de las herramientas (conjuntos integrados de partes reutilizables especficas de las aplicaciones), y son ms complejos que los lenguajes de configuracin. Los lenguajes de herramientas pueden definirse explcitamente como lenguajes de programacin de aplicaciones (por ejemplo, scripts), o pueden simplemente estar implcitos en el conjunto de interfaces de las herramientas. Los lenguajes de programacin son el tipo ms flexible de lenguaje de construccin. Tambin son los que menos informacin contienen acerca de las reas especficas de la aplicacin y los procesos de desarrollo, y por tanto requieren el mayor entrenamiento y destreza posibles para utilizarlo con eficacia. Existen tres tipos generales de notacin utilizados para los lenguajes de programacin, a saber: Lingsticos Formales Visuales Las notaciones lingsticas se distinguen en particular por la utilizacin de cadenas de texto del tipo palabra para representar construcciones complejas de software, y por la combinacin en patrones de tales cadenas del tipo palabra que tienen una sintaxis del tipo sentencia. Utilizadas adecuadamente, cada una de estas cadenas debera tener una fuerte connotacin ofreciendo un entendimiento intuitivo inmediato de lo que sucedera cuando se ejecutara la construccin del software subyacente. Las notaciones formales se apoyan menos en los significados de las palabras y cadenas de texto intuitivos y de todos los das, y ms en las definiciones respaldadas por definiciones precisas, sin ambigedad, y formales (o matemticas). Las notaciones de construccin formal y los mtodos formales estn en el corazn de la mayora de las formas de programacin de sistemas, donde la precisin, el comportamiento del tiempo, y la capacidad de realizar pruebas son ms importantes que la facilidad de mapeo a un lenguaje natural. Las construcciones formales tambin utilizan modos de combinar smbolos definidos con precisin que evitan la ambigedad de muchas construcciones del lenguaje natural. Las notaciones visuales se apoyan bastante poco en las notaciones orientadas al texto tanto de la construccin lingstica como de la formal, y en cambio s se apoyan en una interpretacin visual directa y en la colocacin de las entidades visuales que representan al software subyacente. La construccin visual tiende a estar un tanto limitada por la dificultad de hacer declaraciones complejas utilizando slo el movimiento de entidades visuales en un despliegue. Sin embargo, tambin puede convertirse en un arma poderosa en los casos en donde

la principal tarea de programacin es simplemente construir y ajustar una interfaz visual a un programa, cuyo comportamiento detallado ha sido definido anteriormente. 3.3 Codificacin [Ben00; IEEE12207-95; McC04] Las consideraciones siguientes se aplican a la actividad de construccin del cdigo del software: Tcnicas para crear cdigo fuente comprensible, que incluye la asignacin de nombres y el esquema del cdigo fuente Utilizacin de clases, tipos enumerados, variables, constantes predefinidas, y otras entidades similares Utilizacin de estructuras de control Tratamiento de las condiciones de error tanto lo errores planeados como las excepciones (la entrada de datos malos, por ejemplo) Prevencin de brechas en la seguridad a nivel de cdigo (el bfer o el ndice de la matriz se desborda, por ejemplo) Utilizacin de recursos por medio del uso de mecanismos de exclusin y disciplina en el acceso serial a recursos reutilizables (incluyendo threads o bloqueos de bases de datos) Organizacin del cdigo fuente (en declaraciones, rutinas, clases, paquetes u otras estructuras) Documentacin del cdigo Puesta a punto del cdigo 3.4 Pruebas de Construccin [Bec99; Hun00; Mag93; McC04] Construir implica dos tipos de pruebas, que por lo general las realiza el mismo ingeniero del software que escribi el cdigo: Pruebas unitarias Pruebas de integracin El propsito de las pruebas de construccin es reducir la brecha entre el tiempo en el que se introducen fallos en el cdigo y el tiempo en el que se detectan esos fallos. En algunos casos, las pruebas de construccin se llevan a cabo despus de la escritura del cdigo. En otros casos, se pueden elaborar casos de pruebas antes de que se escriba el cdigo. Es tpico de las pruebas de construccin el incluir un subconjunto de tipos de pruebas, que se describen en el KA de Pruebas del Software. Por ejemplo, no es tpico de las pruebas de construccin el incluir las pruebas del sistema, las pruebas alfa, las pruebas beta, las pruebas de estrs, las pruebas de construccin, las pruebas de posibilidad de uso, u otros tipos de pruebas ms especializadas. Se han publicado dos estndares sobre dicho tema: IEEE Std 829-1998, IEEE Standard for Software Test Documentation and IEEE Std 1008-1987, IEEE Standard for Software Unit Testing. Se pueden ver tambin los sub-temas correspondientes en el KA de Pruebas del Software: 2.1.1 Pruebas

Unitarias y 2.1.2 Pruebas de Integracin para un material de referencia ms especializado. 3.5 Reutilizacin [IEEE1517-99; Som05]. Tal y como se afirma en la introduccin del (IEEE151799): El implementar la utilizacin del software conlleva algo ms que crear y utilizar libreras de recursos. Requiere formalizar la prctica de la reutilizacin por medio de la integracin de procesos y actividades de reutilizacin en el ciclo de vida del software. Sin embargo, la reutilizacin tiene suficiente importancia en la construccin del software como para dedicarle aqu un tema. Las tareas relacionadas con la reutilizacin en la construccin del software durante su codificacin y pruebas son: La seleccin de unidades, bases de datos, procedimientos de pruebas o datos de pruebas reutilizables. La evaluacin de la posibilidad de reutilizacin del cdigo o de las pruebas. Comunicar la informacin sobre reutilizacin realizada en el cdigo nuevo, los procedimientos de pruebas o los datos de pruebas.

El cdigo paso a paso Utilizacin de aserciones Depuracin Revisiones Tcnicas (ver tambin el KA de la Calidad del Software, sub-punto 2.3.2 Revisiones Tcnicas) Anlisis esttico (IEEE1028) (ver tambin el KA de la Calidad del Software, punto 2.3 Revisiones y Auditorias)

La tcnica o tcnicas especficas elegidas dependen de la naturaleza del software que se est construyendo, as como del conjunto de habilidades de los ingenieros del software que llevan a cabo la construccin. Las actividades de calidad de la construccin se distinguen de las otras actividades de calidad por su enfoque. Las actividades de calidad de la construccin se centran en el cdigo y en los artefactos que estn estrechamente relacionados con el cdigo: diseos en pequea escala en oposicin a otros artefactos que estn menos directamente ligados al cdigo, tales como requisitos, diseos de alto nivel y planes. 3.7 Integracin [Bec99; IEEE12207-95; McC04] Una actividad clave durante la construccin es la integracin de rutinas, clases, componentes y subsistemas construidos por separado. Adems, un sistema particular del software podra necesitar ser integrado con otros sistemas de software o de hardware. Los intereses relacionados con la integracin de la construccin incluyen planificar la secuencia en la que se integrarn los componentes, crear andamiajes que soporten versiones provisionales del software, determinar el grado de pruebas y la calidad del trabajo realizado sobre los componentes antes de que sean integrados, y determinar los puntos en el proyecto en los que se prueban las versiones provisionales del software.

3.6 Calidad de la Construccin [Bec99; Hun00; IEEE12207-95; Mag93; McC04] Existen numerosas tcnicas para garantizar la calidad del cdigo mientras est siendo elaborado. Las tcnicas ms importantes utilizadas para la construccin incluyen: Las pruebas unitarias y las pruebas de integracin (tal y como se describen en el punto 3.4 Pruebas de Construccin) El desarrollo de primero-haz-pruebas (ver tambin el KA de las Pruebas del Software, punto 2.2 Objetivos de las Pruebas)

MATRIZ DE TEMAS VS. MATERIAL DE REFERENCIA

[Mag93]

[IEEE 12207.0]

[Hun00]

1. Fundamentos de Construccin de Software c2, c3, c7-c9, c24, c27, c28, c31, c32-c34 c3-c5, c24, c31, c32, c34 c2,c3, c5,c7 c8, c20c23, c31-c34 c4

1.1 Minimizar la Complejidad

c17

c2, c3

c7,c8

c2, c3

c6

1.2 Anticipacin a Cambios

c11,c13c14 c21, c23, c34, c43 X

c2, c9

1.3 Construir para verificar 1.4 Estndares de Construccin 2. Gestin de la Construccin 2.1 Modelos de Construccin 2.2 Plan de Construccin 2.3 Mtricas de la construccin 3. Consideraciones Prcticas 3.1 Diseo de la Construccin 3.2 Lenguajes de Construccin 3.3 Codificacin 3.4 Pruebas de Construccin 3.5 Reusabilidad 3.6 Calidad de Construccin 3.7 Integracin c18

c4

c1, c5, c6

c10 c12, c15, c21

c2, c3, c27, c29 c3, c4,c21, c27-c29 c25, c28

c17

c18-c10, p175-6

c33 c12, c14-c20

c6

c3, c5, c24 C4

c6-c10 c34, c43 X c18 c16 c18

X X c4

c5-c19, c25-c26 c22, c23 c14

X X

c4, c6, c7

c8, c20c25 c29

[Som05]

[Mcc04]

[Ben00]

[Ker99]

[Bec99]

[IEEE 1517]

REFERENCIAS

RECOMENDADAS CONSTRUCCIN DE SOFTWARE

PARA

LA

[Bec99] K. Beck, Extreme Programming Explained: Embrace Change, Addison-Wesley, 1999, Chap. 10, 12, 15, 16-18, 21. [Ben00a] J. Bentley, Programming Pearls, second ed., Addison-Wesley, 2000, Chap. 2-4, 6-11, 13, 14, pp. 175176. [Hun00] A. Hunt and D. Thomas, The Pragmatic Programmer, Addison-Wesley, 2000, Chap. 7, 8 12, 1421, 23, 33, 34, 36-40, 42, 43. [IEEE1517-99] IEEE Std 1517-1999, IEEE Standard for Information Technology-Software Life Cycle ProcessesReuse Processes, IEEE, 1999.

[IEEE12207.0-96] IEEE/EIA 12207.01996//ISO/IEC12207:1995, Industry Implementation of Int. Std.ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996. [Ker99a] B.W. Kernighan and R. Pike, The Practice of Programming, Addison-Wesley, 1999, Chap. 2, 3, 5, 6, 9. [Mag93] S. Maguire, Writing Solid Code: Microsofts Techniques for Developing Bug-Free C Software, Microsoft Press, 1993, Chap. 2-7. [McC04] S. McConnell, Code Complete: A PracticalHandbook of Software Construction, Microsoft Press, second ed., 2004. [Som05] I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005.

APNDICE A. LISTA DE LECTURAS ADICIONALES.


(Bar98) T.T. Barker, Writing Software Documentation: A Task-Oriented Approach, Allyn & Bacon, 1998. (Bec02) K. Beck, Test-Driven Development: By Example, Addison-Wesley, 2002. (Fow99) M. Fowler and al., Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999.

(How02) M. Howard and D.C. Leblanc, Writing Secure Code, Microsoft Press, 2002. (Hum97b) W.S. Humphrey, Introduction to the Personal Software Process, Addison-Wesley, 1997. (Mey97) B. Meyer, Object-Oriented Software Construction, second ed., Prentice Hall, 1997, Chap. 6, 10, 11. (Set96) R. Sethi, Programming Languages: Concepts & Constructs, second ed., Addison-Wesley, 1996, Parts II-V.

APNDICE B. LISTA DE ESTNDARES


(IEEE829-98) IEEE Std 829-1998, IEEE Standard for Software Test Documentation, IEEE, 1998. (IEEE1008-87) IEEE Std 1008-1987 (R2003), IEEE Standard for Software Unit Testing, IEEE, 1987. (IEEE1028-97) IEEE Std 1028-1997 (R2002), IEEE Standard for Software Reviews, IEEE, 1997. (IEEE1517-99) IEEE Std 1517-1999, IEEE Standard for Information Technology-Software Life Cycle ProcessesReuse Processes, IEEE, 1999. (IEEE12207.0-96) IEEE/EIA 12207.01996//ISO/IEC12207:1995, Industry Implementation of Int. Std.ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996.

CAPTULO 5 PRUEBAS DEL SOFTWARE

ACRNIMOS
SRET Pruebas Orientadas a la Confiabilidad del Software INTRODUCCIN Hacer pruebas es una actividad que tiene el objetivo de evaluar y mejorar la calidad del producto, identificando defectos y problemas. Las pruebas del software consisten en verificar el comportamiento de un programa dinmicamente a travs de un grupo finito de casos de prueba, debidamente seleccionados del, tpicamente, mbito de ejecuciones infinito, en relacin al comportamiento esperado. En la definicin anterior las palabras en itlica se corresponden con aspectos esenciales en la identificacin del rea de Conocimiento de las Pruebas del Software. En particular: Dinmicamente: Este trmino significa que hacer pruebas siempre supone ejecutar el programa con entrada de datos (valorados). Para precisar, es preciso afirmar que la entrada de valores no es siempre suficiente para definir una prueba, dado que un sistema complejo y no determinista podra tener diferentes comportamientos con las misma entrada de datos, dependiendo del estado en el que se encuentre. En cualquier caso, en este KA, mantendremos el trmino de entrada de datos, asumiendo la convencin de que el trmino incluye un estado del sistema especfico, en los casos en que sea necesario. Existen otras tcnicas complementarias a las pruebas, aunque diferentes, descritas en el KA sobre la Calidad del Software. Finito: Incluso en programas sencillos, tericamente podra haber tantas pruebas que realizar, que hacer pruebas exhaustivas podra llevar meses o aos. Esta es la razn por la que en la prctica el grupo completo de pruebas se podra considerar infinito. Hacer pruebas siempre supone un compromiso entre recursos y calendarios de trabajo limitados, por un lado, y necesidades inherentes de pruebas ilimitadas, por otro. Seleccionados: La diferencia esencial entre las distintas tcnicas de pruebas propuestas se encuentra en cmo se escoge el conjunto de pruebas. Los ingenieros informticos deben ser conscientes de que criterios de seleccin distintos pueden producir grados de efectividad muy diferentes. La forma de identificar el criterio de seleccin de pruebas ms

apropiado para un conjunto de condiciones particulares es un problema complejo; en la prctica se usa la experiencia en el diseo de pruebas y tcnicas de anlisis de riesgo. Esperado: Debera se posible, aunque a veces no sea fcil, decidir si el resultado observado de la ejecucin de un programa es aceptable o no, porque si no el esfuerzo de realizar las pruebas sera intil. El comportamiento observado se puede comprobar con los resultados esperados por el usuario (normalmente conocido como pruebas de validacin), con las especificaciones (pruebas de verificacin), o, finalmente, con el comportamiento anticipado de requerimientos implcitos o expectativas razonables. Vea ms detalles en el KA de Requerimientos del Software, punto 6.4 Pruebas de Aceptacin.

La apreciacin de las pruebas del software ha evolucionado hacia una forma ms constructiva. Ya no se asume que realizar pruebas es una tarea que empieza solamente cuando la fase de programacin se ha completado, y que tiene el nico propsito de detectar errores. Las pruebas del software se ven ahora como una actividad que debera estar presente durante todo el proceso de desarrollo y mantenimiento y es en s misma una parte importante de la construccin del producto. Es ms, la planificacin de las pruebas debera empezar en las primeras etapas del proceso de requisitos, mientras que los planes y procedimientos de pruebas deberan desarrollare y posiblemente refinarse sistemticamente segn avanza el desarrollo. La planificacin de las pruebas y las propias actividades de diseo constituyen una informacin muy til que ayuda a los diseadores de software a identificar debilidades potenciales (tales como elementos del diseo que han pasado desapercibidos, contradicciones de diseo, u omisiones o ambigedades en la documentacin). En la actualidad se considera que la prevencin es la actitud adecuada en lo que respecta a la calidad: obviamente es mejor evitar problemas que solucionarlos. Realizar pruebas debe verse como un medio para verificar, no slo si la prevencin ha sido efectiva, si no para identificar fallos en aquellos casos en los que, por alguna razn, no lo ha sido. Aunque quizs sea obvio, vale la pena reconocer que, incluso despus de una campaa de pruebas extensiva, el software an podra contener errores. Las acciones de mantenimiento correctivas proporcionan la solucin a errores en el software despus de que ste ha sido entregado. El KA

del Mantenimiento del Software aborda los temas relacionados con el mantenimiento del software. En el KA del Mantenimiento del Software (vase punto 3.3 Tcnicas de Gestin de Calidad del Software), las tcnicas de gestin de la calidad del software se dividen entre tcnicas estticas (sin ejecucin de cdigo) y tcnicas dinmicas (con ejecucin de cdigo). Ambas categoras son tiles. Este KA se centra en tcnicas dinmicas. Las pruebas del software tambin estn relacionadas con la construccin del software (vase la seccin 3.4 Construccin de Pruebas). Las pruebas de unidad y de integracin estn ntimamente relacionadas con la construccin del software, si no son parte de la misma. DIVISIN DE TEMAS La descomposicin de temas en el KA de las Pruebas del Software se muestra en la Figura 1. La primera subrea describe los Fundamentos de las Pruebas del Software. Cubre las definiciones bsicas del rea de pruebas del software, la terminologa bsica y los trminos clave, as como las relaciones con otras actividades. La segunda subrea, Niveles de Pruebas, est formada por dos puntos ortogonales: el primero (2.1) enumera los niveles en que tradicionalmente se subdividen las

pruebas para software grande, mientras que el segundo (2.2) considera las pruebas para situaciones o propiedades especficas y se conoce como objetivos de las pruebas. No todos los tipos de pruebas se pueden aplicar a todos los productos de software, tampoco se han enumerado todos los tipos posibles. El objeto y los objetivos de las pruebas determinan la forma en que un grupo de pruebas se identifica, en lo que se refiere a su consistencia cuntas pruebas son suficientes para conseguir el objetivo especificado y su composicin qu casos de prueba se deberan seleccionar para conseguir el objetivo especificado (aunque normalmente la parte para conseguir el objetivo especificado es implcita y slo se usa la primera parte de las dos frases anteriores). Los criterios para responder a la primera cuestin se denominan criterios de idoneidad las pruebas, mientras que los que se refieren a la segunda cuestin se denominan criterios de seleccin de las pruebas. En las ltimas dcadas se han desarrollado varias Tcnicas de Pruebas y an se estn proponiendo nuevas tcnicas. El conjunto de pruebas comnmente aceptadas estn enumeradas en la subrea 3. Las Mediciones de Pruebas se enumeran en la subrea 4. Finalmente, los aspectos relacionados con el Proceso de las Pruebas estn enumeradas en la subrea 5

Figura 1 Divisin de los temas para el KA de las Pruebas del Software

1.

Fundamentos de las Pruebas del Software

1.1 Terminologa relacionada con las pruebas 1.1.1 Definiciones de pruebas y terminologa relacionada [Bei90:c1; Jor02:c2; Lyu96:c2s2.2] (IEEE610.12-90) Vea una introduccin detallada del KA de las Pruebas del Software en las referencias recomendadas. 1.1.2 Errores Vs. Fallos [Jor02:c2; Lyu96:c2s2.2; Per95:c1; Pfl01:c8] (IEEE610.12-90; IEEE982.1-88)

Realizar pruebas consiste en observar un conjunto de ejecuciones del programa. Hay diferentes objetivos que nos pueden guiar en la seleccin del conjunto de pruebas: la efectividad del grupo de pruebas slo se puede evaluar en funcin del objetivo seleccionado. 1.2.3 Realizar pruebas para la identificacin de defectos [Bei90:c1; Kan99:c1]

En la bibliografa sobre Ingeniera del Software se usan diversos trminos para describir un funcionamiento incorrecto, particularmente falta, error, fallo y otros trminos. Esta terminologa se define detalladamente en el estndar IEEE 610.12-1990, Standard Glossary of Software Engineering Terminology (IEEE610-90) y tambin se discute en el KA de la Calidad del Software. Es esencial distinguir claramente entre la causa de un funcionamiento incorrecto, en cuyo caso se usan trminos como error y defecto, y los efectos no deseados observados en los servicios proporcionados por un sistema, que se llamarn fallos. Hacer pruebas puede descubrir fallos, pero es el error el que se puede, y se debe, eliminar. En cualquier caso, debera aceptarse que no es siempre posible identificar unvocamente las causas de un fallo. No existe ningn criterio terico que pueda usarse para determinar qu error produce el fallo observado. Podra decirse que hay que arreglar el error para eliminar el problema, pero otros cambios tambin podran funcionar. Para evitar ambigedades, algunos autores prefieren hablar de entradas que causan fallos (Fra98) en vez de errores o lo que es lo mismo, aquellos grupos de entradas de datos que hacen que el fallo aparezca. 1.2 Cuestiones clave 1.2.1 Criterios de seleccin de pruebas/Criterios de idoneidad de pruebas (o finalizacin de pruebas) [Pfl01:c8s7.3; Zhu97:s1.1] (Wey83; Wey91; Zhu97)

Cuando realizamos pruebas para la identificacin de defectos, una prueba es satisfactoria si produce un error en el sistema. Es ste un enfoque completamente diferente al de realizar pruebas para demostrar que el software satisface las especificaciones u otro conjunto de propiedades deseadas, en cuyo caso una prueba satisfactoria es aquella en la que no se observan errores (al menos significativos). 1.2.4 El problema del orculo [Bei90:c1] (Ber96, Wey83)

Un orculo es cualquier agente (humano o mecnico) que decide si un programa se comporta correctamente durante una prueba y consecuentemente produce un veredicto de superada o fallada. Hay varios tipos diferentes de orculos, y la automatizacin de orculos puede ser muy difcil y cara. 1.2.5 Limitaciones tericas y prcticas de las pruebas [Kan99:c2] (How76)

La teora de pruebas advierte en contra de un nivel injustificado de confianza en una serie de pruebas superadas. Desafortunadamente, la mayor parte de los resultados establecidos en la teora de pruebas son negativos, en el sentido de que establecen aquello que la prueba no puede conseguir, en vez de lo que consigui. La ms famosa cita a este respecto es el aforismo de Dijkstra que dice las pruebas de un programa se pueden usar para mostrar las presencia de errores, pero nunca para demostrar su ausencia. La razn obvia es que realizar un grupo completo de pruebas no es posible en el software real. Como consecuencia, las pruebas deben dirigirse en funcin de los riesgos y por tanto pueden verse como una estrategia de gestin de riesgo. 1.2.6 El problema de los caminos no alcanzables [Bei90:c3]

Un criterio de seleccin de pruebas es un medio para decidir cules deben ser los casos de prueba adecuados. Un criterio de seleccin se puede usar para seleccionar casos de pruebas o para comprobar si el grupo de casos de prueba es apropiado o sea, para decidir si se puede terminar de hacer pruebas. Vase el apartado Finalizacin de la seccin 5.1 Consideraciones prcticas. 1.2.2 Efectividad de las pruebas/Objetivos para las pruebas [Bei90:c1s1.4; Per95:c21] (Fra98)

Los caminos no alcanzables son aquellos caminos de control que no pueden ejecutarse para ninguna entrada de datos. Son un problema importante en las pruebas orientadas por caminos y particularmente en las derivaciones automticas de entradas de pruebas que se emplean en las tcnicas de pruebas basadas en cdigo. 1.2.7 Posibilidad de hacer pruebas [Bei90:c3, c13] (Bac90; Ber96a; Voa95)

El trmino posibilidad de hacer pruebas tiene dos significados relacionados pero diferentes: por un lado, se refiere al grado de facilidad del software para satisfacer un determinado criterio de cobertura de

pruebas, como se describe en (Bac90); por otro, se define como la probabilidad, posiblemente cualificada estadsticamente, de que los errores del software queden expuestos durante las pruebas, si es errneo, tal y como se describe en (Voa95, Ber96a). Ambos significados son importantes. 1.3 Relacin de las pruebas con otras actividades Las pruebas del software, aunque diferentes, estn relacionadas con las tcnicas de gestin de la calidad del software esttico, las pruebas de validez del software, la depuracin y la programacin. Sin embargo, es til considerar las pruebas desde el punto de vista del analista de calidad del software o certificador. Pruebas vs. tcnicas de Gestin de Calidad del Software Esttico. Vase tambin el KA de la Calidad del Software, punto 2. Proceso de Gestin de la Calidad del Software. [Bei90:c1; Per95:c17] (IEEE1008-87) Pruebas vs. Pruebas de Validez y Verificacin Formal [Bei90:c1s5; Pfl01:c8]. Pruebas vs. Depuracin. Vase tambin el KA de la Construccin del Software, punto 3.4 Pruebas de la construccin [Bei90:c1s2.1] (IEEE1008-87). Pruebas vs. Programacin. Vase tambin el KA de la Construccin del Software, punto 3.4 Pruebas de la construccin [Bei90:c1s2.1] (IEEE1008-87). Pruebas y Certificacin (Wak99). Niveles de Pruebas

soporte de herramientas de depuracin, pudiendo implicar a los programadores que escribieron el cdigo 2.1.2 Pruebas de Integracin [Jor02:c13, 14; Pfl01:c8s7.4]

Una prueba de integracin es el proceso de verificar la interaccin entre componentes de software. Estrategias clsicas de integracin, como arriba-abajo o abajoarriba, se usan, tradicionalmente, con software estructurado jerrquicamente. Las estrategias modernas de integracin estn dirigidas por la arquitectura, lo que supone integrar los componentes de software o subsistemas basndose en caminos de funcionalidad identificada. Las pruebas de integracin son una actividad continua, que sucede en cada fase en que los ingenieros de software tienen que hacer abstracciones de las perspectivas de bajo nivel y concentrarse en las perspectivas del nivel que estn integrando. Con la excepcin de software sencillo y pequeo, las estrategias de pruebas de integracin sistemticas e incrementales son preferibles a probar todos los componentes juntos al final, lo que se conoce (de forma grfica), como pruebas en big bang. 2.1.3 Pruebas del sistema [Jor02:c15; Pfl01:c9]

2.1 El objeto de la prueba Las pruebas del software se realizan normalmente a diferentes niveles durante los procesos de desarrollo y mantenimiento. Esto significa que el objeto de las pruebas puede cambiar: un mdulo, un grupo de dichos mdulos (relacionados por propsito, uso, comportamiento, o estructura), o un sistema completo. [Bei90:c1; Jor02:c12;Pfl01:c8] Conceptualmente se pueden distinguir tres grandes niveles de pruebas, llamadas de Unidad, de Integracin y del Sistema. No hay un modelo de proceso implcito, ni se asume que ninguno de estos tres niveles tiene mayor importancia que los otros dos. Pruebas de Unidad [Bei90:c1; Per95:c17; Pfl01:c8s7.3] (IEEE1008-87) Las pruebas de unidad verifican el funcionamiento aislado de partes del software que se pueden probar independientemente. Dependiendo del contexto, estas partes podran ser subprogramas individuales o un componente ms grande formado por unidades muy relacionadas. Hay una definicin ms precisa de prueba de unidad en el estndar IEEE de pruebas de unidad del software (IEEE1008-87), que tambin describe un mtodo integrado para realizar y documentar pruebas de unidad sistemticamente. Normalmente, las pruebas de unidad se realizan con acceso al cdigo fuente y con el 2.1.1

Las pruebas del sistema se ocupan del comportamiento de un sistema completo. La mayora de los fallos funcionales deberan haber sido identificados antes, durante las fases de pruebas de unidad y pruebas de integracin. Las pruebas del sistema se consideran normalmente como las apropiadas para comparar el sistema con los requisitos no funcionales del sistema, como seguridad, velocidad, exactitud y confiabilidad. Las interconexiones externas con otras aplicaciones, utilidades, dispositivos hardware o con el sistema operativo, tambin se evalan en este nivel. Vase el KA de Requisitos del Software para ms informacin acerca de requisitos funcionales y no funcionales. 2.2 Objetivos de las pruebas [Per95:c8; Pfl01:c9s8.3] Las pruebas se realizan en relacin a conseguir un determinado objetivo, que se ha definido ms o menos explcitamente y con diversos niveles de precisin. Definir el objetivo, en trminos precisos y cuantitativos, permite establecer controles en el proceso de las pruebas. Las pruebas se pueden realizar para verificar propiedades distintas. Se pueden asignar casos de prueba para comprobar que las especificaciones funcionales se han implementado correctamente, a lo que la literatura se refiere como pruebas de conformidad, pruebas de correccin o pruebas de funcionalidad. Sin embargo, tambin se pueden hacer pruebas a otras muchas propiedades no funcionales, como rendimiento, confiabilidad y facilidad de uso, entre otras muchas.

Otros objetivos importantes de las pruebas incluyen (aunque no se limitan a) mediciones de confiabilidad, evaluacin de la facilidad de uso y aceptacin, para los cuales se utilizaran mtodos diferentes. Se debe tener en cuenta que los objetivos de las pruebas varan con el objeto de las pruebas; en general, propsitos diferentes son tratados con diferentes niveles de pruebas. Las referencias recomendadas para este punto describen el conjunto de objetivos de pruebas potenciales. Los puntos enumerados seguidamente son los que se citan ms frecuentemente en la literatura. Tngase en cuenta que algunos tipos de pruebas son ms apropiados para paquetes de software hechos a medida, pruebas de instalacin, por ejemplo; mientras otros son ms apropiados para productos ms genricos, como pruebas beta. 2.2.1 Pruebas de aceptacin/calificacin [Per95:c10; Pfl01:c9s8.5] (IEEE12207.096:s5.3.9)

Las pruebas, al ayudar a identificar errores, son un medio para mejorar la confiabilidad. Por contraste, generando casos de prueba aleatorios siguiendo el perfil de operaciones, se pueden derivar aproximaciones estadsticas de confiabilidad. Cuando se usan modelos que potencian la confiabilidad, ambos objetivos se pueden alcanzar al mismo tiempo (vase tambin el punto 4.1.4 Pruebas de ejecucin, evaluacin de la confiabilidad) 2.2.6 Pruebas de regresin [Kan99:c7; Per95:c11, c12; Pfl01:c9s8.1] (Rot96)

Las pruebas de aceptacin comparan el comportamiento del sistema con los requisitos del cliente, sea cual sea la forma en que stos se hayan expresado. El cliente realiza, o especifica, tareas tpicas para comprobar que se satisfacen sus requisitos o que la organizacin los ha identificado para el mercado al que se destina el software. Esta actividad de pruebas puede incluir o no a los desarrolladores del sistema. 2.2.2 Pruebas de instalacin [Per95:c9; Pfl01:c9s8.6]

Segn (IEEE610.12-90), las pruebas de regresin son pruebas selectivas que se repiten en un componente para verificar que los cambios no han producido efectos indeseados... En la prctica, la idea es demostrar que cierto software que previamente pas un conjunto de pruebas, an las pasa. Beizer (Bei90) las define como cualquier repeticin de pruebas que tiene como objetivo demostrar que el comportamiento del software no ha cambiado, excepto en aquellos aspectos en que se haya requerido as. Por supuesto se tiene que llegar a un compromiso entre realizar pruebas de regresin cada vez que se hace un cambio y los medios de que se dispone para realizar las pruebas. Las pruebas de regresin se pueden realizar en cada uno de los niveles de pruebas descritos en el punto 2.1 El objeto de la prueba y son vlidas tanto para pruebas funcionales como no funcionales. 2.2.7 Pruebas de rendimiento [Per95:c17; Pfl01:c9s8.3] (Wak99)

Normalmente, cuando las pruebas de aceptacin han terminado, el software se puede comprobar una vez instalado en el entorno final. Las pruebas de instalacin se pueden ver como pruebas del sistema realizadas en relacin con los requisitos de la configuracin de hardware. Los procedimientos para la instalacin tambin se podran verificar. 2.2.3 Pruebas alfa y beta [Kan99:c13]

Estas pruebas tienen el objetivo de verificar que el software alcanza los requerimientos de rendimiento especificados, particularmente los de capacidad y tiempo de respuesta. Un tipo particular de pruebas de rendimiento son las pruebas de volumen (Per95:p185, p487; Pfl01:p401), en los que las limitaciones internas del programa o sistema se ponen a prueba. 2.2.8 Pruebas de desgaste [Per95:c17; Pfl01:c9s8.3]

A veces, antes de poner el software en distribucin, ste se proporciona a un grupo representativo de usuarios potenciales para que puedan usarlo en pruebas en las instalaciones del desarrollador (pruebas alpha) o externamente (pruebas beta). Dichos usuarios notifican problemas con el producto. Normalmente, el uso de versiones alfa y beta sucede en entornos no controlados y no siempre se le hace referencia en los planes de pruebas. 2.2.4 Pruebas de conformidad/pruebas funcionales/pruebas de correccin [Kan99:c7; Per95:c8] (Wak99)

Las pruebas de desgaste hacen funcionar el software a la mxima capacidad para la que fue diseado, y por encima de ella. 2.2.9 Pruebas de continuidad.

Un grupo de pruebas se ejecuta en dos versiones diferentes de un producto software y los resultados se comparan. 2.2.10 Pruebas de recuperacin [Per95:c17; Pfl01:c9s8.3]

Las pruebas de conformidad tienen el objetivo de verificar si el comportamiento del software se corresponde con las especificaciones. 2.2.5 Materializacin de la confiabilidad y evaluacin [Lyu96:c7; Pfl01:c9s.8.4] (Pos96)

El objetivo de las pruebas de recuperacin es verificar la capacidad del software para reiniciarse despus de un desastre. 2.2.11 Pruebas de configuracin [Kan99:c8; Pfl01:c9s8.3]

En los casos en los que el software se construye para dar servicio a distintos usuarios, las pruebas de configuracin analizan el software en las diferentes configuraciones especificadas. 2.2.12 Pruebas de facilidad de uso [Per95:c8; Pfl01:c9s8.3]

[Kan99:c1] Quizs la tcnica usada ms globalmente continan siendo las pruebas ad hoc: las pruebas se generan a partir la habilidad, intuicin y experiencia en programas similares del ingeniero de software. Las pruebas ad hoc pueden ser tiles para identificar casos de prueba especiales, aquellos que no se pueden extraer fcilmente mediante tcnicas formales. 3.1.2 Pruebas por exploracin

Este proceso evala lo fcil que le resulta usar y aprender a usar el software al usuario, incluyendo la documentacin del usuario, la efectividad de las funciones del software para soportar las tareas de usuario y, finalmente, la habilidad de recuperarse de errores provocados por el usuario. 2.2.13 Desarrollo dirigido por pruebas [Bec02]

El desarrollo dirigido por pruebas no es una tcnica en s misma, pero promociona el uso de pruebas como una parte subordinada al documento de especificacin de requisitos en vez de una comprobacin independiente de que el software implementa dichos requerimientos correctamente. 3 Tcnicas de pruebas

Las pruebas por exploracin se definen como aprendizaje, diseo de pruebas y ejecucin de pruebas al mismo tiempo. Esto significa que las pruebas no se definen primero como parte de un plan de pruebas establecido, si no que se disean, ejecutan y se modifican dinmicamente. La efectividad de las pruebas por exploracin se basa en el conocimiento del ingeniero de software, que se puede derivar de varias fuentes: el comportamiento observado del producto durante las pruebas, su familiaridad con la aplicacin, la plataforma o el proceso de fallos, los posibles tipos de errores y fallos, el riesgo asociado con un producto en particular, etc. [Kan01:c3] 3.2 Tcnicas basadas en la especificacin 3.2.1 Particiones de equivalencia [Jor02:c7; Kan99:c7]

Uno de los objetivos de las pruebas es revelar el mximo nmero posible de fallos potenciales y muchas tcnicas se han desarrollado con este objetivo, intentando romper el programa ejecutando una o ms pruebas seleccionadas de un cierto grupo de ejecuciones considerado equivalente. El principio subyacente de estas tcnicas es tratar de ser lo ms sistemtico posible identificando un conjunto representativo de comportamientos del programa; por ejemplo, identificando subclases del dominio de entrada de datos, de los escenarios, de los estados y del flujo de datos. Es difcil encontrar una base homognea para clasificar todas las tcnicas, por lo que la aqu utilizada debe entenderse como un compromiso. La clasificacin se basa en cmo los ingenieros del software generan las pruebas basndose en su intuicin y experiencia, en las especificaciones, la estructura del cdigo, los errores a descubrir (reales o artificiales), el uso de campos de entrada de datos o, en ltimo trmino, la naturaleza de la aplicacin. Algunas veces, estas tcnicas se clasifican como de caja blanca (tambin conocidas como caja de cristal), si las pruebas estn basadas en informacin acerca de cmo se ha diseado o programado el software, o como de caja negra si los casos de prueba se basan solamente en el comportamiento de la entrada y salida de datos. Una ltima categora se basa en el uso combinado de dos o ms tcnicas. Obviamente, no todo el mundo usa estas tcnicas con la misma frecuencia. La siguiente lista incluye las tcnicas que los ingenieros de software deberan conocer. 3.1 Pruebas basadas en la intuicin y experiencia del ingeniero de software 3.1.1 Pruebas ad hoc

El dominio de la entrada de datos se subdivide en colecciones de subconjuntos, o clases de equivalencia, las cuales se consideran equivalentes de acuerdo con la relacin especificada. Un grupo representativo de pruebas (a veces solo uno) se toma de cada clase. 3.2.2 Anlisis de los valores lmite [Jor02:c6; Kan99:c7]

Casos de prueba se seleccionan en y cerca de los lmites del dominio de las variables de la entrada de datos, basndose en la idea de que una gran parte de los errores se concentran cerca de los valores extremos de la entrada de datos. Una extensin de esta tcnica son las pruebas de robustez, donde se seleccionan casos de prueba que se encuentran fuera del dominio de las variables de la entrada de datos, para comprobar la robustez del programa con entradas de datos errneas e inesperadas. 3.2.3 Tablas de decisin [Bei90:c10s3] (Jor02)

Las tablas de decisin representan relaciones lgicas entre condiciones (mayoritariamente entradas) y acciones (mayoritariamente salidas). Los casos de prueba se derivan sistemticamente considerando cada combinacin de condiciones y acciones posibles. Una tcnica relacionada es el grfico causa-efecto. [Pfl01:c9] 3.2.4 Basadas en mquinas de estado finito [Bei90:c11; Jor02:c8]

Al modelar un programa como una mquina de estado finito, se pueden seleccionar las pruebas de manera que cubran estados y sus transiciones. 3.2.5 Pruebas basadas en las especificaciones formales [Zhu97:s2.2] (Ber91; Dic93; Hor95)

necesarios, se emplean estrategias menos efectivas como todas las definiciones y todos los usos. 3.3.3 Modelos de referencia para pruebas basadas en el cdigo (grfico de flujos, grfico de llamadas) [Bei90:c3; Jor02:c5]

Si las especificaciones se proporcionan en un lenguaje formal, es posible realizar una derivacin automtica de los casos de prueba funcionales y, al mismo tiempo, proporcionar unos resultados de referencia, un orculo, que se usa para comprobar los resultados de las pruebas. Existen mtodos para derivar casos de prueba de especificaciones basadas en el modelo (Dic93, Hor95) o especificaciones algebraicas. (Ber91) 3.2.6 Pruebas aleatorias [Bei90:c13; Kan99:c7]

Aunque no es una tcnica en s misma, la estructura de control de un programa se representa usando grficos de flujo en las tcnicas de pruebas basadas en cdigo. Un grfico de flujo es un grfico dirigido cuyos nodos y arcos se corresponden con elementos del programa. Por ejemplo, los nodos podran representar lneas de cdigo o secuencias de lneas de cdigo ininterrumpidas y los arcos la transferencia de control entre nodos. 3.4 Tcnicas basadas en errores (Mor90) Con diferentes niveles de formalizacin, las tcnicas basadas en errores idean casos de prueba que estn especialmente orientados a descubrir categoras de errores probables o predefinidos. 3.4.1 Conjeturar errores [Kan99:c7]

En este caso las pruebas se generan de una manera completamente aleatoria, lo que no debe confundirse con las pruebas estadsticas basadas en el perfil operativo descritas en el punto 3.5.1 Perfil Operativo. Esta forma de realizar pruebas se incluye en la categora de entradas basadas en la especificacin, ya que el domino de las entradas de datos se debe conocer para ser capaces de seleccionar elementos aleatorios del mismo. 3.3 Tcnicas basadas en el cdigo 3.3.1 Criterio basado en el flujo de control [Bei90:c3; Jor02:c10] (Zhu97) Los criterios de cobertura estn basados en el flujo de control se usan para cubrir todos los bloques de cdigo o lneas de cdigo individuales o una combinacin especifica de los mismos. Hay varios criterios de cobertura propuestos, como cobertura de condicin/decisin. El criterio basado en el flujo de control ms efectivo son las pruebas de caminos, cuyo objetivo es verificar todos los caminos de control de tipo entrada-salida del grfico de flujos. Como, en general, las pruebas de caminos no son posibles debido a los bucles, en la prctica se usan otros criterios menos exigentes, como pruebas de lneas de cdigo, pruebas de condiciones y pruebas de decisin. La idoneidad de dichas pruebas se mide en porcentajes; por ejemplo, cuando las pruebas han ejecutado todas las condiciones al menos una vez, se dice que se ha conseguido una cobertura de condiciones del 100%. 3.3.2 Criterio basado en el flujo de datos [Bei90:c5] (Jor02; Zhu97)

En la conjetura de errores, los casos de pruebas se han diseado especficamente por ingenieros de software intentando imaginar los errores ms probables en un programa determinado. La historia de errores descubiertos en proyectos anteriores es una buena fuente de informacin, como lo es tambin la experiencia del ingeniero. 3.4.2 Pruebas por mutacin [Per95:c17; Zhu97:s3.2-s3.3]

En las pruebas basadas en el flujo de datos, el grfico de flujos de control tiene anotaciones con informacin acerca de como las variables del programa se definen, usan y destruyen. El criterio ms efectivo, todos los caminos de uso-definicin, requiere que para cada variable, se ejecute cada uno de los segmentos del camino del flujo de control de esa variable a un usa de esa definicin. Para reducir el nmero de caminos

Un mutante es una versin ligeramente modificada de un programa al que se le est haciendo pruebas, diferencindose tan solo en un pequeo cambio sintctico. Cada caso de prueba se aplica al original y a los mutantes generados: si una prueba consigue identificar la diferencia entre el programa y el mutante, se dice que se ha matado al mutante. Esta tcnica se concibi originalmente para evaluar un conjunto de pruebas (vase 4.2), las pruebas por mutacin son un criterio de pruebas en s mismas: o se generan pruebas aleatorias hasta que se han matado los mutantes suficientes, o se disean pruebas especficas para matar a los mutantes supervivientes. En el ltimo caso, las pruebas por mutacin se pueden clasificar como tcnicas basadas en cdigo. El efecto de acoplamiento, que es la base asumida en las pruebas de mutacin, consiste en asumir que buscando errores sintcticos simples, se encontrarn otros ms complejos pero existentes. Para que esta tcnica sea efectiva, se debe poder derivar un nmero importante de mutantes de una manera sistemtica. 3.5 Tcnicas basadas en el uso 3.5.1 Perfil operativo [Jor02:c15; Lyu96:c5; Pfl01:c9]

Durante pruebas para la evaluacin de la confiabilidad, el entorno de pruebas debe reproducir el entorno operativo del software tan fielmente como sea posible. La idea es deducir la futura confiabilidad del software durante su use real desde los resultados de las pruebas. 3.5.2 Pruebas Orientadas a la Confiabilidad del Software [Lyu96:c6]

Para conseguir esto, se le asigna una probabilidad de distribucin, o perfil, a las entradas de datos, basndose en la frecuencia en que suceden durante el funcionamiento real. distribucin de entradas de datos, como se hace normalmente en las pruebas de confiabilidad. Existen varias comparaciones analticas y empricas que analizan las condiciones en que uno de los mtodos es ms efectivo que el otro. 4 Medidas de las pruebas

Las pruebas orientadas a la confiabilidad del software (SRET) son un mtodo de pruebas que forma parte del proceso de desarrollo completo, donde la realizacin de pruebas est diseada y guiada por los objetivos de confiabilidad y el uso relativo esperado y lo crticas que sean las distintas funciones en ese mbito 3.6 Tcnicas basadas en la naturaleza de la aplicacin Las tcnicas anteriores se pueden aplicar a cualquier tipo de software. Sin embargo, para algunos tipos de aplicaciones, es necesario conocimientos especficos adicionales para derivar las pruebas. La siguiente lista proporciona unas cuantas reas de pruebas especializadas, basndose en la naturaleza de la aplicacin que se est comprobando: Pruebas Orientadas Pfl01:c8s7.5] (Bin00) a Objetos [Jor02:c17;

Pruebas basadas en componentes Pruebas para Internet Pruebas para GUI [Jor20] Pruebas para programas concurrentes (Car91) Pruebas de conformidad de protocolos (Pos96; Boc94) Pruebas para sistemas de tiempo real (Sch94) Pruebas para sistemas (IEEE1228-94) de seguridad crtica

Algunas veces, las tcnicas de pruebas se confunden con los objetivos de las pruebas. Las tcnicas de pruebas se deben ver como medios que ayudan a conseguir los objetivos de las pruebas. Por ejemplo, la cobertura de condiciones es una tcnica de pruebas muy popular. Conseguir el valor de la cobertura de condiciones no debera ser un objetivo de las pruebas en s mismo: es solo un medio para mejorar las posibilidades de encontrar fallos realizando pruebas sistemticas en cada condicin del programa para un punto de decisiones. Para prevenir dichas interpretaciones errneas, debera hacerse una distincin muy clara entre las medidas de las pruebas, que proporcionan una evaluacin del programa que se est comprobando, basada en los resultados observados de las pruebas y aquellas que evalan la completitud del conjunto de pruebas. Se proporciona ms informacin acerca de medidas para programas en el KA de la Gestin del la Ingeniera del Software, punto 6, Medidas en la ingeniera del software. Se puede encontrar ms informacin en el KA de la Gestin del la Ingeniera del Software, punto 4, Proceso y medidas del producto. Las medidas se consideran, normalmente, como esenciales en los anlisis de calidad. Las medidas tambin se pueden utilizar para optimizar la planificacin y ejecuciones de las pruebas. La gestin de pruebas puede utilizar varios procesos para medir o vigilar el progreso realizado. Las medidas relacionadas con el proceso de gestin de pruebas se abordan en el punto 5.1 Consideraciones prcticas. 4.1 Evaluacin de un programa durante las pruebas (IEEE982.1-98) 4.1.1 Medidas para ayudar en la planificacin y diseo de pruebas de programas [Bei90:c7s4.2; Jor02:c9] (Ber96; IEEE982.188)

3.7 Seleccionando y combinando tcnicas 3.7.1 Funcional y estructuralmente [Bei90:c1s.2.2; Jor02:c2, c9, c12; Per95:c17] (Pos96)

Las tcnicas de pruebas basadas en las especificaciones y el cdigo se contrastan frecuentemente como pruebas funcionales vs estructurales. Estos dos mtodos de seleccin de pruebas no se deber ver como alternativos si no como complementarios; de hecho, usan fuentes de informacin diferentes y se ha comprobado que remarcan diferentes tipos de problemas. Estas tcnicas se pueden combinar, dependiendo del presupuesto para pruebas. 3.7.2 Deterministas vs aleatorias (Ham92; Lyu96:p541-547)

Las medidas basadas en el tamao de un programa (por ejemplo, nmero de lneas de cdigo o mtodos) o en la estructura de un programa (como la complejidad), se usan para guiar a las pruebas. Las medidas estructurales pueden incluir medidas entre mdulos del programa, en trminos de la frecuencia en que cada mdulo llama a los otros. 4.1.2 Tipos de errores, clasificacin y estadsticas [Bei90:c2; Jor02:c2; Pfl01:c8] (Bei90; IEEE1044-93; Kan99; Lyu96)

Los casos de pruebas se pueden seleccionar de una forma determinista, de acuerdo con una de las varias tcnicas enunciadas, o seleccionadas aleatoriamente de una

La literatura de pruebas es rica a la hora de clasificar y analizar errores. Con el objetivo de hacer las pruebas ms efectivas, es importante saber que tipos de errores se pueden encontrar en un programa que se est comprobando y la frecuencia relativa en que estos errores han sucedido antes. Esta informacin puede ser muy til para realizar predicciones de calidad y tambin para mejorar el proceso. Se puede encontrar ms informacin en el KA de la Calidad del Software, punto 3.2 Caracterizacin de defectos. Existe un estndar del IEEE acerca de como clasificar anomalas del software (IEEE1044-93). 4.1.3 Densidad de fallos [Per95:c20] (IEEE982.1-88; Lyu96:c9)

4.2.2

Introduccin de errores [Pfl01:c8] (Zhu97:s3.1)

Un programa que se est comprobando se puede valorar contando y clasificando los errores descubiertos por su tipo. Parra cada tipo de error, la densidad de errores se mide como la razn entre el nmero de errores encontrados y el tamao del programa. 4.1.4 Vida de las pruebas, evaluacin de confiabilidad [Pfl01:c9] (Pos96:p146-154)

Algunas veces se introducen errores artificialmente en un programa antes de comprobarlo. Cuando las pruebas se realizan, algunos de estos errores aparecern y posiblemente algunos otros que ya estaban en el software tambin aparecern. En teora, dependiendo de cul de los errores artificiales aparezca y cuntos de ellos, se puede evaluar la efectividad de las pruebas y se puede estimar el nmero restante de errores genuinos. En la prctica, los matemticos estadsticos se cuestionan la distribucin y representatividad de los errores introducidos en relacin con los errores genuinos y el tamao pequeo de la muestra en la que se basa cualquier extrapolacin. Algunos incluso afirman que esta tcnica debera usarse con sumo cuidado, ya que introducir errores en el software acarrea el riesgo obvio de olvidarlos all. 4.2.3 Puntuacin de la mutacin [Zhu97:s3.2-s3.3]

Una estimacin estadstica de la confiabilidad del software, que se puede conseguir mediante la realizacin y evaluacin de la confiabilidad (vase punto 2.2.5), se puede usar para evaluar un producto y decidir si las pruebas se pueden detener o no. 4.1.5 Modelos de crecimiento de la confiabilidad [Lyu96:c7; Pfl01:c9] (Lyu96:c3, c4)

En las pruebas por mutacin (vase el punto 3.4.2), la razn de mutantes matados por nmero total de mutantes generados puede ser una medida de la efectividad del conjunto de pruebas realizadas. 4.2.4 Comparacin y efectividad relativa de las diferentes tcnicas [Jor02:c9, c12; Per95:c17; Zhu97:s5] (Fra93; Fra98; Pos96: p64-72)

Los modelos de crecimiento de la confiabilidad proporcionan una prediccin de confiabilidad basada en los fallos observados durante la realizacin y evaluacin de la confiabilidad (vase punto 2.2.5). Estos modelos asumen, en general, que los errores que causan los fallos observados se han arreglado (aunque algunos modelos tambin aceptan arreglos imperfectos), y por tanto, el producto muestra una confiabilidad incremental de promedio. Existen docenas de modelos publicados en la actualidad. Muchos se basan en algunas presunciones comunes, y otros no. Mayoritariamente, estos modelos se dividen en modelos de cuenta de fallos y tiempo entre fallos. 4.2 Evaluacin de las pruebas realizadas 4.2.1 Medidas de la cobertura/completitud [Jor02:c9; Pfl01:c8] (IEEE982.1-88)

Se han llevado a cabo varios estudios para comparar la efectividad relativa de las diferentes tcnicas de pruebas. Es importante ser preciso acerca de la propiedad contra la cual las tcnicas se han calificado; cual, por ejemplo, es el significado exacto dado al trmino efectividad? Las interpretaciones posibles son: el nmero de pruebas necesarias para encontrar el primer fallo, la razn entre el nmero de errores encontrados durante las pruebas y todos los errores encontrados durante y despus de las pruebas, o cual fue la mejora de la confiabilidad. Se han llevado a cabo comparaciones analticas y empricas entre las diferentes tcnicas, de acuerdo con cada uno de los significados de efectividad especificados antes. 5 El Proceso de las Pruebas

Varios criterios de idoneidad de las pruebas necesitan que los casos de pruebas ejecuten sistemticamente un conjunto de elementos identificados en el programa o en la especificacin (vase punto 3). Para evaluar la completitud de las pruebas realizadas, los ingenieros de pruebas pueden monitorizar los elementos cubiertos y su nmero total. Por ejemplo, es posible medir el porcentaje de condiciones cubiertas ejecutadas entre las definidas en la especificacin. La idoneidad de los criterios basados en cdigo necesita la instrumentacin adecuada del programa que se est comprobando.

Los conceptos de pruebas, estrategias, tcnicas y medidas han de ser integrados en un proceso definido y controlado, que debe ser gestionado por personas. El proceso de las pruebas soporta actividades y sirve de gua a los equipos de pruebas, desde la planificacin de las pruebas hasta la evaluacin de los resultados de las pruebas, de tal manera que se puede proporcionar una garanta justificada de que los objetivos de las pruebas se conseguirn de una manera econmica. 5.1 Consideraciones prcticas 5.1.1 Actitudes y programacin egoless [Bei90:c13s3.2; Pfl01:c8]

Un elemento muy importante para el xito de las pruebas es una actitud de colaboracin respecto a las actividades de pruebas y garanta de calidad. Los jefes de proyecto tienen un papel fundamental en fomentar una recepcin favorable en general respecto al descubrimiento de fallos durante el desarrollo y mantenimiento; particularmente, previniendo que los programadores se obsesionen con quien es el dueo del cdigo, de tal forma que ninguno se sienta responsable por los fallos que aparezcan en su cdigo. 5.1.2 Guas para las pruebas [Kan01]

[Bei90:c13s2.2-c13s2.3; Kan99:c15; Per95:c4; Pfl01:c9] La formalizacin del proceso de pruebas tambin puede formalizar la organizacin del equipo de pruebas. El equipo de pruebas puede estar compuesto por miembros internos (parte del equipo del proyecto, involucrados o no en la construccin del software), o de miembros externos, con la esperanza de contar con una perspectiva independiente y sin prejuicios, o, finalmente, de miembros internos y externos. La decisin puede ser afectada por consideraciones como coste, planificacin, nivel de madurez de las organizacin involucradas y como de crtica sea la aplicacin. 5.1.6 Estimacin coste/esfuerzo y otras medidas del proceso [Per95:c4, c21] (Per95: Appendix B; Pos96:p139-145; IEEE982.1-88)

Se pueden guiar las fases de pruebas con varios mecanismos, por ejemplo; en pruebas basadas en el riego, que usa los riesgos en el producto para asignar prioridad y centrar la atencin de las estrategias de pruebas; o en las pruebas basadas en situaciones, en las que los casos de pruebas se definen y basan en escenarios de software especificados. 5.1.3 Gestin del proceso de las pruebas [Bec02: III; Per95:c1-c4; Pfl01:c9] (IEEE107497; IEEE12207.0-96:s5.3.9, s5.4.2, s6.4, s6.5)

Las actividades de pruebas realizadas a diferentes niveles (vase punto 2, Niveles de pruebas) se deben organizar, junto con las personas, herramientas, normas y medidas, en un proceso bien definido que ser una parte integral del ciclo de vida del software. En el estndar IEEE/EIA 12207.0, las pruebas no se describen como un proceso independiente, si no que los principios de las actividades de las pruebas se encuentran incluidos con los cinco procesos primarios del ciclo de vida y con los procesos de soporte. En el estndar IEEE 1074, las pruebas se agrupan con otras actividades de evaluacin como una parte integral del ciclo de vida completo. 5.1.4 Documentacin y productos de las pruebas [Bei90:c13s5; Kan99:c12; Per95:c19; Pfl01:c9s8.8] (IEEE829-98)

Los jefes de proyectos pueden usar varias medidas, acerca de los recursos invertidos en las pruebas y de la efectividad de las varias fases de pruebas en encontrar fallos, para controlar y mejorar el proceso de las pruebas. Estas medidas de las pruebas pueden cubrir, entre otros, aspectos como el nmero de casos de pruebas especificados, el nmero de casos de pruebas ejecutados, el nmero de casos de pruebas superados y el nmero de casos de pruebas no superados. La evaluacin de los informes de las fases de pruebas se puede combinar con anlisis de las races de las causas para evaluar la efectividad del proceso de las pruebas en encontrar errores tan pronto como sea posible. Dicha evaluacin se puede asociar con el anlisis de riesgos. Lo que es ms, los recursos que merece la pena invertir en las pruebas deberan ser proporcionales al uso/importancia de la aplicacin: diferentes tcnicas tienen distinto coste y proporcionan diferentes niveles de seguridad en la confiabilidad del producto. 5.1.7 Finalizacin [Bei90:c2s2.4; Per95:c2]

La documentacin es una parte integral de la formalizacin del proceso de las pruebas. El estndar del IEEE Estndar para la Documentacin de las Pruebas del Software (IEEE829-98) proporciona una buena descripcin de los documentos de las pruebas y su relacin entre cada uno y con el proceso de las pruebas. La documentacin de pruebas puede incluir, entre otros, el Plan de Pruebas, la Especificacin del Diseo de las Pruebas, la Especificacin del Procedimiento de las Pruebas, la Especificacin de los Casos de Pruebas, el Diario de las Pruebas y el Informe de Problemas o de Incidentes durante las Pruebas. El software que se est comprobando se documenta como el Artculo en Pruebas. La documentacin de las pruebas se debe generar y actualizar continuamente, con el mismo nivel de calidad que cualquier otro tipo de documentacin en la ingeniera del software. 5.1.5 Equipo de pruebas independiente interno vs equipo

Se debe tomar una decisin acerca de cuantas pruebas son suficientes y cuando la fase de pruebas se puede finalizar. Las medidas concienzudas, como las conseguidas mediante cobertura de cdigo o completitud funcional y la estimacin de densidad de errores o de confiabilidad operativa, proporcionan un suporte muy til, pero no son suficientes por s mismas. Esta decisin tambin incluye consideraciones acerca del coste y los riesgos en que se incurrir debido a los fallos potenciales que an queden, en vez del coste que conllevara continuar realizando pruebas. Vase tambin el punto 1.2.1 Criterios de seleccin de pruebas/Criterios de idoneidad de pruebas. 5.1.8 Reutilizacin de pruebas y patrones de pruebas [Bei90:c13s5]

Con el objetivo de realizar pruebas o mantenimiento de una forma organizada y efectiva respecto al coste, los medios usados para realizar pruebas en cada parte del

software se deberan reutilizar de una forma sistemtica. Dicho repositorio de material de pruebas debe estar bajo el control de un software de gestin de configuraciones, de forma que los cambios en los requerimientos del software o el diseo queden reflejados en cambios en el alcance de las pruebas realizadas. Las soluciones adoptadas para realizar pruebas en determinados tipos de aplicaciones bajo determinadas circunstancias, teniendo en cuenta los motivos detrs de las decisiones que se han tomado, forman un patrn de pruebas que se puede documentar y ser reutilizado en proyectos similares. 5.2 Actividades de las pruebas En este punto, se ver una pequea introduccin a las actividades del software; gestionar con xito las actividades relacionada con las pruebas, como la siguiente descripcin da a entender, depende en gran medida del proceso de Gestin de Configuracin del Software. 5.2.1 Planificacin [Kan99:c12; Per95:c19; Pfl01:c8s7.6] (IEEE829-98:s4; IEEE1008-87:s1-s3)

durante las pruebas se deberan realizar y documentar de una forma lo suficientemente clara, que cualquier otra persona debera ser capaz de reproducir los resultados. Por tanto, las pruebas deben realizarse de acuerdo con los procedimientos documentados y usando una versin claramente definida del software que se est comprobando. 5.2.5 Evaluacin de los resultados de las pruebas [Per95:c20,c21] (Pos96:p18-20, p131-138)

Los resultados de las pruebas se deben evaluar para determinar si las pruebas han sido satisfactorias o no. En la mayora de los casos, satisfactorias significa que el software se ha ejecutado como se esperaba y no ha tenido ningn resultado inesperado importante. No todos los resultados inesperados son necesariamente errores, ya que se podra considerar que algunos son simple ruido. Antes de que se pueda arreglar un error, se necesita realizar un anlisis y algn trabajo de depuracin para identificarlo, aislarlo y describirlo. Cuando los resultados de las pruebas son particularmente importantes, puede que se convoque una revisin formal para evaluarlas. 5.2.6 Notificacin de problemas/Diario de pruebas [Kan99:c5; Per95:c20] (IEEE829-98:s9-s10)

Como cualquier otro aspecto de la gestin de proyectos, las actividades de las pruebas se deben planificar. Algunos aspectos clave de la planificacin de las pruebas incluyen la coordinacin de personal, la gestin de instalaciones y equipos disponibles (que pueden incluir soportes magnticos, planes de pruebas y procedimientos) y planificar en caso de posibles situaciones no deseables. Si se mantiene ms de una lnea base del software al mismo tiempo, una importante consideracin de planificacin es el tiempo y esfuerzo necesario para asegurarse de que se ha usado la configuracin correcta para establecer el entorno de pruebas. 5.2.2 Generacin de casos de pruebas [Kan99:c7] (Pos96:c2; IEEE1008-87:s4, s5)

La generacin de caos de pruebas se basa en el nivel de pruebas que se vaya a realizar y en las tcnicas de pruebas a usar. Los casos de pruebas deberan estar bajo el control de un software de gestin de configuraciones e incluir los resultados esperados para cada prueba. 5.2.3 Desarrollo en el entorno de pruebas [Kan99:c11]

Las actividades de las pruebas se pueden aadir a un diario de pruebas para identificar cuando una prueba se ha ejecutado, quien la ha realizado, que configuracin del software se ha utilizado y cualquier otra informacin relevante de identificacin. Resultados inesperados o incorrectos se pueden aadir a un sistema de notificacin de problemas, cuyos datos sern la base para procesos de depuracin posteriormente y para arreglar los errores que causaron problemas durante las pruebas. Las anomalas no clasificadas como errores tambin se podran documentar, en caso de que ms tarde resulte que producen problemas ms serios de lo que se pens originalmente. Los informes de pruebas tambin son una entrada para los procesos de requerimientos de cambi de gestin (vase el KA de la Gestin de la Configuracin del Software, punto 3, Control de la configuracin del software) 5.2.7 Seguimiento de defectos [Kan99:c6]

El entorno usado para las pruebas debera ser compatible con las herramientas de ingeniera de software. Debera facilitar el desarrollo y control de casos de pruebas y la anotacin y recuperacin de los resultados esperados, los scripts y otros materiales de pruebas. 5.2.4 Ejecucin [Bei90:c13; Kan99:c11] (IEEE1008-87:s6, s7)

La ejecucin de las pruebas deberan incluir un principio bsico de experimentacin cientfica: todos los pasos

Los fallos observados durante las pruebas son, en la mayora de los casos, debidos a errores o defectos en el software. Dichos defectos se pueden analizar para determinar cuando fueron introducidos en el software, que clase de error produjo que se aparecieran (por ejemplo requerimientos definidos pobremente, declaraciones incorrectas de variables, fallo de memoria o errores de programacin) y cuando deberan haber sido observados en el software por primera vez. La informacin del seguimiento de defectos se usa para determinar qu aspectos de la ingeniera del software necesitan mejorase y la efectividad de anlisis y pruebas anteriores.

MATRIZ DE TEMAS VS. MATERIAL DE REFERENCIA

[Bec02] 1. Fundamentos de las Pruebas Software 1.1Terminologa relacionada


Definiciones de pruebas y terminologa Errores Vs. Fallos

[Bei09]

[Jor02]

[Kan99]

[Kan01]

[Lyu96]

[Per95]

[Pfl01]

[Zhu97]

c1

c2 c2

c2s2.2 c2s2.2 c1 c8

1.2 Cuestiones Clave


Criterios de seleccin de Pruebas/ Criterios de idoneidad de Pruebas Efectividad de las Pruebas/ Objetivos de las Pruebas Realizar pruebas para la identificacin de defectos El problema del orculo Limitaciones tericas y prcticas de las pruebas El problema de los caminos no alcanzables Posibilidad de hacer pruebas

c8s7.3 c1s1.4 c1 c1 c2 c3 c3, c13 c1 c21

s1.1

1.3 Relacin de las pruebas con otras actividades 2. Niveles de Pruebas 2.1El objeto de la prueba
Pruebas de Unidad Pruebas de Integracin Pruebas del sistema

c1 c1

c13 c17 c13, c14 c15 c8 c10 c9 c13 c7 c7 c7 c11, c12 c17 c17 c8

c8 c8s7.3 c8s7.4 c9 c9s8.3 c9s8.5 c9s8.6

2.2 Objetivos de las Pruebas


Pruebas de aceptacin/ calificacin Pruebas de Instalacin Pruebas Alfa y Beta Pruebas de conformidad/Pruebas funcionales/Pruebas de correccin Materializacin de la confiabilidad y evaluacin Pruebas de Regresin Pruebas de Rendimiento Pruebas de Desgaste Pruebas de Continuidad Pruebas de Recuperacin Pruebas de Configuracin Pruebas de Facilidad de Uso Desarrollo dirigido por Pruebas

c9s8.4 c9s8.1 c9s8.3 c9s8.3

c17

c9s8.3 c9s8.3

c8 III

c8

c9s8.3

[Bec02] 3. Tcnicas de Pruebas 3.1Pruebas Basadas en la Intuicin y Experiencia


Pruebas ad hoc Pruebas por Exploracin

[Bei09]

[Jor02]

[Kan99]

[Kan01]

[Lyu96]

[Per95]

[Pfl01]

[Zhu97]

c1 c3

3.2 Basadas en la Especificacin


Particiones de Equivalencia Anlisis de los Valores Lmite Tablas de Decisin Basadas en Mquinas de Estado Finito Basadas en las especificaciones formales Pruebas aleatorias

c7 c6 c10s3 c11 c8

c7 c7 c9

s2.2 c13 c7

3.3 Basadas en el cdigo


Criterio basado en el Flujo de Control Criterio basado en el Flujo de Datos Modelos de referencia para pruebas basadas en cdigo

c3 c5 c3

c10

c8

c5

3.4 Basadas en errores


Conjeturar errores Pruebas por mutacin

c7 c17 s3.2, s3.3

3.5 Basadas en el uso


Perfil operativo Pruebas Orientadas a la Confiabilidad del Software

c15

c5 c6

c9

3.6 Basadas en la Naturaleza de la Aplicacin


Pruebas Orientadas a Objetos Basadas en Componentes Pruebas para Internet Pruebas para GUI Pruebas para Programas Concurrentes Pruebas de conformidad de Protocolos Pruebas para Sistemas de Tiempo Real Pruebas para Sistemas de Seguridad Crtica

c17

c8s7.5

c20

3.7 Seleccionando y combinando tcnicas


Funcional y Estructuralmente Deterministas Vs. Aleatorias

c17 c1s2.2 c1, c11s11.3

[Bec02] 4. Medidas de las Pruebas 4.1 Evaluacin de un programa


Medidas para ayudar en la planificacin y diseo de pruebas de programas Tipos de errores, clasificacin y Estadsticas Densidad de fallos Vida de las pruebas Modelos de crecimiento de la Confiabilidad

[Bei09]

[Jor02]

[Kan99]

[Kan01]

[Lyu96]

[Per95]

[Pfl01]

[Zhu97]

c7s4.2 c2

c9 c1 c20 c9 c7 c9 c8

4.2 Evaluacin de las pruebas realizadas


Medidas de la cobertura/completitud Introduccin de errores Puntuacin de la mutacin Comparacin y efectividad relativa de las tcnicas

c9

c8 c8 s3.2, s3.3

c8, c11

c17

s5

5. El proceso de las pruebas 5.1 Consideraciones prcticas


Actitudes y programacin egoless Guas para las pruebas Gestin del proceso de pruebas Documentacin y productos de las pruebas Equipo de Pruebas Interno Vs. Equipo Independiente Estimacin Coste/Esfuerzo y otras Medidas del Proceso Finalizacin Reutilizacin de pruebas y patrones de pruebas

c13s3.2 III c5 c1-c4 c13s5 c13s2.2, c1s2.3 c12 c15 c19 c4 c4, c21 c2s2.4 c13s5 c2

c8

c9 c9s8.8 c9

5.2 Actividades de Pruebas


Planificacin Generacin de casos de Prueba Desarrollo del entorno de Pruebas Ejecucin Evaluacin de los resultados Notificacin de Problemas/ Diario de pruebas Seguimiento de los defectos

c12 c7 c11 c13 c11

c19

c87s7.6

c20, c21 c5 c6 c20

REFERENCIAS RECOMENDADAS GESTIN DEL SOFTWARE

PARA

LA

[Kan01] C. Kaner, J. Bach, and B. Pettichord, Lessons Learned in Software Testing, Wiley Computer Publishing, 2001. [Lyu96] M.R. Lyu, Handbook of Software Reliability Engineering, Mc-Graw-Hill/IEEE, 1996, Chap. 2s2.2, 5-7. [Per95] W. Perry, Effective Methods for Software Testing, John Wiley & Sons, 1995, Chap. 1-4, 9, 10-12, 17, 19-21. [Pfl01] S. L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001, Chap. 8, 9. [Zhu97] H. Zhu, P.A.V. Hall and J.H.R. May, Software Unit Test Coverage and Adequacy, ACM Computing Surveys, vol. 29, iss. 4 (Sections 1, 2.2, 3.2, 3.3), Dec.

[Bec02] K. Beck, Test-Driven Development by Example, Addison-Wesley, 2002. [Bei90] B. Beizer, Software Testing Techniques, International Thomson Press, 1990, Chap. 1-3, 5, 7s4, 10s3, 11, 13. [Jor02] P. C. Jorgensen, Software Testing: A Craftsman's Approach, second edition, CRC Press, 2004, Chap. 2, 5-10, 12-15, 17, 20. [Kan99] C. Kaner, J. Falk, and H.Q. Nguyen, Testing Computer Software, second ed., John Wiley & Sons, 1999, Chaps. 1, 2, 5-8, 11-13, 15.

1997, pp. 366-427.

APNDICE A. LISTA DE LECTURAS


ADICIONALES

(Bac90) R. Bache and M. Mllerburg, Measures of Testability as a Basis for Quality Assurance, Software Engineering Journal, vol. 5, March 1990, pp. 86-92. (Bei90) B. Beizer, Software Testing Techniques, International Thomson Press, second ed., 1990. (Ber91) G. Bernot, M.C. Gaudel and B. Marre, Software Testing Based On Formal Specifications: a Theory and a Tool, Software Engineering Journal, Nov. 1991, pp.387-405. (Ber96) A. Bertolino and M. Marr, How Many Paths Are Needed for Branch Testing? Journal of Systems and Software, vol. 35, iss. 2, 1996, pp. 95-106. (Ber96a) A. Bertolino and L. Strigini, On the Use of Testability Measures for Dependability Assessment, IEEE Transactions on Software Engineering, vol. 22, iss.2, Feb. 1996, pp. 97-108. (Bin00) R.V. Binder, Testing Object-Oriented Systems Models, Patterns, and Tools, Addison-Wesley, 2000. (Boc94) G.V. Bochmann and A. Petrenko, Protocol Testing: Review of Methods and Relevance for Software Testing, presented at ACM Proc. Intl Symp. on Software Testing and Analysis (ISSTA 94), Seattle, Wash., 1994. (Car91) R.H. Carver and K.C. Tai, Replay and Testing for Concurrent Programs, IEEE Software, March 1991, pp. 66-74. (Dic93) J. Dick and A. Faivre, Automating the Generation and Sequencing of Test Cases from ModelBased Specifications, presented at FME 93: Industrial-Strength Formal Methods, LNCS 670, Springer-Verlag, 1993. (Fran93) P. Frankl and E. Weyuker, A Formal Anlisis of the Fault Detecting Ability of Testing Methods, IEEE Transactions on Software Engineering, vol. 19, iss. 3, March 1993, p. 202. (Fran98) P. Frankl, D. Hamlet, B. Littlewood, and L. Strigini, Evaluating Testing Methods by Delivered Reliability, IEEE Transactions on Software Engineering, vol. 24, iss. 8, August 1998, pp. 586-601. (Ham92) D. Hamlet, Are We Testing for True Reliability? IEEE Software, July 1992, pp. 21-27. (Hor95) H. Horcher and J. Peleska, Using Formal Specifications to Support Software Testing, Software Quality Journal, vol. 4, 1995, pp. 309-327. (How76) W. E. Howden, Reliability of the Path Analysis Testing Strategy, IEEE Transactions on Software Engineering, vol. 2, iss. 3, Sept. 1976, pp. 208215. (Jor02) P.C. Jorgensen, Software Testing: A Craftsmans Approach, second ed., CRC Press, 2004.

(Kan99) C. Kaner, J. Falk, and H.Q. Nguyen, Testing Computer Software, second ed., John Wiley & Sons, 1999. (Lyu96) M.R. Lyu, Handbook of Software Reliability Engineering, Mc-Graw-Hill/IEEE, 1996. (Mor90) L.J. Morell, A Theory of Fault-Based Testing, IEEE Transactions on Software Engineering, vol. 16, iss. 8, August 1990, pp. 844-857. (Ost88) T.J. Ostrand and M.J. Balcer, The CategoryPartition Method for Specifying and Generating Functional Tests, Communications of the ACM, vol. 31, iss. 3, June 1988, pp. 676-686. (Ost98) T. Ostrand, A. Anodide, H. Foster, and T. Goradia, A Visual Test Development Environment for GUI Systems, presented at ACM Proc. Intl Symp. On Software Testing and Analysis (ISSTA 98), Clearwater Beach, Florida, 1998. (Per95) W. Perry, Effective Methods for Software Testing, John Wiley & Sons, 1995. (Pfl01) S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice-Hall, 2001, Chap. 8, 9. (Pos96) R.M. Poston, Automating Specification-Based Software Testing, IEEE, 1996. (Rot96) G. Rothermel and M.J. Harrold, Analyzing Regression Test Selection Techniques, IEEE Transactions on Software Engineering, vol. 22, iss. 8, Aug. 1996, p. 529. (Sch94) W. Schtz, Fundamental Issues in Testing Distributed Real-Time Systems, Real-Time Systems Journal, vol. 7, iss. 2, Sept. 1994, pp. 129-157. (Voa95) J.M. Voas and K.W. Miller, Software Testability: The New Verification, IEEE Software, May 1995, pp. 17-28. (Wak99) S. Wakid, D.R. Kuhn, and D.R. Wallace, Toward Credible IT Testing and Certification, IEEE Software, July-Aug. 1999, pp. 39-47. (Wey82) E.J. Weyuker, On Testing Non-testable Programs, The Computer Journal, vol. 25, iss. 4, 1982, pp. 465-470. (Wey83) E.J. Weyuker, Assessing Test Data Adequacy through Program Inference, ACM Trans. On Programming Languages and Systems, vol. 5, iss. 4, October 1983, pp. 641-655. (Wey91) E.J. Weyuker, S.N. Weiss, and D. Hamlet, Comparison of Program Test Strategies, presented at Proc. Symp. on Testing, Analysis and Verification (TAV 4), Victoria, British Columbia, 1991. (Zhu97) H. Zhu, P.A.V. Hall, and J.H.R. May, Software Unit Test Coverage and Adequacy, ACM Computing Surveys, vol. 29, iss. 4, Dec. 1997, pp. 366427.

APNDICE B. LISTA DE ESTNDARES


(IEEE610.12-90) IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. (IEEE829-98) IEEE Std 829-1998, Standard for Software Test Documentation, IEEE, 1998. (IEEE982.1-88) IEEE Std 982.1-1988, IEEE Standard Dictionary of Measures to Produce Reliable Software, IEEE, 1988. (IEEE1008-87) IEEE Std 1008-1987 (R2003), IEEE Standard for Software Unit Testing, IEEE, 1987. (IEEE1044-93) IEEE Std 1044-1993 (R2002), IEEE Standard for the Classification of Software Anomalies, IEEE, 1993. (IEEE1228-94) IEEE Std 1228-1994, Standard for Software Safety Plans, IEEE, 1994. (IEEE12207.0-96) IEEE/EIA 12207.0-1996 // ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996.

CAPITULO 6 MANTENIMIENTO DEL SOFTWARE


ACRNIMOS
CMMI Capability Maturity Model Integration ICSM International Conference on Software Maintenance SCM Software Configuration Management SQA Software Quality Assurance V&V Verification and Validation Y2K Year 2000 logstica para actividades de transicin. Las actividades de postentrega incluyen la modificacin de software, el entrenamiento, y el funcionamiento del help desk. El Mantenimiento de Software KA est relacionado con otros aspectos de ingeniera de software. Por lo tanto, esta descripcin KA est vinculada a otros captulos de la Gua.
DESGLOSE DE PUNTOS DEL MANTENIMIENTO DEL SOFTWARE

INTRODUCCIN:
Los esfuerzos de desarrollo de software dan como resultado la entrega de un producto de software que satisfaga las exigencias del usuario. Como consecuencia el producto de software debe cambiarse o desarrollarse. Una vez en la operacin, los defectos son destapados y emergen las nuevas exigencias del usuario. La fase de mantenimiento del ciclo de vida comienza despus de un perodo de garanta pero las actividades de mantenimiento ocurren mucho antes. El mantenimiento de software es una parte del ciclo de vida de software. Sin embargo, histricamente, no ha recibido el mismo grado de atencin que otras fases del ciclo de vida. Histricamente, el desarrollo de software ha tenido un perfil mucho ms alto que el mantenimiento de software en la mayor parte de organizaciones. Esto ha cambiado ahora, las organizaciones se esfuerzan en exprimir al mximo su inversin de desarrollo de software por lo que desean que el software funcione tanto tiempo como sea posible. Las preocupaciones sobre el efecto 2000, enfoc una atencin significativa en la fase de mantenimiento de software, y el paradigma Open Source ha atrado la atencin a la cuestin de mantener software desarrollado por otros. En la Gua, el mantenimiento de software es definido como la totalidad de actividades requeridas para proporcionar el apoyo rentable al software. Las actividades son realizadas durante la etapa de preentrega, as como durante la etapa de postentrega. Las actividades de preentrega incluyen la planificacin para operaciones de postentrega, para la capacidad de mantenimiento, y para la determinacin de

El desglose de los puntos del Mantenimiento de Software KA se muestra en la Figura 1. 1. Fundamentos de mantenimiento de software Esta primera seccin presenta los conceptos y la terminologa que forman una base subyacente a la comprensin de la funcin y el alcance de mantenimiento de software. Los puntos proporcionan definiciones y enfatizan por qu existe la necesidad de mantenimiento. Las categoras del mantenimiento de software son crticas a la comprensin de su significado subyacente. 1.1. Definiciones y Terminologa. [IEEE1219-98:s3.1.12; IEEE12207.096:s3.1,s5.5;ISO14764-99:s6.1] El Mantenimiento de Software se define en el estndar IEEE para Mantenimiento de Software, IEEE 1219, como la modificacin de un producto de software despus de su entrega para corregir los fallos, mejorar el rendimiento u otros atributos, o adaptar el producto a un entorno modificado. La norma tambin se ocupa de las actividades de mantenimiento antes de la entrega del producto software, pero slo en un apndice del estndar. El estndar IEEE / EIA 12207 para el ciclo de vida presenta esencialmente al mantenimiento como uno de los primeros procesos del ciclo de vida y describe el mantenimiento como el proceso de modificacin del cdigo y la documentacin asociada debido a un problema o la necesidad de mejora de un producto de software. El objetivo es modificar el producto software al mismo tiempo que preservar su integridad. ISO / IEC 14764, estndar internacional para el mantenimiento del

software, define el mantenimiento del software en los mismos trminos que IEEE / EIA y 12207. Hace hincapi en la entrega previa de los aspectos de mantenimiento, planificacin, por ejemplo. 1.2. La naturaleza de Mantenimiento [Pfl01:c11s11.2] El mantenimiento de Software sostiene el producto de software en todas partes de su ciclo de vida operacional. La solicitud de modificacin son registradas y rastreadas, el impacto de cambios propuestos es determinado, el cdigo y otros artefactos de software son modificados, las pruebas son conducidas, y una nueva versin del producto de software es liberada. Proporcionan tambin, entrenamiento y el apoyo a los usuarios. Pfleeger [Pfl01] declara que " el mantenimiento tiene un ms amplio alcance para rastrear y controlar que el desarrollo. Un mantenedor es definido por el

IEEE / EIA 12207 como una organizacin que realiza actividades de mantenimiento [IEEE12207.0-96]. En este KA, el trmino a veces se refiere a las personas que realizan esas actividades, contrastndolos con los desarrolladores. IEEE / EIA 12207 identifica las actividades principales de Mantenimiento de software como: proceso de implementacin; problema y anlisis de modificacin; implementacin de la modificacin; mantenimiento, revisin y aceptacin; migracin, y retirada. Estas actividades se examinan en el punto 3.2 de Actividades de Mantenimiento. Los mantenedores pueden aprender del conocimiento del desarrollo del software. Ponerse en contacto con los desarrolladores y la temprana participacin por el mantenedor ayuda a reducir el esfuerzo de mantenimiento.

Mantenimiento del Software

Fundamentos de Mantenimiento del Software

Problemas clave en Mantenimiento de Software

Proceso de Mantenimiento

Tcnicas de Mantenimiento

Definicin y Conceptos

Cuestiones Tcnicas Cuestiones de Admnistracin

Proceso de Mantenimiento

Comprensin del programa

Naturaleza del Mantenimiento Necesidad de Mantenimiento

Reingeniera Actividades de Mantenimiento Ingeniera Inversa

Distribucin de los componentes Estimacin de Coste de Mantenimiento

Mayora de Costes de mantenimiento.

Evolucin del Software

Medicin del Mantenimiento del Software

Categoras de Mantenimiento

Figura 1 Desglose de los temas para Mantenimiento de Software KA

En algunos casos, el ingeniero de software no puede ser alcanzado o ha seguido adelante con otras tareas, que crean un desafo adicional para el mantenedor. El mantenimiento debe tomar los productos desarrollados, el cdigo, o la documentacin, por ejemplo, y apoyarlos inmediatamente y desarrollar/mantenerlos cada vez ms sobre el ciclo de vida de software. 1.3. Necesidad de Mantenimiento [Pfl01:c11s11.2; Pig97: C2s2.3; Tak97:c1] El Mantenimiento es necesario para asegurar que el software sigue satisfaciendo las exigencias del usuario. El mantenimiento es aplicable al software desarrollado usando cualquier modelo de ciclo de vida de software (por ejemplo, en espiral). El sistema se cambia debido a acciones de software correctivas y no correctivas. El mantenimiento debe ser realizado para: Corregir defectos Mejorar el diseo Llevar a la prctica las mejoras El interfaz con otros sistemas Adapta programas con diferente hardware diferente, software, caractersticas del sistema, e instalaciones de telecomunicaciones para que puedan ser usados Emigra software Retira el software Las actividades del mantenedor comprenden cuatro caractersticas claves, segn Pfleeger [Pfl01]: Mantenimiento de control de las funciones cotidianas del software Mantenimiento de control de modificacin de software Perfeccionando funciones existentes Impedir la degradacin del funcionamiento de software a niveles inaceptables 1.4. Costes de Mantenimiento. [Abr93 :63-90; Pfl01: c11s11.3; Pig97: c3; Pre01: c30s2.1, c30s2.2] El mantenimiento consume una parte importante de los recursos financieros del ciclo de vida del software. Una percepcin comn del mantenimiento del software es que se limita a parchear los fallos. Sin embargo, los estudios y las encuestas a travs de los aos han indicado que la mayora, ms del 80%, del esfuerzo de mantenimiento del software se utiliza para acciones no correctivas. [Abr93, Pig97, Pre01] Jones (Jon91) describe el camino en cual gerentes de mantenimiento de software a menudo incluyen grupos de mejoras y correcciones en sus informes de gestin. Esta inclusin de solicitudes de mejoramiento con informes de problemas contribuye a algunas de las ideas errneas en relacin con el elevado costo de

correcciones. La comprensin de las categoras de mantenimiento del software ayuda a comprender la estructura de costes del mantenimiento del software. Asimismo, la comprensin de los factores que influyen en el mantenimiento de un sistema puede ayudar a contener los costos. Pfleeger [Pfl01] presenta algunos de los factores tcnicos y no tcnicos que afectan a los gastos de mantenimiento del software, de la siguiente manera: El tipo de aplicacin La novedad del Software La disponibilidad del personal La vida til de Software Caractersticas de Hardware La Calidad de diseo del software, construccin, documentacin y pruebas

1.5. Evolucin de Software [Art88:c1s1.0, s1.1, s1.2, c11s1.1, s1.2; Leh97:108124], (Bel72) Lehman abord por primera vez el mantenimiento del software y la evolucin de los sistemas en 1969. Durante un perodo de veinte aos, sus investigaciones condujeron a la formulacin de ocho "Leyes de Evolucin. [Leh97] Las principales conclusiones incluyen el hecho de que el mantenimiento es una novedad evolutiva y que ayuda a decisiones de mantenimiento entendiendo lo que le pasa a los sistemas (y el software) con el tiempo. Otros declaran que el mantenimiento es un desarrollo continuado, pero hay una entrada extra- la existencia de software grande que nunca se completa y sigue desarrollndose. Como esto se desarrolla, se hace ms complejo a no ser que alguna accin sea tomada para reducir esta complejidad. Ya que el software demuestra el comportamiento regular y las tendencias, estos pueden ser medidos. Se han realizado tentativas de desarrollar modelos profticos para estimar el esfuerzo de mantenimiento, como resultado se han desarrollado instrumentos de direccin. [Art88], (Bel72).

1.6. Las categoras de Mantenimiento [Art88:c1s1.2; Lie78; Dor02:v1c9s1.5; ieee121998:s3.1.1, s3.1.2, s3.1.7, 1.7 un; iso14764-99:s4.1, s4.3, s4.10, s4.11, s6.2; Pig97:c2s2.3] Lientz y Swanson al principio definieron tres categoras de mantenimiento: correctivo, adaptativo, y perfectivo. [Lie78; IEEE1219-98] Esta definicin ms tarde fue puesta al da en el Estndar para el Mantenimiento de Software de la ingeniera de Software, ISO/IEC 14764 para incluir cuatro categoras, as:

Mantenimiento Correctivo: Modificacin reactiva de un producto de software realizado despus de entrega para corregir problemas descubiertos, Mantenimiento Adaptativo: Modificacin de un producto de software realizado despus de entrega para guardar (mantener) un producto de software utilizable en un ambiente cambiado o que se cambia. Mantenimiento: Perfectivo: Modificacin de un software despus de la entrega de los productos para mejorar el rendimiento o su mantenibilidad Mantenimiento preventivo: Modificacin de un software despus de la entrega de productos para detectar y corregir fallos latentes en el producto de software antes de que se conviertan en fallos reales.

2.1.1.

Entendimiento limitado. [Dor02:v1c9s1.11.4; Pfl01:c11s11.3; Tak97:c3] El entendimiento limitado se refiere a como rpidamente un ingeniero de software puede entender donde hacer un cambio o una correccin en el software que este individuo no desarroll. La investigacin indica que aproximadamente el 40 % al 60 % del esfuerzo de mantenimiento est dedicado al entendimiento del software para ser modificado. As, la comprensin del software es de gran inters por parte de los ingenieros de software. La comprensin es ms difcil en la representacin orientada por texto, en el cdigo original, por ejemplo, donde es a menudo difcil de remontar la evolucin de software por sus liberaciones/versiones si los cambios no son documentados y cuando los desarrolladores no estn disponibles para explicarlo, que es a menudo el caso. 2.1.2. Pruebas [Art88:c9; Pfl01:c11s11.3]

ISO/IEC 14764 clasifica el mantenimiento adaptativo y perfectivo como mejoras. Agrupa el mantenimiento correctivo y preventivo en una categora de correccin, como se muestra en la tabla 1. El mantenimiento preventivo, la categora ms reciente, a menudo es realizado sobre productos de software donde la seguridad es crtica.
Correction Enhancement Correccin Proactiva Preventivo Reactiva Correctivo

Mejoras Perfectivo Adaptativo

Tabla 1: Categoras del Mantenimiento del Software

2.

Los Problemas claves en el Mantenimiento de Software

El coste de repetir pruebas sobre un pedazo principal de software puede ser significativo en trminos de tiempo y dinero. Las pruebas de regresin, las nuevas pruebas selectivas de un software o el componente para verificar que las modificaciones no han causado efectos no planeados, son importantes para el mantenimiento. Existe tambin el desafo de coordinar pruebas cuando los miembros del equipo de mantenimiento trabajan sobre problemas diferentes al mismo tiempo. [Plf01] Cuando el software realiza funciones crticas, puede ser imposible llevarlo fuera de lnea para probar. Las pruebas de software KA proporciona la informacin adicional y se refiere a dicha materia en su punto 2.2.6 pruebas de Regresin. 2.1.3. Anlisis de impacto [Art88:c3; Dor02:v1c9s1.10; Pfl01: C11s11.5]

Un nmero de problemas claves deben ser tratados para asegurar el mantenimiento eficaz de software. Es importante que entienda que el mantenimiento del software provee desafos de direccin para los ingenieros del software. La tentativa de encontrar un defecto en las 500K lneas de cdigo del software que el ingeniero de software no desarroll es un buen ejemplo. Asimismo competir con los desarrolladores del software por los recursos es una batalla constante. La planificacin para una futura liberacin, cifrando la siguiente liberacin y enviando parches de la emergencia para la liberacin corriente, tambin crea un desafo. La seccin siguiente presenta tcnicas y cuestiones de direccin relacionadas con el mantenimiento del software. Han sido agrupadas bajo los ttulos siguientes: Cuestiones Tcnicas Cuestiones de Direccin Coste estimado y Medidas 2.1. Cuestiones Tcnicas

El anlisis de Impacto describe como conducir, con rentabilidad, un anlisis completo del impacto de un cambio del software existente. Los mantenedores deben poseer un conocimiento ntimo de la estructura del software y el contenido [Pfl01]. Usan aquel conocimiento para realizar el anlisis de impacto, que identifica todos los sistemas y los productos de software afectados por un cambio de software solicitado y se desarrolla una estimacin de los recursos para llevar a cabo el cambio. [Art88] Adems, el riesgo de hacer el cambio es determinado. La peticin de cambio, a veces llama a una peticin de modificacin (MR) y a menudo llama un informe del problema (PR), primero debe ser analizada y traducida en trminos de software. Es realizado despus de que una peticin de cambio entra en el proceso de direccin de configuracin de software. Arthur [Art88] declara que los objetivos de anlisis de impacto son: La determinacin del alcance de un cambio para planificar y poner en prctica el trabajo

El desarrollo de las estimaciones exactas de recursos que tuvo que realizar el trabajo El anlisis del perdidas/beneficio del cambio solicitado La comunicacin de la complejidad de un cambio dado

La severidad de un problema a menudo se usa para decidir cmo y cuando un problema ser fijado. El ingeniero del software entonces identifica los componentes afectados. Proporcionando varias soluciones potenciales y luego una recomendacin hecha en cuanto al mejor curso de accin. El software diseado con la capacidad de mantenimiento en mente facilita enormemente el anlisis de impacto. Para ms informacin en la Direccin de Configuracin de Software KA. 2.1.4. Capacidad de mantenimiento [ISO1476499:s6.8s6.8.1; Pfl01: C9s9.4; Pig97:c16]

El nfasis principal debe entregar a tiempo y dentro del presupuesto para encontrar necesidades de usuario. Al contrario el mantenimiento de software a menudo tiene el objetivo de ampliar la vida de software tanto como sea posible. Adems, pueden conducirlo la necesidad de encontrar la demanda de usuario de actualizaciones de software y mejoras. En ambos casos, el rendimiento de la inversin es mucho menos claro, de modo que la opinin en el nivel de direccin sea a menudo de una actividad principal que consume recursos significativos sin la ventaja clara cuantificable para la organizacin. " 2.2.2. Proveer de personal [Dek92:10-17; Dor02:v1c9s1.6; Par86: C4s8c4s11] (Lie81) El proveer de personal se refiere a como atraer y mantener el personal de mantenimiento de software. El mantenimiento no es visto a menudo como un trabajo encantador. Deklava proporciona una lista de problemas relacionados con el personal, basados en datos de revisin. [Dek92] Por consiguiente, el personal de mantenimiento de software con frecuencia es visto como " ciudadanos de segunda clase " (Lie81) y la moral por lo tanto se ve afectada. [Dor02]

Cmo uno promueve y lleva a cabo cuestiones de capacidad de mantenimiento durante el desarrollo? El IEEE [IEEE610.12-90] define la capacidad de mantenimiento como la facilidad por la cual el software puede ser mantenido, mejorado, adaptado, o corregido para satisfacer exigencias especificadas. ISO/IEC define la capacidad de mantenimiento como una de las caractersticas de calidad (ISO9126-01). Las subcaractersticas de capacidad de mantenimiento deben ser especificadas, repasadas, y controladas durante las actividades de desarrollo de software para reducir costes de mantenimiento. Si esto se hace satisfactoriamente, la capacidad de mantenimiento del software se mejorar. Esto es a menudo difcil de alcanzar porque las subcaractersticas de capacidad de mantenimiento no son un foco importante durante el proceso de desarrollo de software. Los desarrolladores estn preocupados por muchas otras cosas y a menudo desatienden las exigencias del mantenedor. Esto a su modo, y a menudo hace que pueda causar una carencia de documentacin de sistema, que es una causa principal de dificultades en la comprensin de programa y el anlisis de impacto. Tambin se observa que la presencia de los procesos, tcnicas, e instrumentos ayudan a mejorar la capacidad de mantenimiento de un sistema.

2.2.3. Proceso [Pau93; Ben00:c6sb; Dor02:v1c9s1.3] El proceso de Software es un juego de actividades, mtodos, prcticas, y las transformaciones que pueblan el empleo para desarrollar y mantener el software y los productos asociados. [Pau93] En el nivel de proceso, las actividades de mantenimiento de software comparten mucho en comn con el desarrollo de software (por ejemplo, la direccin de configuracin de software es una actividad crucial en ambos). [Ben00] el Mantenimiento tambin requiere varias actividades que no son encontradas en el desarrollo de software (mirar la seccin 3.2 sobre actividades nicas para detalles). Estas actividades presentan desafos a la direccin. [Dor02]

2.2.4. Los aspectos de organizacin de mantenimiento [Pfl01:c12s12.1-c12s12.3; Par86:c4s7; Pig97:c2s2.5; Tak97:c8] Los aspectos de organizacin describen como identificar cual organizacin y/o la funcin que sern responsables del mantenimiento de software. El equipo que desarrolla el software no necesariamente est asignado a mantener el software una vez que es operacional. En la decisin donde la funcin de mantenimiento de software ser asignada, las organizaciones de ingeniera del software, por ejemplo, pueden quedarse con el desarrollador original o ir a un equipo distinto (o mantenedor). A menudo, la opcin mantenedor es

2.2. Cuestiones de direccin 2.2.1. Alineacin con objetivos de organizacin [Ben00:c6sa; Dor02:v1c9s1.6] Los objetivos de organizacin describen como demostrar el rendimiento de la inversin de actividades de mantenimiento de software. Bennett [Ben00] declara que " el desarrollo de software inicial es por lo general a base de proyecto, con una escala de tiempo definida y el presupuesto.

elegida para asegurar que se desarrolla el software para satisfacer necesidades de usuario. Ya que hay muchos pros y los contras a cada una de estas opciones [Par86, Pig97], la decisin debera ser hecha en una base de caso por caso. Es importante que la delegacin o la asignacin de la responsabilidad de mantenimiento sea a un grupo solo o a una persona [Pig97], independientemente de la estructura de la organizacin. 2.2.5. Externalizacin [Dor02:v1c9s1.7; (Car94;McC02)

software. [Boe81, Ben00] la importancia es que los datos de proyectos pasados son necesarios en el uso de los modelos. Jones [Jon98] habla de todos los aspectos sobre estimar gastos, incluyendo puntos de funcin (IEEE14143.1-00), y proporciona un captulo detallado sobre la valoracin de mantenimiento. 2.3.3. Experiencia [ISO14764-00:s7, s7.2, s7.2.1, s7.2.4; Pig97:c8;Sta94] La Experiencia, en forma de juicio de expertos (usando la tcnica Delphi, por ejemplo), analogas, y una estructura de interrupcin de trabajo, deberan ser usados para aumentar los datos de los modelos paramtricos. Claramente el mejor acercamiento a la valoracin de mantenimiento es el de combinar datos empricos y experiencia. Deberan proporcionar estos datos como consecuencia del uso de un programa de medida.

Pig97:c9s9.1,

s9.2],

La externalizacin del mantenimiento forma parte de una gran industria. Las grandes corporaciones externalizan las carteras enteras de sistemas de software, incluyendo el mantenimiento de software. Ms a menudo, la opcin de externalizacin es elegida para software menos crtico, como las empresas no estn dispuestas a perder el control del software usado en su negocio esencial. Carey (Car94) relata que unos externalizarn slo si ellos pueden encontrar los modos de mantener el control estratgico. Sin embargo, las medidas de control son difciles de encontrar. [Dor02] Otro desafo identificado es la transicin del software al subcontratado. [Pig97]

2.3 Estimacin del coste del mantenimiento. Los ingenieros de Software deben entender las diferentes categoras de mantenimiento de software, para dirigir la pregunta de estimar el coste de mantenimiento de software. Para planificar objetivos, estimar gastos es un aspecto importante de mantenimiento de software. 2.3.1. Valoracin de coste [Art88:c3; Boe81:c30; Pfl01:c11s11.3;Pig97:c8]

2.4. Medidas de Mantenimiento del Software [IEEE1061-98:A.2; Pig97:c14s14.6; Gra87; Tak97:C6s6.1-c6s6.3] Grady y Caswell [Gra87] hablan del establecimiento de un programa de medida de software extensamente corporativo, en el cual son descritas las formas de medida de mantenimiento de software y la coleccin de datos. El Software Prctico y la Medida de Sistemas (PSM) describen un proceso de medida que es usado por muchas organizaciones y es bastante prctico. [McG01]. Hay medidas de software que son comunes a todos los esfuerzos, las categoras siguientes se han identificado por el Instituto de Ingeniera de Software (SEI): tamao; esfuerzo; programa; y calidad. [Pig97] Estas medidas constituyen un buen punto de partida para el mantenedor. La discusin de proceso y la medida de producto estn presentes en el Proceso de Ingeniera de Software KA. El programa de medida de software est descrito en la Direccin de Ingeniera del Software KA.

Jon98:c27;

Este punto fue mencionado en el subasunto 2.1.3, el Anlisis de Impacto, aquel anlisis de impacto identifica todos los sistemas y los productos de software afectados por la solicitud de un cambio de software y por tanto se desarrolla una estimacin de los recursos que tuvo que utilizar para lograr aquel cambio. [Art88] las estimaciones de Coste de mantenimiento estn afectadas por muchos factores tcnicos y no tcnicos. ISO/IEC14764 declara que " los dos accesos ms populares a la estimacin de recursos para el mantenimiento de software son el empleo de modelos paramtricos y el empleo de experiencia " [ISO1476499:s7.4.1]. Lo q ms a menudo se usa es una combinacin de ambas. 2.3.2. Modelos paramtricos [Ben00:s7; Boe81:c30; Jon98:c27; Pfl01:c11s11.3] Algunos trabajos se han emprendido en la aplicacin del coste paramtrico que modela al mantenimiento de

2.4.1. Medidas Especficas [Car90:s2-s3; IEEE1219-98:Table3; sta94:p239-249] Abran [Abr93] Presentan tcnicas de prueba de referencia internas para comparar diferentes organizaciones de mantenimiento internas. El mantenedor debe determinar qu medidas son apropiadas por la organizacin en cuestin. [Ieee121998; ISO9126-01; Sta94] sugiere que medidas son ms especficas a programas de medida de mantenimiento de software. La lista incluye un nmero de medidas para cada una de las cuatro subcaractersticas de capacidad de mantenimiento: Analizar: Las medidas del esfuerzo del mantenedor o recursos gastados en tentativa de

diagnosticar carencias o causas de fracaso, o en identificacin de partes para ser modificadas Variabilidad: Las medidas del esfuerzo del mantenedor asociado con realizacin de una modificacin especificada Estabilidad: Las medidas del comportamiento inesperado de software, incluyendo lo encontrado durante las pruebas Testeabilidad: Las medidas del esfuerzo del mantenedor y usuarios en la tentativa de probar el software modificado. Ciertas medidas de la capacidad de mantenimiento de software pueden obtenerse usando instrumentos comerciales disponibles. (Lag96; Apr00) 3. El Proceso de Mantenimiento

Figura 2 las Actividades de Proceso de Mantenimiento IEEE1219-98 ISO/IEC 14764 [ISO14764-99] es una elaboracin del proceso de mantenimiento IEEE/EIA 12207.0-96. Las actividades del proceso de mantenimiento ISO/IEC son similares a aquellas del IEEE, pero estn agregadas de manera diferente. Las actividades de proceso de mantenimiento desarrolladas por ISO/IEC se muestran en la Figura 3.
Proceso de Implementacin

La subrea Proceso de Mantenimiento proporciona referencias y normas para poner en prctica el proceso de mantenimiento de software. El punto de Actividades de Mantenimiento diferencia el mantenimiento del desarrollo y muestra su relacin con otras actividades de la ingeniera del software. La necesidad del proceso de ingeniera de software est bien documentada. Los modelos CMMI se aplican a procesos de mantenimiento de software, y son similares a los procesos de los desarrolladores. [SEI01] los modelos de Capacidad de Madurez del Mantenimiento de Software que se dirigen los procesos nicos de mantenimiento de software son descritos en (Apr03, Nie02, Kaj01). 3.1. Procesos de Mantenimiento [IEEE1219-98:s4; ISO14764-99:s8; ieee12207.096:s5.5; Par86:c7s1; Pig97:c5; Tak97:c2] Los procesos de Mantenimiento proporcionan actividades necesarias y entradas/salidas detalladas a aquellas actividades, y son descritos en normas de mantenimiento de software IEEE 1219 y ISO/IEC 14764. El modelo de proceso de mantenimiento descrito en el Estndar para el Mantenimiento de Software (IEEE1219) comienza con el esfuerzo de mantenimiento de software durante la etapa de postentrega y habla de artculos como la planificacin para el mantenimiento. Aquel proceso es representado en la Figura(el Nmero) 2.
Identificacin y Clasificacin Anlisis Diseo Entrega

Problema y Anlisis de Modificacin

Revisin de Mantenimiento/ Aceptacin

Modificacin Implementacin

Migracin Retirada

Figura 3 ISO/IEC 14764-00 Proceso de Mantenimiento de Software Cada uno de las actividades primarias de mantenimiento de software ISO/IEC 14764 son las siguientes: La Puesta en prctica de Proceso El Problema y el Anlisis de Modificacin La Puesta en prctica de Modificacin La Revisin/Aceptacin de Mantenimiento La Migracin El Retiro de Software Takang y Grubb [Tak97] proporcionan una historia de modelos de proceso de mantenimiento que conducen hasta el desarrollo del IEEE y modelos de proceso de ISO/IEC. Parikh [Par86] tambin da una descripcin buena de un proceso de mantenimiento genrico. Recientemente, han surgido metodologas giles que promueven procesos ligeros. Esta exigencia surge de la demanda cada vez mayor de la vuelta rpida de servicios de mantenimiento. Algunos experimentos con el mantenimiento Extremo son presentados en (Poo01). 3.2. Actividades de Mantenimiento Como ya ha notado, muchas mantenimiento son similares a aquellas software. Los mantenedores realizan diseo, la codificacin, pruebas, y la actividades de de desarrollo de el anlisis, el documentacin.

Peticin de modificacin

Implementacin Prueba de Aceptacin Prueba del Sistema

Ellos deben rastrear exigencias en sus actividades tal cual hechas en el desarrollo, y la documentacin de actualizacin como el cambio de lneas de fondo. ISO/IEC14764 recomienda que, cuando un mantenedor se refiera a un proceso de desarrollo similar, l debe adaptarlo para encontrar sus necesidades especficas [ISO14764-99:s8.3.2.1, 2]. Sin embargo, para el mantenimiento de software, algunas actividades implican procesos nicos al mantenimiento de software. 3.2.1. Actividades nicas [Art88:c3; Dor02:v1c9s1.9.1; ieee1219-98:s4.1, s4.2; ISO14764-99:s8.2.2.1, s8.3.2.1; Pfl01:c11s11.2]

Hay un nmero de procesos, actividades, y prcticas que son nicas al mantenimiento de software, por ejemplo: Transicin: una secuencia controlada y coordinada de actividades durante las cuales el software es transferido cada vez ms del desarrollador al mantenedor [Dek92, Pig97] La Aceptacin/Rechazo de Peticin de Modificacin: el trabajo de peticin de modificacin sobre un cierto tamao/esfuerzo/complejidad puede ser rechazado por mantenedores y desviado a un desarrollador [Dor02], (Apr01) La peticin de Modificacin y el Escritorio de Ayuda de Informe de Problema: una funcin de apoyo de usuario final que provoca la evaluacin, la ordenacin, y de presupuesto de solicitud de modificacin [Ben00] El Anlisis de Impacto (mirar la seccin 2.1.3 para detalles) El Apoyo de Software: ayuda y aconseja a usuarios que solicitan informacin (por ejemplo, reglas de gestin, validacin, datos que quieren decir y ad hoc solicita/hace un informe) Los Acuerdos de Nivel de Servicio (SLAs) y los contratos de mantenimiento especializados (especficos de dominio) que son responsabilidad de los mantenedores (Apr01) 3.2.2. Apoyando actividades [IEEE1219-98:A.7, 11 un ; IEEE12207.0-96:c6, c7;ITI01; Pig97:c10s10.2, c18]; (Kaj01)

Una actividad importante para el mantenimiento de software es la planificacin, y los mantenedores deben dirigir las cuestiones asociadas con un nmero de perspectivas de planificacin: La planificacin de las actividades (el nivel de organizacin) La planificacin de Mantenimiento (el nivel de transicin) La planificacin de Liberacin/versin (el nivel de software) La planificacin de peticin de cambio de software En el nivel de peticin individual, la planificacin es realizada durante el anlisis de impacto (irse al subasunto 2.1.3 Anlisis de Impacto para detalles). La liberacin/versin que planifica la actividad requiere que el mantenedor [ITI01]: Rena las fechas de disponibilidad de las solicitudes de los individuos. Est de acuerdo con usuarios sobre el contenido de liberaciones/versiones subsecuentes Identifique conflictos potenciales y desarrolle alternativas Evale el riesgo de una liberacin dada y desarrolle un plan echarse atrs en caso de los problemas deberan surgir Informe a todos los tenedores de apuestas Mientras que los proyectos de desarrollo de software tpicamente pueden durar a partir de algunos meses a algunos aos, la fase de mantenimiento por lo general dura muchos aos. La fabricacin de las estimaciones de recursos es un elemento clave de planificacin de mantenimiento. Los recursos deberan ser incluidos en los presupuestos de proyecto que planifican los desarrolladores. La planificacin de mantenimiento de software debera comenzar con la decisin de desarrollar un nuevo sistema y debera considerar objetivos de calidad (IEEE1061-98). Un documento de concepto debera ser desarrollado, seguido por un plan de mantenimiento. El documento de concepto para el mantenimiento [iso14764-99:s7.2] debe dirigirse a: el alcance del mantenimiento de software. la adaptacin del mantenimiento de software la identificacin de la organizacin de mantenimiento de software una estimacin de costes de mantenimiento de software El siguiente paso debe desarrollar el correspondiente plan de mantenimiento de software. Este plan debera estar preparado durante el desarrollo de software, y debera especificar como los usuarios solicitarn modificaciones de software o relatarn problemas. El plan de mantenimiento de software [Pig97] es dirigido en IEEE 1219 [IEEE1219-98] Y ISO/IEC 14764. [ISO14764-99] ISO/IEC14764 proporciona directrices para un plan de mantenimiento.

Los mantenedores tambin puede realizar actividades de apoyo, como la planificacin de mantenimiento de software, la direccin de configuracin de software, la verificacin y la validacin, la garanta de calidad de software, revisiones, revisiones de cuentas, y el entrenamiento de usuario. Otra actividad de apoyo, entrenamiento del mantenedor, tambin es necesaria. [Pig97; IEEE12207.0-96] (Kaj01) 3.2.3. Actividad de planificacin de mantenimiento. [IEEE1219-98:A.3; ISO14764-99:s7; ITI01;Pig97:c7, c8]

Finalmente, en el nivel ms alto, la organizacin de mantenimiento tendr que conducir actividades de planificacin de business (recursos presupuestarios, financieros, y humanos) justo como todas las otras divisiones de la organizacin. El conocimiento de direccin requerido para hacer esto se puede encontrar en el captulo de Disciplinas Relacionadas de Ingeniera del Software. 3.2.4. Direccin de configuracin de software [Art88:c2, c10; IEEE1219-98:A.11; ieee12207.0-96:s6.2; Pfl01:c11s11.5; Tak97:c7]

[ISO14764-99] Ms detalles pueden encontrados en la Calidad de Software KA.

ser

4. Las tcnicas para el Mantenimiento Este subrea introduce algunas tcnicas generalmente aceptadas usadas en el mantenimiento de software. 4.1. Comprensin de Programa [Arn92:c14; Dor02:v1c9s1.11.4; Tak97:c3] Los Programadores gastan un tiempo considerable en la lectura y el entendimiento de programas para poner en prctica los cambios. Los navegadores de cdigo son instrumentos claves para la comprensin de programa. La documentacin clara y concisa puede ayudar en la comprensin de programa 4.2. Reingeniera [Arn92:c1, c3-c6; Dor02:v1c9s1.11.4; IEEE1219-98:La b 2], (Fow99) Reingeniera se define como el examen y la alteracin de software para reconstituirlo en una nueva forma, e incluye la puesta en prctica subsecuente de la nueva forma. Dorfman y Thayer [Dor02] declaran que reingeniera es la forma radical de alteracin. Otros creen que la reingeniera puede ser usada para cambios menores. Arnold [Arn92] proporciona un compendio comprensivo de puntos, por ejemplo: conceptos, instrumentos y tcnicas, estudios de caso, y riesgos y ventajas asociadas con la reingeniera. 4.3. Ingeniera de revs [Arn92:c12; Dor02:v1c9s1.11.3; 98:B.3; Tak97:c4, Hen01]

El Estndar IEEE para el Mantenimiento de Software, IEEE 1219 [IEEE1219-98], describe la direccin de configuracin de software como un elemento crtico del proceso de mantenimiento. Los procedimientos de direccin de configuracin de software deberan asegurar la verificacin, la validacin, y la revisin de cuentas de cada paso requerido para identificar, autorizar, poner en prctica, y liberar el producto de software. No es suficiente simplemente con rastrear la Modificacin Solicitada o los informes de Problema. El producto de software y cualquier cambio hecho deben ser controlados. Este control es establecido poniendo en prctica y haciendo cumplir una direccin de configuracin de software aprobada (SCM) El proceso de Direccin de Configuracin de Software KA proporciona los detalles de SCM y habla del proceso por el cual los cambios de software solicitado son sometidos, evaluados, y aprobados. SCM para el mantenimiento de software es diferente de SCM para el software de desarrollo en el nmero de los pequeos cambios que deben ser controlados sobre el software operacional. El proceso de SCM es puesto en prctica por desarrollador y despus de un plan de direccin de configuracin y procedimientos. Los mantenedores participan en la Pasarela de Control de Configuracin para determinar el contenido de la siguiente liberacin/versin. 3.2.5. Calidad de software [Art98:c7s4; IEEE12207.0-96:s6.3; ieee121998:A.7; ISO14764-99:s5.5.3.2] No es suficiente, tampoco, simplemente esperar lo que aument la calidad sea resultado del mantenimiento de software. Debe ser planificado y procesos puestos en prctica para apoyar el proceso de mantenimiento. Las actividades y tcnicas para la Garanta de calidad de Software (SQA), V*V, revisiones, y revisiones de cuentas deben ser seleccionadas de comn acuerdo con todos los otros procesos para alcanzar el nivel deseado de calidad. Tambin le recomiendan que el mantenedor adapte los procesos de desarrollos de software, tcnicos y entregables, por ejemplo probando la documentacin, y pruebe resultados.

IEEE1219-

La ingeniera de Revs es el proceso de analizar el software para identificar los componentes del software y sus relaciones mutuas y crear las representaciones del software en otra forma o en los niveles ms altos de abstraccin. La ingeniera de revs es pasiva; esto no cambia el software, o causa el nuevo software. Los esfuerzos de la ingeniera del revs producen grficos de llamada y grficos de flujo de control del cdigo original. Un tipo de ingeniera de revs es la nueva documentacin. Otro tipo es la recuperacin de diseo [Dor02]. La nueva factorizacin es la transformacin de programa que reorganiza un programa sin cambiar su comportamiento, y es una forma de revs que procura mejorar la estructura de programa. (Fow99). Finalmente, la ingeniera de revs de datos ha ganado en importancia durante estos ltimos aos donde los esquemas lgicos son recuperados de bases de datos fsicas. (Hen01)

Prueba

Personal
63-90 63-90 63-90

Anlisis de Impacto

Comprensin Limitada

1.5 Evolucin del Software

2.1 Elementos Tcnicos

2.2 Gestin de Elementos [Abr 93] [Arn 92] [Art88]


s4 c3 s11. 4 s6c s5 C9 c1s1.2
c1s1.0c1s1.2,c11s1.1 ,c11s1.2

1.6 Categoras de Mantenimiento

1.3 Necesidad de Mantenimiento

1.2 Naturaleza del Mantenimiento

Mantenibilidad

1.4 Mayora de los Costes de Mantenimiento

2.Elementos Clave en el Mantenimiento Software

1.1 Definiciones y Terminologa

1.Fundamentos del Mantenimiento del Software

Alineamiento con Objetivos organizacionales [Ben 00] [Boe 81] [Car 90] [Dek 92] [Dor 97] [Hen 01]
v1c9s1.1 1.4 v1c9s1.5
s3.1.1,s3.1.2, s3.1.7,A.1.7

s3

s6a

s5, s9.3, s11.4

s10.1, s10.2,s10.3

MATRIZ DE TEMAS VS. MATERIAL DE REFERENCIA

10-17

v1c9s1.6

v1c9s1.6

v1c9s1.1 0.1v1c9s1.1 0.3

[IEEE 610.1290] [IEEE 98]


S3.1.12

1061[IEEE 98]
s3, s5.5

1219[IEEE 12207.0-96]
s6.1

s6.8, s6.8.1
s4.1,s4.3s4.1 0, s4.11,s6.2

[ISO 00]
108-124

14764-

[Jon 98] [Leh 97]

c4s8-

c4s11 c11s11.5 c11s11.3 c11s 11.3 c2s2.3 c11s11.3 c3 C31 c11s11.2 C2s2.3 c11s11.2

c9s9.4

[Par 86] [Pfl 01] [Pig 97] [Pre 04] [Sta 04] c1 [Tak 97]

c16

c3

Procesos

Medidas especficas

Calidad del software

Actividades nicas

Experiencia

2.4 Medidas

Gestin de la configuracin del software

s9.2, s10.3,s11.2, s11.3,s11.5 s6b c30 s2-s3 c30 s9.1 s8 s9.2 s7 s7

v1c9s1.1 1.3 A.11 s6.2 s7 s8.2.2.1, s8.3.2.1 s8 c6,c7 s5.5 A.3 A.7,A.11 s4.1-s4.2 s4 Tabla 3

4.3 Ingeniera Inversa


63-90 63-90 63-90 A.2 c2,c10 s9.1, s9.2, s10.1 c3 c3 s7 s6a, s7 s6b v1c9s1.9 .1 v1c9s 1.7 v1c9s1.3 s7,s7.2, s7.2.1, s7.2.4 c27 c27 c7s1 c11s11.2 c7,c8 c10s10.2 , c18 c5 c14s14.6 c8 c11s11.3 c8 c11s11.3 c8 c9s9.1c9s9.2 c4s7 c12s12.1 c12s12.3 c2s2.5 239-249 c7 c2 c6s6.1c6s6.3 c8

Estimacin de costes

Actividades de soporte

2.3 Estimacin de Costes de Mantenimiento

3.1 Procesos de Mantenimiento

3.2 Actividades de Mantenimiento

Modelos de parametrizacin

Subcontratacin

4. Tcnicas para el Mantenimiento

3. Proceso de Mantenimiento

4.1 Programa de Comprensin

4.2 Reingeniera

Actividad de planificacin del mantenimiento

Aspectos organizacionales de mantenimiento

63-90

c12

c1,c3-c6

c14

c7s4

s9.2, s11.4, s11.5

s11.4

s7, s8, s9.2,s9.3, s11.4,s11.5

s2, s6b,s9.2, s10.1,s11.4

v1c9s1.1 1.4

v1c9s1.1 1.4

B.3

B.2

A.7

s6.3

s5.5.3.2

c11s11.5

C4

c3

RECOMMENDED REFERENCES FOR SOFTWARE MAINTENANCE [Abr93] A. Abran and H. Nguyenkim, Measurement of the Maintenance Process from a Demand-Based Perspective, Journal of Software Maintenance: Research and Practice, vol. 5, iss. 2, 1993, pp. 63-90. [Arn93] R.S. Arnold, Software Reengineering: IEEE Computer Society Press, 1993. [Art98] L.J. Arthur, Software Evolution: The Software Maintenance Challenge, John Wiley & Sons, 1988. [Ben00] K.H. Bennett, Software Maintenance: A Tutorial, in Software Engineering, M. Dorfman and R. Thayer, eds., IEEE Computer Society Press, 2000. [Boe81] B.W. Boehm, Software Engineering Economics, Prentice Hall, 1981. [Car90] D.N. Card and R.L. Glass, Measuring Software Design Quality, Prentice Hall, 1990. [Dek92] S. Dekleva, Delphi Study of Software Maintenance Problems, presented at the International Conference on Software Maintenance, 1992. [Dor02] M. Dorfman and R.H. Thayer, eds., Software Engineering (Vol. 1 & Vol. 2), IEEE Computer Society Press, 2002. [Gra87] R.B. Grady and D.L. Caswell, Software Metrics: Establishing a Company-Wide Program, Prentice Hall, 1987. [Hen01] J. Henrard and J.-L. Hainaut, Data Dependency Elicitation in Database Reverse Engineering, Proc. of the 5th European Conference on Software Maintenance and Reengineering (CSMR 2001), IEEE Computer Society Press, 2001. [IEEE610.12-90] IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. [IEEE1061-98] IEEE Std 1061-1998, IEEE Standard for a Software Quality Metrics Methodology, IEEE, 1998. [IEEE1219-98] IEEE Std 1219-1998, IEEE Standard for Software Maintenance, IEEE, 1998. [IEEE12207.0-96] IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information TechnologySoftware Life Cycle Processes, IEEE, 1996. [ISO9126-01] ISO/IEC 9126-1:2001, Software Engineering-Product Quality-Part 1: Quality Model, ISO and IEC, 2001. [ISO14764-99] ISO/IEC 14764-1999, Software Engineering-Software Maintenance, ISO and IEC, 1999. [ITI01] IT Infrastructure Library, Service Delivery and Service Support, Stationary Office, Office of Government of Commerce, 2001. [Jon98] T.C. Jones, Estimating Software Costs, McGraw- Hill, 1998. [Leh97] M.M. Lehman, Laws of Software Evolution Revisited, presented at EWSPT96, 1997. [Lie78] B. Lienz, E.B. Swanson, and G.E. Tompkins, Characteristics of Applications Software Maintenance, Communications of the ACM, vol. 21, 1978.

[Par86] G. Parikh, Handbook of Software Maintenance, John Wiley & Sons, 1986. [Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001. [Pig97] T.M. Pigoski, Practical Software Maintenance: Best Practices for Managing your Software Investment, first ed., John Wiley & Sons, 1997. [Pre04] R.S. Pressman, Software Engineering: A Practitioners Approach, sixth ed., McGraw-Hill, 2004. [SEI01] Software Engineering Institute, Capability Maturity Model Integration, v1.1, CMU/SEI-2002-TR002, ESC-TR-2002-002, December 2001. [Sta94] G.E. Stark, L.C. Kern, and C.V. Vowell, A Software Metric Set for Program Maintenance Management, Journal of Systems and Software, vol. 24, iss. 3, March 1994. [Tak97] A. Takang and P. Grubb, Software Maintenance Concepts and Practice, International Thomson Computer Press, 1997.

APPENDIX A. LIST OF FURTHER READINGS (Abr93) A. Abran, Maintenance Productivity & Quality Studies: Industry Feedback on Benchmarking, presented at the Software Maintenance Conference (ICSM93), 1993. (Apr00) A. April and D. Al-Shurougi, Software Product Measurement for Supplier Evaluation, presented at FESMA2000, 2000. (Apr01) A. April, J. Bouman, A. Abran, and D. AlShurougi, Software Maintenance in a Service Level Agreement: Controlling the Customers Expectations, presented at European Software Measurement Conference, 2001. (Apr03) A. April, A. Abran, and R. Dumke, Software Maintenance Capability Maturity Model (SM-CMM): Process Performance Measurement, presented at 13th International Workshop on Software Measurement (IWSM 2003), 2003. (Bas85) V.R. Basili, Quantitative Evaluation of Software Methodology, presented at First Pan-Pacific Computer Conference, 1985. (Bel72) L. Belady and M.M. Lehman, An Introduction to Growth Dynamics, Statistical Computer Performance Evaluation, W. Freiberger, ed., Academic Press, 1972. (Ben00) K.H. Bennett and V.T. Rajlich, Software Maintenance and Evolution: A Roadmap, The Future of Software Engineering, A. Finklestein, ed., ACM Press, 2000. (Bol95) C. Boldyreff, E. Burd, R. Hather, R. Mortimer, M. Munro, and E. Younger, The AMES Approach to Application Understanding: A Case Study, presented at the International Conference on Software Maintenance, 1995. (Boo94) G. Booch and D. Bryan, Software Engineering with Ada, third ed., Benjamin/Cummings, 1994. (Cap94) M.A. Capretz and M. Munro, Software Configuration Management Issues in the Maintenance of Existing Systems, Journal of Software Maintenance: Research and Practice, vol. 6, iss. 2, 1994. (Car92) J. Cardow, You Cant Teach Software Maintenance! presented at the Sixth Annual Meeting and Conference of the Software Management Association, 1992. (Car94) D. Carey, Executive Round-Table on Business Issues in Outsourcing - Making the Decision, CIO Canad, June/July 1994. (Dor97) M. Dorfman and R.H. Thayer, eds., Software Engineering, IEEE Computer Society Press, 1997. (Dor02) M. Dorfman and R.H. Thayer, eds., Software Engineering (Vol. 1 & Vol. 2), IEEE Computer Society Press, 2002. (Fow99) M. Fowler et al., Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999.

(Gra87) R.B. Grady and D.L. Caswell, Software Metrics: Establishing a Company-Wide Program, Prentice Hall, 1987. (Gra92) R.B. Grady, Practical Software Metrics for Project Management and Process Management, Prentice Hall, 1992. (Jon91) C. Jones, Applied Software Measurement, McGraw-Hill, 1991. (Kaj01) M. Kajko-Mattson, Motivating the Corrective Maintenance Maturity Model (Cm3), presented at Seventh International Conference on Engineering of Complex Systems, 2001. (Kaj01a) M. Kajko-Mattson, S. Forssander, and U. Olsson, Corrective Maintenance Maturity Model: Maintainers Education and Training, presented at International Conference on Software Engineering, 2001. (Kho95) T.M. Khoshgoftaar, R.M. Szabo, and J.M. Voas, Detecting Program Module with Low Testability, presented at the International Conference on Software Maintenance-1995, 1995. (Lag96) B. Lagu and A. April, Mapping for the ISO9126 Maintainability Internal Metrics to an Industrial Research Tool, presented at SESS, 1996. (Leh85) M.M. Lehman and L.A. Belady, Program Evolution: Processes of Software Change, Academic Press, 1985. (Leh97) M.M. Lehman, Laws of Software Evolution Revisited, presented at EWSPT96, 1997. (Lie81) B.P. Lientz and E.B. Swanson, Problems in Application Software Mainteanance, Communications of the ACM, vol. 24, iss. 11, 1981, pp. 763-769. (McC02) B. McCracken, Taking Control of IT Performance, presented at InfoServer LLC, 2002. (Nie02) F. Niessink, V. Clerk, and H. v. Vliet, The IT Capability Maturity Model, release L2+3-0.3 draft, 2002, available at http://www.itservicecmm.org/doc/itscmm1230.3.pdf. (Oma91) P.W. Oman, J. Hagemeister, and D. Ash, A Definition and Taxonomy for Software Maintainability, University of Idaho, Software Engineering Test Lab Technical Report 91-08 TR, November 1991. (Oma92) P. Oman and J. Hagemeister, Metrics for Assessing Software System Maintainability, presented at the International Conference on Software Maintenance 92, 1992. (Pig93) T.M. Pigoski, Maintainable Software: Why You

Want It and How to Get It, presented at the Third Software Engineering Research Forum - November 1993, University of West Florida Press, 1993. (Pig94) T.M. Pigoski, Software Maintenance, Encyclopedia of Software Engineering, John Wiley & Sons, 1994. (Pol03) M. Polo, M. Piattini, and F. Ruiz, eds., Advances in Software Maintenance Management: Technologies and Solutions, Idea Group Publishing, 2003. (Poo00) C. Poole and W. Huisman, Using Extreme Programming in a Maintenance Environment, IEEE Software, vol. 18, iss. 6, November/December 2001, pp. 42-50. (Put97) L.H. Putman and W. Myers, Industrial Strength Software - Effective Management Using Measurement, 1997. (Sch99) S.R. Schach, Classical and Object-Oriented Software Engineering with UML and C++, McGrawHill, 1999. (Sch97) S.L. Schneberger, Client/Server Software Maintenance, McGraw-Hill, 1997. (Sch87) N.F. Schneidewind, The State of Software Maintenance, Proceedings of the IEEE, 1987. (Som96) I. Sommerville, Software Engineering, fifth ed., Addison-Wesley, 1996. (Val94) J.D. Vallett, S.E. Condon, L. Briand, Y.M. Kim, and V.R. Basili, Building on Experience Factory for Maintenance, presented at the Software Engineering Workshop, Software Engineering Laboratory, 1994.

APPENDIX A. LIST OF STANDARDS (IEEE610.12-90) IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. (IEEE1061-98) IEEE Std 1061-1998, IEEE Standard for a Software Quality Metrics Methodology, IEEE, 1998. (IEEE1219-98) IEEE Std 1219-1998, IEEE Standard for Software Maintenance, IEEE, 1998. (IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology Software Life Cycle Processes, IEEE, 1996.

(IEEE14143.1-00) IEEE Std 14143.1-2000// ISO/IEC14143-1:1998, Information Technology Software Measurement-Functional Size Measurement - Part 1: Definitions of Concepts, IEEE, 2000. (ISO9126-01) ISO/IEC 9126-1:2001, Software Engineering-Product Quality - Part 1: Quality Model, ISO and IEC, 2001. (ISO14764-99) ISO/IEC 14764-1999, Software Engineering - Software Maintenance, ISO and IEC, 1999. (ISO15271-98) ISO/IEC TR 15271:1998, Information Technology - Guide for ISO/IEC 12207, (Software Life Cycle Process), ISO and IEC, 1998. [Abr93]

CAPTULO 7 GESTIN DE CONFIGURACIN DEL SOFTWARE


ACRNIMOS
CCB CM FCA MTBF PCA SCCB Tarjeta de Control de la Configuracin Gestin de configuracin Auditora de la Configuracin Funcional Tiempo significativo entre fallos. Auditora de la Configuracin Fsica Consejo de Control de Configuracin del Software SCI Elemento de configuracin de software SCM Gestin de la configuracin del software SCMP Plan de gestin de la configuracin del software SCR Peticin de cambios del software SCSA Contabilidad del Estado de la Configuracin del Software SEI/CMMI Instituto de Ingenieros Software/ Modelo de la Capacidad de Madurez Integrado SQA Garanta de calidad del software. SRS Especificacin de Requisitos Software USNRC Comisin Reguladora de Energa Nuclear de los Estados Unidos INTRODUCCIN: Un sistema se puede definir como una coleccin de componentes que se organizan con el objetivo de proporcionar una funcin o conjunto de funciones determinadas (IEEE 610.12-90). La configuracin de un sistema son las caractersticas funcionales y/o fsicas del hardware, firmware, software o una combinacin de las mismas, segn lo dispuesto en la documentacin tcnica y el resultado obtenido en un producto. (Buc96) Tambin se puede considerar como una coleccin de versiones especficas de elementos de hardware, firmware o software que se combinan de acuerdo con un proceso de construccin especfico para un satisfacer un propsito particular. Por tanto la gestin de configuracin es la disciplina de identificar la configuracin de un sistema en momentos diferentes con el propsito de controlar de una manera sistemtica los cambios en la configuracin y mantener la integridad y el seguimiento de de los cambios en la configuracin durante el ciclo de vida del sistema. (Ber97) Se define formalmente (IEEE610.12-90) como Una disciplina que establece direccin y seguimiento tcnicos y administrativos a: la identificacin y documentacin de las caractersticas funcionales y fsicas de un elemento de configuracin, toma notas y produce informes de cambios en el proceso y en el estado de implementacin y verifica el cumplimiento de los requerimientos especificados. La gestin de la configuracin del software (SCM) es un proceso que soporta el ciclo de vida del software (IEEE12207.0-96) que beneficia a la gestin de proyectos, las actividades de desarrollo y mantenimiento, las actividades de garanta y a los clientes y usuarios del producto final. El concepto de gestin de configuracin es aplicable a todos los elementos que se pueden controlar, aunque existen algunas diferencias de implementacin entre CM del hardware y CM del software. La SCM est ntimamente relacionada con la actividad de garanta de calidad del software (SQA). Tal y como se define en el AC de la Calidad del Software, los procesos de la SQA proporcionan la garanta de que los procesos y productos de software en el ciclo de vida del proyecto cumplen los requerimientos especificados gracias a la planificacin, la promulgacin y ejecucin de un conjunto de actividades que proporcionan la confidencia necesaria de que se est teniendo en cuenta la calidad al construir el software. Las actividades de la SCM ayudan a conseguir estos objetivos de la SQA. En el contexto de algunos proyectos (vase, por ejemplo, IEEE730-02), requerimientos especficos de las SQA requieren ciertas actividades de la SCM. Las actividades de la SCM son: gestin y planificacin de los procesos de la SCM, identificacin de la configuracin del software, control de la configuracin del software, responsabilidad del estado de la configuracin del software, auditora de la configuracin del software y gestin del lanzamiento y entrega del software.

La figura 1 muestra una representacin estilizada de estas actividades. Figura 1 Actividades SCM El KA de la Gestin de Configuracin del Software se relaciona con el resto de KAs, ya que el objetivo de la configuracin del software es el producto construido y usado durante todo el proceso de ingeniera del software.

DIVISIN DE PUNTOS PARA LA SCM


2. Gestin del proceso de la SCM La SCM controla la evolucin e integridad de un producto identificando sus elementos, gestionando y controlando los cambios y verificando, guardando y produciendo informes de la informacin de configuracin. Desde la perspectiva del ingeniero de software, la SCM facilita las actividades del desarrollo e implementacin de cambios. El xito de una implementacin de la SCM requiere una planificacin y gestin cuidadosas. Lo que al mismo tiempo requiere que

se conozca el contexto de organizacin y las restricciones impuestas en el diseo e implementacin del proceso de la SCM. 1.1 Contexto de Organizacin para la SCM :c4; Dar90:c2; IEEE828-98:c4s2.1] [Ber92

Para planificar un proceso de la SCM para un proyecto se necesita comprender el contexto de organizacin y la relacin entre los distintos elementos de la organizacin. La SCM interacciona con otras actividades o elementos de la organizacin. Los elementos de la organizacin responsables de los procesos de soporte de la ingeniera del software se pueden estructurar de diferentes formas. Aunque la responsabilidad de realizar algunas de las tareas de la SCM se podra asignar a otra de las partes de la organizacin como por ejemplo la organizacin de desarrollo, normalmente es un elemento definido de la organizacin o un individuo especialmente designado quien tiene la responsabilidad general de la SCM. El software se desarrolla frecuentemente como una parte de un sistema mayor que contiene elementos de hardware y firmware. En ese caso, las actividades de la SCM suceden en paralelo con las actividades de CM del hardware y firmware y debe ser consistente con la CM del sistema. Buckley [Buc96:c2] describe la SCM en este contexto. Tenga en cuenta que el firmware contiene hardware y software, as que son aplicables los conceptos de CM de ambos, hardware y software. La SCM puede interactuar con la actividad de la garanta de la calidad de la organizacin en lo que se refiere a temas como la gestin de registros y de elementos no vlidos. Respecto a gestin de registros, algunos elementos bajo el control de la SCM podran ser tambin registros del proyecto, dependiendo del programa de garanta de calidad de la organizacin. Normalmente la gestin de elementos no vlidos es responsabilidad de la actividad de garanta de la calidad; sin embargo, la SCM pude ayudar mediante el seguimiento e informes de

elementos de configuracin del software que caigan en esta categora. Quizs su relacin ms cercana sea con las organizaciones de desarrollo de software y mantenimiento. Muchas de las tareas de control de configuracin del software se realizan en este contexto. Frecuentemente las mismas herramientas proporcionan soporte para el desarrollo, mantenimiento y la SCM. 1.2 Restricciones y Consejos para el proceso de la SCM [Ber92:c5; IEEE828-98:c4s1,c4s2.3; Moo98] Las restricciones y consejos para el proceso de la SCM pueden venir de diferentes fuentes. Las normas y procedimientos definidos a nivel corporativo o de la organizacin pueden tener influencia o prescribir el diseo e implementacin de los procesos de la SCM en un determinado proyecto. Adems, el contrato entre el proveedor y el cliente podra contener estipulaciones que afecten los procesos de la SCM. Por ejemplo, podra ser necesaria una auditora de configuracin o podra ser necesario poner ciertos elementos bajo el control de la CM. Cuerpos de regulacin externos podran imponer restricciones a productos de software que se vayan a desarrollar cuando estos puedan afectar potencialmente a la seguridad pblica (vase, por ejemplo, USNRC1.16997). Finalmente, el proceso del ciclo de vida del software elegido para un proyecto de software en particular y las herramientas elegidas para la implementacin de dicho software, afectan el diseo e implementacin de los procesos de la SCM. [Ber92] Las mejores prcticas, como se reflejan en los estndares de la ingeniera del software publicados por varias organizaciones de estndares, se pueden usar como consejo para el diseo e implementacin de un proceso de la SCM. Moore [Moo98] proporciona una gua para dichas organizaciones y sus estndares. Las mejores prcticas se reflejan tambin en modelos de mejora del Gestin de la Configuracin del Software

Figura 2 Divisin de los puntos de funcin para el KA de la

proceso y valoracin de procesos como el Modelo de la Capacidad de Madurez Integrado del Instituto de la Ingeniera del Software (SEI/CMMI) (SEI01) y el estndar ISO/IEC15504 de la Valoracin del Proceso de la Ingeniera del Software (ISO/IEC15504-98). 1.3 Planificar la SCM [Dar90:c2; IEEE12207.0-96 :c6.s2.1; Som01:c29] La planificacin de un proceso de la SCM para un proyecto dado debera ser consistente con el contexto de la organizacin, las restricciones que sean aplicables, los consejos comnmente aceptados y la naturaleza del proyecto (por ejemplo, tamao lo crtico que sea). La actividades ms importantes cubiertas son: Identificacin del Configuracin del Software, Control de la Configuracin del Software, Responsabilidad del Estado de la Configuracin del Software, Auditora de la Configuracin del Software y la Gestin de Lanzamiento y Entrega del Software. Adems, se suelen considerar puntos como organizacin y responsabilidades, recursos y calendarios, seleccin de herramientas e implementacin, control de proveedores y subcontratas y control de la interaccin. Los resultados de la planificacin de actividades se registran en un Plan de SCM, que normalmente est sujeto a revisin y auditora de la SQA. 1.3.1 Organizacin y responsabilidades de la SCM [Ber92:c7; Buc96:c3; IEEE828-98:c4s2] Para prevenir confusin acerca de quin debe realizar tareas de la SCM determinadas, se deben identificar claramente las organizaciones involucradas en el proceso de la SCM. Responsabilidades especficas para una actividad o tarea de la SCM tambin deben ser asignadas a organizaciones, bien por ttulo o por elemento de la organizacin. Se debe identificar tambin la autoridad general y las vas de informacin de la SCM, aunque se podra realizar como parte de la fase de planificacin de la garanta de la calidad o al nivel de la gestin de proyectos. Recursos y planificacin de la SCM [Ber92:c7; Buc96:c3; IEEE828-98:c4s4; c4s5]

importante y difcil de establecer, segn los proyectos crecen en tamao y el entorno del proyecto se hace ms complejo. Las habilidades de estas herramientas proporcionan apoyo para: La biblioteca de la SCM Procedimientos de aprobacin y de peticin de cambios del software (SCR) Tareas de gestin de cambios y cdigo (y los productos relacionados) Informes del estado de configuracin del software y reunin de medidas de la SCM Auditora de la configuracin del software Gestin y seguimiento de la documentacin del software Construccin del software Gestin y seguimiento de los lanzamientos del software y su distribucin Las herramientas utilizadas en estas reas, tambin pueden proporcionar medidas para mejorar el proceso. Royce [Roy98] describe siete medidas centrales tiles para gestionar procesos de la ingeniera del software. La informacin disponible de las varias herramientas de la SCM es afn al indicador de Trabajo y Progreso de Royce y a sus indicadores de calidad de Cambio de Trfico y Estabilidad, Ruptura y Modularidad, Repeticin del Trabajo y Adaptabilidad y TMEF (Tiempo medio entre fallos) y Madurez. Los informes para estos indicadores se pueden organizar de varias maneras, como por elemento de configuracin del software o por tipo del cambio requerido. La figura 3 muestra una asignacin representativa entre las habilidades de las herramientas y procedimiento a Actividades de la SCM.

1.3.2

Planificar para la SCM ayuda identifica las necesidades de personal y herramientas que se requieren para realizar las tareas y actividades de la SCM. Aborda cuestiones de planificacin estableciendo las secuencias de tareas de la SCM necesarias e identifica sus relaciones con los planes de proyecto y los hitos establecidos en la fase de planificacin del proyecto. Tambin se especifican las necesidades de formacin requeridas para la implementacin de los planes y formacin de personal. 1.3.3 Seleccin e implementacin de herramientas [Ber92:c15; Con98:c6; Pre01:c31]

Figura 3 Caracterizacin de herramientas de SCM y procedimientos relacionados En este ejemplo, el sistema de gestin de cdigo soporta la utilizacin de bibliotecas de software al controlar el acceso a los elementos de la biblioteca, coordinar las actividades de mltiples usuarios y ayudar a hacer cumplir los procedimientos operativos. Otras herramientas soportan el proceso de construir software y producir documentacin de los elementos de software contenidos en las bibliotecas. Herramientas para la gestin de peticiones de cambios del software soportan los procedimientos de control de cambios que se aplican a elementos de software. Otras herramientas pueden proporcionar gestin de bases de datos y habilidad para generar informes usados para las actividades de gestin,

Las actividades de la SCM son soportadas por diferentes tipos de habilidad de herramientas y procedimientos para su uso. Dependiendo de la situacin, se pueden combinar estas habilidades de herramientas con herramientas manuales, herramientas automticas que proporcionan una habilidad simple de la SCM, herramientas automticas que integran una coleccin de habilidades de la SCM (e incluso otras habilidades) o entornos de herramientas integrados que cubren las necesidades de mltiples participantes en el proceso de ingeniera del software (por ejemplo, SCM, desarrollo, V&V). El apoyo de herramientas automticas se comienza a ser ms

desarrollo y garanta de calidad. Como se ha mencionado antes, las habilidades de diferentes tipos de herramientas se podran integrar en sistemas de la SCM, los cuales, a su vez, tienen un acoplamiento alto con otras actividades del software. Al planificar, el ingeniero de software elige las herramientas de la SCM apropiadas para el trabajo. La planificacin debe considerar los problemas que podran surgir durante la implementacin de dichas herramientas, particularmente si se necesita algn cambio cultural. Una introduccin de los sistemas de la SCM y de consideraciones en su seleccin se puede encontrar en [Dar90:c3, AppA] se puede encontrar un caso de estudio de seleccin de un sistema de la SCM en [Mid97]. Informacin complementaria acerca de herramientas de la SCM se pueden encontrar en al AC de Mtodos y Herramientas de la Ingeniera del Software. 1.3.4 Control Proveedores/Subcontratas [Ber92:c13; Buc96:c11; IEEE828-98:c4s3.6] Un proyecto de software podra hacer uso o adquirir productos software que se hayan comprado, como compiladores u otras herramientas. La planificacin de la SCM considera si y como se pondrn estos elementos bajo control de configuracin (por ejemplo, integrados en bibliotecas de proyecto) y como se evaluarn y gestionarn los cambios y actualizaciones. Consideraciones similares son aplicables al software subcontratado. En este caso, tambin se deben establecer los requerimientos de la SCM a ser impuestos a los procesos de la SCM del subcontratista como parte del subcontrato y los medios para monitorizar que se cumple con ellos. El ltimo incluye consideraciones acerca de que informacin de la SCM ha de estar disponible para poder monitorizar, de una manera eficiente, que se cumplen los requerimientos.

que se realizan requerimientos especficos durante las actividades del da a da. Se pueden utilizar varias fuentes de informacin para encontrar consejo, basado en la informacin producida durante la actividad de planificacin, acerca de la creacin y mantenimiento de un SCMP, como en [IEEE828-98:c4]. Esta referencia proporciona requerimientos para la informacin que un SCMP ha de contener. Tambin define y describe seis categoras de informacin de la GCS que se han de incluir en un SCMP: 1.5 Introduccin (propsito, extensin, trminos usados) Gestin de la SCM (organizacin, responsabilidades, autoridades, normas aplicables, directivas y procedimientos) Actividades de la SCM (identificacin de la configuracin, control de la configuracin, etc.) Planificacin de la SCM (coordinacin con otras actividades del proyecto) Recursos de la SCM (herramientas, recursos fsicos y recursos humanos) Mantenimiento del SCMP

1.3.5 Control de Interaccin [IEEE828-98:c4s3.5] Cuando un elemento de software interacciona con otro elemento de software o hardware, un cambio a cualquiera de los dos elementos puede afectar al otro. La planificacin para los procesos de la SCM considera como se identificarn los elementos que interaccionan y como se gestionarn y comunicarn los cambios a dichos elementos. El papel de la SCM puede ser parte de proceso de nivel de sistema ms general para el control y especificacin de las interacciones y podra afectar a las especificaciones de las interacciones, planes de control de las interacciones e documentos de control de las interacciones. En este caso, la planificacin de la SCM para el control de las interacciones ocurre dentro del contexto del proceso de nivel de sistema. Se puede encontrar una discusin del rendimiento de las actividades del control de las interacciones en [Ber92:c12]. 1.4 Plan de la Pau93:L2-81] SCM [Ber92:c7; Buc96:c3;

Seguimiento de la Gestin del la Configuracin del Software [Pau93:L2-87] Despus de que el proceso de la SCM de ha implementado, puede ser necesario un cierto nivel de seguimiento para asegurarse de que las previsiones de la SCM se llevan a cabo adecuadamente (vase, por ejemplo [Buc96]). Probablemente habr requerimientos especficos de la SQA para asegurarse de que se cumplen los procesos y procedimientos especficos de la SCM. Esto podra requerir que una autoridad de la SCM se asegure de que aquellos que tengan responsabilidades asignadas realizan las tareas de la SCM definidas de una manera correcta. Este seguimiento podra ser realizado, como parte de una actividad de cumplimiento de auditora, por la autoridad de la garanta de la calidad del software. El uso de herramientas integradas de la SCM con posibilidades de control de procesos puede hacer la tarea de seguimiento ms fcil. Algunas herramientas facilitan comprobar que el proceso se cumple al mismo tiempo que proporcionan al ingeniero de software la flexibilidad de adaptar procedimientos. Otras herramientas se aseguran de que el proceso se siga, dejando menos flexibilidad al ingeniero de software. Los requerimientos de seguimiento y los niveles de flexibilidad que se proporcionarn al ingeniero de software son criterios importantes durante la seleccin de herramientas. 1.5.1 Medidas y mediciones de la SCM [Buc96:c3; Roy98] Se pueden asignar medidas de la SCM para proporcionar informacin especfica acerca de la evolucin del producto o una visin interna de cmo funcionan los procesos de la SCM. Un objetivo relacionado con el seguimiento de los procesos de la SCM es descubrir oportunidades para mejorar los procesos. Las mediciones de procesos de la SCM proporcionan un buen medio para monitorizar la efectividad de las actividades de la SCM de una manera continuada. Estas mediciones son tiles para caracterizar el estado actual del proceso y para proporcionar una base para hacer comparaciones con el

Los resultados de la planificacin de la SCM para un proyecto dado se reflejan en un Plan de Gestin de la Configuracin del Software, que es un documento vivo que sirve como referencia para los procesos de la SCM. El documento se mantiene (o sea, se actualiza y aprueba) segn vaya siendo necesario durante el ciclo de vida del software. Al implementar un SCMP, normalmente es necesario desarrollar un conjunto de procedimientos subordinados ms detallados, que definirn la forma en

tiempo. Los anlisis de las mediciones pueden proporcionar ideas que lleven a cambios en el proceso y a las correspondientes actualizaciones del SCMP. Las bibliotecas de software y las diferentes habilidades de las herramientas de la SCM proporcionan fuentes para extraer informacin acerca de las caractersticas de los procesos de la SCM (e informacin del proyecto y de gestin). Por ejemplo, sera til para evaluar los criterios usados para determinar qu niveles de autoridad son los ptimos para autorizar ciertos tipos de cambios, el tener informacin acerca del tiempo necesario para realizar distintos tipos de cambios. Se debe tener cuidado en asegurarse de mantener el objetivo del seguimiento en los descubrimientos que se pueden ganar de las mediciones y no en las mediciones en s mismas. El KA del Proceso de la Ingeniera del Software presenta una discusin acerca de medidas del producto y de los procesos. El programa de medidas del software se describe en el KA de la Gestin del Ingeniera del Software. 1.5.2 Auditoras durante el proceso de la SCM [Buc96:c15] Se pueden llevar a cabo auditoras durante el proceso de ingeniera del software para investigar el estado actual de elementos especficos de la configuracin o para evaluar la implementacin del proceso de la SCM. Las auditoras durante el proceso de la SCM proporcionan un mecanismo ms formal para monitorizar aspectos seleccionados del proceso y se podra coordinar con la funcin del SQA. Vase tambin el punto 5 Auditando la Configuracin del Software.

2.1.2

Elemento de configuracin del software [Buc96:c4;c6; Con98:c2; Pre04:c27] Un elemento de configuracin de software (SCI) es una agregacin de software, asignado para tener gestin de configuracin y se trata como una sola entidad en el proceso de la SCM (IEEE610.12-90). La SCM controla un conjunto variado de elementos aparte del cdigo. Los planes, documentacin de especificaciones y diseo, material de pruebas, herramientas de software, cdigo fuente y ejecutable, bibliotecas de cdigo, datos y diccionarios de datos y documentacin para la instalacin, mantenimiento, operacin y uso del software, estn entre los elementos de software con potencial para convertirse en SCIs. La seleccin de SCIs es un proceso importante en el que se ha de conseguir un equilibrio entre proporcionar una visibilidad adecuada para el control del proyecto y proporcionar un nmero manejable de elementos a controlar. Se puede encontrar una lista con criterios para la seleccin de SCIs en [Ber92]. 2.1.3 Relaciones entre elementos de la configuracin del software [Con98:c2; Pre04:c27] La relacin estructural entre los SCIs seleccionados y sus partes constituyentes, afectan a otras actividades o tareas de la SCM, como la construccin del software o el anlisis del impacto de los cambios propuestos. El seguimiento adecuado de estas relaciones es tambin importante como soporte a las operaciones de seguimiento. La necesidad de asignar los elementos identificados a la estructura del software y la necesidad de soportar la evolucin de los elementos de software y sus relaciones, se debera considerar durante el diseo de los mtodos de identificacin para los SCIs. 2.1.4 Versiones del software [Bab86:c2] Los elementos de software evolucionan al mismo tiempo que el proyecto de software avanza. Una versin de un elemento de software es un elemento identificado y especificado particularmente. Se puede pensar en ella como el estado de un elemento que evoluciona. [Con98:c3-c5] Una revisin es una nueva versin de un elemento que reemplazar la versin anterior. Una variante es una nueva versin de un elemento que se aadir la configuracin sin reemplazar la versin anterior. 2.1.5 Lnea base [Bab86:c5; Buc96:c4; Pre04:c27] La lnea base de un software es un conjunto de elementos Figura 4 Adquisicin de elementos

3. Identificacin de la Configuracin del Software [IEEE12207.0-96:c6s2.2] La actividad de la identificacin de la configuracin del software identifica elementos que se han de controlar, establece mtodos de identificacin para los elementos y sus versiones y establece las herramientas y tcnicas que se usarn para adquirir y gestionar los elementos controlados. Estas actividades proporcionan la base para las otras actividades de la SCM. 2.1 Identificando los Elementos a Controlar [Ber92:c8; IEEE828-98:c4s3.1; Pau93:L2-83; Som05:c29] Un primer paso para controlar cambios es identificar los elementos de software a ser controlados. Esto requiere comprender la configuracin del software en el contexto de la configuracin del sistema, seleccionando elementos de configuracin de software, desarrollando estrategias para etiquetar elementos de software y describir las relaciones entre ellos e identificar las lneas base que se usarn, adems de los procedimientos de adquisicin de elementos para una lnea base. Configuracin del software [Buc96:c4; c6, Pre04:c27] Una configuracin del software es el conjunto de caractersticas funcionales y fsicas del software tal y como se han definido en la documentacin tcnica o conseguido en un producto final (IEEE610.12-90). Se puede ver como parte de una configuracin del sistema ms general. 2.1.1

de configuracin del software que se han designado formalmente y fijados en un momento determinado durante el ciclo de vida del software. El trmino se usa tambin para referirse a una versin en particular de un elemento de la configuracin del software acordada previamente. En cualquiera de los casos, la lnea base solo se puede cambiar por medio de procedimientos de control de cambios formales. Una lnea base representa, junto con todos los cambios aprobados para la lnea base, la configuracin actual aprobada. Algunas lneas base comnmente utilizadas son la funcional, la asignada, la de desarrollo y la de productos (vase por ejemplo [Ber92]). La lnea base funcional se corresponde con los requerimientos del sistema ya verificados. La lnea base asignada se corresponde con las especificaciones de los requerimientos del sistema y las especificaciones de los requerimientos de las interacciones entre software. La lnea base de desarrollo representa la configuracin evolutiva del software en momentos determinados durante el ciclo de vida del proyecto. La autoridad de cambios para dicha lnea base es normalmente la responsabilidad de la organizacin de desarrollo, pero se podra compartir con otras organizaciones (por ejemplo la de SCM o la de Pruebas). La lnea base de un producto se corresponde con el producto de software completo, entregado para integracin de sistemas. Las lneas base a usar en un proyecto determinado, junto con los niveles de autoridad asociados necesarios para la aprobacin de cambios, se identifican normalmente en el SCMP. Adquisicin de elementos de configuracin del software [Buc96:c4] Diferentes elementos de configuracin del software se ponen bajo el control de la SCM en momentos distintos; lo que significa que se aaden a una lnea base en particular en momentos especficos del ciclo de vida del software. El evento que da comienzo al proceso es la terminacin de alguna forma de tarea formal de aceptacin, como una revisin formal. La figura 2 caracteriza el crecimiento de elementos en una lnea base durante el ciclo de vida. Esta figura se basa en el modelo de cascada solamente por motivos ilustrativos; los subscripts usados en la figura indican la versin de los elementos durante su evolucin. La peticin de cambios del software (SCR) se describe en el punto 3.1 Peticin, Evaluacin y Aprobacin de Cambios del Software. Seguidamente de la adquisicin de un SCI, los cambios a dicho elemento se deben aprobar formalmente de la manera apropiada para el elemento y la lnea base involucrados, como se define en el SCMP. Despus de la aprobacin, el elemento se incorpora en la lnea base del software siguiendo el procedimiento apropiado. 2.2 Biblioteca de Software [Bab86:c2; c5; Buc96:c4; IEEE828- 98:c4s3.1; Pau93:L2-82; Som01:c29] Una biblioteca de software es una coleccin controlada de software y los documentos relacionados, y est diseada para ayudar en el desarrollo del software, su uso y mantenimiento (IEEE610.12-90). Tambin tiene un papel durante las actividades de gestin de lanzamientos y entrega de software. Se pueden usar varios tipos de bibliotecas de software, cada uno se corresponde con un nivel de madurez determinado del elemento de software. Por ejemplo, una biblioteca de desarrollo podra dar soporte durante la codificacin y una biblioteca de soporte de proyectos podra dar soporte a las pruebas, mientras que una biblioteca maestra se podra utilizar en 2.1.6

el producto final. Se ha de asociar el nivel apropiado de control de la SCM (la lnea base asociada y el nivel de autoridad para cambios) a cada biblioteca. La seguridad, en trminos de control de acceso y medios de copia de seguridad, es un aspecto clave en la gestin de bibliotecas. Un modelo de una biblioteca de software se puede encontrar en [Ber92:c14]. La herramienta/s que se usan en cada biblioteca deben soportar los controles de la SCM que sean necesarios para dicha biblioteca, en trminos de control de los SCIs y de acceso a la biblioteca. En el nivel de la biblioteca de desarrollo, esto significa la capacidad de gestin de cdigo que dar servicio a desarrolladores, ingenieros de mantenimiento y SCM. Est enfocada a gestionar las versiones de los elementos de software al mismo tiempo que da soporte a las actividades de mltiples desarrolladores. A mayores niveles de control, el acceso es ms restringido y el principal usuario en la SCM. Estas bibliotecas son tambin una fuente importante de informacin para mediciones del trabajo realizado y del progreso. 4. Control de la Configuracin del Software [IEEE12207.0-96:c6s2.3; Pau93:L2-84]

Al control de la configuracin del software le concierne la gestin de cambios durante el ciclo de vida del software. Cubre los procesos que determinan los cambios que se realizarn, la autoridad requerida para aprobar ciertos cambios, el soporte para la implementacin de dichos cambios y el concepto de desviacin formal de los requerimientos del proyecto, adems de las cancelaciones de requerimientos. La informacin derivada de estas actividades es til para medir el trfico de cambios y ruptura y aspectos por rehacer. 3.1 Peticin, Evaluacin y Aprobacin de Cambios del Software [IEEE828-98:c4s3.2; Pre04:c27;Som05:c29] El primer paso para gestionar cambios en elementos controlados es determinar los cambios a realizar. El proceso de peticin de cambio del software (vase la Figura 5) proporciona procedimientos formales para recoger y registrar peticiones de cambios, evaluando el coste e impacto potencial de un cambio propuesto y aceptar, modificar o rechazar el cambio propuesto. Las peticiones de cambios de elementos de la configuracin del software los puede originar cualquiera durante cualquier momento del ciclo de vida del software y puede incluir una solucin propuesta y una prioridad. Una fuente de peticin de cambios es la iniciacin de acciones

Figura 5 Flujo de un Proceso de Control de Cambios

correctivas en respuesta a los informes de problemas. El tipo de cambio (por ejemplo, un defecto o mejora) se registra normalmente en la SCR, sin importar la fuente. Esto proporciona la oportunidad de seguir defectos y recoger mediciones de la actividad de cambios por tipo de cambio. Una vez se ha recibido un SCR, se realiza una evaluacin tcnica (tambin conocida como anlisis del impacto) para determinar el tamao de las modificaciones necesarias en caso de que se aceptara la peticin de cambio. Para realizar esta tarea es importante un buen entendimiento de las relaciones entre elementos de software (y posiblemente hardware). Finalmente, la evaluacin de los aspectos tcnicos y de gestin de la peticin de cambios, ser realizada por una autoridad establecida, de acuerdo con la lnea base afectada, el SCI involucrado y la naturaleza del cambio y entonces se aceptar, modificar, rechazar o pospondr el cambio propuesto. Consejo de Control de la Configuracin del Software [Ber92:c9; Buc96:c9,c11; Pre04:c27] La autoridad para aceptar o rechazar los cambios propuestos, es normalmente la responsabilidad de una entidad conocida como Consejo de Control de la Configuracin (CCB). En proyectos pequeos, dicha autoridad normalmente reside en el Jefe de Proyecto o algn otro individuo elegido, en vez de en un consejo de varias personas. Puede haber mltiples niveles de autoridad de cambios, dependiendo de una variedad de criterios, como cuan crtico sea el elemento involucrado, la naturaleza del cambio (por ejemplo, el impacto en el presupuesto y planificacin), o el momento actual en el ciclo de vida. La composicin de CCBs que se utilice para un sistema determinado varia en relacin a estos criterios (siempre atendera un representante de la SCM). Cuando el alcance de la autoridad de un CCB es est limitado solamente al software, se le conoce como Consejo de Control de Configuracin del Software (CCBS). Las actividades del CCB estn sujetas normalmente a auditoras de la calidad de software o revisiones. Proceso de peticin de cambios del software [Buc96:c9,c11; Pre04:c27] Un proceso efectivo de peticin de cambio del software (SCR) requiere el uso de herramientas de soporte y procedimientos, desde formularios de papel y un procedimientos documentado hasta la herramienta electrnica para generar peticiones de cambio, imponiendo el flujo del proceso de cambios, capturando las decisiones del CCB y produciendo informacin del proceso de cambio. Un enlace entre las habilidades de esta herramienta y el sistema de informe de errores puede facilitar el seguimiento de soluciones para los informes de errores. Las descripciones del proceso de cambios y los formularios de soporte (informacin) aparecen en gran nmero de las referencias, por ejemplo [Ber92:c9]. 3.1.2 3.1.1

PCBs, es necesario proporcionar los medios para seguir que PCBs se aaden a que versiones de software y lneas bases particulares. Como parte de la finalizacin del proceso de cambios, los cambios completados podran sufrir auditoras de configuracin y verificacin de la calidad del software. Esto incluye asegurarse de que solo se han realizado los cambios aprobados. El proceso de peticin de cambios mencionado anteriormente, aadir la informacin de la aprobacin para el cambio a la documentacin de la SCM (y otras). La implementacin real de un cambio est soportada por las habilidades de la herramienta de bibliotecas, que proporciona gestin de versiones y soporte para el almacenamiento de cdigo. Estas herramientas proporcionan como mnimo habilidades para llevar a cabo el control de de las versiones asociadas. Herramientas ms potentes pueden dar soporte al desarrollo en paralelo y entornos geogrficamente distribuidos. Estas herramientas podran aparecer como aplicaciones especializadas separadas, bajo el control de un grupo independiente de la SCM. Tambin podran aparecer integradas como parte del entorno de la ingeniera del software. Finalmente, podran ser tan elementales como un sistema de control de cambios rudimentario proporcionado por el sistema operativo. 3.3 Desviaciones y Remisiones Buc96:c12] [Ber92:c9;

Las limitaciones impuestas al esfuerzo de la ingeniera del software o las especificaciones producidas durante las actividades de desarrollo podran contener necesidades que no pueden ser satisfechas en el punto designado del ciclo de vida. Una remisin es la autorizacin para abandonar una necesidad antes del desarrollo del elemento. Un rechazo es la autorizacin para utilizar un elemento, despus de su desarrollo, que se aleja de la necesidad de alguna manera. En estos casos se usa un procedimiento formal para ganar la aprobacin para la desviacin o remisin de las necesidades. 5. Registro del Estado de la Configuracin del Software [IEEE12207.0-96:c6s2.4; Pau93:L2-85; Pre04:c27;Som05:c29] La contabilidad del estado de la configuracin del software (SCSA) es la actividad de registrar y proporcionar la informacin necesaria para una gestin efectiva de la configuracin del software 4.1 Informacin del Estado de la Configuracin del Software [Buc96:c13; IEEE828-98:c4s3.3] La actividad de la SCSA disea y opera un sistema para la captura y generacin de los informes necesarios durante el ciclo de vida. Como en cualquier sistema de informacin, se debe identificar, recoger y mantener la informacin del estado de la configuracin que se ha de gestionar segn las configuraciones evolucionan. Se necesitan varias mediciones e informacin para dar soporte al proceso de la SCM y para cubrir las necesidades de informes del estado de la configuracin de las actividades de gestin, ingeniera del software y otras actividades relacionadas. Los tipos de informacin disponible incluyen la identificacin de la configuracin aprobada y la identificacin y estado de implementacin actual de cambios, desviaciones y remisiones. Se puede

3.2 Implementando Cambios en el Software [Bab86:c6; Ber92:c9; Buc96:c9,c11; IEEE828-98:c4s3.2.4; Pre04:c27; Som05:c29] Las PCBs aprobadas se implementan utilizando los procedimientos de software definidos, de acuerdo con los requerimientos de planificacin aplicables. Como se podra implementar simultneamente un nmero de

encontrar una lista parcial con elementos de datos importantes en [Ber92:c10] Es necesario algn tipo de soporte de herramientas automticas para llevar a cabo las tareas de recogida de datos y generacin de informes de la SCSA. Podra ser una habilidad de la base de datos o una herramienta independiente o la habilidad del entorno de una herramienta integrada ms grande. 4.2 Informes del Estado de la Configuracin del Software [Ber92:c10; Buc96:c13] Los informes generados pueden ser usados por varios elementos de la organizacin o del proyecto, incluyendo el equipo de desarrollo, el equipo de mantenimiento, la gestin del proyecto y las actividades de calidad de software. Los informes pueden tener la forma de respuestas inmediatas a preguntas especficas o ser informes prediseados producidos peridicamente. Alguna de la informacin producida por las actividades de contabilidad del estado durante el curso del ciclo de vida podra acabar siendo registros de la garanta de la calidad. Adems de informar del estado actual de la configuracin, la informacin obtenida por la SCSA puede usarse como base para varias mediciones tiles para la gestin, desarrollo y SCM. Un ejemplo podra ser el nmero de cambios pedidos por ECS y el tiempo medio necesario para implementar una peticin de cambio. 5. Auditora de la Configuracin del Software [IEEE828-98:c4s3.4; IEEE12207.096:c6s2.5;Pau93:L2-86; Pre04:c26c27]

5.1 Auditora de la Configuracin Funcional del Software El propsito de la FCA del software es asegurarse de que el elemento de software que se audita es consistente con la especificacin. Los resultados de la verificacin y validacin del software son actividades clave como entrada de datos para esta auditora. 5.2 Auditora de la Configuracin Fsica del Software El propsito de la auditora de la configuracin fsica del software (PCA) es asegurarse de que el diseo y la documentacin de referencia son consistentes con el producto de software tal y como se ha construido. 5.3 Auditoras durante el proceso de una Lnea Base de Software Tal y como se menciona anteriormente, las auditoras se pueden llevar a cabo durante el proceso de desarrollo para investigar el estado actual de un elemento de la configuracin especfico. En dicho caso, se podra aplicar una auditora a elementos seleccionados de la lnea base para asegurarse de que el rendimiento es consistente con las especificaciones o para asegurarse de que la documentacin continua siendo consistente con el elemento de la lnea base que se est desarrollando. 6. Gestin del Lanzamiento y Distribucin del Software [IEEE12207.0-96:c6s2.6]

La auditora de software es una actividad que se realiza para evaluar independientemente la conformidad de productos de software y procesos con las regulaciones, estndares, guas, planes y procedimientos (IEEE102897). Las auditoras se llevan a cabo de acuerdo con un proceso bien definido que consiste en varias responsabilidades y papeles de auditora. En consecuencia, cada auditora se debe planear con cuidado. Una auditora requiere un nmero de personas que realizarn una variedad de tareas en un periodo de tiempo bastante reducido. Herramientas que den soporte a la planificacin y ejecucin de la auditora pueden facilitar el proceso enormemente. Se pueden encontrar consejos para realizar auditoras de software en varias referencias, como [Ber92:c11, Buc96:c15] y (IEEE102897). La actividad de auditora de la configuracin del software determina el grado en que un elemento satisface las caractersticas funcionales y fsicas. Se pueden realizar auditoras informales de este tipo en momentos clave del ciclo de vida. Hay dos tipos de auditoras que podran ser requeridas por el contrato (por ejemplo, en contratos para software crtico): la Auditora de la Configuracin Funcional (FCA) y la Auditora de la Configuracin Fsica (PCA). El completar con xito estas auditoras puede ser un prerrequisito para establecer la lnea base del producto. Buckley [Buc96:c15] contrasta los objetivos de las FCA y PCA en los contextos de software y hardware y recomienda que se evale cuidadosamente la necesidad de una FCA y PCA de software antes de realizarlas.

El trmino lanzamiento se usa en este contexto para referirse a la distribucin un elemento de la configuracin del software fuera de la actividad de desarrollo. Esto incluye tanto lanzamientos internos como la distribucin a clientes. Cuando una versin diferente de un elemento de software est disponible para ser entregada, como las versiones para diferentes plataformas o versiones con diferentes capacidades, es normalmente necesario preparar una versin especfica y empaquetar los materiales adecuados para distribuirla. La biblioteca de software es un elemento clave para realizar las tareas de lanzamiento y distribucin. 6.1 Construccin del Software [Bab86:c6; Som05:c29] La construccin del software es la actividad de combinar la versin correcta de los elementos de configuracin del software, usando la configuracin de datos apropiada, en un programa ejecutable para su distribucin a los clientes u otros receptores, como la actividad de pruebas. Las instrucciones de construccin se aseguran de que se toman los pasos de construccin adecuados y en la secuencia correcta. Adems de construir software para un nuevo lanzamiento, la SCM normalmente necesita ser capaz de reproducir lanzamientos previos para recuperacin, pruebas, mantenimiento u otros propsitos de lanzamiento adicionales. El software se construye usando versiones particulares de la herramientas de soporte, como compiladores. Podra ser necesario reconstruir una copia exacta de un elemento de configuracin que se haya construido previamente. En ese caso, las herramientas de soporte y las instrucciones de construccin asociadas deben de estar bajo el control de la SCM para asegurarse de la disponibilidad de la las versiones correctas de las herramientas. Las habilidades de una herramienta son tiles para seleccionar la versin correcta de elementos de software para un entorno destino determinado y para el proceso de

construir el software automticamente con las versiones seleccionadas y los datos de configuracin apropiados. En proyectos grandes con desarrollo en paralelo o en entornos de desarrollo distribuido, estas habilidades de las herramientas son necesarias. La mayora de los entornos de ingeniera del software proporcionan esta habilidad. Estas herramientas varan en complejidad, desde las que requieren que el ingeniero de software aprenda un lenguaje de guiones especfico a soluciones grficas que ocultan la mayor parte de la complejidad en una solucin de construccin inteligente. El proceso y los productos de la construccin estn sujetos, normalmente, a verificacin de la calidad del software. Los resultados de un proceso de construccin se podran necesitar para futuras referencias y podran convertirse en registros de la garanta del software. 6.2 Gestin del Lanzamiento del Software [Som05:c29] La gestin de lanzamiento del software conlleva la identificacin, empaquetamiento y distribucin de los elementos de un producto, por ejemplo, programas ejecutables, documentacin, notas de lanzamiento y datos de configuracin. Dado que los cambios pueden ocurrir constantemente, una de las preocupaciones en la gestin de lanzamientos es determinar cundo realizar un lanzamiento. La severidad de los problemas solucionados por el lanzamiento afecta a esta decisin (Som01). La tarea de empaquetamiento debe identificar que elementos del producto se deben distribuir y por tanto seleccionar

las variantes correctas de dichos elementos, dada la aplicacin que se le quiere dar al producto. La informacin que documenta el contenido fsico del lanzamiento se conoce como documento de descripcin de la versin. Las notas del lanzamiento normalmente describen nuevas habilidades, problemas conocidos y requisitos necesarios de la plataforma para la operacin adecuada del producto. El paquete que se distribuir tambin contiene instrucciones de instalacin o actualizacin. El ltimo se puede complicar porque algunos usuarios podran tener productos que son antiguos por varias versiones. Finalmente, en algunos casos, se podran requerir la actividad de gestin de lanzamientos para el seguimiento de la distribucin del producto a varios clientes o sistemas objetivo. Un ejemplo sera el caso en el que se requiriese que un proveedor tiene que notificar a un cliente de nuevos problemas. Las habilidades de una herramienta son necesarias para dar soporte a estas funciones de gestin de los lanzamientos. Es til tener una conexin con las habilidades de la herramienta para dar soporte a los procesos de peticiones de cambios, de tal forma que se puedan relacionar los contenidos de un lanzamiento con los SCR que se han recibido. Esta habilidad de las herramientas tambin podra mantener informacin en varias plataformas destino y de varios entornos de clientes.

MATRIZ DE TEMAS VS. MATERIAL DE REFERENCIA


[IEEE1220 7.0-96] [IEEE82898] [Moo98] [Som05] c29 c4s2 c4s4, c4s5 c6 c11 c3 * c3 c15 c6s2.2 c8 c4, c6 c4, c6 c4s3.1 L283 c27 c2 c2 c2 c5 * c4 c4 c2, c5 c14 c4 c4s3.1 c6s2.3 c4s3.2 c9 c9 c6 c9 c9 c9, c11 c9, c11 c9, c11 c12 L282 L284 c27 c27 c27 c4s3.2.4 L285 c27 c29 c29 c27 c27 c27 c27 c29 c3, App A c4s3.6 c4s3.5 c4 c4 L281 L287 188-202, 283-298 * * c29 c29 c29 c29 [Con98] [Mid97] [Bab86] [Roy98] [Buc96] [Dar90] [Pau93]

[Ber92]

1.Gestin del proceso SCM 1.1Contexto de Organizacin para SCM 1.2Restricciones y Consejos para SCM 1.3Planificacin de SCM Organizacin y responsabilidades Recursos y planificacin Seleccin de herramientas e implementacin Control Proveedores/Subcontratas Control de Interaccin 1.4Plan de SCM 1.5Seguimiento de la SCM Mtricas y mediciones Auditorias durante el proceso de SCM 2. Identificacin de la Configuracin Sw 2.1Identificando los elementos a controlar Configuracin software Elementos de configuracin software Relaciones entre elementos de Configuracin Sw Versiones Software Lnea Base Adquisicin de elementos de Configuracin Sw 2.2Biblioteca Software 3. Control de la Configuracin Sw 3.1 Peticin, Evaluacin y Aprobacin de Cambios Control de la Configuracin del Sw Proceso de Peticin de Cambios Sw 3.2 Implementando Cambios del Sw 3.3 Desviaciones y Remisiones 4. Registro del Estado de la Configuracin Sw 4.1 Informacin del Estado de la Configuracin Sw 4.2 Informes del Estado de la Configuracin Software 5. Auditora de la Configuracin Sw 5.1 Auditora de la Configuracin Funcional 5.2 Auditora de la Configuracin Fsica 5.3 Auditora de una Lnea Base de Sw 6. Gestin del Lanzamiento y Distribucin Sw 6.1 Construccin Software 6.2 Gestin del Lanzamiento Sw

c4 c5

c2

c2

c4s2.1 c4s1, c4s2.3

6.2.1

c2 c7 c7 c15 c13 c12 c7 c3 c3

c6s2.4 c10 c10 c11 c13 c13 c15 c4s3.4 c6s2.5 c4s3.3

L286

c6s2.6 c6

[Pre04] c27 c27, c26

REFERENCIAS RECOMENDADAS PARA SCM


[Bab86] W.A. Babich, Software Configuration Management, Coordination for Team Productivity, AddisonWesley, 1986. [Ber92] H.R. Berlack, Software Configuration Management, John Wiley & Sons, 1992. [Buc96] F.J. Buckley, Implementing Configuration Management: Hardware, Software, and Firmware, second ed., IEEE Computer Society Press, 1996. [Con98] R. Conradi and B. Westfechtel, Version Models for Software Configuration Management, ACM Computing Surveys, vol. 30, iss. 2, June 1998. [Dar90] S.A. Dart, Spectrum of Functionality in Configuration Management Systems, Software Engineering Institute, Carnegie Mellon University, 1990. [IEEE828-98] IEEE Std 828-1998, IEEE Standard for Software Configuration Management Plans, IEEE, 1998.

[IEEE12207.0-96] IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information TechnologySoftware Life Cycle Processes, IEEE, 1996. [Mid97] A.K. Midha, Software Configuration Management for the 21st Century, Bell Labs Technical Journal, vol. 2, iss. 1, Winter 1997, pp. 154-165. [Moo98] J.W. Moore, Software Engineering Standards: A Users Roadmap, IEEE Computer Society, 1998. [Pau93] M.C. Paulk et al., Key Practices of the Capability Maturity Model, Version 1.1, technical report CMU/SEI93-TR-025, Software Engineering Institute, Carnegie Mellon University, 1993. [Pre04] R.S. Pressman, Software Engineering: A Practitioners Approach, Sixth ed, McGraw-Hill, 2004. [Roy98] W. Royce, Software Project Management, A United Framework, Addison-Wesley, 1998. [Som05] I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005.

APNDICE A. LISTA DE LECTURAS ADICIONALES


(Bab86) W.A. Babich, Software Configuration Management, Coordination for Team Productivity, AddisonWesley, 1986. (Ber92) H.R. Berlack, Software Configuration Management, John Wiley & Sons, 1992. (Ber97) E.H. Bersoff, Elements of Software Configuration Management, in Software Engineering, M. Dorfman and R.H. Thayer, eds., IEEE Computer Society Press, 1997. (Buc96) F.J. Buckley, Implementing Configuration Management: Hardware, Software, and Firmware, second ed., IEEE Computer Society Press, 1996. (ElE98) K. El-Emam et al., SPICE, The Theory and Practice of Software Process Improvement and Capability Determination, presented at IEEE Computer Society, 1998. (Est95) J. Estublier, Software Configuration Management, presented at ICSE SCM-4 and SCM-5 Workshops, Berlin, 1995. (Gra92) R.B. Grady, Practical Software Metrics for Project Management and Process Management, Prentice Hall, 1992.

(Hoe02) A. v. d. Hoek, Configuration Management Yellow Pages, 2002, available at http://www.cmtoday.com/yp/configuration_management.ht ml.(Hum89) W. Humphrey, Managing the Software Process,Addison-Wesley, 1989. (Pau95) M.C. Paulk et al., The Capability Maturity Model, Guidelines for Improving the Software Process, AddisonWesley, 1995. (Som01a) I. Sommerville, Software Configuration Management, presented at ICSE SCM-6 Workshop, Berlin, 2001. (USNRC1.169-97) USNRC Regulatory Guide 1.169, Configuration Management Plans for Digital Computer Software Used in Safety Systems of Nuclear Power Plants, presented at U.S. Nuclear Regulatory Commission, Washington, D.C., 1997. (Vin88) J. Vincent, A. Waters, and J. Sinclair, Software Quality Assurance: Practice and Implementation, Prentice Hall, 1988. (Whi91) D. Whitgift, Methods and Tools for Software Configuration Management, John Wiley & Sons, 1991. .

APNDICE B. LISTA DE ESTNDARES


(IEEE730-02) IEEE Std 730-2002, IEEE Standard for Software Quality Assurance Plans, IEEE, 2002. (IEEE828-98) IEEE Std 828-1998, IEEE Standard for Software Configuration Management Plans, IEEE, 1998. (IEEE1028-97) IEEE Std 1028-1997 (R2002), IEEE Standard for Software Reviews, IEEE, 1997. (IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information TechnologySoftware Life Cycle Processes, IEEE, 1996.

(IEEE12207.1-96) IEEE/EIA 12207.1-1996, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes Life Cycle Data, IEEE, 1996. (IEEE12207.2-97) IEEE/EIA 12207.2-1997, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes Implementation Considerations, IEEE, 1997. (ISO15846-98) ISO/IEC TR 15846:1998, Information Technology - Software Life Cycle Processes - Configuration Management, ISO and IEC, 1998.

CAPTULO 8 GESTIN DE LA INGENIERA DEL SOFTWARE

ACRNIMOS
PMBOK Gua al Proyecto de Gestin del Cuerpo de Conocimientos SQA Garanta de Calidad del Software INTRODUCCIN La Gestin de la Ingeniera del Software puede definirse como la aplicacin para actividades de gestin planificacin, coordinacin, mediciones, monitoreo, control e informes que asegure un desarrollo y mantenimiento del software sistemtico, disciplinado y cuantificado (IEEE610.12-90). El KA de Gestin de la Ingeniera del Software, por tanto, se encarga de la gestin y medicin de la ingeniera del software. A pesar de que medir es un aspecto importante en todas las KAs, no es hasta aqu que se presenta el tema de programas de medicin. Aunque por una parte sea verdad afirmar que, en cierto sentido, debiera ser posible gestionar la ingeniera del software de la misma manera que cualquier otro proceso (complejo) existen aspectos especficos de los productos software y de los procesos del ciclo de vida del software que complican una gestin efectiva slo algunos de los cuales se apuntan a continuacin: La percepcin de los clientes es tal que con frecuencia existe una falta de aprecio de la complejidad inherente a la ingeniera del software, particularmente en relacin al impacto que produce cambiar los requisitos. Es casi inevitable que los propios procesos de ingeniera del software generen la necesidad de nuevos o modificados requisitos del cliente. Como resultado, el software se construye con frecuencia mediante un proceso iterativo en vez de mediante una secuencia de tareas cerradas. La ingeniera del software incorpora necesariamente aspectos de creatividad y de disciplina mantener un balance apropiado entre los dos es con frecuencia difcil. El grado de novedad y de complejidad del software son con frecuencia extremadamente altos. La tasa de cambio de la tecnologa subyacente es muy rpida.

Estos dos ltimos se cubren con ms detalle en la descripcin de este KA. A pesar de todo, esto no va en detrimento de la importancia de los temas de gestin organizacional. Dado que la unin con las disciplinas sealadas obviamente, la de gestin es importante, se describir con ms detalle que las otras descripciones del KA. Los aspectos de gestin organizacional son importantes en trminos de su impacto sobre la ingeniera del software en gestin de polticas, por ejemplo: polticas organizativas y estndares que proporcionan el marco en el que se desenvuelve la ingeniera del software. Puede que se necesite que estas polticas se vean afectadas por los requisitos de un software de desarrollo y mantenimiento efectivo, y puede que se necesite establecer un nmero de polticas especficas de ingeniera del software para una gestin eficaz de la ingeniera del software a nivel organizacional. Por ejemplo, normalmente se necesitan polticas para establecer procesos especficos a nivel organizacional o procedimientos para tareas de ingeniera del software tales como el diseo, la implementacin, la estimacin, el seguimiento y los informes. Tales polticas son esenciales, por ejemplo, para una gestin de la ingeniera del software eficaz a largo plazo, ya que establecen una base consistente sobre la que analizar actuaciones anteriores e implementar mejoras. Otro aspecto importante de la gestin es la gestin del personal: las polticas y procedimientos para contratar, entrenar y motivar al personal y actuar como mentor del desarrollo de una carrera son importantes no slo a nivel de proyecto sino tambin para el xito a largo plazo de una organizacin. Todo el personal de desarrollo del software puede haber sido entrenado del mismo modo o puede presentar retos para la gestin del personal (por ejemplo, mantener el capital en un contexto en el que la tecnologa subyacente sufre cambios continuos y rpidos). Con frecuencia tambin se menciona la gestin de la comunicacin como un aspecto pasado por alto pero importante de la actuacin de los individuos en un campo en el que es necesario un entendimiento preciso de las necesidades del usuario y de los complejos, requisitos y diseos. Finalmente, es necesaria la gestin de la cartera de trabajo, que es la capacidad de tener una visin general, no slo del conjunto del software en desarrollo sino tambin del software que ya se est utilizando en la organizacin. Ms an, la reutilizacin del software es un factor clave en el mantenimiento y mejora de la productividad y competitividad. Una reutilizacin eficaz requiere una visin estratgica que refleje el poder nico y los requisitos de esta tcnica.

Con respecto a la ingeniera del software, las actividades de gestin tienen lugar en tres niveles: gestin organizacional y de infraestructura, gestin de proyectos, y programa de planificacin y control de mediciones.

Los ingenieros del software deben entender los aspectos de gestin que se encuentran influidos de modo singular por el software, y adems conocer sus aspectos ms generales, incluso en los primeros cuatro aos tras graduarse, como est marcado en la Gua. La cultura y comportamiento organizacional y la gestin comercial funcional en trminos de consecucin de metas, aportan la gestin en cadena, la publicidad, la venta y la distribucin, todas ellas influyen, aunque sea indirectamente, en el proceso de ingeniera del software de una organizacin. La nocin de gestin de proyectos tiene que ver con esta KA, como la construccin de artefactos de software tiles, se gestiona por lo general como (quizs programas de) proyectos individuales. A este respecto, encontramos un amplio respaldo en la Gua al Proyecto de Gestin del Cuerpo de Conocimientos (PMBOK) (PMI00), que en s misma incluye las siguientes KAs de gestin de proyectos: gestin de integracin del proyecto, gestin de objetivos del proyecto, gestin del tiempo del proyecto, gestin del coste del proyecto, gestin de la calidad del proyecto, gestin de los recursos humanos del proyecto y gestin de las comunicaciones del proyecto. Est claro que todos estos temas tienen una relacin directa con el KA de Gestin de la Ingeniera del Software. Sera imposible e inadecuado intentar duplicar aqu el contenido de la Gua de la PMBOK. En su lugar, sugerimos que el lector que est interesado en la gestin de proyectos ms all de lo que es especfico a los proyectos de ingeniera del software consulte la propia PMBOK. La gestin de proyectos tambin se encuentra en el captulo sobre las Disciplinas Sealadas de la Ingeniera del Software. El KA de Gestin de la Ingeniera del Software consiste tanto en el proceso de gestin del proyecto de software en sus primeras cinco subreas, como en la medicin de la ingeniera del software en su ltima subrea. Aunque estos dos temas se suelen considerar como distintos, y de hecho poseen muchos aspectos nicos en s mismos, su gran cercana ha llevado a que se les trate de manera conjunta en esta KA. Desafortunadamente, se comparte la percepcin comn de que la industria del software entrega sus productos tarde, por encima de lo presupuestado, y de pobre calidad e incierta funcionalidad. Una gestin regulada por la medicin un principio presupuesto en cualquier disciplina de verdadera ingeniera puede ayudar a darle la vuelta a esta percepcin. En esencia, una gestin sin medicin, cualitativa y cuantitativa, da la sensacin de falta de rigor, y medir sin gestionar da la sensacin de una falta de fines o de contexto. De igual manera, sin embargo, gestin y medicin sin conocimientos de expertos es igualmente ineficaz, por lo que debemos tener cuidado para evitar poner un nfasis excesivo en los aspectos cuantitativos de la Gestin de Ingeniera del Software (GIS). Una gestin eficaz requiere la combinacin tanto de nmeros como de experiencia. Aqu se adoptan las siguientes definiciones de trabajo: El proceso de gestin se refiere a las actividades que se emprenden para asegurarse de que los procesos

de ingeniera del software se realizan de una manera consistente con las polticas, objetivos y estndares de la organizacin. La medicin se refiere a la asignacin de valores y etiquetas a los aspectos de la ingeniera del software (productos, procesos, y recursos segn los define [Fen98]) y a los modelos que se derivan de ellos, se hayan desarrollado estos modelos utilizando tcnicas estadsticas, conocimientos expertos u otras tcnicas.

Las subreas de gestin del proyecto de ingeniera del software hacen un uso extensivo del subrea de gestin de ingeniera del software. No es de extraar que esta KA est relacionada de cerca con otras en la Gua del SWEBOK, y sera de particular utilidad leer las siguientes descripciones del KA junto con sta. Los Requisitos del Software, en donde se describen algunas de las actividades que tendrn que realizarse durante la fase de definicin de Iniciacin y Alcance del proyecto. La Gestin de Configuracin del Software, ya que trata de la identificacin, control, consideraciones de estado, y auditora de la configuracin del software, junto con la gestin de entregas y repartos del software El Proceso de Ingeniera del Software, porque los procesos y los proyectos estn estrechamente relacionados (esta KA tambin describe la medicin de procesos y productos). La Calidad del Software, ya que la calidad es un objetivo constante de la gestin y es una meta con muchas actividades que tiene que gestionarse.

DESCOMPOSICIN DE LOS TEMAS DE GESTIN DE LA INGENIERA DEL SOFTWARE


Hemos creado una descomposicin basada tanto en temas como en ciclos de vida, ya que el KA de Gestin de Ingeniera del Software se ve aqu como un proceso organizacional que incorpora la nocin de gestin de procesos y proyectos. Sin embargo, la base primaria de la descomposicin de alto nivel es el proceso de gestionar un proyecto de ingeniera del software. Existen seis subreas principales. Las primeras cinco subreas siguen principalmente el Proceso de Gestin IEEE/EIA 12207. Las seis subreas son: Definicin de iniciacin y alcance, que trata de la decisin de iniciar un proyecto de ingeniera del software. Planificacin del proyecto de software, que afronta las actividades emprendidas para prepararse para una ingeniera del software exitosa desde una perspectiva de gestin. Promulgacin del proyecto de software, que trata de las actividades de gestin de ingeniera del software

ampliamente aceptadas que tienen lugar durante la ingeniera del software. Repaso y evaluacin, que buscan asegurarse de que el software es satisfactorio. Cierre, que afronta las actividades de postrealizacin de un proyecto de ingeniera del software.

Medicin de la ingeniera del software, que trata del desarrollo e implementacin eficaz de los programas de medicin en las organizaciones de ingeniera del software (IEEE12207.0-96)

La descomposicin de los temas del KA de Gestin de Ingeniera del Software se muestra en la Figura 1

Figura 1 Descomposicin de los temas del KA de Gestin de Ingeniera del Software

1.

Iniciacin y Alcance

El enfoque de este conjunto de actividades se centra en la determinacin eficaz de los requisitos del software por medio de varios mtodos de induccin y la valoracin de la viabilidad del proyecto desde distintos puntos de vista. Una vez que se ha establecido la viabilidad, la tarea pendiente dentro de este proceso es la especificacin de la validacin de requisitos y del cambio de procedimientos (ver tambin el KA de Requisitos del Software). 1.1. Determinacin y Negociacin de los Requisitos [Dor02: v2c4; Pf101: c4; Pre04: c7; Som05: c5] Los mtodos de requisitos del software para la induccin de los requisitos (por ejemplo, observacin), anlisis (por ejemplo, modelado de datos, modelado de casos de uso), especificacin y validacin (por ejemplo, prototipado) deben seleccionarse y aplicarse, tomando en cuenta las distintas perspectivas del contratista. Esto lleva a la determinacin del alcance del proyecto, de los objetivos, y de las restricciones. sta siempre es una actividad importante, ya que fija las fronteras visibles para el conjunto de tareas que se emprenden, y sucede as especialmente donde la tarea es de gran novedad. Puede encontrarse informacin adicional en el KA de los Requisitos del Software. Viabilidad, Anlisis (Tcnico, Operacional, Financiero, Social/Poltico) [Pre04: c6; Som05: c6] Se debe asegurar a los ingenieros del software que hay disponibles capacidad y recursos adecuados en forma de personas, pericia, medios, infraestructura y apoyo (sea interna o externamente) para cerciorarse de que el proyecto pueda completarse con xito de un modo oportuno y rentable (utilizando, por ejemplo, una matriz de requisitos y capacidades). A menudo esto requiere un clculo del esfuerzo y del coste basado en los mtodos adecuados (por ejemplo, tcnicas de analoga reguladas por expertos). Construir para verificar Dado que los cambios son inevitables, es de vital importancia que desde el inicio se llegue a un acuerdo entre los contratistas acerca de los medios por los que se repasarn y revisarn el alcance y requisitos (por ejemplo, por medio de procedimientos pactados para la gestin de cambios). Esto claramente implica que el alcance y los requisitos no quedarn grabados en piedra sino que pueden y deben volverse a revisar en puntos predeterminados segn se vaya desenvolviendo el proyecto (por ejemplo, en las revisiones del diseo, en las revisiones de gestin). Si se aceptan los cambios, deber usarse entonces algn tipo de anlisis de trazabilidad y de anlisis de riesgos (ver el apartado 2.5 Gestin de Riesgos) para determinar el impacto de esos

cambios. Tambin resultar til un acercamiento que gestione los cambios cuando llegue el momento de repasar los resultados del proyecto, ya que el alcance y los requisitos tendrn que ser la base para evaluar el xito. [Som05: el c6] Ver tambin la subrea de control de la configuracin del software del KA de Gestin de la Configuracin del Software. 2. Planificacin de un Proyecto de Software

El proceso de planificacin iterativa est regulado por el alcance y requisitos, y por el establecimiento de la viabilidad. A estas alturas, se evalan los procesos del ciclo de vida del software y se selecciona el ms apropiado (considerando la naturaleza del proyecto, su grado de novedad, su complejidad funcional y tcnica, sus requisitos de calidad, etc.). Si la situacin lo aconseja, se planea entonces el propio proyecto en la forma de una descomposicin jerrquica de tareas, se especifican y caracterizan los entregables asociados de cada tarea en trminos de calidad y de otros atributos en la lnea de los requisitos declarados, y se emprende la descripcin detallada del esfuerzo de realizacin, el calendario y la estimacin de costes. Ms adelante se asignan los recursos a las tareas para optimizar la productividad del personal (a nivel de individuo, de equipo y organizacional), el uso de equipos y materiales, y la adhesin a los horarios. Se emprende una gestin de riesgos detallada y se discute el perfil de riesgo entre todos los contratistas de relieve, llegando a un acuerdo. Se determinan los procesos comprehensivos de gestin de la calidad del software como parte del proceso en trminos de procedimientos y responsabilidades para asegurar la calidad del software, la verificacin y la validacin, las revisiones y las auditoras (ver el KA de la Calidad del Software). Ya que es un proceso iterativo, resulta de vital importancia que se declaren y pacten con claridad los procesos y responsabilidades para la gestin, repaso y revisin del plan en ejecucin. Planificacin de un Proceso La seleccin de un modelo adecuado de ciclo de vida del software (por ejemplo, un prototipado evolutivo en espiral) y la adaptacin y el despliegue de ciclos de vida del software, se emprenden a la luz del alcance particular y de los requisitos del proyecto. Tambin se seleccionan mtodos y herramientas pertinentes. [Dor02: el v1c6,v2c8; Pfl01: el c2; Pre04: el c2; Rei02: el c1,c3,c5; Som05: el c3; Tha97: el c3] A nivel de proyecto, se utilizan mtodos y herramientas adecuados para descomponer el proyecto en tareas, con entradas asociadas, resultados y condiciones de finalizacin de obra (por ejemplo, una estructura para la descomposicin del trabajo). [Dor02: el v2c7; Pfl01: el c3; Pre04: el c21; Rei02: el c4,c5; Som05: el c4; Tha97: el c4,c6] Esto influye a su vez en las decisiones sobre el horario y estructura de la organizacin de alto nivel del proyecto.

Determinar los Entregables Se especifica y caracteriza el producto o productos de cada tarea (por ejemplo, un diseo arquitectnico, un informe de inspeccin). [Pfl01: el c3; Pre04: el c24; Tha97: el c4] Se evalan las oportunidades de reutilizar los componentes del software de desarrollos anteriores o de utilizar productos software del mercado. Se planifica la utilizacin de terceras personas y del software obtenido y se seleccionan los proveedores. Esfuerzo, Calendario y Clculo del Coste Partiendo de la descomposicin de tareas, entradas y resultados, se determina el rango de esfuerzo esperado que se requiere para cada tarea, utilizando un modelo de estimacin calibrado basado en datos histricos sobre el esfuerzo empleado, cuando estn disponibles y sean pertinentes, u otros mtodos como el juicio de un especialista. Se establecen las dependencias de las tareas y se identifican los cuellos de botella potenciales utilizando los mtodos convenientes (por ejemplo, el anlisis del camino crtico). Cuando sea posible se solucionan los cuellos de botella, y se elabora el esperado cuadro de tareas con los horarios de inicio, duraciones y horarios de finalizacin bien planificados (por ejemplo, el diagrama PERT). Los requisitos de recursos (personas, herramientas) se traducen en estimaciones de costo. [Dor02: el v2c7; Fen98: el c12; Pfl01: el c3; Pre04: el c23, el c24,; Rei02: el c5,c6; Som05: el c4,c23; Tha97: el c5] sta es una actividad muy iterativa que debe ser negociada y revisada hasta que se alcance un acuerdo general entre los contratistas afectados (principalmente de ingeniera y gestin). 2.4 Reparto de Recursos [Pf101: c3; Pre04: c24; Rei02: c8,c9; Som05: c4; Tha97: c6,c7] Los equipos, medios y personas se asocian a las tareas programadas, incluyendo la asignacin de responsabilidades de cara a su completa realizacin (usando, por ejemplo, un diagrama de Gantt). Esta actividad est regulada y limitada por la disponibilidad de los recursos y por su uso ptimo bajo estas circunstancias, as como por temas relacionados con el personal (por ejemplo, productividad de los individuos y equipos, dinmicas de equipo, estructuras organizativas y de equipo). 2.5 Gestin de Riesgos Se lleva a cabo la identificacin y anlisis de riesgos (lo que puede salir mal, cmo y por qu, y sus posibles consecuencias), la valoracin crtica de riesgos (cules son los riesgos ms significativos a los que se est expuestos, sobre cules podemos hacer algo en cuanto a su influencia), la mitigacin de riesgos y la planificacin de contingencias (formulando una estrategia para controlar los riesgos y gestionar los perfiles de riesgo). Los mtodos de valoracin de

riesgos (por ejemplo, los rboles de decisin y los procesos de simulacin) deben utilizarse para resaltar y evaluar riesgos. A estas alturas se deben determinar las polticas de abandono de proyectos en conversaciones con todos los otros contratistas. [Dor02: el v2c7; Pfl01: el c3; Pre04: el c25; Rei02: el c11; Som05: el c4; Tha97: el c4] La gestin de riesgos del proyecto debe influir en aspectos de riesgo nicos en el software, como la tendencia de los ingenieros del software a agregar utilidades no deseadas o como el controlador de riesgos presente en la naturaleza intangible del software. 2.6 Gestin de Calidad [Dor02: v1c8,v2c3-c5; Pre04: c26; Rei02: c10; Som05: c24,c25; Tha97: c9,c10] La calidad se define en trminos de atributos pertinentes al proyecto especfico y en los de cualquier producto o productos asociados a ella, probablemente tanto en trminos cuantitativos como cualitativos. Estas caractersticas de la calidad habrn sido determinadas en la especificacin de requisitos detallados del software. Ver tambin el KA de los Requisitos del Software. Los lmites de adhesin a la calidad para cada indicador se colocan de acuerdo a las expectativas que tenga el contratista sobre el software en cuestin. Los procedimientos que hacen referencia a lo largo del proceso a la SQA en curso a lo largo del proceso y a la verificacin y validacin del producto (entregable) tambin se especifican en esta fase (por ejemplo, las revisiones tcnicas e inspecciones) (ver tambin el KA de la Calidad del Software). 2.7 Gestin de Planes [Som05: c4; Tha97: c4] Tambin se ha de planificar cmo se gestionar el proyecto y cmo se gestionar la planificacin. Los informes, la supervisin y el control del proyecto deben encajar en el proyecto de ingeniera del software seleccionado y en las realidades del proyecto, y deben reflejarse en los varios artefactos que se usarn para gestionarlo. Pero, en un contexto en donde los cambios son ms una expectativa que un susto, es de vital importancia que se gestionen los propios planes. Esto requiere que sistemticamente se dirija, supervise, repase, informe y, donde as lo requiera, revise, la adhesin a los planes. Los planes asociados a otros procesos de soporte orientados a gestin (por ejemplo, documentacin, gestin de la configuracin del software, y resolucin de problemas) tambin necesitan gestionarse de esa misma manera. 3. Promulgacin del Proyecto de Software

A continuacin se ejecutan los planes y se promulgan los procesos incluidos en los planes. A lo largo de este proceso todo se centra en la adhesin a los planes, con

una expectativa arrolladora de que tal adhesin llevar a la satisfaccin plena de los requisitos del contratista y al logro de los objetivos del proyecto. Las actividades actuales de gestin para medir, supervisar, controlar e informar son fundamentales para la promulgacin. 3.1 Implementacin de Planes [Pf101: c3; Som05: c4] Inicia el proyecto y se emprenden las actividades del proyecto segn el horario. En el proceso, se utilizan recursos (por ejemplo, esfuerzo del personal, financiacin) y se producen entregables (por ejemplo, documentos de diseo de arquitectura, casos de pruebas). 3.2 Gestin de Contratos con Proveedores [Som05: c4] Preparar y ejecutar acuerdos con los proveedores, supervisar la actuacin del proveedor, y aceptar sus productos, incorporndolos cuando sean adecuados. 3.3 Implementacin de Procesos para Medir [Fen98: c13,c14; Pre04: c22; Rei02: c10,c12; Tha97: c3,c10] Se promulga el proceso de medicin junto con el proyecto del software, asegurndose de que se recogen datos relevantes y tiles (ver tambin los apartados 6.2 Planificar el Proceso de Medicin y 6.3 Realizar el Proceso de Medicin). 3.4 Proceso de Supervisin [Dor02: v1c8, v2c2-c5,c7; Rei02: c10; Som05: c25; Tha97: c3;c9] Se evala continuamente y a intervalos predeterminados la adhesin a los diferentes planes. Se analizan los resultados y las condiciones de acabado de cada tarea. Se evalan los entregables en trminos de las caractersticas que ellos requieren (por ejemplo, por medio de revisiones y auditoras). Se investiga el consumo de fuerzas, la adhesin a horarios, y los costes a da de hoy, y se examina el uso de recursos. Se revisa de nuevo el perfil de riesgo del proyecto y se evala la adhesin a los requisitos de calidad. Se modelan y analizan los datos de medicin. Se emprende el anlisis de variacin basado en la desviacin actual de los resultados y valores esperados. Esto puede darse en forma de desbordamiento de costes, equivocaciones en el horario y similares. Se lleva a cabo la identificacin de la desviacin y el anlisis de calidad y otros datos de medicin (por ejemplo, el anlisis de la densidad de los defectos). Se recalculan la exposicin a riesgos y sus influencias y se ejecutan de nuevo los rboles de decisiones, las simulaciones, etc., a la luz de los nuevos datos. Estas actividades permiten la deteccin de problemas y la identificacin de excepciones basada en la superacin

de los lmites existentes. Se informa de los resultados segn se vaya necesitando y sobre todo cuando se hayan superado los lmites aceptables. 3.5 Proceso de Control [Dor02: v2c7; Rei02: c10; Tha97: c3,c9] Los resultados de las actividades de supervisin del proceso proporcionan la base sobre la que se toman las decisiones para actuar. Se pueden hacer cambios al proyecto cuando se juzgue oportuno y cuando se modele y gestione el impacto y los riesgos asociados a stos. Esto puede tomar la forma de una accin correctiva (por ejemplo, volviendo a probar ciertos componentes), puede que involucre la incorporacin de contingencias para evitar sucesos semejantes (por ejemplo, la decisin de utilizar prototipados para ayudar en la validacin de los requisitos del software), y/o puede implicar la revisin de los distintos planes y de otros documentos del proyecto (por ejemplo, la especificacin de requisitos) para corregir los resultados inesperados y sus implicaciones. En algunos casos, puede llevar al abandono del proyecto. En todos los casos, se adhiere al control de cambios y a los procedimientos de gestin de configuracin del software (ver tambin el KA de la Gestin de Configuracin del Software) se documentan y comunican decisiones a todos los implicados importantes, se repasan los planes y si es necesario se revisan, y todos los datos importantes se graban en la base de datos central (ver tambin el apartado 6.3 Llevar a cabo el Proceso de Revisin). 3.6 Informes [Rei02: c10; Tha97: c3,c10] En perodos especficos y concertados, se informa de la adhesin a los planes dentro de la organizacin (por ejemplo al comit de direccin de cartera del proyecto) y a los contratistas externos (por ejemplo, clientes, usuarios). Informes de esta naturaleza deben orientarse hacia una adhesin global en oposicin a los informes detallados que se requieren frecuentemente dentro del equipo de proyecto. 4. Revisin y Evaluacin

En puntos crticos del proyecto, se evalan el progreso global hacia el logro de los objetivos prefijados y la satisfaccin de los requisitos del contratista. De igual modo, en hitos particulares se llevan a cabo valoraciones sobre la efectividad del proceso global hasta la fecha, del personal involucrado, y de las herramientas y mtodos utilizados. 4.1 Determinar la Satisfaccin de los Requisitos [Rei02: c10; Tha97: c3,c10] Ya que uno de nuestros objetivos principales consiste en lograr la satisfaccin del contratista (usuario o cliente), es importante que el progreso hacia este

objetivo sea evaluado formal y peridicamente. Esto ocurre al lograr los principales hitos del proyecto (por ejemplo, la confirmacin de la arquitectura del diseo de software, la revisin tcnica de la integracin del software). Se identifican variaciones a las expectativas y se llevan a cabo acciones adecuadas. Al igual que en la actividad de control del proceso arriba indicada (ver el apartado 3.5 Proceso de Control), en todos los casos, se adhiere al control de cambios y a los procedimientos de gestin de configuracin del software (ver tambin el KA de la Gestin de Configuracin del Software) se documentan y comunican decisiones a todos los implicados importantes, se repasan los planes y si es necesario se revisan, y todos los datos importantes se graban en la base de datos central (ver tambin el apartado 6.3 Llevar a cabo el Proceso de Revisin). Se puede encontrar ms informacin en el KA de las Pruebas del Software, en el apartado 2.2 Objetivos de las Pruebas y en el KA de la Calidad del Software, en el apartado 2.3 Revisiones y Auditoras. 4.2 Revisar y Evaluar la Ejecucin [Dor02: v1c8,v2c3,c5; Pfl01: c8,c9; Rei02: c10; Tha97: c3,c10] Las revisiones peridicas de lo realizado, dirigidas al personal del proyecto, proporcionan detalles sobre la probabilidad de ser fiel a los planes as como sobre las posibles reas de dificultad (por ejemplo, conflictos entre miembros del equipo). Se evalan los distintos mtodos, herramientas y tcnicas empleadas para ver su eficacia y adecuacin, y se valora sistemtica y peridicamente el propio proceso para conocer su relevancia, utilidad y eficacia en el contexto del proyecto. Cuando se juzga necesario, se llevan a cabo y se gestionan los cambios. 5. Cierre

5.2 Actividades de Cierre [Pf101: c12; Som05: c4] Tras haberse confirmado el cierre, se archivan los materiales del proyecto de acuerdo a los mtodos, localizacin y duracin pactados con los contratistas. La base de datos de medicin de la organizacin se pone al da con los datos finales del proyecto y se emprenden anlisis post-proyecto. Se inicia un proyecto post mortem con el fin de analizar los temas, problemas y oportunidades encontrados durante el proceso (particularmente por medio de revisiones y evaluaciones, ver el subrea 4 Revisin y Evaluacin) y se sacan lecciones del proceso que luego alimentan los conocimientos de la organizacin y los intentos de mejora (ver tambin el KA del Proceso de Ingeniera del Software). 6. Medidas de la Ingeniera del Software [ISO 15939-02] La importancia de la medicin y su papel en las buenas prcticas de gestin est ampliamente reconocido, y es tal que su importancia slo puede aumentar en los prximos aos. Medir con eficacia se ha convertido en una de las piedras angulares de la madurez de una organizacin. Las palabras claves para la medicin del software y para los mtodos de medicin fueron definidas en [ISO15939-02] basadas en el vocabulario internacional de metrologa ISO [ISO93]. No obstante, los lectores encontrarn en la literatura existente diferencias en la terminologa; por ejemplo, el trmino "mtrica" a veces se usa en lugar de "medicin". Este apartado sigue el estndar internacional ISO/IEC 15939, que describe el proceso que define las actividades y tareas necesarias para implementar un proceso de medicin e incluye, asimismo, un modelo de medicin de la informacin. 6.1 Establecer y Sostener el Compromiso de Medir Aceptar los requisitos de medicin. Cada tentativa de medicin debe estar guiada por objetivos organizacionales, e impulsada por un conjunto de requisitos de medicin establecidos por la organizacin y por el proyecto. Por ejemplo, un objetivo organizacional podra ser ser los primeros en salir al mercado con los nuevos productos." [Fen98: c3,c13; Pre04: c22] Esto a su vez podra generar un requisito para que se midan los factores que contribuyen a este objetivo, y as se puedan gestionar los proyectos para hacer frente a este objetivo. Definir el alcance de la medicin. Se debe establecer la unidad organizacional a la que se va a aplicar cada requisito de medicin. Esto puede consistir en un rea funcional, en un solo proyecto, en un solo sitio, o incluso en toda la empresa. Todas las subsiguientes tareas de medicin relacionadas con este requisito

El proyecto llega a su fin cuando todos los planes y procesos implicados se han promulgado y completado. En esta fase, se repasan los criterios para el xito del proyecto. Una vez que se ha establecido el cierre, se llevan a cabo actividades de archivado, post mortem y de mejoras de los procesos. 5.1 Determinar el Cierre [Dor02: v1c8,v2c3,c5; Rei02: c10; Tha97: c3,c10] Se han completado las tareas tal y como se especificaron en los planes, y se confirman los criterios para lograr un acabado satisfactorio. Todos los productos planificados han sido entregados con caractersticas aceptables. Se marca y confirma la satisfaccin de los requisitos, se han logrado los objetivos del proyecto. Estos procesos por lo general involucran a todos los contratistas y acaban con la documentacin tanto de la aceptacin del cliente y como de los informes de cualquier otro problema pendiente conocido.

deben encontrarse dentro del alcance definido. Adems, se debe identificar a los contratistas implicados. Compromiso de la direccin y del personal con la medicin. El compromiso debe establecerse formalmente, debe comunicarse, y debe apoyarse en los recursos (ver el siguiente artculo).

anlisis, informes y configuracin [ISO15939-02: 5.2.4]. Definir los criterios para evaluar los productos de informacin. Los criterios para evaluar estn influenciados por los objetivos tcnicos y comerciales de la unidad organizacional. Los productos de informacin incluyen los asociados con el producto que est siendo elaborado, as como los asociados con los procesos utilizados para gestionar y medir el proyecto [ISO15939-02: 5.2.5 y Apndices D y E]. Revisar, aprobar y proporcionar recursos para las tareas de medicin. El plan de medicin debe ser revisado y aprobado por los contratistas adecuados. Esto incluye todos los procedimientos de recoleccin de datos y los procedimientos de almacenamiento, anlisis e informes; los criterios de evaluacin; horarios y responsabilidades. Los criterios para revisar estos artefactos tendran que haberse establecido a un nivel de unidad organizacional o superior y debieran usarse como base para estas revisiones. Tales criterios deben tomar en cuenta experiencias anteriores, disponibilidad de recursos, y trastornos potenciales del proceso cuando se proponen cambios a las prcticas actuales. La aprobacin demuestra que existe un compromiso con el proceso de medicin [ISO15939-02: 5.2.6.1 y Apndice F]. Hay que hacer que los recursos estn disponibles para implementar las tareas de medicin planeadas y aprobadas. La disponibilidad de los recursos puede organizarse en aquellos casos en donde los cambios han de pilotarse antes de un amplio despliegue. Se debe prestar atencin a los recursos necesarios para un amplio despliegue de los nuevos procedimientos o mediciones [ISO15939-02: 5.2.6.2].

Empear recursos para la medicin. El compromiso de la organizacin con la medicin es un factor esencial para el xito, como demuestra la asignacin de recursos para llevar a cabo el proceso de medicin. El asignar recursos incluye el reparto de responsabilidades para las diferentes tareas del proceso de medicin (tales como usuario, analista y bibliotecario) y el proporcionar una financiacin, entrenamiento, herramientas, y apoyo adecuados para dirigir el proceso de un modo perdurable.

6.2 Planificar el Proceso de Medicin Caracterizar la unidad organizacional. La unidad organizacional proporciona el contexto para la medicin as que es importante hacer explcito este contexto y articular las presunciones que ste incluye y las restricciones que va imponiendo. La caracterizacin puede darse en trminos de procesos organizacionales, dominios de aplicaciones, tecnologa e interfaces organizacionales. Un modelo de proceso organizacional tambin es por lo general un elemento de una caracterizacin de la unidad organizacional [ISO15939-02: 5.2.1]. Identificar las necesidades de informacin. Las necesidades de informacin se basan en las metas, restricciones, riesgos y problemas de la unidad organizacional. stas pueden proceder de objetivos comerciales, organizacionales, reguladores y/o del producto. Deben ser identificadas y deben priorizarse. Debe entonces seleccionarse un subconjunto para ser cotejado y los resultados deben ser documentados, comunicados y revisados por los contratistas [ISO 15939-02: 5.2.2]. Seleccionar las mediciones. Se deben elegir las mediciones candidatas al puesto, claramente vinculadas a las necesidades de informacin. Las mediciones deben seleccionarse en base a las prioridades de las necesidades de informacin y otros criterios como el coste de recoleccin de datos, el grado de trastorno del proceso durante la recoleccin, la facilidad de anlisis, la facilidad de obtener datos precisos y consistentes, etc. [ISO15939-02: 5.2.3 y Apndice C]. Definir la recoleccin de datos, el anlisis y los procedimientos para informar. Esto abarca los procedimientos y horarios de recoleccin, y la gestin de datos de almacenamiento, verificacin,

Adquirir y desplegar tecnologas de apoyo. Esto incluye una evaluacin de las tecnologas de apoyo disponibles, la seleccin de las tecnologas ms adecuadas, la adquisicin de esas tecnologas, y el despliegue de esas tecnologas [ISO 1593902:5.2.7].

6.3 Realizar el Proceso de Medicin Integrar los procedimientos de medicin con los procesos pertinentes. Los procedimientos de medicin, tales como la recoleccin de datos, deben integrarse en los procesos que estn midiendo. Esto puede que implique cambiar los procesos actuales para adaptar la recoleccin de datos o las actividades de generacin. Puede tambin implicar el anlisis de los actuales

procesos para minimizar esfuerzos adicionales y evaluaciones del efecto en los empleados, con el fin de asegurarse de que sern aceptados los procedimientos de medicin. Se necesita considerar los temas morales y otros factores humanos. Adems, los procedimientos de medicin deben comunicarse a los proveedores de datos, puede que se tenga que proporcionar entrenamiento, y se debe proporcionar el tpico apoyo. De manera similar, el anlisis de datos y los procedimientos de informacin deben tener la tpica integracin en los procesos organizacionales y/o del proyecto [ISO 15939-02: 5.3.1]. Recolectar datos. Se debe recolectar, verificar y almacenar datos [ISO 1539-02: 5.3.2]. Analizar datos y desarrollar productos de informacin. Se pueden agregar, transformar o recodificar datos como parte del proceso de anlisis, utilizando un grado de rigor adecuado a la naturaleza de los datos y las necesidades de informacin. Los resultados de este anlisis son indicadores tpicos, tales como grficas, nmeros u otras indicaciones que han de ser interpretadas, dando lugar a conclusiones iniciales que han de presentar los contratistas. Los resultados y conclusiones han de consultarse, utilizando un proceso definido por la organizacin (que puede ser formal o informal). Los proveedores de datos y los usuarios de las mediciones deben participar en revisar los datos para asegurar que son significativos y precisos, y que puede llevar a acciones razonables [ISO 15939-02: 5.3.3 y Apndice G].

Comunicar los resultados. Los productos de informacin deben documentarse y comunicarse a los usuarios y contratistas [ISO 15939-02: 5.3.4].

6.4 Evaluar las Mediciones Evaluar los productos de informacin. Evaluar los productos de informacin contrastndolos con los criterios de evaluacin especficos y determinar las fuerzas y debilidades de los productos de informacin. Esto puede realizarlo un proceso interno o una auditora externa y debe incluir una retroalimentacin de los usuarios de las mediciones. Grabar las lecciones aprendidas en una base de datos adecuada [ISO 15939-02: 5.4.1 y Apndice D]. Evaluar el proceso de medicin. Evaluar el proceso de medicin contrastndolo con los criterios de evaluacin especficos y determinar las fuerzas y debilidades de los procesos. Esto puede realizarlo un proceso interno o una auditora externa y debe incluir una retroalimentacin de los usuarios de las mediciones. Grabar las lecciones aprendidas en una base de datos adecuada [ISO 15939-02: 5.4.1 y Apndice D]. Identificar las mejoras potenciales. Tales mejoras pueden consistir en cambios en el formato de los indicadores, cambios en las unidades medidas, o en la reclasificacin de las categoras. Determinar los costes y beneficios de las mejoras potenciales y seleccionar las acciones de mejora adecuadas. Comunicar las mejoras propuestas al dueo del proceso de medicin y a los contratistas para su revisin y aprobacin. Comunicar tambin la falta de mejoras potenciales si el anlisis no identifica ninguna mejora [ISO 15939-02: 5.4.2].

MATRIZ DE TEMAS VS. MATERIAL DE REFERENCIA


[Dor02] [ISO1523902] [Fen98] [Pfl01] [Pre04] [Rei02] [Som05] [Tha97]

1.Iniciacin y Alcance 1.1 Determinacin y Negociacin de Requisitos 1.2 Viabilidad, Anlisis 1.3 Construir para Verificar 2. Planificacin de un Proyecto Software 2.1 Planificacin de un Proceso 2.2 Determinar los entregables 2.3 Esfuerzo, Horario y Clculo del Coste 2.4 Reparto de Recursos 2.5 Gestin de Riesgos 2.6 Gestin de Calidad 2.7 Gestin de Planes 3. Promulgacin del Proyecto Software 3.1 Implementacin de Planes 3.2 Gestin de Contratos con Proveedores 3.3 Implementacin de Procesos para medir 3.4 Proceso de Supervisin v2c4 c4 c7 c6 c5 c6 c6

v1c6, v2c7, v2c8

c2, c3 c3

c2, c21 c24 c23, c24 c24 c25 c26

c1, c3, c5

c3, c4

c3, c4, c6 c4

v2c7 v2c7 v1c8, v2c3-c5

c12

c3 c3 c3

c5, c6 c8, c9 c11 c10

c4, c23 c4 c4 c24, c25 c4

c5 c6, c7 c4 c9, c10 c4

c3

c4 c4

c13, c14 v1c8, v2c2-c5, c7 v2c7

c22

c10, c12 c10 c10 c10 c10 c25

c3, c10 c3, c10 c3, c9 c3, c10 c3, c10 c3, c10

3.5 Proceso de Control 3.6 Informes 4. Revisin y Evaluacin 4.1 Determinar la satisfaccin de los Requisitos 4.2 Revisar y Evaluar la Ejecucin 5. Cierre 5.1 Determinar el Cierre 5.2 Actividades del Cierre 6. Medida de la Ingeniera del Software 6.1 Establecer y Sostener el compromiso de Medir 6.2 Planificar el Proceso de Medicin 6.3 Realizar el Proceso de Medicin 6.4 Evaluar las Mediciones

v1c8, v2c3, c5 v1c8, v2c3, c5

c8, c9

c10

c10 c12 * c3, c13 c5, C,D,E,F c5, G c5, D c22 c4

c3, c10

REFERENCIAS RECOMENDADAS DEL SOFTWARE

PARA LA

GESTIN

[Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001, Chap. 24, 8, 9, 12, 13. [Pre04] R.S. Pressman, Software Engineering: A Practitioner's Approach, sixth ed., McGraw-Hill, 2004, Chap. 2, 6, 7, 22-26. [Rei02] D.J. Reifer, ed., Software Management, IEEE Computer Society Press, 2002, Chap. 1-6, 7-12, 13. [Som05] I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005, Chap. 3-6, 23-25. [Tha97] R.H. Thayer, ed., Software Engineering Project Management, IEEE Computer Society Press, 1997, Chap. 1-10.

[Dor02] M. Dorfman and R.H. Thayer, eds., Software Engineering, IEEE Computer Society Press, 2002, Vol. 1, Chap. 6, 8, Vol. 2, Chap. 3, 4, 5, 7, 8. [Fen98] N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, second ed., International Thomson Computer Press, 1998, Chap. 114. [ISO15939-02] ISO/IEC 15939:2002, Software Engineering Software Measurement Process, ISO and IEC, 2002.

APNDICE A. LISTA DE LECTURAS ADICIONALES


(Adl99) T.R. Adler, J.G. Leonard, and R.K. Nordgren, Improving Risk Management: Moving from Risk Elimination to Risk Avoidance, Information and Software Technology, vol. 41, 1999, pp. 29-34. (Bai98) R. Baines, Across Disciplines: Risk, Design, Method, Process, and Tools, IEEE Software, July/August 1998, pp. 61-64. (Bin97) R.V. Binder, Can a Manufacturing Quality Model Work for Software? IEEE Software, September/October 1997, pp. 101-102,105. (Boe97) B.W. Boehm and T. DeMarco, Software Risk Management, IEEE Software, May/June 1997, pp. 1719. (Bri96) L.C. Briand, S. Morasca, and V.R. Basili, Property-Based Software Engineering Measurement, IEEE Transactions on Software Engineering, vol. 22, iss. 1, 1996, pp. 68-86. (Bri96a) L. Briand, K.E. Emam, and S. Morasca, On the Application of Measurement Theory in Software Engineering, Empirical Software Engineering, vol. 1, 1996, pp. 61-88. (Bri97) L.C. Briand, S. Morasca, and V.R. Basili, Response to: Comments on Property-based Software Engineering Measurement: Refining the Addivity Properties, IEEE Transactions on Software Engineering, vol. 23, iss. 3, 1997, pp. 196-197. (Bro87) F.P.J. Brooks, No Silver Bullet: Essence and Accidents of Software Engineering, Computer, Apr. 1987, pp. 10-19. (Cap96) J. Capers, Applied Software Measurement: Assuring Productivity and Quality, second ed., McGraw-Hill, 1996. (Car97) M.J. Carr, Risk Management May Not Be For Everyone, IEEE Software, May/June 1997, pp. 21-24. (Cha96) R.N. Charette, Large-Scale Project Management Is Risk Management, IEEE Software, July 1996, pp. 110-117. (Cha97) R.N. Charette, K.M. Adams, and M.B. White, Managing Risk in Software Maintenance, IEEE Software, May/June 1997, pp. 43-50. (Col96) B. Collier, T. DeMarco,and P. Fearey, A Defined Process for Project Postmortem Review, IEEE Software, July 1996, pp. 65-72. (Con97) E.H. Conrow and P.S. Shishido, Implementing Risk Management on Software

Intensive Projects, IEEE Software, May/June 1997, pp. 83-89. (Dav98) A.M. Davis, Predictions and Farewells, IEEE Software, July/August 1998, pp. 6-9. (Dem87) T. DeMarco and T. Lister, Peopleware: Productive Projects and Teams, Dorset House Publishing, 1987. (Dem96) T. DeMarco and A. Miller, Managing Large Software Projects, IEEE Software, July 1996, pp. 2427. (Fav98) J. Favaro and S.L. Pfleeger, Making Software Development Investment Decisions, ACM SIGSoft Software Engineering Notes, vol. 23, iss. 5, 1998, pp. 69-74. (Fay96) M.E. Fayad and M. Cline, Managing ObjectOriented Software Development, Computer, September 1996, pp. 26-31. (Fen98) N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, second ed., International Thomson Computer Press, 1998. (Fle99) R. Fleming, A Fresh Perspective on Old Problems, IEEE Software, January/February 1999, pp. 106-113. (Fug98) A. Fuggetta et al., Applying GQM in an Industrial Software Factory, ACM Transactions on Software Engineering and Methodology, vol. 7, iss. 4, 1998, pp. 411-448. (Gar97) P.R. Garvey, D.J. Phair, and J.A. Wilson, An Information Architecture for Risk Assessment and Management, IEEE Software, May/June 1997, pp. 2534. (Gem97) A. Gemmer, Risk Management: Moving beyond Process, Computer, May 1997, pp. 33-43. (Gla97) R.L. Glass, The Ups and Downs of Programmer Stress, Communications of the ACM, vol. 40, iss. 4, 1997, pp. 17-19. (Gla98) R.L. Glass, Short-Term and Long-Term Remedies for Runaway Projects, Communications of the ACM, vol. 41, iss. 7, 1998, pp. 13-15. (Gla98a) R.L. Glass, How Not to Prepare for a Consulting Assignment, and Other Ugly Consultancy Truths, Communications of the ACM, vol. 41, iss. 12, 1998, pp. 11-13. (Gla99) R.L. Glass, The Realities of Software Technology Payoffs, Communications of the ACM, vol. 42, iss. 2, 1999, pp. 74-79.

(Gra99) R. Grable et al., Metrics for Small Projects: Experiences at the SED, IEEE Software, March/April 1999, pp. 21-29. (Gra87) R.B. Grady and D.L. Caswell, Software Metrics: Establishing A Company-Wide Program. Prentice Hall, 1987. (Hal97) T. Hall and N. Fenton, Implementing Effective Software Metrics Programs, IEEE Software, March/April 1997, pp. 55-64. (Hen99) S.M. Henry and K.T. Stevens, Using Belbins Leadership Role to Improve Team Effectiveness: An Empirical Investigation, Journal of Systems and Software, vol. 44, 1999, pp. 241-250. (Hoh99) L. Hohmann, Coaching the Rookie Manager, IEEE Software, January/February 1999, pp. 16-19. (Hsi96) P. Hsia, Making Software Development Visible, IEEE Software, March 1996, pp. 23-26. (Hum97) W.S. Humphrey, Managing Technical People: Innovation, Teamwork, and the Software Process: Addison-Wesley, 1997. (IEEE12207.0-96) IEEE/EIA 12207.01996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996. (Jac98) M. Jackman, Homeopathic Remedies for Team Toxicity, IEEE Software, July/August 1998, pp. 43-45. (Kan97) K. Kansala, Integrating Risk Assessment with Cost 812 IEEE 2004 Version Estimation, IEEE Software, May/June 1997, pp. 61-67. (Kar97) J. Karlsson and K. Ryan, A Cost-Value Aproach for Prioritizing Requirements, IEEE Software, September/October 1997, pp. 87-74. (Kar96) D.W. Karolak, Software Engineering Risk Management, IEEE Computer Society Press, 1996. (Kau99) K. Kautz, Making Sense of Measurement for Small Organizations, IEEE Software, March/April 1999, pp. 14-20. (Kei98) M. Keil et al., A Framework for Identifying Software Project Risks, Communications of the ACM, vol. 41, iss. 11, 1998, pp. 76-83. (Ker99) B. Kernighan and R. Pike, Finding Performance Improvements, IEEE Software, March/April 1999, pp. 61-65.

(Kit97) B. Kitchenham and S. Linkman, Estimates, Uncertainty, and Risk, IEEE Software, May/June 1997, pp. 69-74. (Lat98) F. v. Latum et al., Adopting GQM-Based Measurement in an Industrial Environment, IEEE Software, January-February 1998, pp. 78-86. (Leu96) H.K.N. Leung, A Risk Index for Software Producers, Software Maintenance: Research and Practice, vol. 8, 1996, pp. 281-294. (Lis97) T. Lister, Risk Management Is Project Management for Adults, IEEE Software, May/June 1997, pp. 20-22. (Mac96) K. Mackey, Why Bad Things Happen to Good Projects, IEEE Software, May 1996, pp. 27-32. (Mac98) K. Mackey, Beyond Dilbert: Creating Cultures that Work, IEEE Software, January/February 1998, pp. 48-49. (Mad97) R.J. Madachy, Heuristic Risk Assessment Using Cost Factors, IEEE Software, May/June 1997, pp. 51-59. (McC96) S.C. McConnell, Rapid Development: Taming Wild Software Schedules, Microsoft Press, 1996. (McC97) S.C. McConnell, Software Project Survival Guide, Microsoft Press, 1997. (McC99) S.C. McConnell, Software Engineering Principles, IEEE Software, March/April 1999, pp. 6-8. (Moy97) T. Moynihan, How Experienced Project Managers Assess Risk, IEEE Software, May/June 1997, pp. 35-41. (Ncs98) P. Ncsi, Managing OO Projects Better, IEEE Software, July/August 1998, pp. 50-60. (Nol99) A.J. Nolan, Learning From Success, IEEE Software, January/February 1999, pp. 97-105. (Off97) R.J. Offen and R. Jeffery, Establishing Software Measurement Programs, IEEE Software, March/April 1997, pp. 45-53. (Par96) K.V.C. Parris, Implementing Accountability, IEEE Software, July/August 1996, pp. 83-93. (Pfl97) S.L. Pfleeger, Assessing Measurement (Guest Editors Introduction), IEEE Software, March/April 1997, pp. 25-26. (Pfl97a) S.L. Pfleeger et al., Status Report on Software Measurement, IEEE Software, March/April 1997, pp. 33-43.

(Put97) L.H. Putman and W. Myers, Industrial Strength Software Effective Management Using Measurement, IEEE Computer Society Press, 1997. (Rob99) P.N. Robillard, The Role of Knowledge in Software Development, Communications of the ACM, vol. 42, iss. 1, 1999, pp. 87-92. (Rod97) A.G. Rodrigues and T.M. Williams, System Dynamics in Software Project Management: Towards the Development of a Formal Integrated Framework, European Journal of Information Systems, vol. 6, 1997, pp. 51-66. (Rop97) J. Ropponen and K. Lyytinen, Can Software Risk Management Improve System Development: An Exploratory Study, European Journal of Information Systems, vol. 6, 1997, pp. 41-50. (Sch99) C. Schmidt et al., Disincentives for Communicating Risk: A Risk Paradox, Information and Software Technology, vol. 41, 1999, pp. 403-411.

(Sco92) R.L. v. Scoy, Software Development Risk: Opportunity, Not Problem, Software Engineering Institute, Carnegie Mellon University CMU/SEI-92TR-30, 1992. (Sla98) S.A. Slaughter, D.E. Harter, and M.S. Krishnan, Evaluating the Cost of Software Quality, Communications of the ACM, vol. 41, iss. 8, 1998, pp. 67-73. (Sol98) R. v. Solingen, R. Berghout, and F. v. Latum, Interrupts: Just a Minute Never Is, IEEE Software, September/October 1998, pp. 97-103. (Whi95) N. Whitten, Managing Software Development Projects: Formulas for Success, Wiley, 1995. (Wil99) B. Wiley, Essential System Requirements: A Practical Guide to Event-Driven Methods, AddisonWesley, 1999. (Zel98) M.V. Zelkowitz and D.R. Wallace, Experimental Models for Validating Technology, Computer, vol. 31, iss. 5, 1998, pp. 23-31.

APNDICE B. LISTA DE ESTNDARES


(IEEE610.12-90) IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. (IEEE12207.0-96) IEEE/EIA 12207.01996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996. (ISO15939-02) ISO/IEC 15939:2002, Software Engineering-Software Measurement Process, ISO and IEC, 2002. (PMI00) Project Management Institute Standards Committee, A Guide to the Project Management Body of Knowledge (PMBOK), Project Management Institute, 2000.

CAPTULO 9 PROCESO DE INGENIERA DEL SOFTWARE


ACRNIMOS
CMMI EF FP HRM IDEAL OMG QIP SCAMPI SCE SEPG Modelo de Capacidad de Madurez Integrado Creadora de Experiencia Punto Funcin Gestin de Recursos Humanos (Modelo de) Iniciacin-DiagnsticoEstablecimiento-Actuacin-Apoyo Grupo de Gestin de Objetos Paradigma de Mejoras de la Calidad Evaluacin Basada en el MCM para Mejoras de los Procesos utilizando la CMMI Evaluacin de la Capacidad del Software Grupo de Proceso de la Ingeniera del Software ingeniera del software. Este es el significado que se pretende con el ttulo de esta KA y el que se usa con ms frecuencia en la descripcin del KA. Finalmente, un tercer significado podra referirse al conjunto actual de actividades realizadas dentro de una organizacin, que podra verse como un solo proceso, especialmente desde dentro de la organizacin. Se utiliza este significado en el KA en muy pocos casos.

Esta KA se aplica a cualquier parte de la gestin de los procesos del ciclo de vida del software en la que se introduzcan cambios de procedimiento o tecnolgicos para la mejora de procesos o productos. Los procesos de ingeniera del software tienen importancia no slo para las grandes organizaciones. Ms an, las actividades relacionadas con los procesos pueden ser, y han sido, realizadas con xito por pequeas organizaciones, equipos e individuos. El objetivo de gestionar los procesos del ciclo de vida del software es implementar nuevos o mejores procesos en las prcticas actuales, sean stos individuales, proyectos u organizacionales. Esta KA no aborda explcitamente la Gestin de Recursos Humanos (HRM), por ejemplo, como lo recoge el MCM de la Gente (Cur02) y procesos de ingeniera de sistemas [ISO1528-028; IEEE 1220-98]. Tambin debera reconocerse que muchos temas de procesos de ingeniera del software estn relacionados de cerca con otras disciplinas, tales como la gestin, incluso a veces utilizando una terminologa diferente.

INTRODUCCIN
El KA del Proceso de Ingeniera del Software puede examinarse en dos niveles. El primer nivel engloba las actividades tcnicas y de gestin dentro de los procesos del ciclo de vida del software realizadas durante la adquisicin, desarrollo, mantenimiento y retirada del software. El segundo es un meta-nivel, que se refiere a la definicin, implementacin, valoracin, medicin, gestin, cambios y mejoras de los procesos mismos del ciclo de vida del software. El primer nivel lo cubren las otras KAs en la Gua. Este KA se ocupa del segundo nivel. El trmino proceso de ingeniera del software puede interpretarse de diversas maneras, y esto puede llevar a confusiones. Un significado, donde se usa la palabra el, como en el caso de el proceso de ingeniera del software, podra implicar que existe slo un modo correcto de realizar tareas de ingeniera del software. En la Gua se evita este significado porque no existe tal proceso. Los estndares como IEEE12207 hablan de procesos de ingeniera del software, lo que significa que hay muchos procesos involucrados, tales como Procesos de Desarrollo o Proceso de Configuracin de Gestin. Un segundo significado se refiere a una discusin general sobre procesos relacionados con la

DESCOMPOSICIN DE LOS TEMAS PARA EL PROCESO DE INGENIERA DEL SOFTWARE


La Figura 1 muestra la descomposicin de los temas en este KA: 7. Proceso de Implementacin y Cambios

sta subrea se centra en los cambios organizacionales. Describe la infraestructura, actividades, modelos y consideraciones prcticas de un proceso de implementacin y cambios.

Figura 1 Divisin de los temas para el KA del Proceso de Ingeniera Software

Aqu se describe la situacin en la que los procesos se despliegan por primera vez (por ejemplo, introduciendo un proceso de inspeccin en un proyecto o un mtodo que cubra todo el ciclo de vida), y donde se cambian los procesos actuales (por ejemplo, introduciendo una herramienta u optimizando un procedimiento). A esto tambin se le puede denominar proceso de evolucin. En ambos casos hay que modificar las prcticas actuales. Si resulta que se extienden las modificaciones, puede que tambin sean necesarios cambios en la cultura organizacional. 1.2. Infraestructura del Proceso [IEEE12207.0-96; ISO15504; SEL96] Este tpico incluye el conocimiento relacionado con la infraestructura del proceso de ingeniera del software. Para establecer procesos de ciclo de vida del software, es necesario que la adecuada infraestructura est en su lugar, es decir que los recursos estn al alcance de la mano (personal competente, herramientas y financiacin) y que se hayan asignado responsabilidades. El que se hayan completado estas tareas, indica el compromiso con la gestin y propiedad

del esfuerzo del proceso de ingeniera del software. Puede que haya que establecer diversos comits, tales como un comit de direccin que supervise el esfuerzo del proceso de ingeniera del software. En [McF96] se ofrece una descripcin de la infraestructura de la mejora de los procesos en general. En la prctica se utilizan dos tipos principales de infraestructura: el Grupo de Proceso de Ingeniera del Software y la Creadora de Experiencia. 1.1.1 Grupo de Proceso de la Ingeniera del Software (SEPG)

Se pretende que el SEPG sea el foco central del proceso de mejoras de la ingeniera del software y tiene cierto nmero de responsabilidades en trminos de inicializacin y mantenimiento. stos se describen en [Fow90]. 1.1.2 Creadora de Experiencia (EF)

El concepto de EF separa la organizacin del proyecto (la organizacin del desarrollo del software, por ejemplo) de la organizacin de las mejoras. La organizacin del proyecto se centra en el desarrollo y en

el mantenimiento del software, mientras que la EF se ocupa del proceso de mejoras de la ingeniera del software. Se trata de que la EF institucionalice el aprendizaje colectivo de una organizacin, desarrollando, actualizando, y entregando a la organizacin del proyecto los paquetes de experiencia (por ejemplo, guas, modelos y cursos de entrenamiento), tambin conocidos como validaciones de procesos. La organizacin del proceso ofrece a la EF sus productos, los planes utilizados en su desarrollo, y los datos reunidos durante su desarrollo y operacin. En [Bas92] se presentan ejemplos de paquetes de experiencia. Ciclo de Gestin del Proceso del Software [Bas92; Fow90; IEEE12207.0-96; ISO15504-98; McF96; SEL96] La gestin de los procesos del software consiste en cuatro actividades secuenciadas en un ciclo iterativo permitiendo una retroalimentacin continua y mejoras del proceso del software: La actividad del Establecimiento de la Infraestructura de un Proceso consiste en establecer un acuerdo con el proceso de implementacin y cambios (que incluya la obtencin de la gestin de compra buy-in) y levantar una adecuada infraestructura (recursos y responsabilidades) para que tenga lugar. El propsito de la actividad de Planificacin es comprender los objetivos de las empresas actuales y las necesidades del proceso del individuo, proyecto u organizacin, para identificar sus fuerzas y flaquezas, y elaborar un plan para el proceso de implementacin y cambios. El propsito del Proceso de Implementacin y Cambios consiste en llevar a cabo el plan, desplegar nuevos procesos (que pueden implicar, por ejemplo, el desarrollo de herramientas y el entrenamiento del personal) y/o cambiar procesos ya existentes. La Evaluacin del Proceso se encarga de descubrir lo bien que se ha llevado a cabo la implementacin y cambios, y si se materializaron o no los beneficios esperados. Los resultados se utilizarn ms adelante como entradas para ciclos subsiguientes. Modelos Para el Proceso de Implementacin y Cambios Han surgido dos modelos generalizados para llevar a cabo el proceso de implementacin y cambios que son el Paradigma de Mejoras de la Calidad (QIP) [SEL96] y el modelo IDEAL [McF96]. En [SEL96] se comparan los dos paradigmas. La evaluacin del proceso de implementacin y de los resultados de los cambios pueden ser cualitativos o cuantitativos.

Consideraciones Prcticas El proceso de implementacin y cambios constituye una instancia del cambio organizacional. Los esfuerzos de ms xito en los cambios organizacionales tratan del cambio como un proyecto en toda regla, con planes adecuados, monitoreo y revisiones. En [Moi98; San98; Sti99] se encuentran las directrices sobre el proceso de implementacin y cambios dentro de las organizaciones de ingeniera del software, incluyendo la planificacin de las acciones, entrenamientos, gestin de patrocinadores, compromisos, y la seleccin de proyectos piloto, y abarcan tanto los procesos como las herramientas. En [EIE99a] se sealan los estudios empricos sobre factores de xito para los cambios en los procesos. El papel de los agentes de cambio en esta actividad se discute en (Hut94). El proceso de implementacin y cambios puede verse asimismo como una instancia de consultora (sea interna o externa). Uno tambin puede ver cambios organizacionales desde la perspectiva de la transferencia de tecnologa (Rog83). Los archivos de ingeniera del software que se ocupan de la transferencia de tecnologa y de las caractersticas de los recipientes de nuevas tecnologas (que podran incluir tecnologas relacionadas con los procesos) son (Pfl99; Rag89). Hay dos formas de acercarse la evaluacin de un proceso de implementacin y cambios, sea en trminos de cambios al proceso mismo o en trminos de cambios en las salidas de los procesos (por ejemplo, midiendo lo que te devuelve una inversin tras realizar un cambio). Una visin pragmtica de lo que se puede lograr con estas evaluaciones se nos da en (Her98). Las investigaciones sobre cmo evaluar el proceso de implementacin y cambios, y los ejemplos de estudios dedicados a ello, se encuentran en [Gol99], (Kit98; Kra99; McG94). 8. Definicin de Procesos

Una definicin de un proceso puede ser un procedimiento, una poltica, o un estndar. Los procesos de ciclo de vida del software se definen por muchas razones, que incluira el incrementar la calidad del producto, el facilitar el entendimiento y la comunicacin humana, apoyar las mejoras de los procesos, apoyar la gestin de los procesos, suministrar una gua automatizada para los procesos, y suministrar un apoyo para ejecuciones automatizadas. Los tipos de definiciones de procesos requeridos dependern, al menos parcialmente, de las razones para la definicin. Habra que sealar tambin que el contexto del proyecto y de la organizacin determinar el tipo de definicin del proceso que resulte ms til. Algunas variables importantes que hay que considerar incluyen la naturaleza del trabajo (por ejemplo, mantenimiento o desarrollo), el dominio de la aplicacin, el modelo de ciclo de vida, y la madurez de la organizacin.

Modelos de Ciclo de Vida del Software [Pf101:c2; IEEE12207.0-96] Los modelos del ciclo de vida del software sirven como definiciones de alto nivel de las fases que tienen lugar durante el desarrollo. No estn enfocadas a ofrecer definiciones detalladas sino ms bien a sobresaltar las actividades clave y sus interdependencias. Algunos ejemplos de modelos de ciclo de vida del software son el modelo de cascada, el modelo de prototipado de usar y tirar lo desechable, desarrollo evolutivo, entrega incremental/iterativa, el modelo en espiral, el modelo de software reutilizable, y la sntesis de software automatizado. Las comparaciones entre estos modelos se encuentran en [Como97], (Dav88), y hay un mtodo para seleccionar entre muchos de ellos en (Ale91). Procesos del Ciclo de Vida del Software Las definiciones de los procesos de ciclo de vida del software tienden a ser ms detalladas que los modelos de ciclo de vida del software. Sin embargo, los procesos del ciclo de vida del software no pretenden ordenar sus procesos en el tiempo. Esto significa que, en lnea de principio, los procesos del ciclo de vida del software pueden ordenarse para tener cabida en cualquiera de los modelos del ciclo de vida del software. La principal referencia sobre esta rea se encuentra en IEEE/EIA 12207.0: Informacin Tecnolgica Procesos del Ciclo de Vida del Software [IEEE 12207.0-96]. El estndar IEEE 1074:1997 para desarrollar procesos de ciclo de vida ofrece tambin una lista de procesos y actividades para el desarrollo y el mantenimiento del software [IEEE1074-97], adems de ofrecer una lista de actividades del ciclo de vida que pueden mapearse hacia procesos y organizarse del mismo modo que cualquiera de los modelos de ciclo de vida del software. Adems, identifica y une a estas actividades otros estndares de software IEEE. En lnea de principio, el estndar IEEE 1074 puede utilizarse para construir procesos de acuerdo a cualquiera de los modelos de ciclo de vida. Los estndares enfocados al mantenimiento de procesos son el estndar IEEE 1219-1998 y la ISO 14764:1998 [IEEE 1219-98]. Otros estndares importantes que ofrecen definiciones de procesos son: Estndar IEEE 1540: Gestin de Riesgos del Software. Estndar IEEE 1517: Procesos de Reutilizacin del Software (IEEE 1517-99). ISO/IEC 15939: Proceso de Medicin del Software [IEEE 15939-02]. Ver tambin el KA de Gestin de Ingeniera del Software para una descripcin detallada de este proceso.

de la calidad y la ISO/IEC 90003 interpreta esos requerimientos para organizaciones que desarrollan software (ISO90003-04). Algunos procesos del ciclo de vida del software ponen nfasis en entregas rpidas y en una fuerte participacin de los usuarios, como por ejemplo mtodos giles tales como la Programacin Extrema [Bec99]. Un tipo de problema de seleccin tiene que ver con la eleccin realizable a lo largo del eje del mtodo basado en planificacin. Un acercamiento basado en riesgos para tomar tal decisin se describe en (Boe03a). Notaciones para las Definiciones de los Procesos Se pueden describir los procesos en diferentes niveles de abstraccin (por ejemplo, definiciones genricas contrapuestas a definiciones adaptadas, descriptivas contrapuestas a prescriptivas contrapuestas a proscriptivas [Pf101]. Varios elementos de un proceso pueden definirse, por ejemplo, actividades, productos (artefactos), y recursos. Los marcos detallados que estructuran los tipos de informacin requeridos para definir los procesos estn descritos en (Mad94). Existen algunas notaciones que se utilizan para definir procesos (SPC92). Una diferencia clave entre ellas reside en el tipo de informacin que definen, capturan y utilizan los marcos mencionados anteriormente. El ingeniero del software debera ser consciente de las siguientes aproximaciones al asunto: diagramas de flujo de datos, en trminos de la finalidad del proceso y de las salidas [ISO15504-98], como una lista de procesos descompuestos en actividades constituyentes y tareas definidas en lenguaje natural [IEEE12207.0-96], Grficos de Estados (Har98), EVTX (Rad85), modelado de Dependencia del Actor (Yu94), notacin SADT (Mcg93), redes Petri (Ban95); IDEF0 (IEEE 1320.198), y los basados en reglas (Bar95). Ms recientemente, un estndar de modelado del proceso ha sido publicado por el OMG que tiene como fin armonizar las notaciones de modelado. A esto se le llama la especificacin MPIS (Meta-Modelo del Proceso de Ingeniera del Software). [OMG02] Adaptacin del Proceso [IEEE 12007.0-96; ISO15504-98; Joh99] Es importante sealar que los procesos predefinidos incluso los estandarizados deben adaptarse a las necesidades locales, por ejemplo, el contexto organizacional, el tamao del proyecto, los requisitos reguladores, las prcticas industriales y las culturas corporativas. Algunos estndares, tales como IEEE/EIA 12207, contienen mecanismos y recomendaciones para lograr la adaptacin. Automatizacin [Pf101:c2] Las herramientas automatizadas o apoyan la ejecucin de las definiciones del proceso o aportan una gua a los

En algunas ocasiones se han de definir los procesos de ingeniera del software tomando en cuenta los procesos organizacionales para la gestin de la calidad. La ISO 9001 ofrece los requisitos para los procesos de gestin

humanos que desarrollan los procesos definidos. En los casos en los que se realiza el anlisis de un proceso, algunas herramientas permiten distintos tipos de simulaciones (por ejemplo, la simulacin de un evento discreto). Adems, existen herramientas que apoyan cada una de las notaciones de la definicin del proceso citados anteriormente. Ms an, estas herramientas pueden ejecutar las definiciones de procesos para otorgar una ayuda automatizada a los procesos actuales, o en algunos casos para automatizarlos plenamente. Una visin general de las herramientas de modelado de procesos puede encontrarse en [Fin94] y de los entornos centrados en procesos en (Gar96). Los trabajos sobre cmo aplicar Internet al suministro de una gua de un proceso en tiempo real est descrita en (Kel98). 9. Valoracin del Proceso

Mtodos de Valoracin del Proceso [Go199] Para poder realizar una valoracin, se necesita seguir un mtodo especfico de valoracin para producir un resultado cuantitativo que caracterizara la capacidad del proceso (o madurez de la organizacin). El mtodo de valoracin CBA-IPI, por ejemplo, se centra en la mejora de proceso (Dun96), y el mtodo SCE se centra en evaluar la capacidad de los proveedores (Bar95). Ambos mtodos fueron desarrollados para el SW-CMM. En [ISO15504-98], (Mas95) se ofrecen los requisitos de ambos tipos de mtodos que reflejan lo que se cree que seran buenas prcticas de valoracin. Los mtodos SCAMPI giran en torno a las valoraciones CMMI [SEI01]. Las actividades realizadas durante una valoracin, la distribucin de esfuerzos en estas actividades, as como la atmsfera durante una valoracin son muy diferentes dependiendo de que sean para una mejora o para la adjudicacin de un contrato. Se han criticado los modelos y mtodos de las valoraciones de los procesos, por ejemplo (Fay97; Gra98). La mayora de estas crticas se refieren a la evidencia emprica que apoya el uso de modelos y mtodos de valoracin. Sin embargo, desde la publicacin de estos artculos, ha existido alguna evidencia sistemtica que apoyaba la eficacia de las valoraciones de los procesos (Cla97; Ele00; Ele00a; Kri99). 10. Medicin de los Procesos y Productos Mientras que la aplicacin de mediciones a la ingeniera del software puede resultar compleja, particularmente en trminos de mtodos de modelado y anlisis, existen varios aspectos de las mediciones en la ingeniera del software que resultan fundamentales y que estn a la base de muchos de los procesos de medicin y anlisis ms avanzados. Ms an, los esfuerzos para mejorar el logro de procesos y productos slo pueden valorarse si se ha establecido un conjunto de medidas de base. La medicin puede realizarse para apoyar la iniciacin de un procesos de implementacin y cambio o para evaluar las consecuencias de un proceso de implementacin y cambio, o puede realizarse en el producto mismo. La medicin puede realizarse para apoyar la iniciacin de unos procesos de implementacin y cambio o para evaluar las consecuencias de un proceso de implementacin y cambio, o puede realizarse en el producto mismo. Los trminos clave de medicin del software y de mtodos de medicin han sido definidos en la ISO/IEC 15939 basados en el vocabulario ISO internacional de metrologa. La ISO/IEC 15359 tambin ofrece un proceso estndar para medir tanto los procesos como las caractersticas de los productos [VIM93].

La valoracin del proceso se lleva a cabo utilizando tanto un modelo de valoracin como un mtodo de valoracin. En algunas instancias, el trmino apreciacin se utiliza en vez de valoracin, y el trmino evaluacin de la capabilidad se utiliza cuando la apreciacin tiene como propsito la adjudicacin de un contrato. Modelos de Valoracin del Proceso Un modelo de valoracin recoge lo que se reconoce como buenas prcticas. Estas prcticas pueden referirse slo a las actividades tcnicas de ingeniera del software, o puede que se refieran tambin, por ejemplo, a actividades de gestin, de ingeniera de sistemas, y tambin de gestin de recursos humanos. La ISO/IEC 15504 [ISO15504-98] define un modelo ejemplar de valoracin y de requisitos de conformidad con otros modelos de valoracin. Los modelos de valoracin especficos disponibles y en uso son SWCMM (SEI95), CMMI [SEI01], y Bootstrap [Sti99]. Se han definido muchos otros modelos de capacidad y madurez por ejemplo, para diseo, documentacin y mtodos formales, por nombrar algunos. La ISO 9001 es otro modelo comn de validacin que ha sido aplicado por organizaciones de software (ISO9001-00). Se ha desarrollado asimismo un modelo de madurez para sistemas de ingeniera, que puede resultar til cuando un proyecto u organizacin est implicado en el desarrollo y mantenimiento de sistemas, incluido el software (EIA/IS731-99). En [Joh99; San98] se examina la aplicabilidad de los modelos de valoracin a pequeas organizaciones. Existen dos arquitecturas generales para un modelo de valoracin que ofrecen diversas conjeturas sobre el orden en el que los procesos han de ser valorados: continua y escalonadamente (Pau94). Son muy diferentes entre s y la organizacin debera evaluarlos sopesndolos para determinar cules son los ms pertinentes para sus necesidades y objetivos.

A pesar de todo, los lectores encontrarn diferencias terminolgicas en la literatura; por ejemplo, el trmino mtrica se utiliza a veces en vez de medida. 4.1 Medicin del Proceso [ISO15539-02] El trmino medicin del proceso, tal y como se utiliza aqu, significa que se recoge, analiza e interpreta informacin cuantitativa sobre el proceso. Se utiliza la medicin para identificar las fuerzas y las debilidades de los procesos y para evaluar los procesos despus de que hayan sido implementados y/o cambiados. La medicin del proceso tambin puede servir para otros propsitos. Por ejemplo, la medicin del proceso es til para gestionar un proyecto de ingeniera del software. Aqu, el enfoque est en la medicin del proceso con el propsito de la implementacin y cambio del proceso. El diagrama de caminos de la Figura 2 ilustra algo que se dar por supuesto en la mayora de los proyectos de ingeniera del software, que indica que normalmente el proceso tiene un impacto en los resultados de un proyecto. No todo proceso va a tener un impacto positivo en todas sus salidas. Por ejemplo, la introduccin de inspecciones del software puede reducir esfuerzos y costes de las pruebas, pero puede incrementar el tiempo de espera si cada inspeccin introduce largas esperas a causa de haber calendarizado reuniones de larga inspeccin (Vot93). Por tanto, es preferible utilizar medidas para salidas de mltiples procesos que resultan importantes para la organizacin de la empresa. Mientras que se pueden hacer algunos esfuerzos para valorar la utilizacin de herramientas y de hardware, el recurso principal que necesita ser gestionado en la ingeniera del software es el personal. Como resultado de esto, las principales mediciones del inters son aqullas relacionadas con la productividad de los equipos o procesos (por ejemplo, utilizando una medida de puntos funcin producidos por unidad de personaesfuerzo) y sus niveles asociados de experiencia en la ingeniera del software en general, y quizs en particulares tecnologas [Fen98: c3, c11; Som05: c25]. Las salidas de los procesos pueden ser, por ejemplo, calidad del producto (errores por KLOC (Kilo Lneas de Cdigo) o por Punto Funcin (FP)), mantenibilidad (el esfuerzo para hacer un cierto tipo de cambio), productividad (LDC (Lneas de Cdigo)) o Puntos Funcin por persona-mes), tiempo-de-mercado, o satisfaccin del cliente (como medidos por medio de una encuesta a clientes). Esta relacin depende del contexto particular (por ejemplo, el tamao de la organizacin o el tamao del proyecto). En general, estamos mucho ms preocupados acerca del proceso de salidas. Sin embargo, con el objetivo de conseguir las salidas del proceso que deseamos (por ejemplo, mayor facilidad de mantenimiento, mayor

satisfaccin del cliente), debemos haber implementado los procesos adecuados. Por supuesto que no son nicamente los procesos lo que tiene incidencia en las salidas. Otros factores como la capacidad del equipo y las herramientas que utilizan juegan un importante papel. Por ejemplo, cuando se evala el impacto de cambio en un proceso, es importante poner de relieve esas otras influencias. Adems es importante considerar el grado en el que el proceso ha sido institucionalizado (que fidelidad hay al proceso) para poder explicar porqu buenos procesos no siempre proporcionan las salidas deseadas en una situacin dada.

Figura 2 Diagrama que muestra la relacin entre un proceso y los resultados obtenidos Medida del Producto Software [ISO9126-01] La medicin de un producto software incluye, principalmente, la medicin del tamao del producto, la estructura del producto y la calidad del producto. 4.1.1 Medicin del Tamao

El tamao de un producto software es evaluado a menudo mediante medidas de longitud (por ejemplo, lneas de cdigo fuente en un mdulo, pginas en documento de especificacin de los requisitos del software), o funcionalidad (por ejemplo, puntos de funcin en una especificacin). El Estndar IEEE Std 14143.1 proporciona los principios de medicin funcional del software. Los estndares internacionales para la medicin funcional del software incluyen el ISO/IEC 19761, 20926, y el 20968 [IEEE 14143.1-00; ISO19761-03; ISO20926-03; ISO20968-02].

4.1.2

Medicin de la Estructura

Un rango diverso de medidas de la estructura de un producto software puede ser aplicado a un nivel bajo y alto de diseo y cdigo del artefacto para as reflejar el control del flujo (por ejemplo el nmero ciclomtico, cdigo de nudo), flujo de la informacin (por ejemplo, medidas de porcin), anidacin (por ejemplo, la medida polinomial de anidacin, la medida BAND), estructuras de control (por ejemplo, la medida del vector, la medida NPATH), y la estructura e interaccin modular (por

ejemplo, el flujo de la informacin, medidas basadas en rboles, acoplamiento y cohesin). [Fen98: c8; Pre04: c15]

4.3 Modelos de Informacin del Software Tal como la informacin es recogida y el repositorio de medicin es completado, nosotros podemos hacer posible la construccin de modelos usando la informacin y el conocimiento. Esos modelos existen para analizar, clasificar y predecir. Tales modelos necesitan ser evaluados para asegurar que los niveles de precisin son suficientes y que sus limitaciones son conocidas y entendidas. El refinamiento de los modelos, que tiene lugar durante y despus de que los proyectos sean completados, es otra actividad importante. 4.3.1 Creacin de Modelos

4.1.3

Medicin de la Calidad

Como un atributo multidimensional, la medicin de la calidad es menos sencilla de definir que los anteriores. Adems, algunas de las dimensiones de la calidad son probables que requieran medidas cualitativas ms que cuantitativas. Una discusin ms detallada de las medidas de calidad del software es ofrecido en la KA de Calidad del Software, tema 3.4. Los modelos ISO de la calidad del software y las medidas relacionadas son descritos en la ISO 9126, de la parte 1 a la parte 4 [ISO9126-01]. [Fen98: c9,c10; Pre04: c15; Som05: c24]

4.2.

Calidad de los Resultados de Medicin

Los resultados de la medicin de la calidad (precisin, reproducibilidad, repitibilidad, convertibilidad, medicin aleatoria de errores) son primordiales para la medida de los programas para proveer resultados efectivos y estables. Las caractersticas clave de los resultados de la medicin y la calidad relacionada con los instrumentos de medicin definidos en vocabulario internacional de metrologa [VIM93] de la ISO. La teora de la medicin establece la base en qu medidas significativas pueden ser creadas. La teora de la medicin y los tipos de escalas son discutidas en [Kan02]. La medicin es definida en la teora como la asignacin de nmeros a los objetos de una forma sistemtica para presentar las propiedades de los objetos. Una apreciacin de las escalas para la medicin del software y la implicacin de cada tipo de escala en relacin a la posterior seleccin de mtodos de anlisis de informacin es especialmente importante. [Abr96; Fen98: c2; Pfl01: c11] Las escalas significativas son mencionadas en una clasificacin de escalas. Para aquellas, la teora de medicin ofrece una sucesin de ms y ms caminos obligatorios de asignacin de medidas. Si los nmeros asignados son simplemente para ofrecer etiquetas para clasificar los objetos, entonces son llamados nominales. Si son asignados de tal forma que clasifique los objetos (por ejemplo, bueno, mejor, el mejor), son llamados ordinales. Si son tratados con magnitudes de la propiedad relativa a la unidad de medicin definida, son llamados intervalos (y los intervalos son uniformes entre los nmeros; si no, entonces sern aditivos). Las medidas estn el nivel del ratio si tienen un punto de cero absoluto, por lo que las distancias de los ratios al punto cero son significativas.

La creacin de modelos incluye la calibracin y la evaluacin del modelo. El objetivo aproximado al que nos dirigimos son informes de medidas del proceso de construccin de un modelo hasta que los modelos son construidos para as resolver las cuestiones importantes y conseguir las mejoras del software propuestas. Este proceso es est tambin influenciado por las limitaciones de unas escalas particulares de medicin en relacin con el mtodo de anlisis seleccionado. Los modelos son calibrados (mediante el uso de ciertas observaciones relevantes, como por ejemplo, proyectos recientes, proyectos en los cuales se han utilizado tecnologas similares) y su efectividad es evaluada (por ejemplo, mediante pruebas de su rendimiento en algunas muestras). [Fen98: c4,c6,c13;Pfl01: c3,c11,c12;Som05: c25]

4.3.2

Implementacin de Modelos

La implementacin de modelos incluye interpretacin y refinamiento de modelos- los modelos calibrados son usados en los procesos, sus resultados son interpretados y evaluados en el contexto del proceso/proyecto, y los modelos son luego redefinidos donde sea apropiado. [Fen98: c6; Pfl01: c3,c11, c12; Pre04: c22; Som05: c25]

4.4 Tcnicas de Medicin del Proceso Las tcnicas de medicin deben ser usadas para analizar los procesos de ingeniera del software y para la identificacin de las fortalezas y debilidades. Esto puede ser desempeado para iniciar la implementacin y cambio del proceso, o para evaluar las consecuencias de la implementacin y el cambio en el proceso. La calidad de los resultados medidos, como la exactitud, repetitividad, y la reproductibilidad, son asuntos de medicin en el proceso de ingeniera del software, ya que estn basados en instrumentos y mediciones crticas, como por ejemplo, cuando un asesor asigna una puntuacin a un proceso en particular.

Un mtodo y una forma de conseguir calidad en las mediciones se puede encontrar en [Gol99]. Las tcnicas de medicin de procesos han sido clasificadas dentro de dos tipos generales: analticas y puntos de referencia. Los dos tipos de tcnicas puedes ser usados conjuntamente ya que estn basados en distinto tipo de informacin. (Car91)

resultados deseables. Estudios observacionales pueden tambin proveer una til retroalimentacin para identificar las mejoras de los procesos. (Agr99)

4.4.1

Tcnicas Analticas

Las tcnicas analticas se caracterizan por depender de la evidencia cuantitativa para determinar dnde son necesarias unas mejoras y si una iniciativa de mejora ha tenido xito. El tipo analtico es ejemplificado por el Paradigma de la Mejora de la Calidad (QIP), que consiste en un crculo de entendimiento, evaluacin y empaquetado [SEL96]. Las tcnicas presentadas a continuacin son pretendidas como otros ejemplos de tcnicas analticas, y reflejan que est hecho en la prctica. [Fen98; Mus99], (Lyu96; Wei93; Zel98) Si una organizacin especfica usa o no todas estas tcnicas depender, al menos parcialmente, en su madurez.

La Clasificacin del Defecto Ortogonal es una tcnica que puede ser usada para enlazar los errores encontrados con causas potenciales. Depende de las vinculaciones entre tipos y disparadores de errores. (Chi92; Chi96) En la clasificacin de errores (o anomalas), el Estndar IEEE puede ser til en este contexto (Estndar IEEE para la Clasificacin de Anomalas del Software (IEEE1044-93).

El Anlisis de Causas desde la Raz es otra tcnica analtica comn que se utiliza en la prctica. sta tiene su origen desde los problemas detectados (por ejemplo, errores) para detectar las causas del proceso, con el propsito de cambiar el proceso para evitar estos problemas en el futuro. Se pueden encontrar ejemplos para distintos tipos de procesos en (Col93; Ele97; Nak91).

Estudios Experimentales: la experimentacin implica el establecimiento controlado o cuasi experimentos en la organizacin para evaluar procesos. (McG94). De forma usual, un Nuevo proceso es comparado con el proceso actual para determinar si el primero tuvo mejores resultados o no. Otro tipo de estudios experimentales es la simulacin del proceso. Este tipo de estudio puede ser usado para analizar el comportamiento del proceso, para explorar las mejoras exponenciales del proceso, predecir los resultados del proceso si el proceso actual es cambiado de cierta manera, controlar la ejecucin del proceso. La informacin inicial sobre el rendimiento del proceso actual necesita ser recogida como base a la simulacin.

La tcnica de Clasificacin del Defecto Ortogonal descrita arriba puede ser usada para encontrar categoras en las que pueden existir muchos problemas, hasta el punto en el que puedan ser analizados. La Clasificacin del Defecto Ortogonal es as de este modo usada para hacer una seleccin cuantitativa para saber dnde aplicar el Anlisis de Causas desde la Raz.

El Proceso de Control Estadstico es un modo eficaz de identificar estabilidad, o la falta de ella, en el proceso a travs del uso de trazas de control y sus interpretaciones. Una buena introduccin a SPC en el contexto de la ingeniera del software es presentada en (Flo99).

El Informe de Definicin del Proceso es un medio por el cual la definicin de un proceso (si es descriptivo, o preceptivo, o ambos) es revisado, e identificadas las deficiencias y las mejoras potenciales del proceso. Ejemplos tpicos de esto son presentados en (Ban95; Kel98). Un camino operacional sencillo para analizar el proceso es compararlo con un estndar existente (nacional, internacional, o entidad profesional), como IEEE/EIA 12207.0 [IEEE12207.0-96]. Con esta aproximacin, la informacin cuantitativa no es recogida del proceso, o, si hay, juegan un rol de apoyo. La definicin de los anlisis de rendimiento individual de los procesos utilizan su conocimiento y capacidades para decidir qu cambios en los procesos deberan conducir a

El Proceso Personal de Software define una serie de mejoras a una prctica de desarrollo individualizada en un orden especfico [Hum95]. Es un proceso que va desde abajo arriba en el sentido que estipula una coleccin de informacin personal y las mejoras basadas en la interpretacin de la informacin.

4.4.2

Tcnicas de Bancos de Pruebas

La segunda tcnica, bancos de prueba, depende de la identificar una organizacin excelente en un campo y en la documentacin de sus prcticas y herramientas. El banco de pruebas asume que si una organizacin menos competente adopta las prcticas de la

organizacin excelente, ella tambin llegar a ser excelente. Los bancos de pruebas engloban la evaluacin de la madurez de una organizacin o de la capacidad de sus procesos. Eso se simplifica por el trabajo de evaluacin del proceso software. Se puede ver una introduccin general de evaluaciones de procesos y su aplicacin en (Zah98).

MATRIZ DE TEMAS VS. MATERIAL DE REFERENCIA

[OMG02]

[Com97]

[McF96]

[Som05] c25 c24 c25 c25

[SEL96]

[Mus99]

[Fow90]

[Moi98]

[Abr96]

[Fen98]

[Boe03]

[San98]

[SEI01]

[Bec99]

[Joh99]

[Bas92]

[Pre04]

[Fin94]

Gol99]

[Pfl01]

1.Proceso de Implementacin y Cambios 1.1Infraestructura del Proceso 1.2 Ciclo de Gestin del Proceso Software 1.3 Modelos para el Proceso de Implementacin y Cambios 1.4 Consideraciones Prcticas 2.Definicin de Procesos 2.1Modelos de Ciclo de Vida del Software 2.2Procesos del Ciclo de Vida del Software 2.3Notaciones para la Definicin de Procesos 2.4 Adaptacin del Proceso 2.5Automatizacin 3.Valoracin del Proceso 3.1Modelos de Valoracin de Procesos 3.2Mtodos de Valoracin de Procesos 4.Medicin de Productos y Procesos 4.1Medicin de Procesos 4.2Medicin de Productos Software 4.3Caliddad de los Resultados de Medicin 4.4Modelos de Informacin Software Construccin del Modelo Implementacin del Modelo 4.5 Tcnicas de Medicin de Procesos c4, c6,c13 c6 * * c3, c11,c12 c22 * * c3, c11 c8c10 c2 c11 * * * * c2 * * * * * c2 * * * c2 * * * * * * * * * * * * * *

c15

[Sti99]

IEEE12207 * * * * *

1.Proceso de Implementacin y Cambios 1.1Infraestructura del Proceso 1.2 Ciclo de Gestin del Proceso Software 1.3 Modelos para el Proceso de Implementacin y Cambios 1.4 Consideraciones Prcticas 2.Definicin de Procesos 2.1Modelos de Ciclo de Vida del Software 2.2Procesos del Ciclo de Vida del Software 2.3Notaciones para la Definicin de Procesos 2.4 Adaptacin del Proceso 2.5Automatizacin 3.Valoracin del Proceso 3.1Modelos de Valoracin de Procesos 3.2Mtodos de Valoracin de Procesos 4.Medicin de Productos y Procesos 4.1Medicin de Procesos 4.2Medicin de Productos Software 4.3Caliddad de los Resultados de Medicin 4.4Modelos de Informacin Software Construccin del Modelo Implementacin del Modelo 4.5 Tcnicas de Medicin de Procesos * * * * * * * * * * * * * * * * * * * * * * *

IEEE14143 .1

IEEE 1044

IEEE 1061

IEEE 1074

IEEE 1219

IEEE 1517

IEEE 1540

ISO9000-3

ISO14764

ISO15504

ISO15288

ISO15939

ISO19761

ISO20926

ISO20969

ISO VIM

ISO9001

ISO9126

REFERENCIAS RECOMENDADAS
[Abr96] A. Abran and P.N. Robillard, Function Points Analysis: An Empirical Study of its Measurement Processes, IEEE Transactions on Software Engineering, vol. 22, 1996, pp. 895-909. [Bas92] V. Basili et al., The Software Engineering Laboratory An Operational Software Experience Factory, presented at the International Conference on Software Engineering, 1992. [Bec99] K. Beck, Extreme Programming Explained: Embrace Change, Addison-Wesley, 1999. [Boe03] B. Boehm and R. Turner, Using Risk to Balance Agile and Plan-Driven Methods, Computer, June 2003, pp. 57-66. [Com97] E. Comer, Alternative Software Life Cycle Models, presented at International Conference on Software Engineering, 1997. [ElE99] K. El-Emam and N. Madhavji, Elements of Software Process Assessment and Improvement, IEEE Computer Society Press, 1999. [Fen98] N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, second ed., International Thomson Computer Press, 1998. [Fin94] A. Finkelstein, J. Kramer, and B. Nuseibeh, Software Process Modeling and Technology, Research Studies Press Ltd., 1994. [Fow90] P. Fowler and S. Rifkin, Software Engineering Process Group Guide, Software Engineering Institute, Technical Report CMU/SEI-90-TR-24, 1990, available at http://www.sei.cmu.edu/pub/documents/90.reports/pdf/tr2 4.90.pdf. [Gol99] D. Goldenson et al., Empirical Studies of Software Process Assessment Methods, presented at Elements of Software Process Assessment and Improvement, 1999. [IEEE1074-97] IEEE Std 1074-1997, IEEE Standard for Developing Software Life Cycle Processes, IEEE, 1997. [IEEE12207.0-96] IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std ISO/IEC 12207:95, Standard for Information TechnologySoftware Life Cycle Processes, IEEE, 1996. [VIM93] ISO VIM, International Vocabulary of Basic and General Terms in Metrology, ISO, 1993. [ISO9126-01] ISO/IEC 9126-1:2001, Software Engineering - Product Quality-Part 1: Quality Model, ISO and IEC, 2001.

[ISO15504-98] ISO/IEC TR 15504:1998, Information Technology - Software Process Assessment (parts 1-9), ISO and IEC, 1998. [ISO15939-02] ISO/IEC 15939:2002, Software Engineering Software Measurement Process, ISO and IEC, 2002. [Joh99] D. Johnson and J. Brodman, Tailoring the CMM for Small Businesses, Small Organizations, and Small Projects, presented at Elements of Software Process Assessment and Improvement, 1999. [McF96] B. McFeeley, IDEAL: A Users Guide for Software Process Improvement, Software Engineering Institute CMU/SEI-96-HB-001, 1996, available at http://www.sei.cmu.edu/pub/documents/96.reports/pdf/hb0 01.96.pdf. [Moi98] D. Moitra, Managing Change for Software Process Improvement Initiatives: A Practical Experience Based Approach, Software Process Improvement and Practice, vol. 4, iss. 4, 1998, pp. 199-207. [Mus99] J. Musa, Software Reliability Engineering: More Reliable Software, Faster Development and Testing, McGraw-Hill, 1999. [OMG02] Object Management Group, Software Process Engineering Metamodel Specification, 2002, available at http://www.omg.org/docs/formal/02-11-14.pdf. [Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001. [Pre04] R.S. Pressman, Software Engineering: A Practitioners Approach, sixth ed., McGraw-Hill, 2004. [San98] M. Sanders, The SPIRE Handbook: Better, Faster, Cheaper Software Development in Small Organisations, European Commission, 1998. [SEI01] Software Engineering Institute, Capability Maturity Model Integration, v1.1, 2001, available at http://www.sei.cmu.edu/cmmi/cmmi.html. [SEL96] Software Engineering Laboratory, Software Process Improvement Guidebook, NASA/GSFC, Technical Report SEL-95-102, April 1996, available at http://sel.gsfc.nasa.gov/website/documents/online-doc/95102.pdf. [Som05] I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005. [Sti99] H. Stienen, Software Process Assessment and Improvement: 5 Years of Experiences with Bootstrap, Elements of Software Process Assessment and Improvement, K. El-Emam and N. Madhavji, eds., IEEE Computer Society Press, 1999.

APNDICE A. LISTA DE LECTURAS ADICIONALES (Agr99) W. Agresti, The Role of Design and Analysis in Process Improvement, presented at Elements of Software Process Assessment and Improvement, 1999. (Ale91) L. Alexander and A. Davis, Criteria for Selecting Software Process Models, presented at COMPSAC 91, 1991. (Ban95) S. Bandinelli et al., Modeling and Improving an Industrial Software Process, IEEE Transactions on Software Engineering, vol. 21, iss. 5, 1995, pp. 440-454. (Bar95) N. Barghouti et al., Two Case Studies in Modeling Real, Corporate Processes, Software Process Improvement and Practice, Pilot Issue, 1995, pp. 17-32. (Boe03a) B. Boehm and R. Turner, Balancing Agility and Discipline: A Guide for the Perplexed, Addison-Wesley, 2003. (Bur99) I. Burnstein et al., A Testing Maturity Model for Software Test Process Assessment and Improvement, Software Quality Professional, vol. 1, iss. 4, 1999, pp. 821. (Chi92) R. Chillarege et al., Orthogonal Defect Classification - A Concept for In-Process Measurement, IEEE Transactions on Software Engineering, vol. 18, iss. 11, 1992, pp. 943-956. (Chi96) R. Chillarege, Orthogonal Defect Classification, Handbook of Software Reliability Engineering, M. Lyu, ed., IEEE Computer Society Press, 1996. (Col93) J. Collofello and B. Gosalia, An Application of Causal Analysis to the Software Production Process, Software Practice and Experience, vol. 23, iss. 10, 1993, pp. 1095-1105. (Cur02) B. Curtis, W. Hefley, and S. Miller, The People Capability Maturity Model: Guidelines for Improving the Workforce, Addison-Wesley, 2002. (Dav88) A. Davis, E. Bersoff, and E. Comer, A Strategy for Comparing Alternative Software Development Life Cycle Models, IEEE Transactions on Software Engineering, vol. 14, iss. 10, 1988, pp. 1453-1461. (Dun96) D. Dunnaway and S. Masters, CMM-Based Appraisal for Internal Process Improvement (CBA IPI): Method Description, Software Engineering Institute CMU/SEI-96-TR-007, 1996, available at http://www.sei.cmu.edu/pub/documents/96.reports/pdf/tr0 07. 96.pdf. (EIA/IS731-99) EIA, EIA/IS 731 Systems Engineering Capability Model, 1999, available at http://www.geia.org/eoc/G47/index.html. (ElE-97) K. El-Emam, D. Holtje, and N. Madhavji, Causal Analysis of the Requirements Change Process for a Large System, presented at Proceedings of the International Conference on Software Maintenance, 1997. (ElE-99a) K. El-Emam, B. Smith, and P. Fusaro, Success Factors and Barriers in Software Process Improvement: An Empirical Study, Better Software Practice for Business

Benefit: Principles and Experiences, R. Messnarz and C. Tully, eds., IEEE Computer Society Press, 1999. (ElE-00a) K. El-Emam and A. Birk, Validating the ISO/IEC 15504 Measures of Software Development Process Capability, Journal of Systems and Software, vol. 51, iss. 2, 2000, pp. 119-149. (ElE-00b) K. El-Emam and A. Birk, Validating the ISO/IEC 15504 Measures of Software Requirements Analysis Process Capability, IEEE Transactions on Software Engineering, vol. 26, iss. 6, June 2000, pp. 541566 (Fay97) M. Fayad and M. Laitinen, Process Assessment: Considered Wasteful, Communications of the ACM, vol. 40, iss. 11, November 1997. (Flo99) W. Florac and A. Carleton, Measuring the Software Process: Statistical Process Control for Software Process Improvement, Addison-Wesley, 1999. (Gar96) P. Garg and M. Jazayeri, Process-Centered Software Engineering Environments: A Grand Tour, Software Process, A. Fuggetta and A. Wolf, eds., John Wiley & Sons, 1996. (Gra97) R. Grady, Successful Improvement, Prentice Hall, 1997. Software Process

(Gra88) E. Gray and W. Smith, On the Limitations of Software Process Assessment and the Recognition of a Required Re-Orientation for Global Process Improvement, Software Quality Journal, vol. 7, 1998, pp. 21-34. (Har98) D. Harel and M. Politi, Modeling Reactive Systems with Statecharts: The Statemate Approach, McGraw-Hill, 1998. (Her98) J. Herbsleb, Hard Problems and Hard Science: On the Practical Limits of Experimentation, IEEE TCSE Software Process Newsletter, vol. 11, 1998, pp. 18-21, available at http://www.seg.iit.nrc.ca/SPN. (Hum95) W. Humphrey, A Discipline for Software Engineering, Addison-Wesley, 1995. (Hum99) W. Humphrey, An Introduction to the Team Software Process, Addison-Wesley, 1999. (Hut94) D. Hutton, The Change Agents Handbook: A Survival Guide for Quality Improvement Champions, Irwin, 1994. (Kan02) S.H. Kan, Metrics and Models in Software Quality Engineering, second ed., Addison-Wesley, 2002. (Kel98) M. Kellner et al., Process Guides: Effective Guidance for Process Participants, presented at the 5th International Conference on the Software Process, 1998. (Kit98) B. Kitchenham, Selecting Projects for Technology Evaluation, IEEE TCSE Software Process Newsletter, iss. 11, 1998, pp. 3-6, available at http://www.seg.iit.nrc.ca/SPN. (Kra99) H. Krasner, The Payoff for Software Process Improvement: What It Is and How to Get It, presented at Elements of Software Process Assessment and Improvement, 1999.

(Kri99) M.S. Krishnan and M. Kellner, Measuring Process Consistency: Implications for Reducing Software Defects, IEEE Transactions on Software Engineering, vol. 25, iss. 6, November/December 1999, pp. 800-815. (Lyu96) M.R. Lyu, Handbook of Software Reliability Engineering, Mc-Graw-Hill/IEEE, 1996. (Mad94) N. Madhavji et al., Elicit: A Method for Eliciting Process Models, presented at Proceedings of the Third International Conference on the Software Process, 1994. (Mas95) S. Masters and C. Bothwell, CMM Appraisal Framework - Version 1.0, Software Engineering Institute CMU/SEI-TR-95-001, 1995, available at http://www.sei.cmu.edu/pub/documents/95.reports/pdf/tr0 01.95.pdf. (McG94) F. McGarry et al., Software Process Improvement in the NASA Software Engineering Laboratory, Software Engineering Institute CMU/SEI-94R-22, 1994, available at http://www.sei.cmu.edu/pub/documents/94.reports/pdf/tr2 2.94.pdf. (McG01) J. McGarry et al., Practical Software Measurement: Objective Information for Decision Makers, ddison-Wesley, 2001. (Mcg93) C. McGowan and S. Bohner, Model Based rocess Assessments, presented at International Conference on Software Engineering, 1993. (Nak91) T. Nakajo and H. Kume, A Case History Analysis of Software Error Cause-Effect Relationship, IEEE Transactions on Software Engineering, vol. 17, iss. 8, 1991. (Pau94) M. Paulk and M. Konrad, Measuring Process Capability Versus Organizational Process Maturity, presented at 4th International Conference on Software Quality, 1994. (Pfl99) S.L. Pfleeger, Understanding and Improving Technology Transfer in Software Engineering, Journal of Systems and Software, vol. 47, 1999, pp. 111-124. (Pfl01) S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001.

(Rad85) R. Radice et al., A Programming Process Architecture, IBM Systems Journal, vol. 24, iss. 2, 1985, pp. 79-90. (Rag89) S. Raghavan and D. Chand, Diffusing SoftwareEngineering Methods, IEEE Software, July 1989, pp. 8190. (Rog83) E. Rogers, Diffusion of Innovations, Free Press, 1983. (Sch99) E. Schein, Process Consultation Revisited: Building the Helping Relationship, Addison-Wesley, 1999. (SEI95) Software Engineering Institute, The Capability Maturity Model: Guidelines for Improving the Software Process, Addison-Wesley, 1995. (SEL96) Software Engineering Laboratory, Software Process Improvement Guidebook, Software Engineering Laboratory, NASA/GSFC, Technical Report SEL-95-102, April 1996, available at http://sel.gsfc.nasa.gov/website/documents/online-doc/95102.pdf (SPC92) Software Productivity Consortium, Process Definition and Modeling Guidebook, Software Productivity Consortium, SPC-92041-CMC, 1992. (Som97) I. Sommerville and P. Sawyer, Requirements Engineering: A Good Practice Guide, John Wiley & Sons, 1997. (Vot93) L. Votta, Does Every Inspection Need a Meeting? ACM Software Engineering Notes, vol. 18, iss. 5, 1993, pp. 107-114. (Wei93) G.M. Weinberg, Quality Management, First-Order Measurement Measuring Cost and Value), vol. 2, 1993. Software (Ch. 8,

(Yu94) E. Yu and J. Mylopolous, Understanding Why in Software Process Modeling, Analysis, and Design, presented at 16th International Conference on Software Engineering, 1994 (Zah98) S. Zahran, Software Process Improvement: Practical Guidelines for Business Success, AddisonWesley, 1998. (Zel98) M. V. Zelkowitz and D. R. Wallace, Experimental Models for Validating Technology, Computer, vol. 31, iss. 5, 1998, pp. 23-31.

APNDICE B. LISTA DE ESTNDARES (IEEE1044-93) IEEE Std 1044-1993 (R2002), IEEE Standard for the Classification of Software Anomalies, IEEE, 1993. (IEEE1061-98) IEEE Std 1061-1998, IEEE Standard for a Software Quality Metrics Methodology, IEEE, 1998. (IEEE1074-97) IEEE Std 1074-1997, IEEE Standard for Developing Software Life Cycle Processes, IEEE, 1997. (IEEE1219-98) IEEE Std 1219-1998, IEEE Standard for Software Maintenance, IEEE, 1998. (IEEE1220-98) IEEE Std 1220-1998, IEEE Standard for the Application and Management of the Systems Engineering Process, IEEE, 1998. (IEEE1517-99) IEEE Std 1517-1999, IEEE Standard for Information Technology-Software Life Cycle ProcessesReuse Processes, IEEE, 1999. (IEEE1540-01) IEEE Std 15402001//ISO/IEC16085:2003,IEEE Standard for Software Life Cycle Processes-Risk Management, IEEE, 2001. (IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std ISO/IEC 12207:95, Standard for Information TechnologySoftware Life Cycle Processes, IEEE, 1996. (IEEE12207.1-96) IEEE/EIA 12207.1-1996, Industry Implementation of Int. Std ISO/IEC 12207:95, Standard forInformation Technology-Software Life Cycle Processes -Life Cycle Data, IEEE, 1996. (IEEE12207.2-97) IEEE/EIA 12207.2-1997, Industry Implementation of Int. Std ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes -Implementation Considerations, IEEE, 1997. (IEEE14143.1-00) IEEE Std 14143.1-2000//ISO/ IEC14143-1:1998, Information Technology-Software Measurement-Functional Size Measurement-Part 1: Definitions of Concepts, IEEE, 2000. (ISO9001-00) ISO 9001:2000, Quality Management Systems-Requirements, ISO, 1994. (ISO9126-01) ISO/IEC 9126-1:2001, Software Engineering-Product Quality-Part 1: Quality Model, ISO and IEC, 2001. (ISO14674-99) ISO/IEC 14674:1999, Information Technology - Software Maintenance, ISO and IEC, 1999. (ISO15288-02) ISO/IEC 15288:2002, Systems Engineering-System Life Cycle Process, ISO and IEC, 2002. (ISO15504-98) ISO/IEC TR 15504:1998, Information Technology - Software Process Assessment (parts 1-9), ISO and IEC, 1998. (ISO15939-02) ISO/IEC 15939:2002, Software Engineering-Software Measurement Process, ISO and IEC, 2002. (ISO19761-03) ISO/IEC 19761:2003, Software Engineering-Cosmic FPP-A Functional Size Measurement Method, ISO and IEC, 2003. (ISO20926-03) ISO/IEC 20926:2003, Software Engineering-IFPUG 4.1 Unadjusted Functional Size Measurement Method-Counting Practices Manual, ISO and IEC, 2003. (ISO20968-02) ISO/IEC 20968:2002, Software Engineering-MK II Function Point Analysis Counting Practices Manual, ISO and IEC, 2002. (ISO90003-04) ISO/IEC 90003:2004, Software and Systems Engineering - Guidelines for the Application of ISO9001:2000 to Computer Software, ISO and IEC, 2004. (VIM93) ISO VIM, International Vocabulary of Basic and General Terms in Metrology, ISO, 1993.

CAPTULO 10 INSTRUMENTOS Y MTODOS DE LA INGENIERA DE SOFTWARE


ACRNIMOS
Herramientas y Mtodos de Ingeniera del software

CASE

Computer Assisted Software Engineering

Herramientas de Ingeniera del software Requerimientos de las herramientas sw

Mtodos de Ingeniera del software Mtodos heursticos


Mtodos estructurados Mtodos Orientados a Datos Mtodos Orientados a Objetos

INTRODUCCIN
Los instrumentos de desarrollo de software son los instrumentos asistidos por ordenador que son requeridos para ayudar a los procesos de ciclo de vida de software. Los instrumentos permiten a acciones repetidas, bien definidas para ser automatizadas, reduciendo la carga cognoscitiva sobre el ingeniero de software que es entonces libre de concentrarse en los aspectos creativos del proceso. Los instrumentos a menudo son diseados para apoyar el software particular mtodos de la ingeniera, reduciendo cualquier carga administrativa asociada con la aplicacin del mtodo a mano. Como los mtodos de la ingeniera de software, ellos son queridos para hacer el software que trama ms sistemtico, varan en el alcance de apoyar tareas individuales que abarcan el ciclo de vida completo. Los mtodos de la ingeniera de software imponen la estructura a la actividad de la ingeniera de software con el objetivo de hacer la actividad sistemtica y en ltima instancia ms probablemente de ser acertado. Los mtodos por lo general proporcionan la notacin y el vocabulario, procedimientos para realizar tareas identificables, y directrices para comprobar tanto el proceso como el producto. Ellos varan extensamente en el alcance, de una fase nica del ciclo de vida al ciclo de vida completo. El nfasis en esta rea de Conocimiento est sobre los mtodos de la ingeniera de software que abarcan mltiples fases de ciclo de vida, ya que mtodos especficos de fase son cubiertos por otras reas de conocimiento. Mientras hay manuales detallados sobre instrumentos especficos y numerosos papeles de investigacin sobre instrumentos innovadores, escrituras genricas tcnicas sobre instrumentos de la ingeniera de software son relativamente escasas. Una dificultad es la alta tarifa de cambio de instrumentos de software en general. Detalles especficos cambian con regularidad, haciendo difcil de proporcionar ejemplos concretos y actualizados. Los Instrumentos de Ingeniera de Software y los Mtodos del rea de Conocimiento cubren los procesos de ciclo de vida completos, y por lo tanto son relacionados con cada rea de conocimiento en la Gua.

Modelado de los requerimientos Trazabilidad de los requerimientos

Herramientas de Diseo SW Herramientas de Construccin SW


Redactores del Programa Compiladores y generadores de cdigo Intrpretes Depuradores

Mtodos formales
Especificacin del lenguaje y notaciones Refinamiento Propiedades de Verificacin/ confirmacin

Mtodos de prototipado
Estilos de prototipado Objetivo del prototipado Tcnicas de evaluacin del prototipado

Herramientas de Pruebas de SW
Generadores de pruebas Marcos de ejecucin de prueba Evaluacin de prueba Direccin de prueba Anlisis de Funcionamiento

Herramientas de Mantenimiento de SW
Herramientas de Comprensin

Las Herramientas de Direccin de Configuracin de SW


Herramientas de defecto, mejora, cuestin y rastreo del problema Herramientas de direccin de Versin Herramientas de Liberacin y construccin

Herramientas de Direccin en la Ingeniera de Software


Herramientas que planifican y rastrean proyectos Herramientas de Manejo arriesgado Herramientas de Medida

Las Herramientas de Proceso de Ingeniera de Software


Herramientas de modelado del Proceso Herramientas de direccin de Proceso Entornos CASE Integrados Entornos de Ingenieria del SW centrada en proceso

Herramientas de Calidad de Software


Herramientas de revisin de auditoria Herramientas de anlisis estticos

Cuestiones de Herramientas Compuestas


Herramientas de integracin de tcnicas Meta-herramientas Herramientas de evaluacin

Figura 1 Desglose de tpicos de Instrumentos de Ingeniera del software y los Mtodos del rea de Conocimiento.

ESTUDIO DE LAS HERRAMIENTAS Y MTODOS DE LA INGENIERA DE SOFTWARE


1. Las Herramientas de Ingeniera de Software

Los cinco primeros asuntos del subrea de los Instrumentos de Ingeniera de Software corresponden a las cinco primeras reas del conocimiento de la Gua (Exigencias de Software, el Diseo de Software, la Construccin de Software, Pruebas de Software, y el Mantenimiento de Software). Los cuatro siguientes asuntos corresponden a las reas de conocimiento restantes (la Direccin de Configuracin de Software, la Direccin de la Ingeniera de Software, el Proceso de Ingeniera de Software, y la Calidad de Software). Proporcionan un asunto adicional, dirigiendo reas como las tcnicas de integracin de instrumento que son potencialmente aplicables a todas las clases de instrumentos 1.1 Las herramientas de Exigencias de Software [Dor97, Dor02]

general o redactores de documento, o pueden ser especializado para un idioma de llegada. Compiladores y generadores de cdigo. Tradicionalmente, los compiladores han sido los traductores no interactivos de cdigo original, pero hubo una tendencia para integrar compiladores y redactores de programa para proporcionar ambientes de programa integrados. Este asunto tambin cubre preprocesadores, enlazadores/cargadores, y generadores de cdigo. Intrpretes. Estos instrumentos proporcionan la ejecucin de software por la emulacin. Pueden apoyar actividades de construccin de software proporcionando un ambiente ms controlable y observable para la ejecucin de programa. Depuradores. Estos instrumentos son considerados en una categora separada ya que ellos apoyan el proceso de construccin de software, pero son diferentes de redactores de programa y recopiladores.

Los instrumentos para tratar con exigencias de software han sido clasificados en dos categoras: modelado e instrumentos de capacidad de rastreo. Exigencias de los Instrumentos de modelado. Estos instrumentos son usados para la obtencin, el anlisis, la especificacin, y validez de las exigencias de software. Exigencias de los Instrumentos de capacidad de rastreo. [Dor02] Estos instrumentos se hacen cada vez ms importante debido a que la complejidad de software crece. Ya que ellos son tambin relevantes en otros procesos de ciclo de vida, son presentados separadamente de los instrumentos de modelado. 1.2. Las herramientas Diseo de Software [Dor02] Este asunto cubre instrumentos para crear y comprobar diseos de software. Hay una variedad de tales instrumentos, con la mayor parte de esta variedad siendo una consecuencia de la diversidad de notaciones de diseo de software y mtodos. A pesar de esta variedad, ninguna divisin convincente para este asunto ha sido encontrada. 1.3. Las Herramientas de Construccin de Software [Dor02, Rei96] Este asunto cubre instrumentos de construccin de software. Estos instrumentos son usados para producir y traducir la representacin de programa (por ejemplo, el cdigo original) que suficientemente es detallado y explcito para permitir la ejecucin de mquina. Redactores del Programa. Estos instrumentos son usados para la creacin y la modificacin de programas, y posiblemente los documentos asociados con ellos. Pueden ser el texto de uso

1.4. Herramientas de Pruebas de Software [Dor02, Pfl01, Rei96] Generadores de pruebas. Estos instrumentos ayudan en el desarrollo de casos de prueba. Marcos de ejecucin de prueba. Estos instrumentos permiten la ejecucin de casos de prueba en un ambiente controlado donde el comportamiento del objeto bajo prueba es observado. Herramientas de evaluacin de prueba. Estos instrumentos apoyan la evaluacin de los resultados de ejecucin de prueba, ayudando a determinar si realmente el comportamiento observado se conforma al comportamiento esperado. Herramientas de direccin de prueba. Estos instrumentos proporcionan el apoyo a todos los aspectos del proceso de pruebas de software. Herramientas de anlisis de Funcionamiento. [Rei96] Estos instrumentos son usado para medir y analizar el funcionamiento de software, que es una forma especializada de pruebas donde el objetivo es de evaluar el comportamiento de funcionamiento ms bien que el comportamiento funcional (la correccin).

1.5. Herramientas de Mantenimiento de Software [Dor02, Pfl01] Este asunto abarca los instrumentos que son en particular importantes en el mantenimiento de software donde el software existente est siendo modificado. Dos categoras son identificadas: instrumentos de comprensin e instrumentos de reingeniera. Herramientas de Comprensin. [Re196] Estos instrumentos ayudan en la comprensin humana de programas. Los ejemplos incluyen instrumentos de visualizacin como rebanadores de programa y animadores.

Herramientas de reingeniera. En el Mantenimiento de las reas de conocimiento de Software, reingeniera es definido como el examen y la alteracin del software sustancial para reconstituirlo en una nueva forma, e incluye la puesta en prctica subsiguiente de la nueva forma. Los instrumentos de reingeniera apoyan aquella actividad. Al revs herramientas de la ingeniera ayudan al proceso trabajando hacia atrs de un producto existente a crear artefactos como la especificacin y descripciones de diseo, que entonces pueden ser transformadas para generar un nuevo producto de uno anterior.

1.8. Las Herramientas de Proceso de Ingeniera de Software [Dor02, Som05] Las herramientas de proceso de ingeniera de Software estn divididos en instrumentos que modelan, instrumentos de direccin, y ambientes de desarrollo de software. Herramientas de modelado del Proceso. [Pfl01] Estos instrumentos son usados para modelar e investigar los procesos de la ingeniera de software. Herramientas de direccin de Proceso. Estos instrumentos proporcionan el apoyo a la direccin de la ingeniera de software. Entornos CASE Integrados. [Rei96, Som05] (ECMA55-93, ECMA69-94, IEEE1209-92, IEEE1348-95, Mul96) el software Integrado automatiza instrumentos de la ingeniera o ambientes que cubren mltiples fases del software el ciclo de vida de la ingeniera pertenece a este subtema. Tales instrumentos realizan mltiples funciones y de ah potencialmente actan recprocamente con el proceso de ciclo de vida de software siendo ejecutado. Entornos de Ingeniera del SW centrada en proceso. [Rei96] (Gar96) Estos ambientes explcitamente incorporan la informacin sobre los procesos de ciclo de vida de software y dirigen y supervisan al usuario segn el proceso definido. 1.9. Las Herramientas de Calidad de Software [Dor02] Las herramientas de Calidad son divididas en dos categoras: inspeccin e instrumentos de anlisis. Herramientas de revisin de auditora. Estos instrumentos son usados para apoyar revisiones y revisiones de cuentas. Herramientas de anlisis estticos. [Cla96, Pfl01, Rei96] Estos instrumentos son usados para analizar artefactos de software, como analizadores sintcticos y semnticos, as como datos, el flujo de control, y analizadores de dependencia. Tales instrumentos son queridos para comprobar artefactos de software para la conformidad o para verificar propiedades deseadas. 1.10. Cuestiones de Instrumento Compuestas [Dor02] Este asunto cubre el tema aplicable a todas las clases de instrumentos. Tres categoras han sido identificadas: tcnicas de integracin de instrumento, metainstrumentos, y evaluacin de instrumento. Herramientas de integracin de tcnicas [Pfl01, Rei96, Som01] (Bro94) la integracin de Instrumento es importante para hacer a instrumentos individuales cooperar. Esta categora potencialmente se solapa con la categora de ambientes de CASO integrada donde las tcnicas de integracin son

1.6. Las herramientas de Direccin de Configuracin de Software


[Dor02, Rei96, Som05] Las herramientas para la direccin de configuracin han sido divididos en tres categoras: rastreo, direccin de versin, e instrumentos de liberacin. Defecto, mejora, cuestin, e instrumentos que rastrean problema. Estos instrumentos son usados en la conexin con las cuestiones que rastrean problema asociadas con un producto de software particular. Herramientas de direccin de Versin. Estos instrumentos estn implicados en la direccin de mltiples versiones de un producto. Herramientas de liberacin y construccin. Estos instrumentos son usados para las tareas de liberacin y construccin de software. La categora incluye los instrumentos de instalacin que se han hecho extensamente usados para configurar la instalacin de productos de software. Ms informacin adicional en Software Configuration Management KA, topic 1.3 Planning for SCM.

1.7. Herramientas de Direccin en la Ingeniera de Software [Dor02] Herramientas de Direccin en la Ingeniera de Software esta subdividido en tres categoras: planificacin de proyecto y rastreo, manejo arriesgado, y medida. Herramientas que planifican y rastrean proyectos. Estos instrumentos son usados en la medida de esfuerzo de proyecto de software y cuentan la valoracin, as como la planificacin de proyecto. Herramientas de Manejo arriesgado. Estos instrumentos son usados en la identificacin, la estimacin, y riesgos de supervisin. Herramientas de Medida. Los instrumentos de medida asisten en la realizacin de las actividades relacionadas con el programa de medida de software.

aplicadas; sin embargo, es suficientemente distinto para merecer una categora de su propiedad. Las clases tpicas de integracin de instrumento son la plataforma, la presentacin, el proceso, datos, y el control. Meta-herramientas. Los Meta-instrumentos generan otros instrumentos; recopilador de recopiladores son el ejemplo clsico. Herramientas de evaluacin. [Pfl01] (IEEE1209-92, IEEE1348-95, Mos92, Val97) A causa de la evolucin continua de los instrumentos de la ingeniera de software, la evaluacin de instrumento son un tema esencial.

un programa manipula ms que la funcin que esto realiza. Mtodos Orientados a objetos. [Dor02, Pfl01, Pre04, Som05] el sistema es visto como una coleccin de objetos ms que de funciones.

2.2. Mtodos Formales [Dor02, Pre04, Som05] Esta subdivisin trata con el software matemticamente basado mtodos de la ingeniera, y es subdividida segn varios aspectos de mtodos formales. Especificacin del lenguaje y notaciones. [Cla96, Pfl01, Pre01] Este tema concierne la notacin de especificacin o la lengua usada. Las lenguas de especificacin pueden ser clasificadas como orientado por modelo, orientado por caracterstica, u orientado por comportamiento. Refinamiento. [Pre04] Este tema trata como el mtodo refina (o transforma) la especificacin en una forma que es ms cercana a la forma deseada final de un programa ejecutable. Propiedades de Verificacin/confirmacin. [Cla96, Pfl01, Som05] Este tema cubre las propiedades de verificacin que son especficas al acercamiento formal, incluyendo tanto confirmacin de teorema como la comprobacin del modelo. 2.3. Mtodos de prototipado [Pre04, Som05, Was96] Esta subdivisin cubre mtodos que implican el prototipado de software y es subdividida en estilos de prototipado, objetivos, y tcnicas de evaluacin. Estilos de prototipado. [Dor02, Pfl01, Pre04] (Pom96) el tema de estilos de prototipado identifica varios accesos: especificacin desechable, evolutiva, y ejecutable. Objetivo del prototipado. [Dor97] (Pom96) los Ejemplos de los objetivos de un mtodo prototipado puede ser exigencias, el diseo arquitectnico, o el interfaz de usuario. Tcnicas de evaluacin del prototipado. Este tema cubre las razones por las cuales los resultados de un ejercicio de prototipo son usados.

2. Los Mtodos de la Ingeniera de Software Los Mtodos de la Ingeniera de Software estn dividido en tres temas: mtodos heursticos que tratan con accesos informales, mtodos formales que tratan con accesos matemticamente basados, y mtodos de prototipado que tratan con software que trama accesos basados en varias formas de prototipado. Estos tres temas no son inconexos; ms bien representan preocupaciones distintas. Por ejemplo, un mtodo orientado por objeto puede incorporar tcnicas formales y confiar en prototipado para la verificacin y la validacin. Como los instrumentos de la Ingeniera de Software, las metodologas continuamente se desarrollan. Por consiguiente, la descripcin del rea de conocimiento evita en la medida de lo posible llamar metodologas particulares. 2.1. Mtodos heursticos [Was96] Este tema contienen cuatro categoras: estructurado, orientado a datos, orientado a objetos, y especfico de dominio. La categora especfica de dominio incluye mtodos especializados para desarrollar los sistemas que implican en tiempo real, de seguridad, o aspectos de seguridad. Mtodos Estructurados. [Dor02, Pfl01, Pre04, Som05] el sistema es construido de un punto de vista funcional, que comienza con una vista de alto nivel y cada vez ms la refinacin de esto en un diseo ms detallado. Mtodos Orientados a datos. [Dor02, Pre04] Aqu, los puntos de partida son las estructuras de datos que

MATRIZ DE TEMAS VS. REFERENCIAS


[Cla96] [Dor02] {Dor97} {c4s1} ,v2c8s4 v1c4s2 v2c8s4 v2c8s4 c112s2 [Pfl01] {PFL98} [Pre04] [Rei96] [Som05] [Was96]

1.Las Herramientas de Ingeniera de Software 1.1Las Herramientas de Exigencias de Software Exigencias de los Herramientas de modelado Exigencias de los Herramientas de capacidad de rastreo. 1.2 Los Herramientas de Diseo de Software 1.3. Los Herramientas de Construccin de Software Redactores del Programa Compiladores y generadores de cdigo Intrpretes. Depuradores 1.4. Herramientas de Pruebas de Software Generadores de pruebas Marcos de ejecucin de prueba Herramientas de evaluacin de prueba Herramientas de direccin de prueba. Herramientas de anlisis de Funcionamiento 1.5. Herramientas de Mantenimiento de Software Herramientas de Comprensin Herramientas de reingeniera 1.6.Las Herramientas de Direccin de Configuracin de Software Herramientas de defecto, mejora, cuestin y rastreo del problema Herramientas de direccin de Versin Herramientas de Liberacin y construccin

v2c8s4

C8s7,c9s7

c112s3

c112s5 v2c8s4 c11s5 c112s5 v2c8s4 c11s5 c112s3 c29

[Cla96]

[Dor02]{Dor97} v2c8s4

[Pfl01]{PFL98}

[Pre04]

[Rei96]

[Som05]

[Was96]

1.7. Herramientas de Direccin en la Ingeniera de Software Herramientas que planifican y rastrean proyectos Herramientas de Manejo arriesgado Herramientas de Medida 1.8. Las Herramientas de Proceso de Ingeniera de Software Herramientas de modelado del Proceso Herramientas de direccin de Proceso Entornos CASE Integrados Entornos de Ingeniera del SW centrada en proceso 1.9. Las Herramientas de Calidad de Software Herramientas de revisin de auditoria Herramientas de anlisis estticos 1.10. Cuestiones de Herramientas Compuestas Herramientas de integracin de tcnicas Meta-herramientas Herramientas de evaluacin 2. Los Mtodos de la Ingeniera de Software 2.1. Mtodos heursticos Mtodos Estructurados Mtodos Orientados a datos Mtodos Orientados a objetos 2.2. Mtodos Formales Especificacin del lenguaje y notaciones Refinamiento Propiedades de Verificacin/ confirmacin 2.3. Mtodos de prototipado Estilos de prototipado Objetivo del prototipado Tcnicas de evaluacin del prototipado

v2c8s4 c2s3, 2s4 c112s3, c112s4 c112s5 v2c8s4 c3

*
v2c8s4

C8s7 c1s8 C9s10

c112s5 c112s4

*
v1c5s1, v1c6s3 v1c5s1, v1c6s3 v1c6s2, v1c6s3 v1c6s5 c4s4, c6, c8s5 c4s5 c5s7, c8s3 c8 v1c4s4 v1c4s4 c4s6, c5s6 c4s5 c7-c9 c7-c9 c7-c9 c28 c12 c9 c15

* *

REFERENCIAS RECOMENDADAS PARA HERRAMIENTAS Y MTODOS DE INGENIERA DEL SOFTWARE


[Cla96] E.M. Clarke et al., Formal Methods: State of the Art and Future Directions, ACM Computer Surveys, vol. 28, iss. 4, 1996, pp. 626-643. [Dor97] M. Christensen, M. Dorfman and R.H. Thayer, eds., Software Engineering, IEEE Computer Society Press, 1997. [Dor02] M. Christensen, M. Dorfman and R.H. Thayer, eds., Software Engineering, Vol. 1 & Vol. 2, IEEE Computer Society Press, 2002.

[Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001. [Pre04] R.S. Pressman, Software Engineering: A Practitioner's Approach, sixth ed., McGraw-Hill, 2004. [Rei96] S.P. Reiss, Software Tools and Environments in The Computer Science and Engineering Handbook, CRC Press, 1996. [Som05] I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005. [Was96] A.I. Wasserman, Toward a Discipline of Software Engineering, IEEE Software, vol. 13, iss. 6, November 1996, pp. 23-31.

A. COMPLEMENTARIAS

APNDICE

LISTA

DE

LECTURAS

(Ber93) E.V. Berard, Essays on Object-Oriented Software Engineering, Prentice Hall, 1993. (Bis92) W. Bischofberger and G. Pomberger, PrototypingOriented Software Development: Concepts and Tools, Springer-Verlag, 1992. (Bro94) A.W. Brown et al., Principles of CASE Tool Integration, Oxford University Press, 1994. (Car95) D.J. Carney and A.W. Brown, On the Necessary Conditions for the Composition of Integrated Software Engineering Environments, presented at Advances in Computers, 1995. (Col94) D. Coleman et al., Object-Oriented Development: The Fusion Method, Prentice Hall, 1994. (Cra95) D. Craigen, S. Gerhart, and T. Ralston, Formal Methods Reality Check: Industrial Usage, IEEE Transactions on Software Engineering, vol. 21, iss. 2, February 1995, pp. 90-98. (Fin00) A. Finkelstein, ed., The Future of Software Engineering, ACM, 2000. (Gar96) P.K. Garg and M. Jazayeri, Process-Centered Software Engineering Environments, IEEE Computer Society Press, 1996. (Har00) W. Harrison, H. Ossher, and P. Tarr, Software Engineering Tools and Environments: A Roadmap, 2000. (Jar98) S. Jarzabek and R. Huang, The Case for UserCentered CASE Tools, Communications of the ACM, vol. 41, iss. 8, August 1998, pp. 93-99. (Kit95) B. Kitchenham, L. Pickard, and S.L. Pfleeger, Case Studies for Method and Tool Evaluation, IEEE Software, vol. 12, iss. 4, July 1995, pp. 52-62. (Lam00) A. v. Lamsweerde, Formal Specification: A Roadmap, The Future of Software Engineering, A. Finkelstein, ed., ACM, 2000, pp. 149-159. (Mey97) B. Meyer, Object-Oriented Software Construction, second ed., Prentice Hall, 1997.

(Moo98) J.W. Moore, Software Engineering Standards, A User's Roadmap, IEEE Computer Society Press, 1998. (Mos92) V. Mosley, How to Assess Tools Efficiently and Quantitatively, IEEE Software, vol. 9, iss. 3, May 1992, pp. 29-32. (Ml96) H.A. Muller, R.J. Norman, and J. Slonim, eds., Computer Aided Software Engineering, special issue of Automated Software Engineering, vol. 3, iss. 3/4, Kluwer, 1996. (Ml00) H. Mller et al., Reverse Engineering: A Roadmap, The Future of Software Engineering, A. Finkelstein, ed., ACM, 2000, pp. 49-60. (Pom96) G. Pomberger and G. Blaschek, ObjectOrientation and Prototyping in Software Engineering: Prentice Hall, 1996. (Pos96) R.M. Poston, Automating Specification-based Software Testing, IEEE Press, 1996. (Ric92) C. Rich and R.C. Waters, Knowledge Intensive Software Engineering Tools, IEEE Transactions on Knowledge and Data Engineering, vol. 4, iss. 5, October 1992, pp. 424-430. (Son92) X. Song and L.J. Osterweil, Towards Objective, Systematic Design-Method Comparisons, IEEE Software, vol. 9, iss. 3, May 1992, pp. 43-53. (Tuc96) A.B. Tucker, The Computer Science and Engineering Handbook, CRC Press, 1996. (Val97) L.A. Valaer and R.C.B. II, Choosing a User Interface Development Tool, IEEE Software, vol. 14, iss. 4, 1997, pp. 29-39. (Vin90) W.G. Vincenti, What Engineers Know and How They Know It Analytical Studies from Aeronautical History, John Hopkins University Press, 1990. (Wie98) R. Wieringa, A Survey of Structured and ObjectOriented Software Specification Methods and Techniques, ACM Computing Surveys, vol. 30, iss. 4, 1998, pp. 459-527.

APNDICE B. LISTA DE ESTNDARES


(ECMA55-93) ECMA, TR/55 Reference Model for Frameworks of Software Engineering Environments, third ed., 1993. (ECMA69-94) ECMA, TR/69 Reference Model for Project Support Environments, 1994. (IEEE1175.1-02) IEEE Std 1175.1-2002, IEEE Guide for CASE Tool Interconnections Classification and Description, IEEE Press, 2002.

(IEEE1209-92) IEEE Std 1209-1992, Recommended Practice for the Evaluation and Selection of CASE Tools, (ISO/IEC 14102, 1995), IEEE Press, 1992. (IEEE1348-95) IEEE Std 1348-1995, Recommended Practice for the Adoption of CASE Tools, (ISO/IEC 14471), IEEE Press, 1995. (IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology Software Life Cycle Processes, IEEE Press, 1996.

CAPTULO 11 CALIDAD DEL SOFTWARE


ACRNIMOS
CMMI COTS PDCA SQA SQM TQM V&V Capability Maturity Model Integrated Commercial Off-the-Shelf Software Plan, Do, Check, Act Software Quality Assurance Software Quality Management Total Quality Management Verificacin y Validacin Un ingeniero de software debera entender los significados subyacentes en los conceptos y caractersticas de calidad y su relevancia en el desarrollo o mantenimiento de software. El concepto relevante es que los requerimientos del software definen las caractersticas de calidad requeridas de ese software e influyen en los mtodos de medicin y criterios de aceptacin para evaluar estas caractersticas. 1.1. Ingeniera del Software Cultura y tica. Los ingenieros de software esperan compartir un compromiso sobre calidad de software como una parte de su cultura. Una cultura sana sobre ingeniera del software se describe en [Wie96]. La tica puede jugar un papel significativo en la calidad de software, la cultura, y las actitudes de ingenieros de software. La IEEE Computer society y el ACM [IEEE99] han desarrollado un cdigo de tica y prctica profesional basada en ocho principios con el objetivo de ayudar a los ingenieros de software a reforzar actitudes relacionadas con la calidad y con la independencia de su trabajo. 1.2. Valor y coste de la calidad. El concepto de calidad no es tan simple como parece, para un ingeniero de productos hay muchas calidades deseadas relevantes para una perspectiva determinada de un producto, para que esto pueda ser tratado y determinado en el tiempo las exigencias de producto son puestas por escrito. Las caractersticas de calidad pueden requerirse o no, o se pueden requerir en un mayor o menor grado, y pueden hacerse compensaciones entre ellas. [Pfl01] El coste de calidad puede segmentarse en el coste de prevencin, el coste de apreciacin, el coste de fracaso interno, y el coste de fracaso externo. [Hou99] La motivacin latente tras un proyecto de software es el deseo de crear un software que tiene valor, y este valor puede o no puede ser cuantificado como un coste. El cliente tendr en mente algn coste mximo, a cambio del cual espera que se cumpla el objetivo bsico del software. El cliente tambin puede tener alguna expectativa en cuanto a la calidad del software. En ocasiones los clientes pueden no haber estudiado detenidamente las cuestiones de calidad o sus gastos relacionados. La calidad es meramente decorativa, o es consustancial al software? Si la respuesta se sita en un punto intermedio, como es casi siempre el caso, es cuestin de hacer del cliente parte del proceso de decisin y concienciarle totalmente tanto de los costes como de los beneficios. Idealmente, la mayor parte de estas decisiones sern adoptadas en el proceso de requerimientos de software (vd. El KA Requerimientos del software), sin embargo estas cuestiones pueden

INTRODUCCIN Que es la calidad de software, y por qu es tan importante como para estar omnipresente en la Gua SWEBOK? Durante aos, los autores y organizaciones han definido el trmino "calidad" de manera diferente. Para A Phil Crosby (Cro79), fue " la conformidad a las exigencias de usuario. " Watts Humphrey (Hum89) se refiere a calidad como " el alcanzar los niveles excelentes de salud para el empleo" mientras IBM acu la frase " la calidad conducida por el mercado, " frase basada en el objetivo de alcanzar la satisfaccin de cliente total. Los criterios Bladridge para la calidad organizacional utilizan una frase similar calidad conducida por el cliente, e incluye la satisfaccin del cliente como una consideracin mayor. Ms recientemente, la calidad se ha definido en (ISO9001-00) como el grado en que un conjunto de caractersticas inherentes cumple requisitos. Este captulo estudia los aspectos relativos a la calidad de software los cuales transcienden a los procesos del ciclo de vida. La calidad de software es un aspecto ubicuo en la ingeniera de software, y por lo tanto tambin es tratado en mucho de los KAS. En el sumario, la Gua SWEBOK describe un conjunto de modos de alcanzar la calidad del software. En particular, este KA tratar las tcnicas estticas, es decir, aquellas que no requieren la ejecucin del software para su evaluacin, mientras que las tcnicas dinmicas son cubiertas en el KA referido a Pruebas del Software.

DESGLOSE
SOFTWARE

DE LOS TEMAS EN CALIDAD DEL

1.

Fundamentos de Calidad de Software

Un acuerdo sobre exigencias de calidad, as como trasladar a la ingeniera del software qu constituye calidad, requiere que muchos de los aspectos del concepto calidad sean formalmente definidos y tratados.

surgir en todas las etapas del ciclo de vida del software. No hay ninguna regla definida en cuanto a como deben ser adoptadas estas decisiones, pero el ingeniero de software debera ser capaz de presentar alternativas de

calidad y sus correspondientes costes. Una discusin acerca del coste y el valor de los requerimientos de calidad puede encontrarse en [Jon96:c5; Wei96:c11].

Calidad del Software

Fundamentos de Calidad de Software

Consideraciones Prcticas

Procesos de Gestin de Calidad del Software

Ingeniera del Software Cultura y tica. Valor y coste de la calidad Modelos y Caractersticas de Calidad Mejora de Calidad.

Aseguramiento de la Calidad del Software Verifications & Validacin Revisiones y Auditorias

Requerimientos de calidad del software Caracterizacin de defectos Tcnicas de Gestin de Calidad del Software Tcnicas Dinmicas

Figura 1 Desglose de los temas de Calidad del Software.

1.3 .Modelos y Caractersticas de Calidad. [ Dac01; Kia95; Lap91; Lew92; Mus99; NIST; Pre01; Rak97; Sei02; Wal96]. La terminologa para las caractersticas de calidad del software difiere de una taxonoma (o modelo de calidad de software) a otra, cada modelo quizs tenga un nmero diferente de niveles jerrquicos y un nmero total diferente de caractersticas. Varios autores han enunciado distintos modelos de caractersticas de calidad de software o atributos que pueden ser tiles para la negociacin, planificacin, y tasacin de la calidad de productos software. [Boe78; McC77] ISO/IEC ha definido tres modelos relacionados de calidad de productos software (la calidad interna, la calidad externa, y la calidad en el empleo) (ISO9126-01) y un conjunto de partes relacionadas (ISO14598-98). 1.3.1. La calidad del proceso en la ingeniera del software.

Los modelos y los criterios que evalan las capacidades organizacionales en software son esencialmente la organizacin de proyecto y consideraciones de gestin, y, como tales, son tratados en los KAs relativos a Gestin en Ingeniera del Software y el Proceso en Ingeniera de Software. Desde luego, no es posible distinguir completamente la calidad del proceso de la calidad del producto. La calidad de proceso, tratada en el KA, de esta Gua, el Proceso en Ingeniera de Software, afecta a las caractersticas de calidad de los productos software, que a su vez repercuten en la calidad-en-el-uso tal y como es percibido por el cliente. Dos importantes estndares de calidad son TickIT [Llo03] y uno con impacto sobre la calidad de software, el estndar ISO9001-00, con sus directrices para su aplicacin al software [ISO90003-04]. Otro estndar industrial en calidad del software es el CMMI [SEI02], tambin tratado en el KA Proceso en la Ingeniera de Software. CMMI pretende proporcionar directrices para mejorar procesos.

La gestin de la calidad de software y la calidad de proceso en la ingeniera de software guarda relacin directa con la calidad del producto software.

Especficamente las reas de procesos relacionadas con la gestin de calidad son: a) Aseguramiento de la calidad en el proceso y el producto, (b) la verificacin de proceso, y c) la validacin de proceso. CMMI clasifica revisiones y auditorias como los mtodos de verificacin, y no como procesos especficos como (IEEE12207.0-96). Hubo inicialmente algn debate sobre si ISO9001 O CMMI deberan ser usados por ingenieros de software para asegurar la calidad. Este debate ha sido profusamente publicado, y, como resultado, se ha concluido que los dos resultan complementarios y que tener la certificacin ISO9001 puede ayudar enormemente para alcanzar los niveles de madurez ms altos del CMMI. [Dac01]. 1.3.2. Calidad de producto software. El ingeniero de software, ante todo, necesita determinar el Objetivo verdadero del software. En cuanto a esto, es de capital importancia tener presente los requerimientos del cliente y aquellos que estos incluyen como requerimientos de calidad, no nicamente los requerimientos funcionales. As, el ingeniero de software tiene como responsabilidad obtener los requerimientos de calidad, que pueden no estar explcitos en un principio, tratar su importancia as como el nivel dificultad para alcanzarlos. Todos los procesos asociados a la Calidad de software (como por ejemplo, construccin, pruebas, mejora de la calidad) sern diseados con estas exigencias en mente, y ello conlleva gastos adicionales. El estndar (ISO9126-01) define, para dos de sus tres modelos de calidad, las caractersticas de calidad mencionadas, las Sub-caractersticas, y las medidas que son tiles para Evaluacin de calidad de producto de software. (Sur03) El significado del trmino "producto" es ampliado para incluir cualquier artefacto que es la salida de cualquier proceso empleado para construir el producto de software final. Como ejemplos de un producto cabe incluir, aunque no con carcter limitativo, una completa especificacin del sistema, una especificacin de requerimientos de software para un componente de software de un sistema, un mdulo de diseo, cdigo, documentacin de prueba, o los informes producidos como consecuencia de tareas de anlisis de calidad. Mientras la mayor parte del tratamiento de la calidad es descrito en trminos del software final y funcionamiento del sistema, una ingeniera prctica responsable requiere que los productos intermedios relevantes para la calidad sean evaluados a lo largo de todo el proceso de ingeniera de software. 1.4. Mejora de Calidad. [ NIST03; Pre04; Wei96] La calidad de los productos software puede ser mejorada mediante un proceso iterativo de mejora continua que

requiere control de direccin, coordinacin, y retroalimentacin de muchos procesos simultneos: (1) los procesos de ciclo de vida de software, (2) El proceso de deteccin de error/defecto, retirada de los mismo y prevencin, (y 3) el proceso de mejora de calidad. (Kin92) La teora y conceptos presentes detrs de mejora de calidad, tales como la construccin en calidad, mediante la prevencin y deteccin temprana de errores, mejora continua y enfoque en el cliente, son adecuados para la ingeniera de software. Estos conceptos estn basados en el trabajo de expertos en calidad los cuales ha afirmado que la calidad de un producto est directamente conectada con la calidad del proceso empleado para crearlo. Aproximaciones tales como Total Quality Management (TQM) process of Plan, Do, Check, and Act (PDCA) son Instrumentos mediante los cuales conocer los objetivos de calidad. El apoyo a la gestin sustenta el proceso y la evaluacin del producto as como las conclusiones resultantes. Entonces se desarrolla un programa de mejora identificando acciones detalladas y proyectos de mejora para ser gestionados en un plazo de tiempo factible. El apoyo a la gestin implica que cada proyecto de mejora tiene suficientes recursos para alcanzar el objetivo definido. El apoyo a la gestin ha ser solicitado con frecuencia mediante la implementacin proactiva de actividades de comunicacin. La participacin de los equipos de trabajo, as como el apoyo a la gerencia media y los recursos asignados en el nivel de proyecto, son tratados en el KA Proceso de Ingeniera de Software. 2. Procesos de Gestin de Calidad del Software

La gestin de calidad de software (SQM) resulta de aplicacin a todas las perspectivas de procesos de software, productos, y recursos. Esto define procesos, propietarios de proceso, y requerimientos para aquellos procesos, medidas del Proceso y sus correspondientes salidas, y canales de retroalimentacin. (Art93) Los procesos de gestin de calidad del software consisten en numerosas actividades. Algunos de ellos pueden encontrar defectos directamente, mientras otros indican donde pueden resultar valiosas ms revisiones. Estos ltimos tambin son conocidos como actividades de "direct-defect-finding". Muchas actividades a menudo sirven para ambos propsitos. La planificacin para la calidad de software implica: (1) Definicin del producto requerido en trminos de sus caractersticas calidad (descrito ms detalladamente en, por ejemplo, El KA Gestin en Ingeniera del Software). (2) Planificacin de los procesos para alcanzar el producto requerido (Descrito, por ejemplo, en los Kas, Diseo de Software y Construccin de Software). Estos aspectos difieren de, por ejemplo, los procesos mismos de planificacin SQM, que evalan las caractersticas de calidad planificadas versus la implementacin actual de esa planificacin. Los procesos de gestin de calidad de software deben

dirigirse a como los buenos productos software van a satisfacer o satisfacen al cliente y las exigencias del personal implicado, a como proporcionan valor a los clientes y dems personal implicado, y proveen la calidad de software precisa para conocer los requerimientos del software. El SQM puede ser utilizado para evaluar productos intermedios as como el producto final. Algunos de los procesos especficos SQM estn definidos en el estndar (IEEE12207.0-96): Procesos de aseguramiento de calidad Procesos de verificacin Procesos de validacin Procesos de revisin Procesos de auditora

2.1. Aseguramiento de la Calidad del Software [Ack02; Ebe94; Fre98; Gra92; Hor03; Pfl01; Pre04; Rak97; Sch99; Som05; Voa99; Wal89; Wal96] Los procesos SQA proporcionan la garanta de que los productos software y los procesos en el ciclo de vida de proyecto son conformes a los requerimientos especificados por medio de la planificacin, emitiendo, y realizando un conjunto de actividades para generar la confianza adecuada en que se est construyendo calidad dentro del software. Ello significa asegurar que el problema est clara y suficientemente identificado y que los requerimientos de la solucin estn correctamente definidos y expresados. El SQA procura mantener la calidad a lo largo de todo el desarrollo y mantenimiento del producto mediante la ejecucin de una variedad de actividades en cada etapa que pueden permitir identificacin temprana de problemas, un rasgo casi inevitable de cualquier actividad compleja. El papel del SQA en lo que concierne al proceso es asegurar que procesos planificados son apropiados y posteriormente implementados de acuerdo con la planificacin, y se proveen procesos de medicin relevantes para una adecuada organizacin. El plan SQA define el medio que ser usado para asegurar que el software desarrollado para un producto especfico satisface las exigencias del usuario y es de la mxima calidad posible dentro de las restricciones del proyecto. Con el objetivo de llevar esto acabo, primero debe asegurarse que el objetivo de calidad es claramente definido y entendido. En ello deben considerarse los planes de gestin, desarrollo, y mantenimiento para el software. Ver el estndar (IEEE730-98) para detalles. Las actividades y tareas especficas de calidad se elaboran, con sus gastos y exigencias de recursos, sus objetivos totales de gestin, y su programa en relacin con aquellos objetivos de gestin en la ingeniera, el desarrollo, o planes de mantenimiento. El plan SQA debera ser compatible con el plan de gestin de configuracin de software (refirase al KA Gestin de Configuracin de Software). El plan SQA identifica documentos, normas, prcticas, y convenciones que guan el proyecto y de qu manera sern comprobados y supervisados para asegurar adecuacin y conformidad. El plan SQA tambin identifica medidas, tcnicas estadsticas, procedimientos para el reporte de problemas as como la correspondiente accin correctiva, recursos tales como herramientas, tcnicas, y metodologas, seguridad para el medio fsico, formacin, adems de reportes y documentacin SQA. Por otro lado, el plan SQA considera las actividades de garanta de calidad de software como cualquier otro tipo de actividad descrita en los proyectos de software, tales como la consecucin de proveedor de software para el proyecto o el software de instalacin comercial disponible (COTS), as como el servicio tras la entrega del software. Tambin puede incluir criterios de aceptacin as como reportes y actividades de gestin crticas para la calidad de software.

Estos procesos incentivan la calidad y tambin permiten encontrar posibles problemas. Sin embargo presentan diferencias en cuanto a su nfasis. Los procesos SQM ayudan a asegurar una calidad de software ptima en un proyecto dado. Adems proveen, como un subproducto, informacin general sobre gestin, incluyendo directrices de calidad para todo el proceso de ingeniera del software. Las Kas Proceso de la Ingeniera del Software y Gestin en Ingeniera del Software tratan sobre la calidad de los programas para la organizacin que desarrolla el software. El SQM puede proporcionar retroalimentacin relevante para estas reas. Los procesos SQM consisten en tareas y tcnicas para indicar como los proyectos de software (por ejemplo, la gestin, el desarrollo, la gestin de configuracin) estn siendo puestos en prctica y la mejor manera para que los productos intermedios y los finales encuentren sus requerimientos especificados. Los resultados de estas tareas son recopilados en informes para la direccin antes de que sea tomada la accin correctiva. La gestin de un proceso SQM se desarrolla con la certeza de que los resultados de estos informes son exactos. Como se describe en este KA, los procesos SQM estn estrechamente relacionados; pueden solaparse y hasta, en ocasiones, estar combinados. En su mayor parte parecen de naturaleza reactiva ya que toman los procesos como practicados y los productos como producidos; sin embargo tienen un papel principal en la fase de planificacin, con carcter proactivo en trminos de los procesos y los procedimientos precisos para alcanzar las caractersticas y grados de calidad requerida por los sujetos implicados en el software. La gestin del riesgo tambin puede jugar un papel importante en la entrega de software de calidad. La incorporacin de un anlisis de riesgo disciplinado y tcnicas de gestin en los procesos de ciclo de vida de software puede incrementar el potencial para producir un producto de calidad (Cha89). Refirase al KA Gestin en la Ingeniera del Software para el material relacionado sobre gestin de riesgos.

2.2. Verificaciones y Validacin [Fre98; Hor03; Pfl01; Pre04; Som05; Wal89; Wal96] Con el propsito de ser breve, Verificacin y Validacin (V&V) son tratadas como un nico asunto en esta Gua ms que como dos asuntos separados tal y como se hace en el estndar (IEEE12207.0-96). La V&V del software es un acercamiento disciplinado a la evaluacin de productos de software a lo largo de todo el ciclo de vida de producto. Un esfuerzo en V&V es esforzarse en asegurar que la calidad es construida dentro del software y que el software satisface exigencias de usuario " (IEEE1059-93). La V&V trata directamente la calidad de producto software y emplea tcnicas de prueba que pueden localizar defectos de tal manera que estos puedan ser tratados. Tambin evala los productos intermedios, como, y, en esta capacidad, los pasos intermedios de los procesos de ciclo de vida de software. El proceso V&V determina si productos de una actividad dada de desarrollo o mantenimiento se adecuan o no al correspondiente requisito de esa actividad, y si el producto final de software cumple o no cumple con su propsito fijado y converge o no con los requisitos del usuario. La Verificacin es un intento para asegurar que el producto se construya correctamente, en el sentido que los productos resultantes de una actividad converjan con las especificaciones fijadas para los mismos en actividades previas. La validacin es un intento por asegurar que se construye el producto correcto, es decir, que el producto satisface su propsito especfico fijado. Tanto el proceso de comprobacin como el proceso de validacin empiezan temprano en la fase de desarrollo o mantenimiento. Proporcionan un examen de caractersticas claves del producto en relacin con el producto inmediato predecesor y a las especificaciones con las que debe converger. El propsito de la planificacin V&V es asegurar que cada recurso, papel y responsabilidad est claramente asignada. Los documentos del proyecto V&V resultantes describen varios recursos y sus papeles y actividades, as como tcnicas y herramientas para ser usados. La comprensin de los objetivos diferentes de cada actividad V&V ayudar en la planificacin cuidadosa de las tcnicas y los recursos precisos para alcanzar sus respectivos objetivos. Estndares especficos (IEEE1012-98:s7 y IEEE1059-93: El apndice A) que generalmente incluye un plan de V&V. El plan tambin considera la gestin, la comunicacin, la poltica, y los procedimientos de las actividades V&V y su interaccin, as como el reporte de defectos y exigencias de documentacin.

son ampliamente definidos en (IEEE12207.0-96) y ms detalladamente en (IEEE1028-97). Cinco tipos de revisiones o auditorias se presentan en el estndar IEEE1028-97: Revisiones de gestin Revisiones tcnicas Inspecciones Walk-throughs Auditorias

2.3.1. Revisiones de gestin El objetivo de una revisin de gestin es supervisar el progreso, determinando el estado de planes y programas, requerimientos confirmados y su sistema de localizacin, o evaluar la efectividad de los enfoques de gestin empleados para lograr la idoneidad del objetivo. [IEEE1028-97]. Ello apoya decisiones sobre cambios y las acciones correctivas precisas durante un proyecto de software. Las revisiones de gestin determinan la idoneidad de los proyectos, programas, y requerimientos y supervisan su progreso o inconsistencias. Estas revisiones pueden ser realizadas sobre productos tales como informes de auditora, informes de progreso, informes V&V, y proyectos de muchos tipos, incluyendo la gestin de riesgo, gestin del proyecto, gestin de configuracin del software, seguridad del software, y la evaluacin de riesgo, entre otros. Refirase para el material relacionado a los Kas Gestin en Ingeniera del Software y Gestin de Configuracin de Software. 2.3.2. Revisiones tcnicas [Fre98; Hor03; Lew92; Pfl01; Pre04; Som05; Voa99; Wal89; Wal96] El propsito de una revisin tcnica es evaluar el producto software para determinar si es idneo para su correspondiente uso. El objetivo es identificar discrepancias con especificaciones aprobadas y estndares. El resultado debera proporcionar gestin con evidencias (o no) de que el producto converge con sus especificaciones y se adhiere a los estndares, y que los cambios estn controlados. (IEEE1028- 97). En una revisin tcnica deben estar establecidos los roles especficos: el que adopta las decisiones, un lder revisor, un registrador, y un personal tcnico para apoyar las actividades de revisin. Una revisin tcnica requiere que las entradas obligatorias estn en su lugar con el objeto de proceder a: Exposicin de objetivos Un producto software especfico El plan especfico de gestin del proyecto La lista de cuestiones claves asociadas al producto El procedimiento de revisin tcnica

2.3. Revisiones y Auditorias Con el propsito de ser breve, revisiones y auditoras son tratadas como un solo tema en esta Gua, ms que como dos temas separados tal y como se hace en (IEEE12207.0-96). La revisin y el proceso de auditora

El equipo sigue el procedimiento de revisin. Un individuo tcnicamente calificado presenta una descripcin del producto, y el examen se lleva a cabo durante una o varias reuniones. La revisin tcnica es

completada una vez que todas las actividades catalogadas en el examen han sido completadas. 2.3.3. Inspecciones [Ack02; Fre98; Gil93; Rad02; Rak97] El propsito de una inspeccin es detectar e identificar anomalas en los productos software (IEEE102897).Existen dos importantes elementos diferenciadores entre inspeccin y revisin, son los siguientes: 1. Un individuo que mantiene una posicin de direccin sobre cualquier miembro del equipo de inspeccin no participar en la inspeccin. La inspeccin ha de ser llevada por un inspector con formacin en inspecciones tcnicas

2.3.4.

Walk-throughs [Fre98; Hor03; Pfl01; Pre04; Som05; Wal89; Wal96]

El objetivo de un Walk-throughs es evaluar un producto de software. Un Walk-throughs puede ser conducido para el objetivo de formar a una audiencia en cuanto a un producto de software. (IEEE1028-97) los objetivos principales son [ IEEE1028-97]: Encontrara anomalas Mejorar el producto software Considerar implementaciones alternativas Evaluar la conformidad con estndares especificaciones

2.

Las inspecciones de software siempre implican al autor de un producto intermedio o final, mientras otras revisiones puede que no. Las inspecciones tambin incluyen a un lder de inspeccin, un registrador, un lector, y un grupo (2 a 5) de inspectores. Los miembros de un equipo de inspeccin pueden poseer diferentes especializaciones, como especializacin en el dominio, especializacin en el mtodo de diseo, o especializacin en el lenguaje. Las inspecciones por lo general son llevadas a cabo sobre una relativamente pequea seccin del producto a la vez. Cada miembro del equipo debe examinar el producto software as como practicar otras revisiones de imputs con anterioridad a la reunin de revisin, quizs aplicando una tcnica analtica (referida en la seccin 3.3.3) en una pequea porcin del producto, o en todo el producto enfocando solo un aspecto, por ejemplo, interfaces. Cualquier anomala encontrada se documenta y se enva al responsable de la inspeccin. Durante la inspeccin, el responsable de la inspeccin conduce la sesin y verifica que todos estn preparados para la misma. Un herramienta comnmente usada en las inspecciones es una lista de comprobacin, con anomalas y preguntas pertinentes sobre las cuestiones de inters. La lista resultante a menudo clasifica las anomalas (refirase a IEEE1044-93 para detalles) y se revisa por parte del equipo su exactitud e integridad. La decisin sobre el final de la inspeccin se corresponde con uno de los tres criterios siguientes: 1. No aceptar re-trabajo o como mucho un retrabajo menor 2. Aceptar con verificacin del re-trabajo 3. Re-inspeccin Tpicamente las reuniones de inspeccin duran por lo general algunas horas mientras que las revisiones tcnicas y auditorias son por lo general de mayor alcance y requieren ms tiempo.

El Walk-throughs es similar a una inspeccin, sin embargo, su desarrollo, por lo general, es menos formal. El Walk-throughs es organizado fundamentalmente por el ingeniero de software para dar a sus compaeros de equipo la oportunidad de repasar su trabajo, como una tcnica de aseguramiento. 2.3.5. Auditorias [Fre98; Hor03; Pfl01; Pre01; Som05;Voa99; Wal89; Wal96]

El objetivo de una auditora de software es proporcionar una evaluacin independiente de la conformidad de productos software y procesos a regulaciones aplicables, estndares, directrices, planes, y procedimientos " [IEEE1028-97]. La auditora es una actividad formalmente organizada, con participantes que tienen papeles especficos, como el auditor jefe, otro auditor, un registrador, o un iniciador, e incluye a un representante de la organizacin auditada. La auditora identificar los casos de no conformidad y producir un informe requiriendo al equipo que adopte la accin correctiva correspondiente. Mientras puede haber muchos nombres formales para revisiones y auditorias como los identificados en el estndar (IEEE1028-97), La clave es qu revisiones y auditorias pueden practicarse sobre casi cualquier producto en cualquier etapa del proceso de mantenimiento o el desarrollo. 3. Consideraciones Prcticas

3.1. Requerimientos de calidad del software [Hor03; Lew92; Rak97; Sch99; Wal89; Wal96] 3.1.1. Factores de influencia Varios factores influyen en la planificacin, gestin, y seleccin de actividades de SQM y tcnicas, incluyendo: El dominio del sistema en el cual el software residir (seguridad crtica, misin crtica, negocio crtico) Requerimientos del Sistema y del software Los componentes comerciales (externos) o estndar (internos) que sern usados por el sistema

Los estndares especficos de ingeniera del software especfico aplicables Los mtodos y herramientas de software para ser usados en el desarrollo y el mantenimiento as como para la evaluacin de calidad y mejora El presupuesto, el personal, planes de organizacin, proyectos, y la planificacin de todos los procesos Los usuarios implicados y el empleo del sistema El nivel de integridad del sistema

hay bastantes en uso [Bei90, Chi96, Gra92], IEEE104493). La caracterizacin del Defecto (la anomala) tambin es usada en auditorias y revisiones, el responsable de revisin a menudo presenta una lista de anomalas proporcionadas por miembros de equipo para su consideracin en una reunin de revisin. Nuevos mtodos de diseo y lenguajes se desarrollan, junto con avances en todas las tecnologas de software, las nuevas clases de defectos aparecen, y requieren mucho esfuerzo para interpretar clases previamente definidas. Rastreando defectos, el ingeniero de software est interesado tanto en el nmero como en el tipo de defectos. La Informacin sola, sin ninguna clasificacin, no es realmente de ninguna utilidad en la identificacin de las causas subyacentes de los defectos, pues los tipos especficos de problemas tienen que ser agrupados juntos para determinar como se gestionan. El asunto es establecer una taxonoma de defectos que sea significativa para la organizacin y los ingenieros de software. SQM descubre la informacin en todas las etapas de desarrollo de software y mantenimiento. Tpicamente donde se usa la palabra "defecto" se refiere "a un fallo" tal y como se detalla ms abajo. Sin embargo, diferentes culturas y normas pueden usar significados algo diferentes para estos trminos, lo cual ha llevado a tentativas para definirlos. Definiciones parciales tomadas del estndar (IEEE610.12-90) son: Error: Una diferencia entre un resultado calculado y un resultado concreto Faultt: Un paso, proceso, o definicin de datos incorrecto en programa de computadora. Failure: El resultado [incorrecto] de un fault Mistake: Un error humano que produce un resultado incorrecto fallo falla

La Informacin sobre estos factores de influencia como los procesos SQM son organizados y documentados, son seleccionadas como actividades SQM especficas, que recursos son necesarios, y que impondr lmites a los esfuerzos. 3.1.2. Confiabilidad En casos en los que el fracaso del sistema puede tener consecuencias sumamente severas, la confiabilidad total (en hardware, el software, y humanos) son la exigencia de calidad principal adems de la funcionalidad bsica. La confiabilidad del software incluye caractersticas tales como tolerancia al defecto, fiabilidad, seguridad, y usabilidad. La fiabilidad es tambin un criterio que puede ser definido en trminos de confiabilidad (ISO9126). El cuerpo de conocimiento para sistemas debe ser sumamente confiable (" alta confianza " " o alta integridad en sistemas"). La terminologa para los sistemas tradicionales mecnicos y elctricos que no incluyen software ha sido importada para tratar amenazas o peligros, riesgos, integridad del sistema, y conceptos relacionados, y puede ser encontrada en las referencias citadas para esta seccin. 3.1.3. Niveles de integridad del software El nivel de integridad se determina en base a las consecuencias posibles del fracaso del software y a la probabilidad de fracaso. Para el software en el que la seguridad o la fiabilidad son importantes, tcnicas como el anlisis de riesgo para la seguridad o el anlisis de amenazas para la fiabilidad pueden ser usadas para desarrollar una actividad de planificacin que se identificara en donde se encuentren conflictos potenciales. Histricos de fracaso de software similar tambin puede ayudar en la identificacin de qu tcnicas sern las ms tiles en el descubrimiento de defectos y evaluacin de calidad. Se proponen niveles de integridad (por ejemplo, la gradacin de integridad) en (IEEE1012-98). 3.2. Caracterizacin de defectos [Fri95; Hor03; Lew92; Rub94; Wak99; Wal89] Los procesos SQM encuentran defectos. Caracterizar estos defectos conduce a un entendimiento del producto, facilita correcciones al proceso o al producto, e informa al gestor del proyecto o al cliente del estado del proceso o el producto. Existes muchas taxonomas defectuosas, y, mientras se ha intentado obtener un consenso en una taxonoma de defectos o fallos, la literatura indica que

Los fracasos encontrados en pruebas como consecuencia de fallos de software estn incluidos como defectos en esta seccin. Los modelos de fiabilidad son construidos en base a los fallos recogidos durante pruebas de software o procedentes de software en servicio, y de esta manera pueden ser usados para predecir futuros fracasos y asistir en decisiones sobre cuando detener las pruebas. [Mus89] Una probable accin resultante de las conclusiones SQM es eliminar los defectos del producto durante su inspeccin. Otras acciones permiten alcanzar el valor completo de las conclusiones SQM. Estas acciones incluyen el anlisis y el resumen de las conclusiones, y tcnicas de medida de utilizacin para mejorar el producto y el proceso as como para rastrear los defectos y su eliminacin. La mejora de proceso principalmente es tratada en el KA Proceso de Ingeniera de Software,

junto con el proceso SQM como una fuente de informacin. Los datos sobre las insuficiencias y defectos encontrados durante la implementacin de tcnicas SQM pueden ser perdidos a no ser que sean registrados. Para algunas tcnicas (por ejemplo, revisiones tcnicas, auditorias, inspecciones), los registradores estn presentes para poner por escrito tal informacin, incluyendo cuestiones y decisiones. Cuando se utilizan herramientas automatizadas, las salidas de la herramienta pueden proporcionar la informacin sobre defectos. Los datos sobre defectos pueden ser recogidos y registrados sobre un formulario SCR (software change request) y posteriormente puede ser trasladado a algn tipo de base de datos, a mano o automticamente, desde una herramienta de anlisis. Proporcionan informes sobre defectos a la direccin de la organizacin. 3.3. Tcnicas de Gestin de Calidad del Software [Bas94; Bei90; Con86; Chi96; Fen97; Fri95; Lev95; Mus89; Pen93; Sch99; Wak99; Wei93; Zel98] Las tcnicas SQM pueden categorizarse de diferentes formas: estticas, Personal-intensivas, analticas, dinmicas. 3.3.1. Tcnicas Estticas Las tcnicas estticas implican el examen de la documentacin del proyecto y el software, y otra informacin sobre los productos de software, sin ejecutarlos. Estas tcnicas pueden incluir actividades intensivas de personal (como se define en 3.3.2) o actividades analticas (como se define en 3.3.3) conducidas por individuos, con o sin la ayuda de herramientas automatizadas. 3.3.2. Tcnicas intensivas de personal. La puesta en marcha de tcnicas intensivas de personal, incluyendo revisiones y auditorias, puede variar de una reunin formal a una reunin informal o una situacin de comprobacin de escritorio, pero (por lo general, al menos) dos o ms personas estn implicadas. Puede resultar necesaria una preparacin anticipada. Tanto los recursos como los tems bajo examen pueden incluir listas de comprobacin y son resultado de tcnicas analticas y pruebas. Estas actividades son tratadas en (IEEE1028-97) sobre revisiones y auditorias. [Fre98, Hor03] [y Jon96, Rak97] 3.3.3. Tcnicas Analticas Un ingeniero de software generalmente aplica tcnicas analticas. A veces varios ingenieros de software usan la misma tcnica, pero cada uno lo aplica a partes diferentes del producto. Algunas tcnicas son llevadas a cabo por herramientas; las otras son manuales. Algunas pueden encontrar defectos directamente, pero generalmente son usadas para apoyar otras tcnicas. Algunas tcnicas tambin incluyen varias evaluaciones como la parte de anlisis de calidad total. Ejemplos de

tales tcnicas incluyen el anlisis de complejidad, controlan el anlisis de flujo, y el anlisis algortmico. Cada tipo de anlisis tiene un objetivo especfico, y no se aplican todos ellos a cada proyecto. Un ejemplo de una tcnica de apoyo es el anlisis de complejidad, que es til para determinar si realmente el diseo o la implementacin resultan demasiado complejos para desarrollar correctamente, realizar las pruebas, o el mantenimiento. Los resultados de un anlisis de complejidad tambin pueden ser usados en test de desarrollo. Las tcnicas para encontrar defectos como el anlisis de flujo de control, tambin pueden utilizarse para apoyar otra actividad. Para software con muchos algoritmos, el anlisis algortmico es importante, especialmente cuando un algoritmo incorrecto podra causar un resultado catastrfico. Hay demasiadas tcnicas analticas para listarlas todas aqu. La lista y referencias proporcionadas pueden ofrecer ideas en la seleccin de una tcnica, as como sugerencias para posteriores lecturas. Otros tipos, ms formales, de tcnicas analticas se conocen como mtodos formales. Son usados para verificar requerimiento de software y diseos. Las pruebas de correccin corresponden a las partes crticas de software. Han sido usadas, sobre todo, en la verificacin de las partes cruciales de sistemas crticos, tales como la seguridad y exigencias de fiabilidad. (Nas97) 3.3.4. Tcnicas Dinmicas Las diferentes clases de tcnicas dinmicas son ejecutadas durante todo el desarrollo y el mantenimiento de software. Generalmente, son tcnicas de testeo, pero tcnicas tales como la simulacin, la comprobacin de modelo, y la ejecucin simblica pueden ser consideradas dinmicas. La lectura de cdigo es considerada una tcnica esttica, pero ingenieros de software experimentados puede ejecutar el cdigo tal y como lo leen. En este sentido, la lectura de cdigo tambin puede considerarse una tcnica dinmica. Esta discrepancia en la categora indica que personal con papeles diferentes en la organizacin puede considerar y aplicar estas tcnicas de manera diferente. Algunas pruebas, as mismo, pueden ejecutarse en el proceso de desarrollo, el proceso SQA, o el proceso de V&V, de nuevo dependen de la organizacin de proyecto. Debido a que la planificacin SQM incluye testeo, esta seccin incluye algunos comentarios sobre pruebas. El KA Pruebas de Software proporciona el tratamiento y referencias tcnicas a la teora, tcnicas para pruebas, y automatizacin.

3.3.5.

Pruebas Con el incremento de la complejidad del software las cuestiones sobre calidad van ms all de si el software es capaz de alcanzar objetivos de calidad mensurables. Existen algunas reas en las que las mtricas soportan SQM directamente. Esto incluye asistencias en la decisin de cuando detener las pruebas. Para ello los modelos de fiabilidad y pruebas, resultan tiles usando datos de fallos y fracasos. El coste de los procesos SQM es una cuestin que casi siempre se suscita cuando se adopta la decisin de cmo debera organizarse un proyecto. A menudo, los modelos genricos de coste usados, estn basados en cuando se encuentra y cuanto esfuerzo se precisa para fijar el defecto en relacin con el hallazgo del defecto temprano en el proceso de desarrollo. Los datos de proyecto pueden ofrecer una mejor idea del coste. El tratamiento de este tema puede ser encontrada en [Rak97: pp. 39-50]. La informacin relacionada puede ser encontrada en los KAs el Proceso de Ingeniera de Software y Gestin en Ingeniera del Software. Finalmente los informes SQM en s mismos proveen informacin valiosa no slo sobre estos procesos, sino tambin sobre como pueden perfeccionarse todos los procesos de ciclo de vida. El tratamiento de estos asuntos puede encontrarse en [McC04] (y IEEE1012-98). Mientras las mtricas para caractersticas de calidad y rasgos de producto pueden resultar tiles en s mismas (por ejemplo, el nmero de requerimientos defectuosos o la proporcin de requerimientos defectuosos), pueden aplicarse tcnicas matemticas y grficas para ayudar en la interpretacin de esa mtricas. Ello se encuentra en las categoras siguientes y son tratados en [Fen97, Jon96, Kan02, Lyu96, Mus99]. Basadas estadsticamente basado (por ejemplo, Pareto analysis, run charts, scatter plots, normal distribution. Pruebas Estadsticas (por ejemplo, binomial test, chisquared test ). El anlisis de Tendencia. Prediccin (por ejemplo, modelos de fiabilidad).

Los procesos de aseguramiento descritos en SQA y V&V examinan todos los output de la especificacin de requerimientos del software con el objeto de asegurar su trazabilidad, consistencia, completitud, correccin y ejecucin. Esta comprobacin tambin incluye los output de los procesos de desarrollo y mantenimiento, recopilando, analizando y midiendo los resultados. SQA asegura la planificacin, desarrollo e implementacin de determinados tipos de pruebas, y V&V desarrolla planes de prueba, estrategias, casos y procedimientos. Las pruebas son tratadas detalladamente en el KA. testeo de Software. Dos tipos de pruebas pueden incluirse en el mbito de SQA y V*V, por razn de su responsabilidad por la calidad de los materiales usados en el proyecto: Evaluacin y prueba de herramientas que sern usadas en el proyecto (IEEE1462-98). Prueba de Conformidad (o revisin de prueba de conformidad) de componentes y productos COTS que se usaran en el producto; all ahora existe un estndar para paquetes de software (IEEE1465-98).

En ocasiones una organizacin independiente V&V puede ser requerida para monitorear el proceso de pruebas y a veces para atestiguar la ejecucin actual con el objeto de asegurar que este es llevado a cabo conforme a los procedimientos especificados. Tambin se puede apelar a V&V para evaluar las pruebas en s mismas: adecuacin a los proyectos y procedimientos, y suficiencia y exactitud de resultados Otro tipo de pruebas que puede incluirse en el mbito de la organizacin V&V es el de pruebas de terceros. Este tercero no es el desarrollador, tampoco est relacionado en modo alguno con el desarrollo del producto. En cambio, el tercero es un Facility independiente, por lo general acreditado por alguna autoridad. Su objetivo es el de probar un producto respecto de su conformidad con un conjunto especfico de exigencias. 3.4. Medicin de calidad del software Los modelos de calidad del software a menudo incluyen mtricas para determinar el grado de calidad de cada caracterstica alcanzada por el producto. Si estos modelos se seleccionan correctamente, las mtricas pueden apoyar la calidad del software de muchas maneras (entre otros aspectos de los procesos de ciclo de vida de software). Pueden ayudar en procesos de toma de decisiones de gestin. Pueden encontrar reas problemticas y cuellos de botella en procesos de software y pueden ayudar a los ingenieros de software a evaluar la calidad de su trabajo respecto de objetivos SQA y respecto de procesos a largo plazo de mejora de calidad.

Las tcnicas basadas en estadsticas y las pruebas a menudo proporcionan una imagen de las reas ms problemticas del producto software examinado. Los cuadros y grficos resultantes resultan ayudas de visualizacin que los gestores con poder de decisin pueden utilizar para concentrar recursos donde resulten ms necesarios. Los resultados del anlisis de tendencia pueden indicar que una programacin no ha sido respetada, tales como las pruebas, o que ciertas clases de fallos se intensificarn a no ser que se adopte alguna accin correctiva en el desarrollo. Las tcnicas de prediccin asisten en la planificacin del periodo de prueba y en la prediccin del fracaso. Ms informacin sobre medicin en general pude encontrarse en los Kas

Proceso de Ingeniera de Software y Gestin en Ingeniera del Software. Informacin ms especfica sobre medicin en pruebas se presenta en el Ka Testeo de Software. Las referencias [ Fen97, Jon96, Kan02, Pfl01 ] proporcionan un tratamiento del anlisis del defecto, consistente en medir la aparicin del defecto y posteriormente aplicar mtodos estadsticos para entender los tipos de defectos que aparecen ms frecuentemente, es decir, determinar su densidad. Tambin ayudan a comprender las tendencias en cmo estn trabajando las tcnicas de deteccin, y cmo estn progresando los procesos de desarrollo y mantenimiento. La medicin de la cobertura de la prueba ayuda a estimar cuanto esfuerzo en trminos de prueba queda por hacer, y predecir los posibles defectos restantes. De estos mtodos de medicin, pueden desarrollarse los perfiles del defecto para un dominio especfico de la aplicacin.

As, para el siguiente sistema de software dentro de esa organizacin, los perfiles podrn utilizarse para guiar los procesos SQM, es decir, para focalizar esfuerzo all donde sea ms probable que puedan surgir problemas. Semejantemente, los puntos de referencia, o los defectos tpicos de ese dominio, pueden servir como ayuda en la determinacin de cundo estar el producto listo para su entrega. El estudio de como usar datos de SQM para mejorar procesos de desarrollo y mantenimiento puede encontrarse en los Kas Gestin en Ingeniera del Software y Procesos en Ingeniera del Software.

MATRIZ DE TEMAS VS REFERENCIAS


ISO9001-00] [Hou99] [Lew92] [IEEE99] [Mus99] [Jon96] [Lap91] [ISO900 03-04] [Llo03] [Rak97] [NIST03] [Sei02] [Pfl01] [Wal96] [Dac01] [McC77]
[Boe78]

1. Fundamentos de Calidad de Software 1.1. Ingeniera del Software Cultura y tica. 1.2. Valor y coste de la calidad. 1.3 .Modelos y Caractersticas de Calidad. 1.4. Mejora de Calidad.

* * * * * * * * * * * * * * * * *
[Som05]

* * *
[Wal89]

* * * *

[Lew92]

[Rad02]

[Ack02]

[Ebe94]

[Rak97]

[Sch99]

[Voa99]

2. Procesos de Gestin de Calidad del Software 2.1. Aseguramiento de la Calidad del Software 2.2. Verificaciones y Validacin 2.3. Revisiones y Auditorias

* *

* * *

* *
[Gra92] [Hor03]

* * *
[Jon96]

*
[Kan02]

* * *
[Lev95]

* * *
[Lew92]

* *
[Lyu96]

*
[McC04] [Mus89]

* * *
[Mus99] [Pen93]

* *

* * *
[Rak97]

* * *
[Wak99] [Rub94] [Sch99] [Wal89] [Wei93] [Wal96] [Zel98]

[Con86]

[Bas84]

[Fen97]

[Chi96]

[Fre98]

[Bei90]

[Fri95]

3. Consideraciones Prcticas 3.1. Requerimientos de calidad del software 3.2. Caracterizacin de defectos 3.3. Tcnicas de Gestin de Calidad del Software 3.4. Medicin de calidad SW

* * * * * * * * * * * * * * * * * * * *

* * * * * * * * *

[Pfl01]

* * * *

[Wal96]

[Gra92]

[Hor03]

[Pre04]

[Fre98]

[Gil93]

[Pfl01]

* * * *

* *

[Wei96]

[Wei93]

[Kia95]

[Pre04]

* * *

* * *

REFERENCIAS
CALIDAD SW

RECOMENDADAS

PARA

[Ack02] F.A. Ackerman, Software Inspections and the Cost Effective Production of Reliable Software, Software Engineering, Volume 2: The Supporting Processes, Richard H. Thayer and Mark Christensen, eds., Wiley-IEEE Computer Society Press, 2002. [Bas84] V.R. Basili and D.M. Weiss, A Methodology for Collecting Valid Software Engineering Data, IEEE Transactions on Software Engineering, vol. SE-10, iss. 6, November 1984, pp. 728-738. [Bei90] B. Beizer, Software Testing Techniques, International Thomson Press, 1990. [Boe78] B.W. Boehm et al., Characteristics of Software Quality, TRW Series on Software Technologies, vol. 1, 1978. [Chi96] R. Chillarege, Orthogonal Defect Classification, Handbook of Software Reliability Engineering, M. Lyu, ed., IEEE Computer Society Press, 1996. [Con86] S.D. Conte, H.E. Dunsmore, and V.Y. Shen, Software Engineering Metrics and Models: The Benjamin Cummings Publishing Company, 1986. [Dac01] G. Dache, IT Companies will gain competitive advantage by integrating CMM with ISO9001, Quality System Update, vol. 11, iss. 11, November 2001. [Ebe94] R.G. Ebenau and S. Strauss, Software Inspection Process, McGraw-Hill, 1994. [Fen98] N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, second ed., International Thomson Computer Press, 1998. [Fre98] D.P. Freedman and G.M. Weinberg, Handbook of Walkthroughs, Inspections, and Technical Reviews, Little, Brown and Company, 1998. [Fri95] M.A. Friedman and J.M. Voas, Software Assessment: Reliability, Safety Testability, John Wiley & Sons, 1995. [Gil93] T. Gilb and D. Graham, Software Inspections, Addison-Wesley, 1993. [Gra92] R.B. Grady, Practical Software Metrics for Project Management and Process Management, Prentice Hall, 1992. [Hor03] J. W. Horch, Practical Guide to Software Quality Management, Artech House Publishers, 2003. [Hou99] D. Houston, Software Quality Professional, ASQC, vol. 1, iss. 2, 1999. [IEEE-CS-99] IEEE-CS-1999, Software Engineering Code of Ethics and Professional Practice, IEEE-CS/ACM, 1999, available at http://www.computer.org/certification/ ethics.htm. [ISO9001-00] ISO 9001:2000, Quality Management Systems Requirements, ISO, 2000. [ISO90003-04] ISO/IEC 90003:2004, Software and Systems Engineering-Guidelines for the Application of ISO9001:2000 to Computer Software, ISO and IEC, 2004. [Jon96] C. Jones and J. Capers, Applied Software Measurement: Assuring Productivity and Quality, second ed., McGraw-Hill, 1996. [Kan02] S.H. Kan, Metrics and Models in Software Quality Engineering, second ed., Addison-Wesley, 2002. [Kia95] D. Kiang, Harmonization of International Software Standards on Integrity and Dependability, Proc. IEEE International Software Engineering Standards Symposium, IEEE Computer Society Press, 1995.

[Lap91] J.C. Laprie, Dependability: Basic Concepts and Terminology in English, French, German, Italian and Japanese, IFIP WG 10.4, Springer-Verlag, 1991. [Lev95] N.G. Leveson, Safeware: System Safety and Computers, Addison-Wesley, 1995. [Lew92] R.O. Lewis, Independent Verification and Validation: A Life Cycle Engineering Process for Quality Software, John Wiley & Sons, 1992. [Llo03] Lloyd's Register, TickIT Guide, iss. 5, 2003, available at http://www.tickit.org. [Lyu96] M.R. Lyu, Handbook of Software Reliability Engineering: McGraw-Hill/IEEE, 1996. [Mcc77] J.A. McCall, Factors in Software Quality General Electric, n77C1502, June 1977. [McC04] S. McConnell, Code Complete: A Practical Handbook of Software Construction, Microsoft Press, second ed., 2004. [Mus89] J.D. Musa and A.F. Ackerman, Quantifying Software Validation: When to Stop Testing? IEEE Software, vol. 6, iss. 3, May 1989, pp. 19-27. [Mus99] J. Musa, Software Reliability Engineering: More Reliable Software, Faster Development and Testing: McGraw Hill, 1999. [NIST03] National Institute of Standards and Technology, Baldrige National Quality Program, available at http://www.quality.nist.gov. [Pen93] W.W. Peng and D.R. Wallace, Software Error Analysis, National Institute of Standards and Technology, Gaithersburg, NIST SP 500-209, December 1993, available at http://hissa.nist.gov/SWERROR/. [Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001. [Pre04] R.S. Pressman, Software Engineering: A Practitioners Approach, sixth ed., McGraw-Hill, 2004. [Rad02] R. Radice, High Quality Low Cost Software Inspections, Paradoxicon, 2002, p. 479. [Rak97] S.R. Rakitin, Software Verification and Validation: A Practitioners Guide, Artech House, 1997. [Rub94] J. Rubin, Handbook of Usability Testing: How to Plan, Design, and Conduct Effective Tests, John Wiley & Sons, 1994. [Sch99] G.C. Schulmeyer and J.I. McManus, Handbook of Software Quality Assurance, third ed., Prentice Hall, 1999. [SEI02] Capability Maturity Model Integration for Software Engineering (CMMI), CMU/SEI-2002-TR-028, ESC-TR-2002-028, Software Engineering Institute, Carnegie Mellon University, 2002. [Som05] I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005. [Voa99] J. Voas, Certifying Software For High Assurance Environments, IEEE Software, vol. 16, iss. 4, July-August 1999, pp. 48-54. [Wak99] S. Wakid, D.R. Kuhn, and D.R. Wallace, Toward Credible IT Testing and Certification, IEEE Software, July/August 1999, pp. 39-47. [Wal89] D.R. Wallace and R.U. Fujii, Software Verification and Validation: An Overview, IEEE Software, vol. 6, iss. 3, May 1989, pp. 10-17. [Wal96] D.R. Wallace, L. Ippolito, and B. Cuthill, Reference Information for the Software Verification and Validation Process, NIST SP 500-234, NIST, April 1996, available at http://hissa.nist.gov/VV234/.

[Wei93] G.M. Weinberg, Measuring Cost and Value, Quality Software Management: First-Order Measurement, vol. 2, chap. 8, Dorset House, 1993. [Wie96] K. Wiegers, Creating a Software Engineering Culture, Dorset House, 1996.

[Zel98] M.V. Zelkowitz and D.R. Wallace, Experimental Models for Validating Technology, Computer, vol. 31, iss. 5, 1998, pp. 23-31.

APNDICE

A. LISTA DE LECTURAS COMPLEMENTARIAS (Abr96) A. Abran and P.N. Robillard, Function Points Analysis: An Empirical Study of Its Measurement Processes, presented at IEEE Transactions on Software Engineering, 1996. //journal or conference?// (Art93) L.J. Arthur, Improving Software Quality: An Insiders Guide to TQM, John Wiley & Sons, 1993. (Bev97) N. Bevan, Quality and Usability: A New Framework, Achieving Software Product Quality, E. v. Veenendaal and J. McMullan, eds., Uitgeverij Tutein Nolthenius, 1997. (Cha89) R.N. Charette, Software Engineering Risk Analysis and Management, McGraw-Hill, 1989. (Cro79) P.B. Crosby, Quality Is Free, McGraw-Hill, 1979. (Dem86) W.E. Deming, Out of the Crisis: MIT Press, 1986. (Dod00) Department of Defense and US Army, Practical Software and Systems Measurement: A Foundation for Objective Project Management, Version 4.0b, October 2000, available at http://www.psmsc.com. (Hum89) W. Humphrey, Managing the Software Process, Chap. 8, 10, 16, Addison-Wesley, 1989. (Hya96) L.E. Hyatt and L. Rosenberg, A Software Quality Model and Metrics for Identifying Project Risks and Assessing Software Quality, presented at 8th Annual Software Technology Conference, 1996.

(Inc94) D. Ince, ISO 9001 and Software Quality Assurance, McGraw-Hill, 1994. (Jur89) J.M. Juran, Juran on Leadership for Quality, The Free Press, 1989. (Kin92) M.R. Kindl, Software Quality and Testing: What DoD Can Learn from Commercial Practices, U.S. Army Institute for Research in Management Information, Communications and Computer Sciences, Georgia Institute of Technology, August 1992. (NAS97) NASA, Formal Methods Specification and Analysis Guidebook for the Verification of Software and Computer Systems, Volume II: A Practitioners Companion, 1997, available at http://eis.jpl.nasa.gov/ quality/Formal_Methods/. (Pal97) J.D. Palmer, Traceability, Software Engineering, M. Dorfman and R. Thayer, eds., 1997, pp. 266-276. (Ros98) L. Rosenberg, Applying and Interpreting ObjectOriented Metrics, presented at Software Technology Conference, 1998, available at http://satc.gsfc.nasa.gov/ support/index. html. (Sur03) W. Suryn, A. Abran, and A. April, ISO/IEC SQuaRE. The Second Generation of Standards for Software Product Quality, presented at IASTED 2003, 2003. (Vin90) W.G. Vincenti, What Engineers Know and How They Know It Analytical Studies from Aeronautical History, John Hopkins University Press, 1990.

APNDICE B. LISTA DE ESTNDARES


(FIPS140.1-94) FIPS 140-1, Security Requirements for Cryptographic Modules, 1994. (IEC61508-98) IEC 61508, Functional Safety SafetyRelated Systems Parts 1, 2, 3, IEEE, 1998. (IEEE610.12-90) IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. (IEEE730-02) IEEE Std 730-2002, IEEE Standard for Software Quality Assurance Plans, IEEE, 2002. (IEEE982.1-88) IEEE Std 982.1-1988, IEEE Standard Dictionary of Measures to Produce Reliable Software, 1988. (IEEE1008-87) IEEE Std 1008-1987 (R2003), IEEE Standard for Software Unit Testing, IEEE, 1987. (IEEE1012-98) IEEE Std 1012-1998, Software Verification and Validation, IEEE, 1998. (IEEE1028-97) IEEE Std 1028-1997 (R2002), IEEE Standard for Software Reviews, IEEE, 1997. (IEEE1044-93) IEEE Std 1044-1993 (R2002), IEEE Standard for the Classification of Software Anomalies, IEEE, 1993. (IEEE1059-93) IEEE Std 1059-1993, IEEE Guide for Software Verification and Validation Plans, IEEE, 1993. (IEEE1061-98) IEEE Std 1061-1998, IEEE Standard for a Software Quality Metrics Methodology, IEEE, 1998. (IEEE1228-94) IEEE Std 1228-1994, Software Safety Plans, IEEE, 1994. (IEEE1462-98) IEEE Std 1462-1998//ISO/IEC14102, Information Technology Guideline for the Evaluation and Selection of CASE Tools. (IEEE1465-98) IEEE Std 1465-1998//ISO/IEC12119:1994, IEEE Standard Adoption of International Standard IDO/IEC12119:1994(E), Information Technology-Software Packages Quality Requirements and Testing, IEEE, 1998. (IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/ IEC12207:1995, Industry Implementation of Int. Std ISO/IEC 12207:95, Standard for Information TechnologySoftware Life Cycle Processes, IEEE, 1996. (ISO9001-00) ISO 9001:2000, Quality Management Systems Requirements, ISO, 2000. (ISO9126-01) ISO/IEC 9126-1:2001, Software Engineering Product Quality, Part 1: Quality Model, ISO and IEC, 2001. (ISO14598-98) ISO/IEC 14598:1998, Software Product Evaluation, ISO and IEC, 1998. (ISO15026-98) ISO/IEC 15026:1998, Information Technology System and Software Integrity Levels, ISO and IEC, 1998. (ISO15504-98) ISO/IEC TR 15504-1998, Information Technology Software Process Assessment (parts 1-9), ISO and IEC, 1998. (ISO15939-00) ISO/IEC 15939:2000, Information Technology Software Measurement Process, ISO and IEC, 2000. (ISO90003-04) ISO/IEC 90003:2004, Software and Systems Engineering Guidelines for the Application of ISO9001:2000 to Computer Software, ISO and IEC, 2004.

CAPTULO 12 DISCIPLINAS RELACIONADAS CON LA INGENIERA DEL SOFTWARE


INTRODUCCIN
Para circunscribir la Ingeniera del Software, es necesario identificar las disciplinas con las que la Ingeniera del Software comparte un lmite comn. Este captulo identifica, en orden alfabtico, esas Disciplinas Relacionadas. Por supuesto, las Disciplinas Relacionadas tambin comparten varios lmites en comn entre ellas mismas. Usado como fuente reconocida y consensuada, este captulo identifica para cada Disciplina Relacionada: Una definicin informativa (cuando sea factible). Un listado de reas de conocimiento.

La figura 1 da una representacin grfica de estas disciplinas relacionadas.

Figura 1 Disciplinas relativas a la Ingeniera del Software

LISTADO DE DISCIPLINAS RELACIONADAS Y SUS


REAS DE CONOCIMIENTO

Sistemas distribuidos Electronica Sistemas embebidos Interaccin Hombre-Mquina Gestin de la informacin Sistemas inteligentes Redes Sistemas operativos Fundamentos de la programacin Probabilidad y Estadstica Problemas sociales y profesionales Ingeniera del Software Verificacin y Prueba Diseo VLSI/ASIC

Ingeniera de la computacin El informe borrador del volumen en la Ingeniera de la Computacin de Computing Curricula 2001 project (CC2001)1 establece que La Ingeniera de la Computacin incorpora la ciencia y la tecnologa del diseo, construccin, implementacin y mantenimiento de los componentes software y hardware de los sistemas de clculo moderno y del equipo controlado por ordenador. Este informe identifica las siguientes reas de Conocimiento (conocidas como reas en el informe) para la ingeniera de la computacin:
1

Algoritmos y Complejidad Arquitectura de ordenadores y Organizacin Ingeniera de Sistemas Informticos Circuitos y Sistemas Lgica Digital Estructuras discretas Procesamiento de seales digitales

Ciencia de la computacin El informe final del volumen en Ciencia de la computacin de Computing Curricula 2001 project (CC2001)2 identifica la siguiente lista de reas de conocimiento (identificadas como reas en el informe) para la Ciencia de la computacin:

hhtp://www.eng.auburn.edu/ece/CCCE/Iron_Man_Draft_October_ 2003.pdf

Gestin

Estructuras discretas Fundamentos de la programacin Algoritmos y Complejidad Arquitectura y Organizacin Sistemas operativos Sistemas centralizados Lenguajes de programacin Interaccin Hombre-Mquina Grficos y computacin visual Sistemas inteligentes Gestin de la informacin Problemas sociales y profesionales Ingeniera del Software Ciencia computacional y Clculo numrico

Estadstica Anlisis numrico Matemtica discreta

Un listado ms enfocado en asuntos matemticos (llamados unidades y asuntos en el informe) que sostiene la ingeniera del software puede ser encontrado en el informe borrador del volumen en Ingeniera del Software en el Computing Curricula 2001 project (CC2001)5. Gestin de Proyectos La gestin de proyectos es definida en la edicin del 2000 de A Guide to the Project Management Body of Knowledge (PMBOK Guide 6) publicado por el Project Management Institute y adoptado como IEEE Std 14902003, como el uso del conocimiento, de las habilidades, de las herramientas, y de las tcnicas para planificar actividades para satisfacer los requisitos del proyecto. Las reas de conocimiento identificadas en la gua de PMBOK para la Gestin de Proyectos son Gestin de Integracin del proyecto Gestin de Alcance del proyecto Gestin del tiempo del proyecto Gestin del coste del proyecto Gestin de la calidad del proyecto Gestin de los recursos humanos del proyecto Gestin de comunicaciones del proyecto Gestin de riesgos del proyecto Gestin de consecucin del proyecto Gestin de calidad La gestin de la calidad es definida en el ISO 9000-2000 como actividades coordinadas para dirigir y controlar una organizacin con respecto a la calidad. Las tres referencias seleccionadas en gestin de calidad son ISO 9000:2000 Sistemas de gestin de calidad Fundamentos y vocabulario ISO 9001:2000 Sistemas de gestin de calidad Requerimientos ISO 9004:2000 Sistemas de gestin de calidad Pautas para la mejora del funcionamiento

La European MBA Guidelines definida por la asociacin europea de cuerpos de acreditacin nacional (EQUAL)3 establece que el ttulo Master en Administracin de negocios debe incluir cobertura e instruccin en 1) Contabilidad Finanzas Marketing y ventas Gestin de operaciones Gestin de Sistemas de Informacin Derecho Gestin de Recursos Humanos Economa Analisis cuantitativo Poltica y estrategia de negocio

Matemticas Dos fuentes son seleccionadas para identificar la lista de reas de conocimiento para matemticas. El informe titulado "Criterios de acreditacin y procedimientos"4 de la Canadian Engineering Accreditation Board identifica que los elementos apropiados de las reas siguientes deben estar presentes en un plan de estudios de la ingeniera del estudiante: Algebra lineal Clculo Integral y Diferencial Ecuaciones diferenciales Probabilidad

5 http://sites.computer.org/ccse/volume/FirstDraft.pdf 6 PMBOK es una marca registrada de los Estados Unidos y otras naciones.

2 3 4

ttp://www.computer.org/education/cc2001/final/cc2001.pdf http://www.efmd.be/ http://www.ccpe.ca/e/files/report_ceab.pdf

La Sociedad Americana para la Calidad identifica las siguientes reas de conocimiento en su Cuerpo de Conocimiento para la certificacin como Ingeniero de Calidad7:

2) Gestin y liderazgo en ingeniera de calidad Sistemas de calidad de desarrollo, implementacin y verificacin Planificacin, control y fiabilidad en la calidad del producto y del proceso Gestin de la fiabilidad y el riesgo Solucin de problemas y mejora de la calidad Mtodos cuantitativos

Universidad de Qubec en Montral y por W. W. McMillan, de la Eastern Michigan University.

Fundaciones de la ciencia cognoscitiva Extraccin de la informacin del habla y del texto Procesado lxico Adquisicin de cmputo de la lengua Naturaleza del HCI - (Meta-) Modelos de HCI Uso y contexto de computadoras - Organizacin y trabajo sociales humanos reas de aplicacin

Ergonoma del software El campo de la ergonoma est definido por la ISO Technical Committee 159 sobre la ergonoma y dice: Ergonoma o (factores humanos) es la disciplina cientfica referida a comprensin de las interacciones entre un ser humano y otros elementos de un sistema, y la profesin que conlleva teora, principios, datos y mtodos para disear con objeto de optimizar el bienestar humano y el funcionamiento del sistema global.8 Una lista de las reas del conocimiento para la ergonoma n relacin con el software se detalla a continuacin9: Cognicin I.A. cognoscitiva I: Razonamiento Aprendizaje de las mquinas e induccin de la gramtica Mtodos formales en ciencia cognoscitiva: Lenguaje Ellos deban indicar cules de estos tpicos deban ser conocidos como Ingeniera del Software. Los que fueron rechazados por dos de los tres integrantes fue eliminados de la lista original. Mtodos formales en ciencia cognoscitiva: Razonamiento Mtodos formales en ciencia cognoscitiva: Arquitectura cognoscitiva I.A. cognoscitiva II: Aprendizaje

Ajuste y adaptacin Hombre-Mquina Caractersticas humanas - Tratamiento de la informacin humana - Lengua, comunicacin, interaccin - Ergonmica Sistema informtico y arquitectura del interfaz - Dispositivos de la entrada y de salida - Tcnicas del dilogo - Gnero del dilogo - Grficos de computadora Arquitectura del dilogo Proceso del desarrollo - Borradores del diseo - Tcnicas de implementacin - Tcnicas de la evaluacin - Sistemas de ejemplo y casos de estudio

Se puede encontrar una lista ms detallada de asuntos de interfaz hombre-computadora diseada (llamado unidades y asuntos en el informe) para la ingeniera del software, en el borrador del informe del volumen en la ingeniera del software Computing Curricula 2001 project (CC2001)10. Ingeniera de sistemas El consejo internacional sobre la ingeniera de sistemas (INCOSE)11 dice que la ingeniera de sistemas es interdisciplinar y capaz de activar la realizacin de sistemas eficientes. Se centra en definir los requisitos de usuario y funcionalidad requerida en fases iniciales del ciclo de desarrollo, documentando requisitos, luego procediendo con la sntesis del diseo y la validacin del sistema mientras se considera el problema globalmente: operaciones de funcionamiento, pruebas, desarrollo, coste y planificacin, entrenamiento, ayuda y disposicin. La ingeniera de sistemas integra todas las disciplinas y grupos de especialidades en un esfuerzo del equipo que forma procesos estructurados de desarrollo a el cual procede de concepto, a produccin y a operacin. La

7.http://isotc.iso.ch/livelink/livelink.exe/fetch/2000/2122/687806 /ISO_TC_159__Ergonomics_.pdf?nodeid=1162319&vernum=0h ttp://www.asq.org/cert/types/cqe/bok.html 8.http://isotc.iso.ch/livelink/livelink.exe/fetch/2000/2122/687806 /ISO_TC_159_Ergonomics_.pdf?nodeid=1162319&vernum=0 9 Esta lista fue compilada para la edicin del 2001 del SWEBOK Guide para la lista de cursos ofrecidos por el Departamento de Ciencia Cognitiva de la Universidad de John Hopkins University y el ACM SIGCHI Curricula for Human-Computer.La lista fue entonces refinada por tres expertos en el campo: dos de la

10 http://sites.computer.org/ccse/volume/FirstDraft.pdf 11 www.incose.org

ingeniera de sistemas considera ambos el negocio y las necesidades tcnicas de todos los clientes con el objetivo de proporcionar un producto de calidad que resuelve las necesidades del usuario. El consejo internacional sobre la ingeniera de sistemas (INCOSE, www.incose.org) est trabajando en una gua del Cuerpo de Conocimiento de la ingeniera de sistemas. Versiones iniciales incluyen las siguientes reas de competencias de primer nivel:

1. Procesos de negocio y gravamen operacional (BPOA) 2. Sistema/Solucin/Prueba de la arquitectura (SSTA) 3. Coste del ciclo vital y anlisis de costes y beneficios (LCC y CBA) 4. Utilidad/logstica (S/L) 5. Modelado, simulacin, y anlisis (MS&A) 6. Gestin: Riesgo, configuracin, lnea de fondo (Mgt)

APNDICE A ESPECIFICACIONES DE LA DESCRIPCIN DE REAS DE CONOCIMIENTO PARA LA GUA HOMBRE DE HIERRO DE LA GUA DEL CUERPO DE CONOCIMIENTO DE LA INGENIERA DEL
SOFTWARE
INTRODUCCIN Este documento presenta la versin 1.9 de las especificaciones proporcionadas al equipo editorial a los expertos de las AC en relacin a las Descripciones de las reas de Conocimiento de la Gua del Cuerpo de Conocimiento de la Ingeniera del software (Versin Hombre de Hierro). Este documento comienza presentando especificaciones sobre los contenidos de las reas de las Descripciones de las reas de Conocimiento. Los criterios y requerimientos son definidos: para las descripciones de los temas propuestos, las bases para dichas descomposiciones y una breve descripcin de los temas, para la seleccin de las referencias, y para la identificacin de las reas de Conocimiento de las Disciplinas Relacionadas. Se explican documentos y sus roles de dentro de los proyectos software. Adems se tratan asuntos no relacionados con el contenido como formatos de entrega y guas de estilo. CRITERIOS
Y REQUERIMIENTOS PARA LA DESCOMPOSICIN DE TPICOS INTERRUPCIN DE LOS ASUNTOS PARA LOS REQUISITOS DEL SOFTWARE

Conocimiento que es globalmente aceptado. Este punto se detalla ms adelante. d) La descomposicin de temas propuesta dentro de un rea de Conocimiento no debe asumir dominios de aplicaciones especficos, necesidades de negocio, tamaos de organizaciones, filosofas de gestin, ciclos de vida del software, tecnologas software o mtodos de desarrollo del software. e) La descomposicin de temas propuesta debe, en todo lo posible, ser compatible con las varias escuelas de pensamiento dentro de la ingeniera del software. La descomposicin de temas propuesta dentro de las reas de Conocimiento, debe ser compatible con la descomposicin de la ingeniera del software encontrada en la industria y en los estndares y literatura de la ingeniera del software.

f)

Los siguientes requerimientos y criterios que deberan utilizarse para proponer una descomposicin de temas en un rea de Conocimiento: a) Se espera que los editores asociados propongan una o posiblemente dos, descomposiciones complementarias a sus especificas reas de Conocimiento. Los temas encontrados en todas las descomposiciones dada un rea de Conocimiento deben ser iguales.

g) La descomposicin de temas propuesta debe ser tan extensa como sea posible. Es mejor sugerir muchos temas y que luego algunos sean abandonados que lo contrario. h) Se espera de los editores asociados del rea de Conocimiento, que se posicionen los temas de calidad (en general) y medicin, comunes y parte integral de todas las reas de Conocimiento. Ntese que como tratar temas comunes u ortogonales, y si estos deberan de tratarse de otra manera no ha sido completamente resulto todava. i) La descomposicin propuesta debera de tener a lo sumo tener dos o tres niveles de profundidad. Aunque no se ha puesto ningn lmite ni superior ni inferior al nmero de temas dentro de cada rea de Conocimiento, se espera que los Editores Asociados de cada rea de Conocimiento propongan un nmero razonable y manejable de temas por reas de Conocimiento. Adems el nfasis debe de ponerse en la seleccin de temas en lugar de su organizacin en una jerarqua apropiada.

b) Se espera que la descomposicin de temas sea razonable, no perfecta. La Gua al Cuerpo de Conocimiento de la Ingeniera del Software es un esfuerzo a realizarse en fases, con muchas interacciones dentro de cada fase y mltiples fases que sern necesarias para mejorar las descomposiciones. c) Las descomposiciones de los temas propuestas dentro de un rea de Conocimiento debe descomponer el subconjunto del Cuerpo de

Los temas propuestos deben ser lo suficientemente significantes incluso cuando se citan fuera de la Gua al Cuerpo de Conocimiento del Software. j) La descripcin de un rea de Conocimiento incluir una figura (en forma de rbol) describiendo la descomposicin del conocimiento.
Y REQUERIMIENTOS PARA LA DESCRIPCIN

CRITERIOS
DE TEMAS

a) Los temas necesitan solo ser descritos hasta un nivel apropiado para que el lector pueda seleccionar el material referenciado acorde a sus necesidades.

CRITERIOS Y REQUERIMIENTOS PARA LA SELECCIN DE


MATERIAL DE REFERENCIA

a)

Debe identificarse material de referencia especfico a cada tema. Los materiales de referencia pueden cubrir mltiples temas. e)

del software que un graduado debera de pasar tras cuatro aos de experiencia laboral. La Gua al cuerpo de Conocimiento de Ingeniera del Software busca por definicin ser selectivo en su seleccin de temas y material de referencia asociado. La lista de material de referencia para cada rea de Conocimiento debera de ser visto y ser presentado como una seleccin razonable y bien fundada y no como una lista definitiva. Material de referencia adicional puede ser incluido en la lista de Lecturas Complementarias. Estas lecturas complementarias deben relacionarse con los temas en la descomposicin. Adems deben comentarse en el conocimiento globalmente aceptado. No debera de haber una matriz entre el material de referencia contenido en las Lecturas Complementarias y los temas individuales.

b) El material de referencia propuesto pueden ser captulos de libro, artculos de revista revisados, artculos de referencia revisados, reportes tcnicos o de empresa revisados, o cualquier otro tipo de artefactos como documentos Web. Deben de estar disponibles y no ser confidenciales por naturaleza. Las referencias deberan de ser lo ms precisas posibles especificando los captulos o secciones relevantes. f) c) El material de referencia propuesto debe de estar en Ingles.

Si se considera posible y rentable por el IEEE Computer Society, el material de referencia seleccionado ser publicado en la Web de la Gua al Cuerpo de Conocimiento de la Ingeniera del Software. Para facilitar esta tarea, se debera referenciar materiales cuyo copyright ya pertenecen al IEEE Computer Society. Sin embargo, esto no debera considerarse como una restriccin o una obligacin. Debe proporcionarse una matriz materiales de referencia versus temas con los

d) Para cada rea de Conocimiento debe seleccionarse una un nmero de referencias apropiado. Las siguientes guas deben usarse para determinar el numero apropiado: Si el material referenciado estuviese escrito de manera coherente siguiendo la descomposicin propuesta y en un estilo uniforme (por ejemplo, en un nuevo libro basado en la descripcin de las reas de Conocimiento), el objetivo debera de ser unas 500 pginas. Sin embargo, este objetivo puede no ser alcanzable en la seleccin de referencias debido a diferencias en estilo, sobreposicin y redundancia entre los materiales seleccionados. La cantidad de material de referencia de ser razonable si constituyese el material de estudio para el rea de Conocimiento de un examen de licencia de ingeniera

CRITERIOS

Y REQUERIMIENTOS PARA LA IDENTIFICACIN DE LAS REAS DE CONOCIMIENTO DE LAS DISCIPLINAS RELACIONADAS

Se espera de los editores asociados de las reas de Conocimiento identifiquen en una seccin aparte, que reas de Conocimiento de las Disciplinas Relacionadas son suficientemente relevantes a las reas de Conocimiento de la Ingeniera del Software para graduados con cuatro aos de experiencia. Esta informacin ser particularmente til y generara dialogo entre la iniciativa de la Gua al cuerpo de Conocimiento de la Ingeniera del Software e iniciativas hermanas responsables de definir el currculum de la ingeniera del software y normas de comportamiento estndar. La lista de reas de Conocimiento de Disciplinas Relacionadas se puede encontrar en la Lista Base de Disciplinas Relacionadas propuestas. Si se considera

necesario y va acompaado de una justificacin, los especialistas de las reas de Conocimiento pueden proponer Disciplinas Relacionadas adicionales que no han sido incluidas en la Lista Base de Disciplinas Relacionadas (ntese que una clasificacin de los temas de las Disciplinas Relacionadas ha sido producido pero ser publicado en la Web ms adelante como documento en progreso. Contctese con el equipo editorial para ms informacin). NDICE DE CONTENIDOS COMUNES Las descripciones de las reas de Conocimiento deberan usar el siguiente ndice de contenidos: Introduccin Descomposicin de temas del rea de Conocimiento (por claridad, creemos que esta seccin debera de estar situarse al principio y no en un apndice al final del documento. Adems, debera de una figura describiendo la descomposicin). Matriz de temas vs. Material de referencia Referencias recomendadas para el rea de Conocimiento descrita (por favor, no mezclarlas con las referencias usadas al escribir la descripcin del rea de Conocimiento) Lista de Lecturas Complementarias
CON

de proyectos es siempre responsable de determinar que es apropiado a un proyecto dado. La Gua al Cuerpo de Conocimiento de la Ingeniera del Software es un estndar IEEE. En la reunin inicial en Mont Tremblant en 1998, el comit ejecutivo profesional defini generalmente aceptado como conocimiento a ser incluido en el material de estudio de un examen de licencia de ingeniera del software que un graduado con cuatro aos de licencia debera de superar. Estas dos definiciones deben verse como complementarias. Tambin se espera de los editores asociados de las reas de Conocimiento miren al futuro en su interpretacin de lo que es generalmente aceptado a da de hoy, pero lo que se espera que sea generalmente aceptado en 5 aos.

Especializado Prticas utilizadas solamente en ciertos tipos de software

Generalmente aceptado Prcticas tradicionales establecidas que son recomendadas por muchas organizaciones. Avanzados y de investigacin Practicas innovadoras probadas y usadas solo por algunas organizaciones y conceptos que estn todava siendo desarrollados y probados en organizaciones de investigacin

QU QUEREMOS DECIR GENERALMENTE ACEPTADO?

CONOCIMIENTO

El Cuerpo de Conocimiento de la Ingeniera del Software es un trmino que describe la suma de conocimiento dentro de la profesin de la ingeniera del software. Sin embargo, la Gua al Cuerpo de Conocimiento de la Ingeniera del Software busca identificar y describir que subconjunto de la ingeniera del software es generalmente aceptado o, en otras palabras, el ncleo del cuerpo del conocimiento. Para ilustrar mejor que conocimiento generalmente aceptado relativo a otros tipos de conocimiento, la Figura 1 propone un borrador para clasificar el conocimiento en un esquema con 3 categoras. El Project Management Institute en su Gua al Cuerpo de Conocimiento de la Gestin de Proyectos5 define conocimiento generalmente aceptado como: Generalmente aceptado significa que el conocimiento y practicas descritas son aplicables a la mayora de los proyectos la mayor parte del tiempo, y que existe un consenso extendido sobre su valor y utilidad. Generalmente aceptado no significa que el conocimiento y practicas descritas son o deberan de ser aplicadas uniformemente a todos los proyectos; el equipo de gestin

LONGITUD EN LA CONOCIMIENTO

DESCRIPCIN DE LAS

REA

DE

Actualmente, se espera que la longitud de las reas de Conocimiento este sobre las 10 pginas usando el formato de la Conferencia Internacional de la Ingeniera del Software. Esto incluye texto, referencias, apndices, tablas, etc. Esto, por supuesto, no incluye los materiales de referencia. Este lmite no debera de ser visto como una restriccin u obligacin. EL ROL DEL EQUIPO EDITORIAL Alain Abran y James W. Moore son editores ejecutivos y responsables de mantener buenas relaciones con el IEEE Computer Society, el comit ejecutivo profesional, el panel de control de cambios, el panel de expertos y la estrategia general, aproximaciones a tomar, organizacin y financiacin del proyecto. Pierre Bourque y Robert Dupuis son los editores y responsables de la coordinacin, operacin y logstica del proyecto. Ms especficamente, los editores son los responsables del desarrollo del plan del proyecto y la especificacin de la descripcin del rea de conocimiento,

Ver A Guide to the Project Management Body of Knowledge, Project Management Institute, Newton Square, PA 1996, 2000; Disponible en: http://www.pmi.org/

coordinacin de los editores asociados de las reas de Conocimiento, reclutamiento de revisores y de capitanear las revisiones, y tambin de los varios ciclos de revisin. Los Editores son por tanto, los responsables de la coherencia de la Gua y de la identificacin y establecimiento de los enlaces entre las reas de Conocimiento. Los editores y editores asociados de las reas de Conocimiento negociaran la resolucin de vacos y solapamientos entre las reas de Conocimiento. IMPORTANTES DOCUMENTOS RELACIONADOS ORDEN ALFABTICO DEL PRIMER AUTOR) (EN

Este informe es la base de todo el proyecto. Define la estrategia general del proyecto, su razn de ser, y los principios y procesos que fundan una lista inicial de reas de Conocimiento y Disciplinas Relacionadas. La versin actual se http://www.swebok.org/ encuentra disponible en

J. W. Moore, Software Engineering Standards, A Users Road Map, IEEE Computer Society Press, 1998. Este libro describe el mbito, roles, usos y las tendencias de los estndares ms usados en la ingeniera del software. Se concentra en actividades importantes de la ingeniera del software calidad y gestin de proyectos, ingeniera de sistemas, fiabilidad y seguridad (prevencin de riesgos). El anlisis y reagrupamiento de colecciones de estndares le muestran al lector relaciones clave entre estndares. Aunque la Gua al Cuerpo de Conocimiento de la Ingeniera del Software no se trata del desarrollo de estndares en s mismo, debe considerarse muy especialmente en todo el proyecto la compatibilidad de Gua con el conjunto de estndares de IEEE e ISO. IEEE Standard Glossary of Software Engineering Terminology, Std 610.12-1990, IEEE, 1990. La lista de referencias para la terminologa es Merriam Websters Collegiate Dictionary (10th ed.), IEEE Std 610.12, y nuevas propuestas de definiciones si son necesarias. Information Technology Software Life Cycle Processes, International std ISO/IEC 12207:1995(E), 1995. Este estndar es considerado clave en relacin a la definicin de los procesos del ciclo de vida y ha sido adoptado por los dos principales organismos de estandarizacin en la ingeniera del software: ISO/IEC JTC1 SC7 y el comit de estndares de ingeniera del software de IEEE Computer Society. Adems, ha sido designado como un estndar fundamental sobre el cual el Software Engineering Standards Committee (SESC) est actualmente armonizando toda su coleccin de estndares. Este estndar una entrada fundamental para la versin Hombre de Paja. Aunque no se persigue que la Gua al Cuerpo de Conocimiento de la Ingeniera de Software sea totalmente compatible con el estndar 12207, este estndar se mantiene como uno de los documentos clave para la versin Hombre de Piedra, y debe prestarse un cuidado especial en todo el proyecto el relacin a la compatibilidad de la guiad con el estndar 12207. Merriam Websters Collegiate Dictionary (10th ed.).

P. Bourque, R. Dupuis, A. Abran, J. W. Moore, L. Tripp, and D. Frailey, A Baseline List of Knowledge Areas for the Stone Man Version of the Guide to the Software Engineering Body of Knowledge, Universit du Qubec Montral, Montral, February 1999. Basado en la versin Hombre de Paja, en las discusiones y en las expectativas marcadas en la reunin inicial del Comit Ejecutivo Profesional, en otros cuerpos del conocimiento, y en los criterios definidos en este documento, propone una lnea base de 10 reas de Conocimiento para la versin de prueba de la Gua al Cuerpo de Conocimiento de la Ingeniera del Software. Por supuesto, esta lnea base puede evolucionar al tratarse de un trabajo en progreso y segn se van identificando temas durante el transcurso del proyecto. Este documento http://www.swebok.org/ est disponible en

P. Bourque, R. Dupuis, A. Abran, J. W. Moore, y L. Tripp, A Proposed Baseline List of Related Disciplines for the Stone Man Version of the Guide to the Software Engineering Body of Knowledge, Universit du Qubec Montral, Montral, February 1999 Basado en la versin Hombre de Paja, en las discusiones y en las expectativas marcadas en la reunin inicial del Comit Ejecutivo Profesional, en trabajos posteriores, este documento propone la lnea base de las Disciplinas Relacionadas y reas de Conocimiento dentro de estas Disciplinas Relacionadas. Este documento ha sido envido y discutido en el Comit Ejecutivo Profesional, y una lista de reas de Conocimiento todava tienen que ser identificadas para ciertas Disciplinas Relacionadas. Los editores asociados sern informados de la evolucin de este documento. La versin actual se http://www.swebok.org/ encuentra disponible en

P. Bourque, R. Dupuis, A. Abran, J. W. Moore, L. Tripp, K. Shyne, B. Pflug, M. Maya, and G. Tremblay, Guide to the Software Engineering Body of Knowledge - A Straw Man Version, technical report, Universit du Qubec Montral, Montral, September 1998.

Ver nota para de Std IEEE 610.12. ESTILO Y GUAS TCNICAS Las Descripciones de las reas de Conocimiento debera ajustarse al formato de las actas de la conferencia internacional de la ingeniera del software (International Conference in Software Engineering). Las plantillas estn disponibles en:
http://sunset.usc.edu/icse99/cfp /technical_papers.html

Para asegurarse que la informacin contenida en la gua al SWEBOK no se queda rpidamente obsoleta, por favor, evtese nombrar directamente nombres de herramientas y productos. En su lugar, intente nombrar sus funciones. La lista de productos y herramientas siempre puede ponerse en un apndice. Se espera que se detallen los acrnimos usados, se haga un uso apropiado de los acrnimos, marcas, etc. Las Descripciones de las reas de Conocimiento deberan de ser escritas siempre en tercera persona. EDICIN El Equipo Editorial y ESTILO Y GUAS TCNICAS editores profesionales editaran las Descripciones de las reas de Conocimiento. La edicin incluye correccin (gramtica, puntuacin y capitalizacin), estilo (adaptacin al estilo de las revistas de la Computer Society), y edicin de contenido (flujo, significado, claridad, lenguaje directo y organizacin). La edicin final ser un proceso colaborativo entre el Equipo Editorial y los autores de los trabajos para alcanzar unas Descripciones de las reas de Conocimientos concisas, bien escritas y tiles. PUBLICACIN DEL COPYRIGHT Toda propiedad intelectual asociada a la Gua al Cuerpo de Conocimiento de la Ingeniera del Software pertenecer al IEEE Computer Society. Los Editores Asociados a las reas de Conocimiento firmaran un formulario sobre la publicacin del copyright. Adems, la Gua al Cuerpo de Conocimiento de la Ingeniera del Software estar gratuitamente a disposicin del pblico por parte del IEEE Computer Society en un sitio Web u otros medios. Para ms informacin, consltese: http://www.computer.org/copyright.htm

Se espera que las Descripciones de las reas de Conocimiento sigan la gua de estilo del IEEE Computer Society. Ver: http://www.computer.org/author/style/cs-style.htm El formato preferido para la presentacin del trabajo es Microsoft Word. Por favor, contctese al equipo editorial si esto no es posible. OTRAS GUAS DETALLADAS Cuando se referencie la gua, recomendamos que se use el ttulo completo Gua al SWEBOK en lugar de SWEBOK. Por simplicidad, recomendamos a los editores asociados de las reas de Conocimiento que no se usen pies de pgina. Deberan de intentar incluir su contenido en el cuerpo principal del documento. Recomendamos usar en el texto referencias explicitas a estndares en lugar de insertar los nmeros que referencian a la bibliografa. Creemos que permiten al lector una mejor exposicin a la fuente y mbito del estndar. El texto acompaando las figuras y tablas debera de ser autocontenido o tener suficiente texto. Esto permite al lector saber lo que significan las lecturas y tablas. Asegrese de usar informacin correcta (actual) en las referencias (versiones, ttulos, etc.)

APNDICE B EVOLUCIN DE LA GUA DEL CUERPO DE CONOCIMIENTO DE LA


INGENIERA DEL SOFTWARE
INTRODUCCIN Aunque la Gua al Cuerpo de Conocimiento de la Ingeniera del Software es un hito al haber alcanzado un amplio consenso en el contenido de la disciplina de la ingeniera del software, no es final del proceso. La Gua del 2004, es simplemente la presente edicin de la Gua que continuara evolucionando para alcanzar las necesidades de la comunidad de la ingeniera del software. La planificacin de su evolucin no se ha completado todava, pero en esta seccin se proporciona un borrador. A la hora de escribir esto, el proceso ha sido endorsado por el Comit Ejecutivo Profesional y comunicado a la Junta de Gobierno del IEEE Computer Society, pero ha sido ni financiado ni implementado. STAKEHOLDERS La amplia adopcin del SWEBOK ha generado una amplia comunidad de personas involucradas a parte de IEEE Computer Society. Existen un nmero de proyectos dentro y fuera del IEEE Computer Society que estn coordinando sus esfuerzos basndose su contenido en la Gua del SWEBOK. Varias empresas, incluyendo alguna de los miembros del Comit Ejecutivo Profesional, han adoptado la Gua para sus programas internos de educacin. En un sentido ms amplio, la comunidad de profesionales de la ingeniera del software y la comunidad de acadmicos prestan atencin a la Gua del SWEBOK ayudando a definir el mbito de sus esfuerzos. Un notable grupo de certificacin del IEEE Computer Society Certified Software Development Professional (CSDP) por que el contenido del examen CSDP est completamente alineado con los contenidos de la Gua del SWEBOK. Actualmente, el IEEE Computer Society y otras organizaciones estn llevando a cabo un nmero de proyectos que dependen de la evolucin de la Gua del SWEBOK: El examen CSDP, inicialmente desarrollado en paralelo con la Gua del SWEBOK, evolucionar muy cercano al SWEBOK tanto en su alcance6 como en sus materiales de referencia. El plan de estudios para ingenieros del software para la educacin a distancia del IEEE Computer Society tendr el mismo alcance y material de referencia. Aunque los objetivos de la educacin de grado difieren de los del desarrollo profesional, la unin de la ACM e IEEE-CS para el desarrollo de planes de estudio de grado son bastante consistes con el alcance de la Gua del SWEBOK. El IEEE-CS Software Engineering Standards Committee (SESC) ha organizado su coleccin de estndares siguiendo las reas de Conocimiento del SWEBOK, y el IEEE Standards Association ha publicado un CD-ROM que ya refleja esta organizacin. ISO/IEC JTC1/SC7, la organizacin internacional de estndares para ingeniera de sistemas e ingeniera software, est adoptando la Gua del SWEBOK como ISO/IEC Technical Report 19759 y armonizando su coleccin con los del IEEE. El IEEE Computer Society Press, en cooperacin con el SESC, est desarrollando una serie de libros basndose en los estndares de la ingeniera del software y de Gua del SWEBOK. El portal de Ingeniera del Software del IEEE Computer Society (SE Online) ser organizado por las reas de Conocimiento de la Gua del SWEBOK. El Prueba de Uso de la Gua del SWEBOK ha sido traducido al Japons. Se anticipa que la Versin 2004 sea tambin traducida al Japons, Chino y posiblemente otros lenguajes.

EL PROCESO DE EVOLUCIN Obviamente, un proceso como de este calibre debe evolucionar de manera abierta, consensuada, deliberada y transparente tal que otros proyectos puedan sucesivamente coordinar sus esfuerzos. La estrategia actualmente planificada es planificar la evolucin siguiendo intervalos de tiempo especficos. De esta manera se permite al SWEBOK y proyectos coordinados revisiones que converjan en una fecha determinada. El intervalo planificado es de cuatro aos. Al comienzo del intervalo, consultando los proyectos coordinados, se determinara un plan para los cuatro aos. Durante el primer ao, tambin se determinaran cambios

El CSDP aade una nueva rea de Conocimiento, Practicas de Negocio e Ingeniera Econmica, a las 10 reas de Conocimiento de la Gua del SWEBOK.

estructurales a la Gua del SWEBOK, (por ejemplo, cambios en el nmero de reas de Conocimiento). Durante el segundo y tercer aos, la seleccin y tratamiento de los temas dentro del rea de Conocimiento sern revisados. Durante el cuarto ao, el texto de las descripciones de rea de Conocimiento ser revisado y se seleccionaran referencias actualizadas. El proyecto ser gestionado por un comit de voluntarios del IEEE Computer Society y representantes de proyectos coordinados. El comit sera responsable de los planes globales, coordinar todos los grupos interesados en el proyecto, y la recomendacin sobre la aprobacin de la versin final. El comit ser aconsejado por el SWEBOK Advisory Committee (SWAC) compuesto por los grupos que han adoptado la Gua del SWEBOK. En el pasado, la financiacin por parte de la empresa nos ha permitido que el Gua del SWEBOK est disponible gratuitamente en la Web. Futura financiacin nos permitir continuar esta prctica. Cada uno de los cuatro aos incluir un ciclo de workshops, borrador, votacin y resolucin de la votacin. Un ciclo anual puede contener las siguientes actividades: Un workshop, que organizado asociado a un congreso, especificara temas a tratar para el siguiente ao, priorizar asuntos a tratar, recomendar como abordar los asuntos a tratar y nominar a quienes llevarn a cabo dicha tarea. Cada grupo haciendo borradores escribir y modificar la descripcin de un rea de Conocimiento utilizando las recomendaciones de los workshops y referencias disponibles. En el ltimo ao disponible las personas encargadas de los borradores recomendarn referencias actualizadas para su cita en la gua del SWEBOK. Tambin se encargarn de modificar los borradores de acuerdo a las recomendaciones recibidas. Cada ciclo anual incluir votaciones en las revisiones. Los votantes revisarn los borradores de las descripciones de las reas de conocimiento y referencias recomendadas. La votacin ser abierta a los miembros de la Computer Society y otros participantes cualificados (los que no sean miembros tendrn que pagar para sufragar los gastos de la votacin). Los que tengan el certificado CSDP sern particularmente bienvenidos como miembros de las votaciones o como voluntarios en otros roles. Un Comit de Resolucin de las Votaciones ser seleccionado por el comit de gestin para servir como intermediarios entre los encargados de los borradores y los votantes. Su trabajo es determinar el consenso para los cambios pedidos por el grupo de votantes y asegurar que se implementan los cambios necesarios. En algunos casos, Comit de Resolucin de las Votaciones puede proponer preguntas a los votantes y usar sus respuestas para guiar las revisiones de los borradores. El objetivo de cada ao es alcanzar consenso entre el grupo de votantes en las reas de

Conocimiento revisadas o nuevas y alcanzar la aprobacin de los votantes. Aunque la gua del SWEBOK no ser cambiada hasta el final del ciclo, el material aprobado en cada ciclo anual se har disponible gratuitamente. Al final del ciclo, el producto completo, SWEBOK Guide 2008, ser revisado y aprobado para su publicacin por el Panel de Gobierno de la Computer Society. Si se consigue soporte financiero, el producto estar disponible gratuitamente en la Web. CAMBIOS ANTICIPADOS Ntese que la Gua del SWEBOK es un documento conservador por varias razones. Primero, se limita a conocimiento caracterstico de la ingeniera del software; por lo tanto, la informacin de las disciplinas relacionadas (incluso aquellas que aquellas que se les aplica la ingeniera del software) son descartadas. Segundo, est desarrollada y aprobada por un proceso consensuado, por lo que no se almacena la informacin que no haya recibido una aceptacin general. Tercero, el conocimiento contemplado como especializado en dominios especficos es excluido. Finalmente y muy importante, la Gua contiene slo el conocimiento que es generalmente aceptado. A veces es necesario en la actualidad el uso de tcnicas de validacin para obtener una aceptacin general dentro de la comunidad. Este enfoque conservador es evidente en la actual Gua SWEBOK. Despus de 6 aos de trabajo, an contiene las 10 reas de Conocimiento. Una posible pregunta es si la seleccin de las reas de Conocimiento ser algn da alterada. El plan de evolucin contempla algunos criterios para aadir un rea de Conocimiento nuevo o para modificar el alcance de stas. En principio, el candidato debe ser ampliamente reconocido dentro y fuera de la comunidad de ingeniera del software como representacin de un rea distintiva de conocimiento y el conocimiento generalmente aceptado dentro del rea propuesta debe de estar suficientemente detallada y completa para ser tratada con el mismo mrito que aquellas que estn ya presentes en la Gua SWEBOK. En trmino operacionales, debe de estar lo menos posible acoplado el rea de Conocimiento propuesto de las reas ya existentes, y ese desacoplamiento debe de aadir un valor significante sobre la taxonoma del conocimiento provisto por la Gua. No obstante, simplemente por ser un rea transversal no tiene justificacin de ser tratada separadamente por separar, en muchos casos, simplemente genera un problema de solapamiento. En general, el crecimiento del nmero total de reas de Conocimiento tiende a ser evitado cuando hace que aumenten los esfuerzos de los lectores por encontrar la informacin deseada. Aadiendo un tpico a rea de Conocimiento es ms fcil. En principio, debe de estar madura (o, por lo menos, alcanzando la madurez rpidamente) y generalmente aceptada2. Los indicios para una aceptacin general pueden ser encontrados en muchos sitios, incluyendo currculos y estndares de ingeniera del software, y

ampliamente usado en libros de texto. Por supuesto, los temas se deben de ajustar a un nivel de licenciado con cuatro aos de experiencia3. Ese diseo incrementa el volumen de material referenciado en la Gua SWEBOK. La cantidad total de material debera estar diseado para un nivel de licenciado con cuatro aos de experiencia. Actualmente, el equipo editorial considera apropiado la cantidad de 5000 pginas como material de texto. Durante la evolucin de la Gua, deber ser necesario el administrar las listas de del material citado, por lo que las referencias son actualmente accesibles, abasteciendo una cobertura apropiada de las reas de Conocimiento, por medio de una considerada cantidad grande de material. Un ltimo tema es el rol que debe ser tomado por los usuarios de la Gua SWEBOK en su evolucin. El equipo editorial cree que la continuada publicacin de comentarios es el combustible para dirigir la evolucin de la Gua SWEBOK. Los comentarios publicados

incrementarn los temas a ser tratados por el taller anual, estableciendo el escenario para la revisin de la Gua SWEBOK. Nosotros esperamos proveer un foro pblico en lnea para comentar por cualquier miembro de la comunidad de ingeniera del software y que sirva como un punto para realizar actividades.

2. Para la definicin de generalmente aceptado, usamos el que utiliza IEEE, en la Adopcin de un Estndar PMI (Una Gua del Proyecto de la Administracin del Cuerpo del Conocimiento): Generalmente aceptado significa que el conocimiento y las prcticas descritas son aplicables a la mayora de los proyectos la mayor parte del tiempo, y hay un extendido consenso sobre su valor y utilidad. Esto no significa que el conocimiento y las prcticas deban de ser aplicadas de forma uniforme en todos los proyectos sin considerar si son apropiados. 3. Por supuesto, esta especificacin particular est indicada en trminos relevantes en US. En otros pases, puede ser indicada de forma diferente.

APNDICE C ASIGNACIN DE IEEE E ISO ESTNDARES A LAS REAS DE CONOCIMIENTO DEL SWEBOK
La siguiente tabla lista los estndares producidos por IEEE e ISO/IEC JTC1/SC7, al igual que otros estndares seleccionados de otras fuentes. Para cada estndar, se muestra su nmero y ttulo. Adems, la columna de descripcin se proporciona un resumen sacado del propio estndar o de otros materiales introductorios. Cada uno de los estndares se mapea a las reas de conocimiento del SWEBOK. En unos pocos casos como estndares de terminologa el estndar es aplicable a todas las reas de conocimiento; en estos casos aparece una X en cada columna. En la mayora de los casos, cada estndar se fuerza un rea primaria de conocimi ento marcada con una P y otras secundarias marcadas con S. La lista est ordenada por el nmero de estndar sin tener en cuenta su categora (IEEE, ISO, etc.)
Gestin en la Ingeniera del Software Procesos de la Ingeniera del Software Herramientas y Mtodos en la Ingeniera del Software

Nmero de estndar IEEE Std 610.121990 (R2002)

Nombre del estndar Glosario Estndar IEEE de la Terminologa de la Ingeniera del Software Estndar IEEE para los Planes de Aseguramiento de la Calidad del Software Estndar IEEE para los Planes de Gestin de la Configuracin del Software

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Calidad

Este estndar es un glosario de la terminologa de la ingeniera del software.

IEEE Std 730-2002

Este estndar especifica el formato y el contenido de los planes de aseguramiento de la calidad del software. Este estndar especifica el contenido de un plan de gestin de la configuracin de un software junto con los requisitos que especifican las actividades. Este estndar describe la forma y el contenido de un conjunto bsico de documentacin para la planificacin, ejecucin, y la presentacin de las pruebas del software. Este documento recomienda el contenido y caractersticas de una especificacin de requisitos del software. Esquemas de ejemplo son provistos.

IEEE Std 828-1998

IEEE Std 829-1998

Estndar IEEE de la Documentacin de Prueba del Software.

IEEE Std 830-1998

Recomendacin IEEE para la Prctica de la Especificacin de Requisitos del Software.

Nmero de estndar IEEE Std 982.11988

Nombre del estndar Estndar IEEE de Diccionario de Medidas para Producir Software Fiable.

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

IEEE Std 10081987 (R2003)

Estndar IEEE para las Pruebas Unitarias del Software

IEEE Std 10121998 and 1012a1998

Estndar IEEE para la Validacin y Verificacin del Software

Este estndar provee un conjunto de medidas para evaluar la fiabilidad de un producto software y para obtener fiabilidad de un producto en desarrollo. Este estndar describe con cierta aproximacin las pruebas unitarias del software, as como los conceptos y supuestos en los cuales estn basadas. Tambin provee Fuentes de informacin y una gua. Este estndar describe los procesos de verificacin y validacin que son utilizados para determinar si un producto software de una actividad tiene en cuenta todos los requisitos deseados y para determinar si el software satisface las necesidades del cliente. El mbito incluye anlisis, evaluacin, revisin, inspeccin, evaluacin de los resultados y prueba de los productos y procesos. Este documento recomienda el contenido y la organizacin de una descripcin del diseo de un software. Este estndar define 5 tipos de revisiones del software y los procesos para su ejecucin. Los tipos de revisin incluyen gestiones de las revisiones, revisiones tcnicas, inspecciones, visitas guiadas y auditoras.

IEEE Std 10161998

Prctica IEEE Recomendada para las Descripciones del Diseo del Software

IEEE Std 10281997 (R2002)

Estndar IEEE para la Revisin del Software

Nmero de estndar

Nombre del estndar

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

IEEE Std 10441993 (R2002)

Estndar IEEE para la Clasificacin de Anomalas del Software.

IEEE Std 10451992 (R2002)

Estndar IEEE para las Mtricas de Productividad del Software.

Este estndar provee una aproximacin uniforme de la clasificacin de las anomalas encontradas en el software y su documentacin. Incluye listas de ayuda para la clasificacin de las anomalas de de la informacin relacionada. Este estndar provee una terminologa consistente para medir la productividad del software y define la forma correcta de medir los elementos que involucrados en la productividad del software. Este estndar describe el formato y el contenido de un plan de gestin de un proyecto software. Este estndar describe la metodologa (abarcando todo el ciclo de vida) para establecer los requisitos de calidad, y para identificar, implementar y validar las medidas correspondientes. Este documento recomienda un conjunto de tiles prcticas que pueden ser seleccionadas y aplicadas durante la adquisicin del software. Esto se ajusta a la adquisicin que incluye desarrollo o modificacin ms que a la propia compra en s.

IEEE Std 10581998

Estndar IEEE para la Planificacin de la Gestin de un Proyecto Software Estndar IEEE para la Metodologa de las Mtricas de Calidad del Software

IEEE Std 10611998

IEEE Std 1062, Edicin 1998

Prctica IEEE recomendada para la Adquisicin del Software

Nmero de estndar IEEE Std 10632001

Nombre del estndar Estndar IEEE para la Documentacin de Usuario del Software

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

IEEE Std 10741997

IEEE Std 1175.12002

Estndar IEEE para el Proceso del Ciclo de Vida del Desarrollo. Gua IEEE para la Interconexin de Herramientas CASE. Clasificacin y Descripcin.

Este estndar provee el mnimo de requisitos para la estructura, contenido, y formato de la documentacin de usuario (ambos impresos y de forma electrnica). Este estndar describe una aproximacin para definicin del proceso del ciclo de vida del software. Este estndar es el primero de las series planeadas de los estndares de integracin de herramientas CASE dentro del entorno de produccin de ingeniera del software. Esta parte describe conceptos fundamentales e introduce el resto de las partes. Este estndar describe un proceso para el mantenimiento del software y su gestin. Este estndar describe las actividades de ingeniera de sistemas y el proceso requerido en todo el ciclo de vida del sistema para el desarrollo de sistemas que permitan conocer las necesidades, requisitos de los clientes, y sus lmites. Este estndar describe el mnimo contenido de un plan para aspectos del software tales como el desarrollo, obtencin, mantenimiento, y la retirada de un sistema crtico-seguro.

IEEE Std 12191998 IEEE Std 12201998

Estndar IEEE para el Mantenimiento del Software. Estndar IEEE para la Aplicacin y Gestin de Procesos de Ingeniera de Sistemas.

IEEE Std 12281994

Estndar IEEE para Planes Seguros del Software.

Nmero de estndar IEEE Std 1233, Edicin 1998

Nombre del estndar Gua IEEE para el Desarrollo de los Requisitos del Software.

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

Este documento provee una gua en el desarrollo de una especificacin de requisitos del software, cubriendo la identificacin, organizacin, presentacin, y la modificacin de requisitos. Tambin provee una gua de las cualidades y caractersticas de los requisitos. Este estndar define el lenguaje de modelado IDEF0 usado para representar decisiones, acciones, y actividades de una organizacin o sistema. IDEF0 puede ser usado para definir los requisitos en trminos de funciones para ser presentadas en el sistema deseado Este estndar define dos lenguajes de modelado conceptual, llamado generalmente IDEF1X97 (IDEFObject). El lenguaje soporta la implementacin de bases de datos relacionales, de objetos, y modelos de objetos. Este documento provee la gua del formato y contenido de un documento de Concepto de Operaciones (ConOps), describiendo las caractersticas de un sistema propuesto desde un punto de vista del usuario.

IEEE Std 1320.11998

Estndar IEEE para el Lenguaje de Modelado Funcional Sintaxis y Semntica para IDEF0.

IEEE Std 1320.21998

IEEE Std 13621998

Estndar IEEE para el Modelado Conceptual Sintaxis y Semntica del Lenguaje para IDEF1X 97 (IDEFobject) Gua IEEE para Informacin Tecnolgica Definicin del Sistema Documento de Concepto de Operaciones (ConOps)

Nmero de estndar IEEE Std 1420.11995, 1420.1a1996, y 1420.1b1999 (R2002)

Nombre del estndar Estndar IEEE para Informacin Tecnolgica Reutilizacin del Software Modelo de Datos para la Interoperabilidad de las Libreras de Reutilizacin Estndar IEEE Adopcin del Estndar Internacional ISO/IEC 14102:1995 Informacin Tecnolgica Gua para la Evaluacin y la Seleccin de Herramientas CASE. Estndar IEEE, Adopcin del Estndar Internacional ISO/IEC 12119:1994(E), Informacin Tecnolgica Paquete Software Requisitos de Calidad y de prueba.

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

Este estndar y sus suplementos describen informacin que las libreras de reutilizacin del software deben ser capaces de cambiar segn activos de intercambio.

IEEE Std 14621998 // ISO/IEC 14102:19 95

Este estndar provee los pasos para la evaluacin y seleccin de las herramientas CASE.

IEEE Std 14651998 // ISO/IEC 12119

Este estndar describe la calidad de los requisitos que se ajustan especficamente a los paquetes software y a la gua de pruebas de los paquetes contra los requisitos.

Nmero de estndar IEEE Std 14712000

Nombre del estndar Recomendacin Prctica IEEE para la Descripcin Arquitectnica de Sistemas Intensivos de Software. Gua IEEE Adopcin del Estndar PMI Una Gua para el Cuerpo de la Gestin del Proyecto del Conocimiento. Estndar IEEE para la Informacin Tecnolgica Procesos del Ciclo de Vida del Software Reutilizacin de Procesos Estndar IEEE para los Procesos del Ciclo de Vida del Software Gestin de problemas

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software P

Calidad

Este documento recomienda un marco conceptual y contenido para la descripcin arquitectnica de sistemas intensivos de software.

IEEE Std 14901998

Este documento es la adopcin IEEE del Cuerpo de la Gestin del Proyecto de Conocimiento definido por el Instituto de Gestin del Proyecto. Identifica y describe al conocimiento generalmente aceptado con lo que concierne a la gestin del proyecto. Este estndar provee el ciclo de vida de los procesos para la reutilizacin sistemtica del software. Los procesos son idneos para ser utilizados con IEEE/EIA 12207.

IEEE Std 15171999

IEEE Std 15402001 // ISO/IEC 16085:20 03

Este estndar provee un proceso de ciclo de vida para gestionar problemas del software. El proceso es idneo para ser usado con IEEE/EIA 12207.

Nmero de estndar IEEE Std 20012002

Nombre del estndar Prctica IEEE Recomendada para Internet Ingeniera, gestin y ciclo de vida del Sitio Web Sistemas de Gestin de Calidad Requisitos

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

Este documento recomienda prcticas para la ingeniera de las pginas WWW para usar entornos de redes internas y externas.

ISO 9001: 2000

Este estndar especifica los requisitos para un sistema de gestin de calidad organizacional, consiguiendo proveer requisitos de los productos y mejorar la satisfaccin del usuario.

ISO/IEC 91261:2001

Ingeniera del Software Calidad del Producto Parte 1: Modelo de calidad

Este estndar provee un modelo para la calidad del producto software cubriendo la calidad interna, externa y la calidad en uso. El modelo tiene una taxonoma de las caractersticas definidas que el software debe exhibir. Este estndar provee una marca de procesos usado en todo el ciclo de vida del software.

IEEE/EI A 12207.01996 // ISO/IEC 12207: 1995

Implementacin Industrial del Estndar Internacional ISO/IEC 12207:1995, Estndar para la Informacin Tecnolgica Procesos del Ciclo de Vida del Software

Nmero de estndar IEEE/EI A 12207.1 1996

Nombre del estndar Implementacin Industrial del Estndar Internacional ISO/IEC 12207:1995, Estndar para la Informacin Tecnolgica Procesos del Ciclo de Vida del Software Ciclo de vida de la Informacin Implementacin Industrial del Estndar Internacional ISO/IEC 12207:1995, Estndar para la Informacin Tecnolgica Procesos del Ciclo de Vida del Software Consideraciones en la Implementacin Adopcin IEEE de ISO/IEC 14143-1:1998 Informacin Tecnolgica Medida del Software Medida del Tamao Funcional
Parte 1: Definicin de Conceptos

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

Este documento provee una gua para registrar informacin resultante de los procesos del ciclo de vida de IEEE/EIA 12207.0.

IEEE/EI A 12207.21997

Este documento provee una gua adicional para la implementacin del ciclo de vida de los procesos de IEEE/EIA 12207.0.

IEEE Std 14143.12000 // ISO/IEC 141431:1998

Este estndar describe los conceptos fundamentales de una clase de medida colectiva conocida como tamao funcional.

Nmero de estndar ISO/IEC TR 14471:19 99

Nombre del estndar Informacin Tecnolgica Ingeniera del Software Guas para la Adopcin de herramientas CASE Informacin Tecnolgica Evaluacin del producto Software

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

Este documento provee una gua que establece los procesos y actividades que pueden ser utilizadas en la adopcin de la tecnologa CASE.

ISO/IEC 14598 (Seis partes)

ISO/IEC 14764:19 99

Informacin Tecnolgica Mantenimiento del Software

La serie ISO/IEC 14598 da una visin de los procesos de evaluacin del producto software y nos ofrece una gua y los requisitos necesarios para la evaluacin organizacional o del nivel del proyecto. Los estndares nos ofrecen mtodos de medida, valoracin y evaluacin. Este estndar da ms detalle del proceso de mantenimiento ofrecido por ISO/IEC 12207. Provee una gua de implementacin de los requisitos de ese proceso.

ISO/IEC 15026:19 98

Informacin Tecnolgica Niveles de Integridad del Software y del Sistema

Este Estndar Internacional introduce los conceptos de los niveles y requisitos de integridad del software. Define los conceptos asociados con los niveles de integridad, define los procesos para determinar los niveles de integridad y los requisitos de integridad software, y establece los requisitos en cada proceso.

Nmero de estndar

Nombre del estndar Informacin Tecnolgica Gua para ISO/IEC 12207 (Procesos del Ciclo de Vida del Software) Ingeniera de Sistemas Procesos del Ciclo de Vida del Sistema

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

ISO/IEC TR 15271:19 98

Este documento es una gua para el uso de ISO/IEC 12207.

ISO/IEC 15288:20 02 ISO/IEC TR 15504 (9 partes) y la Preparaci n de IS 15504 (5 partes) ISO/IEC 15939:20 02

Este estndar nos ofrece en marco de procesos usados a lo largo del ciclo de vida de los sistemas hechos por el hombre. Este documento tcnico (ahora est siendo revisado como un estndar) nos ofrece los requisitos para los mtodos que nos permiten valorar los procesos para mejorar los procesos o la capacidad de determinacin. Este estndar nos ofrece un proceso de ciclo de vida para la medicin de software. El proceso se ajusta para ser usado con IEEE/EIA 12207. Este estndar describe el Mtodo de Medicin de Tamao Funcional COSMIC-FFP, un mtodo de medicin de tamao funcional conforme a los requisitos de ISO/IEC 14143-1.

Ingeniera del Software Proceso de Valoracin

ISO/IEC 19761:20 03

ISO/IEC 20926:20 03

Ingeniera del Software Proceso de Medida del Software Ingeniera del Software COSMIC-FFP Mtodo de medicin del tamao funcional. Ingeniera del Software IFPUG 4.1 Mtodo de medida del tamao funcional desajustado Manual de Prcticas de Cmputo

Este estndar describe el Cmputo de Puntos de Funcin Desajustado de IFPUG 4.1, un mtodo que mide el tamao funcional conforme a los requisitos de ISO/IEC 14143-1.

Nmero de estndar ISO/IEC 20968:20 02

Nombre del estndar Ingeniera del Software Anlisis de Puntos de Funcin Mk II Manual de Prcticas de Cmputo Ingeniera del Software y Sistemas Pasos para la Aplicacin de ISO 9001:2000 al Software del Ordenador

Descripcin

Requisitos del Software

Diseo del Software

Construccin del Software

Pruebas del Software

Mantenimiento del Software

Gestin de la configuracin del Software

Gestin en la Ingeniera del Software

Procesos de la Ingeniera del Software

Herramientas y Mtodos en la Ingeniera del Software

Calidad

Este estndar describe el Anlisis de Puntos de Funcin Mk II, un mtodo de medicin del tamao funcional conforme a los requisitos de ISO/IEC 14143-1.

ISO/IEC 90003

Este estndar provee una serie de pasos para la organizacin en la aplicacin de ISO 9001:2000 para la adquisicin, suministro, desarrollo, operacin, y mantenimiento del software del ordenador.

APNDICE D CLASIFICACIN DE CONTENIDOS ACORDE A LA TAXONOMA DE BLOOM


INTRODUCCIN

La taxonoma de Bloom1 es una clasificacin de fines educativos cognitivos ampliamente conocidos y usados. Atendiendo a la ayuda de las personas que desean usar la Gua como herramienta en la definicin del material usado en el curso, currculo universitario, criterios de acreditacin en el programa universitario, descripcin de trabajos, como rol descriptivo dentro un proceso de definicin de ingeniera del software, programa de prueba profesional y va de desarrollo profesional, y otras necesidades, que los niveles de la taxonoma de Bloom para los tpicos de la Gua SWEBOK son propuestos en este apndice para graduados en ingeniera del software con unos cuatro aos de experiencia. Un graduado en ingeniera del software con al menos cuatro aos de experiencia es en esencia el objetivo fijado en la Gua SWEBOK por el cual es aceptable el conocimiento contenido en dicha gua (Lea la Introduccin de la Gua SWEBOK). Desde este Apndice slo se hace referencia a lo que puede ser considerado como conocimiento generalmente aceptado. Es muy importante recordar que la ingeniera del software debe ser aprendida de una manera ms sustancial que esta categora de conocimiento. Adems del conocimiento generalmente aceptado, un graduado de ingeniera del software con cuatro aos de experiencia debe de poseer algunos elementos de Disciplinas Relacionadas, como tambin algunos elementos de ciertos conocimientos especficos, avanzados, hasta la posibilidad de estudiar e investigar algunas materias (Mire la Introduccin de la Gua SWEBOK). Los siguientes supuestos son creados cuando se especificaron los niveles propuestos de la taxonoma.

por una por una ingeniera del software que trabaja en un grupo especfico, como puede ser un equipo de gestin de la configuracin del software. Obviamente, como ingeniera del software requiere o necesita alcanzar niveles muy altos en taxonoma en el rea especfica de su grupo. Un ingeniero del software con cuatro aos de experiencia est an en el principio de su carrera y le puede ser asignado la gestin de una seria de deberes, o por lo menos, unos mayores esfuerzos. Los tpicos relacionados con la Gestin no se les asigna prioridad en las evaluaciones propuestas. Por la misma razn, los niveles de la taxonoma tienden a ser menores para un temprano ciclo de vida de contenidos tales como los relacionados con los requisitos del software, ms que los contenidos de ndole tcnico dentro del diseo, construccin o prueba del software. Por lo tanto, las evaluaciones pueden ser adaptadas por ms ingenieros del software snior o por ingenieros del software especializados en ciertas reas de conocimiento, en el que no hay ningn contenido que d un mayor nivel de taxonoma que el Anlisis. ste es consistente con la aproximacin dada en la SEEK (Software Engineering Education Bosy of Knowledge), donde no hay ningn contenido asignado de mayor nivel de taxonoma que Aplicacin2. El propsito de SEEK es definir un cuerpo de educacin de ingeniera del software de conocimiento apropiado para guiar el desarrollo del currculum de un estudiante universitario de ingeniera del software. Aunque notablemente distinto en trminos de alcance, SEEK y la Gua SWEBOK son muy parecidos.3

Las evaluaciones son propuestas por una ingeniera del software generalista y no

La taxonoma de Bloom del Dominio Cognitivo propuesto en 1956 tiene seis niveles. La tabla 1 4 presenta estos niveles y las palabras claves asociadas con cada nivel.

1. B. Bloom (ed.), Taxonoma de los Objetivos Educativos: La Clasificacin de las Metas Educativas, Mackay, 1956.

2. Mire la Fuerza de la Tarea Conjunta en el Currculum de Cmputo Sociedad Computacional IEEE / Asociacin para la Maquinaria Computacional, Currculum de Cmputo Volumen de Ingeniera del Software Borrador pblico 1 Ingeniera del Software de Currculum Computacional, 2003: http://sites.computer.org/ccse/. 3. Mire P.Bourque, F. Robert, J. M. Lavoie, A. Lee, S. Trudel, T. Lethbridge, Gua para el Conocimiento del Cuerpo de la Educacin de la Ingeniera del Software (SEEK) Un Mapeo Preliminar. Taller de Tecnologa del Software y Conferencia de la Prctica de la Ingeniera (STEP 2002), 2002, pp. 8-35. 4. Tabla adaptada de http://www.nwlink.com/~donclark/hrd/bloom.html.

Tabla 1 Taxonoma de Bloom


Nivel de Taxonoma de Bloom Conocimiento: Almacenamiento de la informacin Comprensin: Entender el significado, traduccin, interpolacin e interpretacin de las instrucciones y problemas; plantea un problema en una de las propias palabras. Aplicacin: Utiliza un concepto en una nueva situacin o usa una abstraccin espontnea; aplica lo que fue aprendido en la clase en situaciones novedosas en el lugar del trabajo. Anlisis: Separa material o conceptos en partes que su estructura organizacional puede ser comprendida; distingue entre hechos e interferencias. Sntesis: Crea una estructura o prototipo de una serie de diversos elementos; une partes para crear un conjunto, con nfasis en la creacin de una nueva estructura o significado. Evaluacin: Hace un juicio sobre el valor de las ideas o materiales. Palabras claves asociadas Define, describe, identifica, conoce, etiqueta, listas, ajustes, nombres, esquemas, memorias, reconocimiento, reproduce, selecciona, estados Comprende, convierte, defiende, distingue, estima, explica, prolonga, generaliza, da ejemplos, deduce, interpreta, ilustra, predice, reescribe, resume, traduce. Aplica, cambia, computa, construye, demuestra, descubre, manipula, modifica, opera, predice, prepara, muestra, resuelve y usa. Analiza, descompone, compara, contrasta, diagramas, destruye, diferencia, discrimina, distingue, identifica, ilustra, infiere, esquematiza, relata, selecciona, separa. Categoriza, combina, compila, compone, crea, idea, disea, explica, genera, modifica, organiza, planifica, cambia de lugar, reestructura, relata, reorganiza, revisa, reescribe, resume, cuenta, escribe. Tasa, compa, concluye, contrasta, critica, defiende, describe, discrimina, evala, explica, interpreta, justifica, relata, resume, acepta.

La separacin de contenidos en las tablas no coincide perfectamente con la separacin de las reas de Conocimiento. La evaluacin para este Apndice fue preparado mientras algunos comentarios an llegaban. Finalmente, mantn por favor en tu mente que la evaluacin de este Apndice debe ser visto definitivamente como una propuesta para ser desarrollada y validada.

REQUISITOS DEL SOFTWARE5


Nivel de taxonoma

DISEO SOFTWARE
Nivel de taxonoma

Separacin Desglose de de contenidos contenidos

Desglose de contenidos

1. Requisitos fundamentales del software Definicin de requisitos del software C Requisitos del producto y proceso C Requisitos funcionales y no funcionales C Propiedades emergentes C Requisitos cuantificables C Requisitos del software y del sistema C 2. Requisitos del proceso Modelos del proceso C Actores del proceso C Gestin y soporte del proceso C Calidad y mejora del proceso C 3. Obtencin de requisitos Fuentes de los requisitos C Tcnicas de obtencin AP 4. Requisitos de anlisis Clasificacin de los requisitos AP Modelo conceptual AN Diseo arquitectnico y requisitos de AN cuota Requisitos de negociacin AP 5. Especificacin de requisitos Documento de definicin del sistema C Especificacin de los requisitos del C sistema Especificacin de los requisitos del AP software 6. Especificacin de requisitos Anlisis de requisitos AP Prototipado AP Validacin del modelo C Test de aceptacin AP 7. Especificacin de requisitos Naturaleza iterativa de los requisitos del C proceso Gestin de cambio AP Atributos de los requisitos C Localizacin de requisitos AP Requisitos de medida AP
5. K: Conocimiento, C: Comprensin, AP: Aplicacin, AN: Anlisis, E: Evaluacin, S: Sntesis.

1. Especificacin de requisitos Conceptos generales de diseo C Contexto del diseo software C Proceso del diseo software C Tcnicas de habilitacin AN 2. Temas clave en el diseo software Concurrencia AP Manejo y control de eventos AP Distribucin de componentes AP Manejo de errores y excepciones y falta AP de tolerancia Interaccin y presentacin AP Persistencia de los datos AP 3. Estructura y arquitectura del software Estructuras y puntos de vistas de la AP arquitectura Estilos de arquitectura (Patrones de AN arquitectura) Patrones de diseo (Patrones de AN arquitectura) Familias de programas y de marcos de C trabajo 4. Anlisis y evaluacin de la calidad del diseo software Atributos de calidad C Tcnicas de anlisis y evaluacin de la AN calidad Medidas C 5. Notaciones de diseo del software Descripciones estructurales (Esttico) AP Descripciones del comportamiento AP (Dinmico) 6. Mtodos y estrategias del diseo del software Estrategias generales AN Diseo orientado a funciones AP (Estructurado) Diseo orientado a objetos AN Diseo centrado en la estructura de C datos Diseo basado en componentes (CBC) C Otros mtodos C

CONSTRUCCIN DEL SOFTWARE


Nivel de taxonoma

PRUEBAS DEL SOFTWARE

Desglose de contenidos
1. Fundamentos de la construccin del software Minimizacin de la complejidad Anticipacin al cambio Construyendo para verificar Estndares en la construccin 2. Gestin de la construccin Mtodos de construccin Plan de construccin Medidas de construccin 3. Consideraciones prcticas Fuentes de los requisitos Tcnicas de obtencin 4. Requisitos de anlisis Diseo de la construccin Lenguajes de la construccin Codificacin Pruebas de la construccin Calidad de la construccin Integracin

Desglose de contenidos

AN AN AN AP C AP AP C AP AN AP AN AP AN AP

1. Fundamentos de las pruebas del software Terminologa relacionada con las C pruebas Contenidos claves AP Relacin de las pruebas con otras C actividades 2. Niveles de pruebas El objetivo de las pruebas AP Los fines de probar AP 3. Tcnicas de pruebas Basado en la intuicin y experiencia del AP probador Basados en la especificacin AP Basados en el cdigo AP Basados en los fallos AP Basados en el uso AP Basados en la naturaleza de la AP aplicacin Seleccionando y combinando tcnicas AP 4. Medidas relacionadas con las pruebas Evaluacin de un programa bajo AN pruebas Evaluacin de las pruebas desarrolladas AN 5. Proceso de prueba Lo que la gestin incumbe C Actividades de las pruebas AP

Nivel de taxonoma

MANTENIMIENTO DEL SOFTWARE

GESTIN DE LA CONFIGURACIN DEL SOFTWARE


Nivel de taxonoma Nivel de taxonoma

Desglose de contenidos

Desglose de contenidos
1. Gestin de los procesos SCM
Contexto organizacional para SCM Restricciones y gua para SCM Planificacin para SCM Organizacin y responsabilidades SCM Esquemas y recursos SCM Seleccin de herramientas e implementacin Control del vendedor/subcontratista Control de la interface Plan de gestin de la configuracin del software Gestin de la configuracin de la vigilancia del software Medicin y medidas SCM Auditoras de SCM

1. Fundamentos del mantenimiento del software Definiciones y terminologa C Naturaleza del mantenimiento C Necesidad del mantenimiento C Mayora de los costes del C mantenimiento Evolucin del software C Categoras del mantenimiento AP 2. Contenidos claves en el mantenimiento del software Tcnico C Comprensin limitada AP Pruebas AN Anlisis de impacto AN Mantenibilidad Temas de gestin C Alineacin con asuntos organizacionales C Personas C Asuntos de procesos C Organizacional Estimacin del coste de mantenimiento AP Estimacin del coste C Modelos parametrizados AP Experiencia Medida del mantenimiento del software AP 3. Proceso de mantenimiento Modelos de procesos de mantenimiento C Actividades de mantenimiento AP Actividades de unicidad AP Actividades de soporte 4. Tcnicas para el mantenimiento Comprensin del programa AN Reingeniera C Ingeniera inversa C

C C AP AP AP C C C

AP C

2. Identificacin de la configuracin del software


Identificacin de los elementos a ser controlados Configuracin del software Elementos de la configuracin del software Relaciones de los elementos de la configuracin del software Versiones del software Lnea base Elementos de la configuracin de la adquisicin del software Librera software Solicitacin, evaluacin y aprobacin de los cambios software Tabla de control de la configuracin del software Proceso de peticin del cambio software Implementacin de los cambios software Desviaciones y renuncias AP AP AP AP AP AP C

3. Control de la configuracin del software


AP AP AP C

4. Informe del estado de la configuracin software


Informacin del estado de la configuracin del software Reporte del estado de la configuracin del software Auditora de la configuracin funcional del software Auditora de la configuracin fsica del software Proceso de auditora de en la lnea base del software C AP

5. Auditora de la configuracin del software


C C C

5. Gestin de la salida al mercado y entrega del software Construccin del software AP Gestin de la venta al mercado del software

GESTIN DE LA INGENIERA DEL SOFTWARE


Nivel de taxonoma

PROCESO DE INGENIERA DEL SOFTWARE


Nivel de taxonoma

Desglose de contenidos

Desglose de contenidos

1. Iniciacin y alcance de la definicin Determinacin y negociacin de los AP requisitos Anlisis de viabilidad AP Proceso para el anlisis y revisin del C software 2. Planificacin del proyecto software Proceso de planificacin C Determinacin de las entregas AP Esfuerzo, programa y estimacin de AP coste Asignacin de recursos AP Gestin de problemas AP Gestin de la calidad AP Plan de gestin C 3. Difusin del proyecto software Implementacin de planes AP Gestin del contrato de proveedores C Implementacin de procesos de AP medicin Proceso de monitoreo AN Proceso de control AP Informando AP 4. Revisin y evaluacin Determinacin de los requisitos de AP satisfaccin Revisin y evaluacin del rendimiento AP 5. Cierre Determinacin del cierre AP Actividades del cierre AP 6. Medicin de la ingeniera del software Establecimiento y mantenimiento de las C mediciones Plan para el proceso de medicin C Realizacin del proceso de medicin C Evaluacin de la medicin C

1. Proceso de implementacin y cambio Infraestructura del proceso C Grupo de procesos de ingeniera del software C Factora de experiencia Actividades AP Modelos para el proceso de K implementacin y cambio Consideraciones prcticas C 2. Definicin del proceso Modelos de ciclo de vida AP Procesos de ciclo de vida del software C Notaciones para las definiciones del C proceso Proceso de adaptacin C Automatizacin C 3. Valoracin del proceso Modelos de valoracin del proceso C Mtodos de valoracin del proceso C 4. Medicin del proceso y del producto Medicin del proceso software AP Medicin del producto software AP AP Medicin del tamao AP Medicin de la estructura AP Medicin de la calidad Resultados de las mediciones de la AN calidad Modelos de informacin del software AP Modelo de construccin AP Modelo de implementacin Tcnicas de medicin Tcnicas analticas AP Tcnicas de punto de referencia C

MTODOS Y HERRAMIENTAS DE INGENIERA DEL SOFTWARE


Nivel de taxonoma

CALIDAD DEL SOFTWARE

Desglose de contenidos
1. Herramientas software Herramientas de requisitos del software Herramientas de diseo del software Herramientas de construccin del software Herramientas de pruebas del software Herramientas de mantenimiento del software Herramientas del proceso de ingeniera del software Herramientas de calidad del software Herramientas de gestin de la configuracin del software Herramientas de gestin de la ingeniera del software Herramientas para otros diversos asuntos 2. Mtodos de ingeniera del software Mtodos heursticos Notaciones y mtodos formales Mtodos de prototipado Mtodos para otros diversos asuntos

Desglose de contenidos

AP AP AP AP AP AP AP AP AP AP

AP C AP C

1. Fundamentos de la calidad del software tica y cultura de la ingeniera del AN software Valor y coste de la calidad AN Caractersticas y modelos de la calidad AN Calidad del proceso software AN Calidad del producto software Mejora de la calidad AP 2. Procesos de gestin de la calidad del software Aseguramiento de la calidad del AP software Verificacin y validacin AP Revisin y auditora AP Inspecciones AP Revisiones minuciosas AP Revisin de la funcionalidad, entradas y salidas del software AP Pruebas C Auditoras 3. Consideraciones prcticas Aplicacin de los requisitos de la calidad C Nivel de criticidad de los sistemas C Dependencia C Integridad de los niveles del software Caracterizacin imperfecta AP Tcnicas de gestin de la calidad del software AP Tcnicas estticas Tcnicas intensivas de personas AP AP Tcnicas analticas AP Tcnicas dinmicas Medicin de la calidad del software AP

Nivel de taxonoma