Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado ycuantificable al desarrollo, operación y ...
[ocultar]   • 1 Implicaciones socioeconómicas          o 1.1 Económicamente         o   1.2 Socialmente  •   2 Metodología...
La ingeniería de software afecta a la economía y las sociedades de variadas formas.[editar] EconómicamenteEn los Estados U...
La captura, análisis y especificación de requerimientos (incluso pruebas de ellos), es unaparte crucial; de esta etapa dep...
•   Diagramas de base de datos   •   Diagrama de despliegue   •   Diagrama de secuenciaSiendo los dos primeros los mínimos...
Fase dedicada a mantener y mejorar el software para corregir errores descubiertos eincorporar nuevos requisitos. Esto pued...
El desarrollo de software de gran porte requiere una adecuada gestión del proyecto. Haypresupuestos, establecimiento de ti...
Próxima SlideShare
Cargando en…5
×

Ingeniería de software es la aplicación de un enfoque sistemático

2.797 visualizaciones

Publicado el

Publicado en: Motor
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
2.797
En SlideShare
0
De insertados
0
Número de insertados
0
Acciones
Compartido
0
Descargas
23
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Ingeniería de software es la aplicación de un enfoque sistemático

  1. 1. Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado ycuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estosenfoques, es decir, la aplicación de la ingeniería al software.1 Es la aplicación de laingeniería al software, ya que integra matemáticas, ciencias de la computación y prácticascuyos orígenes se encuentran en la ingeniería.2Se pueden citar otras definiciones enunciadas por prestigiosos autores: • Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978) • Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976). • Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).En el 2004, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau ofLabor Statistics) contó 760.840 ingenieros de software de computadora.3 El término"ingeniero de software", sin embargo, se utiliza en forma genérica en el ambienteempresarial, y no todos los ingenieros de software poseen realmente títulos de ingeniería deuniversidades reconocidas.Algunos autores consideran que "desarrollo de software" es un término más apropiado que"ingeniería de software" para el proceso de crear software. Personas como Pete McBreen(autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y pruebade procesos que no son apropiados para todo tipo de desarrollo de software.Indistintamente se utilizan los términos "ingeniería de software" o "ingeniería delsoftware". En Hispanoamérica el término usado normalmente es el primero de ellos.La creación del software es un proceso intrínsecamente creativo y la ingeniería del softwaretrata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecucióndel objetivo creativo por medio de diversas técnicas que se han demostrado adecuadas enbase a la experiencia previa.La IS se puede considerar como la ingeniería aplicada al software, esto es, por mediossistematizados y con herramientas preestablecidas, la aplicación de ellos de la forma máseficiente para la obtención de resultados óptimos; objetivos que siempre busca laingeniería. No es sólo de la resolución de problemas, sino más bien teniendo en cuenta lasdiferentes soluciones, elegir la más apropiada.Contenido
  2. 2. [ocultar] • 1 Implicaciones socioeconómicas o 1.1 Económicamente o 1.2 Socialmente • 2 Metodología o 2.1 Etapas del proceso  2.1.1 Análisis de requerimientos  2.1.2 Especificación  2.1.3 Arquitectura  2.1.4 Programación  2.1.5 Prueba  2.1.6 Documentación  2.1.7 Mantenimiento • 3 Modelos y filosofías de desarrollo de software o 3.1 Naturaleza de la IS  3.1.1 Matemáticas  3.1.2 Creación  3.1.3 Gestión de Proyectos  3.1.4 Arte • 4 Responsabilidad • 5 Educación ética o 5.1 Organizaciones • 6 Véase también • 7 Referencias • 8 Bibliografía • 9 Enlaces externos[editar] Implicaciones socioeconómicas
  3. 3. La ingeniería de software afecta a la economía y las sociedades de variadas formas.[editar] EconómicamenteEn los Estados Unidos, el software contribuyó a una octava parte de todo el incremento delPIB durante la década de 1990 (alrededor de 90,000 millones de dólares por año), y unnoveno de todo el crecimiento de productividad durante los últimos años de la década(alrededor de 33.000 millones de dólares estadounidenses por año). La ingeniería desoftware contribuyó a US$ 1 billón de crecimiento económico y productividad en esadécada. Alrededor del globo, el software contribuye al crecimiento económico en formassimilares, aunque es difícil de encontrar estadísticas fiables. [cita requerida]Además, con la industria del lenguaje está hallando cada vez más campos de aplicación aescala global.[editar] SocialmenteLa ingeniería de software cambia la cultura del mundo debido al extendido uso de lacomputadora. El correo electrónico (E-mail), la WWW y la mensajería instantáneapermiten a la gente interactuar en nuevas formas. El software baja el costo y mejora lacalidad de los servicios de salud, los departamentos de bomberos, las dependenciasgubernamentales y otros servicios sociales. Los proyectos exitosos donde se han usadométodos de ingeniería de software incluyen a GNU/Linux, el software del transbordadorespacial, los cajeros automáticos y muchos otros.[editar] MetodologíaUn objetivo de décadas ha sido el encontrar procesos y metodologías, que seansistemáticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y lacalidad del producto software.[editar] Etapas del procesoLa ingeniería de software requiere llevar a cabo numerosas tareas, dentro de etapas comolas siguientes:[editar] Análisis de requerimientosExtraer los requisitos y requerimientos de un producto de software es la primera etapa paracrearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene quehacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocerrequerimientos incompletos, ambiguos o contradictorios. El resultado del análisis derequerimientos con el cliente se plasma en el documento ERS, Especificación deRequerimientos del Sistema, cuya estructura puede venir definida por varios estándares,tales como CMMI. Asimismo, se define un diagrama de Entidad/Relación, en el que seplasman las principales entidades que participarán en el desarrollo del software.
  4. 4. La captura, análisis y especificación de requerimientos (incluso pruebas de ellos), es unaparte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se hanideado modelos y diversos procesos de trabajo para estos fines. Aunque aún no estáformalizada, ya se habla de la Ingeniería de requerimientos, por ejemplo en dos capítulosdel libro de Sommerville "Ingeniería del software" titulados "Requerimientos del software"y "Procesos de la Ingeniería de Requerimientos".La IEEE Std. 830-1998 normaliza la creación de las especificaciones de requerimientos desoftware (Software Requirements Specification).[editar] EspecificaciónLa especificación de requisitos describe el comportamiento esperado en el software una vezdesarrollado. Gran parte del éxito de un proyecto de software radicará en la identificaciónde las necesidades del negocio (definidas por la alta dirección), así como la interacción conlos usuarios funcionales para la recolección, clasificación, identificación, priorización yespecificación de los requisitos del software.Entre las técnicas utilizadas para la especificación de requisitos se encuentran: • Caso de uso, • Historias de usuario,Siendo los primeros más rigurosas y formales, los segundas más ágiles e informales.[editar] ArquitecturaLa integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientasgerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados yproyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todasestas actividades es el del Arquitecto.El arquitecto de software es la persona que añade valor a los procesos de negocios gracias asu valioso aporte de soluciones tecnológicas.La arquitectura de sistemas en general, es una actividad de planeación, ya sea a nivel deinfraestructura de red y hardware, o de software.La arquitectura de software consiste en el diseño de componentes de una aplicación(entidades del negocio), generalmente utilizando patrones de arquitectura. El diseñoarquitectónico debe permitir visualizar la interacción entre las entidades del negocio yademás poder ser validado, por ejemplo por medio de diagramas de secuencia. Un diseñoarquitectónico describe en general el cómo se construirá una aplicación de software. Paraello se documenta utilizando diagramas, por ejemplo: • Diagramas de clases
  5. 5. • Diagramas de base de datos • Diagrama de despliegue • Diagrama de secuenciaSiendo los dos primeros los mínimos necesarios para describir la arquitectura de unproyecto que iniciará a ser codificado. Depende del alcance del proyecto, complejidad ynecesidades, el arquitecto elige qué diagramas elaborar.Las herramientas para el diseño y modelado de software se denominan CASE, (ComputerAided Software Engineering) entre las cuales se encuentran: • Enterprise Architect • Microsoft Visio for Enterprise Architects[editar] ProgramaciónReducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería desoftware, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada.La complejidad y la duración de esta etapa está íntimamente relacionada al o a loslenguajes de programación utilizados, así como al diseño previamente realizado.[editar] PruebaConsiste en comprobar que el software realice correctamente las tareas indicadas en laespecificación del problema. Una técnica de prueba es probar por separado cada módulo delsoftware, y luego probarlo de forma integral, para así llegar al objetivo. Se considera unabuena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador quela programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programadordebe hacer sus propias pruebas. En general hay dos grandes formas de organizar un área depruebas, la primera es que esté compuesta por personal inexperto y que desconozca el temade pruebas, de esta forma se evalúa que la documentación entregada sea de calidad, que losprocesos descritos son tan claros que cualquiera puede entenderlos y el software hace lascosas tal y como están descritas. El segundo enfoque es tener un área de pruebasconformada por programadores con experiencia, personas que saben sin mayoresindicaciones en qué condiciones puede fallar una aplicación y que pueden poner atenciónen detalles que personal inexperto no consideraría.[editar] DocumentaciónTodo lo concerniente a la documentación del propio desarrollo del software y de la gestióndel proyecto, pasando por modelaciones (UML),diagramas de casos de uso, pruebas,manuales de usuario, manuales técnicos, etc; todo con el propósito de eventualescorrecciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.[editar] Mantenimiento
  6. 6. Fase dedicada a mantener y mejorar el software para corregir errores descubiertos eincorporar nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo delsoftware inicial. Alrededor de 2/3 del tiempo de ciclo de vida de un proyecto4 está dedicadoa su mantenimiento. Una pequeña parte de este trabajo consiste eliminar errores (bugs);siendo que la mayor parte reside en extender el sistema para incorporarle nuevasfuncionalidades y hacer frente a su evolución.[editar] Modelos y filosofías de desarrollo de softwareLa ingeniería de software dispone de varios modelos, paradigmas y filosofías de desarrollo,en los cuales se apoya para la construcción del software, entre ellos se puede citar: • Modelo en cascada o Clásico (modelo tradicional) • Modelo de prototipos • Modelo en espiral • Desarrollo por etapas • Desarrollo iterativo y creciente o Iterativo e Incremental • RAD (Rapid Application Development) • Desarrollo concurrente • Proceso Unificado • RUP (Proceso Unificado de Rational)[editar] Naturaleza de la ISLa ingeniería de software tiene que ver con varios campos en diferentes formas:[editar] MatemáticasLos programas tienen muchas propiedades matemáticas. Por ejemplo la corrección y lacomplejidad de muchos algoritmos son conceptos matemáticos que pueden serrigurosamente probados. El uso de matemáticas en la IS es llamado métodos formales.[editar] CreaciónLos programas son construidos en una secuencia de pasos. El hecho de definir propiamentey llevar a cabo estos pasos, como en una línea de ensamblaje, es necesario para mejorar laproductividad de los desarrolladores y la calidad final de los programas. Este punto de vistainspira los diferentes procesos y metodologías que se encuentran en la IS.[editar] Gestión de Proyectos
  7. 7. El desarrollo de software de gran porte requiere una adecuada gestión del proyecto. Haypresupuestos, establecimiento de tiempos de entrega, un equipo de profesionales queliderar. Recursos (espacio de oficina, insumos, equipamiento) por adquirir. Para suadministración se debe tener una clara visión y capacitación en Gestión de Proyectos.[editar] ArteLos programas contienen muchos elementos artísticos. Las interfaces de usuario, lacodificación, etc. Incluso la decisión para un nombre de una variable o una clase. DonaldKnuth es famoso por argumentar a la programación como un arte.[editar] ResponsabilidadLa responsabilidad en la ingeniería del software es un concepto complejo, sobre todoporque al estar los sistemas informáticos fuertemente caracterizados por su complejidad, esdifícil apreciar sus consecuencias.En la ingeniería del software la responsabilidad será compartida por un grupo grande depersonas, que comprende desde el ingeniero de requisitos, hasta el arquitecto software, ycontando con el diseñador, o el encargado de realizar las pruebas. Por encima de todos ellosdestaca el director del proyecto. El software demanda una clara distribución de laresponsabilidad entre los diferentes roles que se dan en el proceso de producción.El ingeniero del software tiene una responsabilidad moral y legal limitada a lasconsecuencias directas

×