You are on page 1of 25

1.

- Introduccin a la Ingeniera del Software

Introduccin Ingeniera del Software Desarrollo del hardware


La aparicin de componentes que cada dos aos doblan la capacidad de sus antecesores [1] nos ha rodeado en menos de cuatro dcadas de mquinas capaces de procesar miles de millones de operaciones por segundo (MTOPS). En 1946 ENIAC ocupaba una superficie de 160 m2, pesaba 30 toneladas, y ofreca una capacidad de proceso de 30.000 instrucciones por segundo. En 2002 El microprocesador Pentium IV a 2 Ghz ocupa una superficie de 217 mm2 y tiene una capacidad de proceso de 5.300 MTOPS (Millions of theoretical operations per second) En la actualidad son cuatro los factores que imprimen un ritmo acelerado a la industria del hardware. De ellos, tres son consecuencia de la ley de Moore: Incremento constante de la capacidad de operacin, miniaturizacin y reduccin de costes para la produccin de hardware; y a stos se ha sumado en la ltima dcada el avance de las comunicaciones entre sistemas. La consecuencia es obvia: ordenadores potentes, que pueden llevarse en el bolsillo y en permanente conexin con grandes sistemas, redes de comunicacin pblicas, sistemas de localizacin GPS, etc. Estas cuatro lneas de avance han extendido el mbito de aplicacin del hardware, e incrementado al mismo ritmo exponencial la complejidad de los sistemas en los que se integra. Los ordenadores ya no son mquinas tiles slo para la banca o el ejrcito. Se encuentran presentes en todos los mbitos, por su capacidad de proceso y de comunicacin pueden ofrecer soluciones a sistemas cada vez ms complejos. Este es el escenario creado por la industria del hardware, y que en las tres ltimas dcadas ha implicado a los desarrolladores de software en retos a los que no han sabido responder con solvencia.
[1] Ley de Moore

Introduccin Ingeniera del Software Desarrollo del hardware


Desde 1965 la Ley de Moore rige la evolucin de los microprocesadores
100.000.000 Pentium IV Pentium III 10.000.000 Pentium 486 DX 1.000.000 386 286 100.000 8086 10.000 8080 4004 8008 1970 1975 1980 1985 1990 1995 2000 Pentium II

Factores que imprimen aceleracin al ritmo de crecimiento del hardware: Incremento de la capacidad de operacin. Consecuencias de la ley de Moore Incremento de la miniaturizacin. Reduccin de costes en la produccin. Comunicaciones entre sistemas

Transistores

Introduccin Ingeniera del Software Crisis de software


Proyectos para el desarrollo de sistemas de software
Fracaso 2004 2000 19% 23% 28% 40% Problemtico 53% 49% 46% 33% xito 29% 28% 26% 27%

1998
1995 1994

31%

53%

16%

El proyecto se aborta o el sistema no se llega a utilizar Desbordamiento de agendas o costes. Las funcionalidades no cubren las expectativas. Problemas funcionales Proyecto realizado en el tiempo previsto, con los costes previstos, con la funcionalidad esperada y ofreciendo un funcionamiento correcto.
Fuente: Standish Group Survey,

Introduccin Ingeniera del Software Crisis del software


Este problema se identific por primera vez en 1968, ao en el que la organizacin NATO desarroll la primera conferencia sobre desarrollo de software, y en la que se acuaron los trminos crisis del software para definir a los problemas que surgan en el desarrollo de sistemas de software, e ingeniera del software para describir el conjunto de conocimientos que existan en aquel estado inicial. Algunas referencias tiles para comprender cules eran los conocimientos estables para el desarrollo de software en 1968 son:

En 1962 se public el primer algoritmo para bsquedas binarias. C. Bhm y G. Jacopini publicaron en 1966 el documento que creaba una fundacin
eliminacin de GoTo y la creacin de la programacin estructurada.

para la

En 1968 los programadores se debatan entre el uso de la sentencia GoTo, y la nueva idea de programacin estructurada; ese era el caldo de cultivo en el que Edsger Dijkstra escribi su famosa carta GoTo Statement Considered Harmful en 1968. La primera publicacin sobre programacin estructurada no vio la luz hasta 1974, publicada por Larry Constantine, Glenford Myers y Wayne Stevens. El primer libro sobre mtrica de software fue publicado en 1977 por Tom Gilb. El primero sobre anlisis de requisitos apareci en 1979

Introduccin Ingeniera del Software Ingeniera del software


Definicin original: Establecimiento y uso de principios de ingeniera para obtener software econmico que trabaje de forma eficiente en mquinas reales.
Fritz Baver, 1968 (conferencia NATO)

Otras definiciones Disciplina para producir software de calidad desarrollado sobre las agendas y costes previstos y satisfaciendo los requisitos.
S. Schach 1990, Software Engineering

(1) La aplicacin de mtodos sistemticos, disciplinados y cuantificables para el desarrollo, operacin y mantenimiento de software; esto es, la aplicacin de la ingeniera al software. (2) El estudio de (1).
IEEE 1993

Introduccin Ingeniera del Software Ingeniera del software


Desde 1968 hasta la fecha han sido muchos los esfuerzos realizados por los departamentos de informtica de las universidades, y por organismos de estandarizacin (SEI, IEEE, ISO) para identificar las causas del problema y definir pautas estndar para la produccin y mantenimiento del software. Los esfuerzos se han encaminado en tres direcciones principales.

Identificacin de los factores clave que determinan la calidad del software. Identificacin de los procesos necesarios para producir y mantener software. Acotacin, estructuracin y desarrollo de la base de conocimiento necesaria para la produccin y mantenimiento de software.

El resultado ha sido la necesidad de profesionalizar el desarrollo, mantenimiento y operacin de los sistemas de software, introduciendo mtodos y formas de trabajo sistemticos, disciplinados y cuantificables. La forma de trabajo de programadores individuales surgida por la necesidad de los primeros programas, ha creado una cultura de la programacin heroica, para el desarrollo de software que es la principal causa de los problemas apuntados, y en la actualidad una de las principales resistencias a la implantacin de tcnicas de ingeniera para el desarrollo de sistemas

Introduccin Ingeniera del Software Estndares y modelos


La Ingeniera del Software es una ingeniera muy joven Definirse a s misma: Cules son las reas de que necesitaba: Definir los procesos que intervienen en el conocimiento que la comprenden? mantenimiento y operacin del de desarrollo, De las mejores prcticas, extraer modelos software ejecutar esos procesospara paralas evitar los de cmo Definir criterios unificadores tareas problemas de la crisis del software requisitos, pruebas, gestin de la configuracin, Los estndares son tiles porque: etc. Agrupan lo mejor y ms apropiado de las buenas prcticas y usos del desarrollo de software. Engloban los conocimientos. Proporcionan un marco para implementar

Introduccin Ingeniera del Software Principales organizaciones de estandarizacin


Desde la identificacin del fenmeno crisis del software, han sido muchas las organizaciones que han abordado, con mayor o menor rigor, el anlisis de problemas en el desarrollo de sistemas de software. Sus trabajos se han encaminado a la localizacin de las causas; y a la exposicin en textos didcticos, normativos o estndares de procesos o prcticas necesarias para abordar el desarrollo, mantenimiento y operacin con las mayores garantas de xito. Han sido muchos los departamentos de universidades, organismos de normalizacin o investigacin nacionales o internacionales, sociedades de profesionales, departamentos de defensa, departamentos de calidad y procesos de empresas los que han ido generando normas y estndares. Este compendio considera como entidades de mayor reconocimiento internacional, por sus trabajos y esfuerzos realizados para la normalizacin, y reconocimiento de la Ingeniera del software a: ISO, IEEE- Computer Society y SEI.

Introduccin Ingeniera del Software Principales organizaciones de estandarizacin


ISO
Organizacin Internacional para la Estandarizacin. Fundada en 1947 Son miembros 87 pases. En 1987 la Organizacin Internacional para la Estandarizacin (ISO) y la Comisin Internacional Electrotcnica (IEC), establecieron un Comit Internacional (JTC1) para las Tecnologas de la Informacin. La misin del JTC1 es la estandarizacin en el campo de campo de los sistemas de tecnologas de la informacin, incluyendo microprocesadores y equipos. Los estndares o instrucciones tcnicas ms importantes para la Ingeniera del Software:

SEI

ISO/IEC 12207 ISO/IEC TR 15504

Instituto de Ingeniera del software. (SEI http://www.sei.cmu.edu/). Integrado en la Universidad Carnegie Mellon. Los trabajos y aportaciones realizadas por el Instituto de Ingeniera del Software a la Ingeniera del software son tambin referente mundial de primer orden, siendo la aportacin ms significativa los modelos de madurez de las capacidades: CMM y CMMI; que en sus casi 15 aos de implantacin efectiva en entornos de produccin de software han demostrado su efectividad en las dos finalidades que cubren: como marco de referencia para mejora de procesos, y como criterio de evaluacin para determinar la madurez, y por tanto fiabilidad de resultados previsibles de una organizacin de software.

Introduccin Ingeniera del Software Principales organizaciones de estandarizacin


IEEE Computer Society
IEEE Es el Instituto de Ingenieros en electricidad y electrnica (Institute of Electrical and Electronics Engineers).
Su misin es preservar, investigar y promover la informacin de las tecnologas elctricas y electrnicas. Surgi en 1963 con la fusin del AIEE (Instituto Americano de Ingenieros Elctricos) y el Instituto de Ingenieros de Radio (IRE). La IEEE Computer Society (www.computer.org) es una sociedad integrada en IEEE, formada en la actualidad por ms de 100.000 miembros en todo el mundo. Su finalidad es avanzar en la teora, prctica y aplicacin de las tecnologas de la informacin. Realiza conferencias, publicaciones, cursos de formacin, y desarrolla estndares. Estndares para la Ingeniera del Software IEEE ha desarrollado estndares para todas las reas de Ingeniera del Software. Algunos de ellos, correspondientes a las principales reas especficas de la Ingeniera del Software son:

IEEE IEEE IEEE IEEE IEEE

Std. Std. Std. Std. Std.

830 Prcticas recomendadas para las especificaciones de software. 1362 Gua para la especificacin del documento de requisitos ConOps 1063 Estndar para la documentacin de usuario de software. 1012 Estndar para la verificacin y validacin de software. 1219 Estndar para el mantenimiento del software

Introduccin Ingeniera del Software Principales estndares y modelos


La Ingeniera del Software es una ingeniera muy joven Definirse a s misma: Cules son las reas de que necesitaba: conocimiento que la comprenden? SWEBOK: Software Engineering Body of knowledge Definir los procesos que intervienen en el desarrollo, mantenimiento y operacin del software ISO/IEC 12207: Procesos del ciclo de vida del software De las mejores prcticas, extraer modelos de cmo ejecutar esos procesos para evitar los CMM / CMMI problemas de la crisis del software ISO/IEC TR 15504 Definir estndares menores para dibujar criterios unificadores en requisitos, pruebas, IEEE 830 - IEEE 1362 - ISO/IEC gestin de la configuracin, etc. 14764

SWEBOK

Introduccin Ingeniera del Software

El proyecto SWEBOK (Software Engineering Body of Knowledge) comenz sus actividades de manera efectiva dentro del SWECC1 en 1997 (aunque el comit SWECC se cre en 1993). En el proyecto tambin estn representados: los dos principales organizaciones de estandarizacin en Ingeniera del Software: IEEE e ISO/IEC JTC1/SC/.

Los autores de las tres principales obras de Ingeniera del Software: Steve Mc Connell, Roger Pressman e Ian Sommerville.
Universidad de Qubec (Montreal) Empresas y organizaciones como: Rational, SAP, Boeing, Construx, MITRE, Raytheon, En 2001 el proyecto public ya una definicin consensuada del cuerpo de conocimiento aceptado en la ingeniera del software (http://www.swebok.org).

Las fuentes de informacin para la identificacin de las reas de conocimiento han sido los ndices de textos genricos sobre la Ingeniera del Software, los curricula para licenciatura y postgrado en Ingeniera de Software, y los criterios de admisin que se utilizan en el postgrado. Todos estos datos se han organizado siguiendo el estndar ISO/IEC 12207.
El cuerpo de conocimiento identificado por el proyecto SWEBOK se ha configurado como el estudio ms relevante y como la referencia de ms autoridad en toda la comunidad informtica para la acotacin y descripcin de los conocimientos que configuran la Ingeniera del software.

1 Software, Engineering Coordinating Comitee, Comisin creada por IEEE Computer Society y ACM (Association for Computer Mach inery) para definir el cuerpo de la Ingeniera del Software

SWEBOK

Introduccin Ingeniera del Software

SWEBOK da el primer paso necesario para constituir a la Ingeniera del Software como profesin: la delimitacin del cuerpo de conocimiento que comprende la profesin. Sin esta delimitacin no es posible validar de forma universal exmenes de licenciatura, no es posible la preparacin para acceder a la profesin, y no hay un consenso sobre el contenido de su currculo. El proyecto parte de la suposicin de que es necesario establecer cul es el cuerpo de conocimiento que deben conocer los ingenieros del software, y en su desarrollo ha agrupado este conocimiento en 10 reas

Requisitos Diseo Construccin Pruebas Mantenimiento

Gestin de la configuracin Gestin Procesos Herramientas y mtodos Calidad

Es importante resaltar que estas reas no incluyen aspectos importantes de las tecnologas de la informacin, tales como lenguajes especficos de programacin, bases de datos relacionales o redes o tecnologa de redes y comunicaciones. Esta es una consecuencia de la distincin que entre esencia y accidente se establece desde un enfoque de ingeniera. Por supuesto que un Ingeniero de Software debe conocer las tcnicas de cada momento, pero la definicin de procesos y metodologa de trabajo es la esencia de la profesin. As por ejemplo, el rea de conocimiento de requisitos, s que puede considerarse como esencia de la profesin. Los problemas que pueden derivarse en un proyecto por una mala obtencin o gestin de los requisitos son indistintos del hardware o lenguaje de programacin empleado. Eran los mismos hace dos dcadas que ahora, y todo nos hace suponer que seguirn siendo idnticos dentro de otros cuatro lustros.

Introduccin Ingeniera del Software ISO 12207: Propsito


Establecer un estndar para evitar una situacin de Torre de Babel en la gestin e ingeniera del software, proporcionando un marco y un lenguaje comn en la disciplina del software

Establece un marco comn para el ciclo de vida del software para


Periodo de tiempo que comienza al concebir la idea de un nuevo sistema de software, y termina cuando este se retira y deja de funcionar.

Ciclo de vidasuministro, del Adquisicin, desarrollo, operacin y mantenimiento del software software
Gestionar, controlar y mejorar el marco Como base de referencia para el trabajo e intercambio entre organizaciones de software

Introduccin Ingeniera del Software ISO 12207: Propsito


El estndar no prescribe:

Que deba emplearse ningn tipo de documentacin Define el QU, no el CMO. especfica. Dice cules son los procesos, actividades y tareas implicados en el desarrollo, mantenimiento y operacin de los sistemas de software, asentando un marco estndar de Que deba emplearse un tipo especfico de ciclo de referencia internacional, pero no se ocupa ni prescribe tcnicas especficas. desarrollo. Mtodos concretos para eldesde desarrollo, mantenimiento El estndar sirve de referencia dos perspectivas u operacin del software. diferentes: El estndar no cubre el desarrollo de productos de Para la adquisicin de sistemas y servicios software. software para distribucin comercial masiva de (productos No se trata de un estndar de certificacin, tipo ISO 9000, sino de un estndar para la en caja). Para el suministro, desarrollo, mantenimiento y operacin normalizacin. de productos de software.

Introduccin Ingeniera del Software ISO 12207: Procesos


5. Procesos primarios
5.1 Adquisicin 5.2 Suministro

6.- Procesos de soporte


6.1 Documentacin 6.2 Gestin de la configuracin 6.3 Control de calidad

5.3 Operacin 5.3 Desarrollo 5.3 Mantenimiento

6.4 Verificacin 6.5 Validacin 6.6 Reuniones 6.7 Auditora 6.8 Resolucin de problemas

7. Procesos organizacionales
7.1 Gestin 7.3 Mejora 7.2 Infraestructura 7.4 Formacin

Introduccin Ingeniera del Software ISO 12207


ISO 1227 define los procesos que componen el ciclo de
vida del software
Proceso 1 Actividad 1 Tarea 1 Tarea 2

Tarea n
Proceso N Actividad n

Ciclo de vida
Concepto Retirada

Tarea 1
Tarea 2

Tarea n

Introduccin Ingeniera del Software ISO 12207


PROCESO

Un proceso est compuesto


por actividades.

ACTIVIDAD 1

ACTIVIDAD n

TAREA 1

TAREA X

TAREA 1

Una actividad est del proceso en actividades y tareas La descomposicin


compuesta de tareas. se realiza sobre el concepto de ciclo de mejora PDCA PLAN INICIO Tareas, agenda, Plan Do Chek Act (Planificacin, ejecucin, asignaciones medicin y mejora)
ACT
Problemas y acciones correctivas

PROCESO

DO
Ejecicin de planes y tareas

CHECK
Evaluacin y medicin

FIN

Introduccin Ingeniera del Software INGENIERA DE SISTEMAS


ISO 12207 establece un nexo con la Ingeniera de
sistemas al considerar al software como parte de un sistema. Qu es un sistema? Desde estade perspectiva se establece a la para Ingeniera de Coleccin componentes organizados cumplir sistemas fundamento de la Ingeniera del una funcincomo o conjunto de funciones especficas. IEEE Standard 610.12Software. Sistema de 1990 Sistema
Entrada
Elemento del sistema Elemento del sistema Elemento del sistema

Elemento del sistema

Sistema de Salida

Coleccin de elementos relacionados de forma que


puedan realizar un objetivo tangible.

Pressman 1982

Introduccin Ingeniera del Software INGENIERA DE SISTEMAS


Sistema

conjunto de elementos de hardware, software,


personas, procedimientos, herramientas y otros factores organizativos, organizados para llevar a cabo un objetivo Sistema o sub-sistema formado por una coleccin de comn. programas y documentacin que de forma conjunta satisfacen unos determinados requisitos. Un sistema de software puede ser en s mismo un sistema independiente que, por ejemplo, realiza su Ingeniera de sistemas objetivo en un ordenador independiente. A este tipo de sistemas se Ingeniera les denomina sistema intensivo El trmino de tambin sistemas surgi por primera de el sistema vezsoftware en 1956,,yporque fue propuesto pores H. prcticamente Hitch, presidente del software. departamento de Ingeniera Aeronatica de la Universidad para intentar desarrollar una Un sistemade dePensilvania, software puede ser tambin una parte
Sistema de software

Introduccin Ingeniera del Software INGENIERA DE SISTEMAS


Algunas definiciones

Ingeniera de sistemas comprende la funcin de


gestionar todo el esfuerzo de desarrollo para conseguir Defense Systems College, 1989 un balance ptimo entre todos los Management elementos del Los procesos de ingeniera de sistemas integran las sistema. Es el proceso que transforma la necesidad secuencias y decisiones que transforman operacional de en actividades la descripcin de los parmetros del 1985 USAF, la definicin de una necesidad en un sistema, que con sistema, e integra esos parmetros para mejorar la La principal funcin de la ingeniera de sistemas es un ciclo de vida optimizado, consigue un balance ptimo eficiencia general del sistema. garantizar que el sistema satisface los requisitos durante Wymore 1993 de todos sus componentes. todo el ciclo de vida. Todas las dems consideraciones se alinean sobre esta funcin. La ingeniera de sistemas define el plan para gestionar las actividades tcnicas del
proyecto. Identifica el ciclo de desarrollo y los procesos que ser necesario aplicar. Desde la Ingeniera de sistemas se desarrolla la lnea base tcnica para todo el desarrollo, tanto de hardware como de software.

Introduccin Ingeniera del Software INGENIERA DE SISTEMAS


Funciones de la Ingeniera de sistemas

Definicin del problema: Determinacin de las


expectativas hacia el producto, necesidades y restricciones obtenidas y analizadas en los requisitos del sistema. Trabaja cerca del cliente para establecer las necesidades operacionales.

Anlisis de la solucin: Determinar las opciones


posibles para satisfacer los requisitos y las restricciones. Estudiar y analizar las posibles soluciones. Seleccionar la mejor, sopesando las necesidades inmediatas, opciones de implementacin, utilidad, evolucin del sistema

Introduccin Ingeniera del Software INGENIERA DE SISTEMAS


Ingeniera de sistemas Gestin de proyectos Ingeniera del Soft.
Gestin de proyectos

Planificacin Organizacin Personal Direccin Control

Ingeniera de sistemas

Ingeniera del software

Definicin del problema Anlisis de la solucin Planificacin de procesos Control de procesos Evaluacin del producto

Diseo del software Codificacin Pruebas unitarias Integracin del subsistema de software

Introduccin Ingeniera del Software INGENIERA DE SISTEMAS


Ingeniera de sistemas Ingeniera de sistemas de software Ingeniera del software

Anlisis del sistema

Pruebas del sistema


Pruebas de integracin del sis

Diseo del sistema

Anlisis de requisitos del sw

Ingeniera de sistemas de
software

Ingeniera de sistemas

Pruebas del sistema de sw

Diseo de la arquitectura del sw

Pruebas de integracin del sw

Ingeniera del
software

Diseo detallado del software

Pruebas del subsistema de softw.

Ingeniera del
software

Codificacin Pruebas unitarias

You might also like