topicos de ingeniería de software

23
Equipo 4 Ing. De Software Aplicada 110602 Hernández Rosales Alejandra Hurtado Escobedo Alejandro Islas Castro Amainary Jazmín Martinez Alejandro Josue

Upload: alex-hurtado

Post on 13-Jul-2015

588 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Topicos de ingeniería de software

Equipo 4Ing. De Software Aplicada

110602

Hernández Rosales AlejandraHurtado Escobedo AlejandroIslas Castro Amainary Jazmín

Martinez Alejandro Josue

Page 2: Topicos de ingeniería de software

En esta presentación se describen los principales

topicos utilizados en la ingeniería de software con el

objetivo de enriquecer el conocimiento del lector y de

esta manera lograr que la ingeniería de software sea

mas fácil de comprender .

Page 3: Topicos de ingeniería de software

La Ingeniería de Sistemas representa la principal herramienta de trabajo de losdesarrolladores de sistemas de información. Está representa por una metodologíacompuesta por un conjunto de etapas que se realizan secuencialmente para darvida a una aplicación en forma evolutiva. Cadaetapa se integra por un conjunto de acciones encaminadas para obtener productosespecíficos, como: especificaciones, diagramas, formatos, código, pruebas ydocumentos diversos. A continuación se describen algunos enfoques para eldesarrollo de los sistemas de información:

Cleanroom

Reingeniería

Ingeniería web

Desarrollo basado en componentes

Sistemas críticos

Page 4: Topicos de ingeniería de software

Es una ingeniería y un proceso directivo para el desarrollo del

software de alta calidad con confiabilidad certificada. Cleanroom fue

desarrollado originalmente por el Dr. Harlan Mills y varios colegas de

IBM. El nombre “Cleanroom” fue tomado de la industria de

electrónica, donde un cuarto limpio físico existe para prevenir la

introducción de defectos durante la fabricación del hardware. El foco

del proceso de Cleanroom está en la prevención del defecto, más

bien que el retiro del defecto.

Page 5: Topicos de ingeniería de software

1. Desarrollo del Software basado en métodos formales: hace uso el

método de la estructura de caja para especificar y para diseñar un producto

de software. La verificación que el diseño pone correctamente la

especificación en ejecución se realiza con la revisión del equipo.

2.Puesta en práctica incremental bajo control de calidad estadístico:

utiliza un acercamiento iterativo , en el cual el producto se desarrolla en los

incrementos que aumentan gradualmente la funcionalidad puesta en

ejecución. La calidad de cada incremento se mide contra estándares

preestablecidos para verificar que está procediendo el proceso del

desarrollo aceptable. Una falta de resolver estándares de calidad da lugar a

la cesación de la prueba para el incremento actual, y a una vuelta a la fase

de diseño.

Page 6: Topicos de ingeniería de software

3. Prueba estadístico Sana: se realiza como experimento estadístico. De

acuerdo con la especificación formal, un subconjunto representativo de la

trayectoria de la entrada-salida del software se selecciona y se prueba. Esta

muestra entonces se analiza estadística para producir una estimación de la

confiabilidad del software, y un nivel de la confianza en esa estimación.

Ventajas

Mejoras significativas en la corrección,

La confiabilidad

Estas ventajas traducen generalmente a una reducción en las faltas de

producto campo-experimentadas, reducida duración de ciclo, facilidad del

mantenimiento, y vida de un producto más largo.

Page 7: Topicos de ingeniería de software

Pasos del método de Cleanroom:

Algunos de los procesos que constituyen el acercamiento de Cleanroom son:

1. Análisis de requisitos: produciendo y repasando “especificaciones

informales”.

2. Diseño de alto nivel: convertir los requisitos en las máquinas y las

funciones del estado

3. Diseño detallado: refinamiento adicional de funciones

4. Codificación por el incremento: código que se convierte y verificarlo que

usa métodos informales. Se prohíbe la prueba de compilación del código o

de la unidad.

5. Preaprueba por el incremento: generación de los casos de la prueba.

6. Prueba estadística por el incremento: se compila, se liga y se prueba el

código. Se validan los resultados.

Page 8: Topicos de ingeniería de software

Es la “modificación de un producto software, o de ciertos

componentes, usando para el análisis del sistema existente técnicas

de Ingeniería Inversa y, para la etapa de reconstrucción,

herramientas de Ingeniería Directa, de tal manera que se oriente

este cambio hacia mayores niveles de facilidad en cuanto a

mantenimiento, reutilización, comprensión o evaluación.”

Page 9: Topicos de ingeniería de software

La reingeniería del software involucra diferentes actividades como son:

Análisis de inventarios

Reestructuración de documentos

Ingeniería inversa

Reestructuración de programas y datos

Ingeniería directa

con la finalidad de crear versiones de programas ya existentes que sean de

mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.

Page 10: Topicos de ingeniería de software

Análisis de Inventarios: El inventario tal vez no sea más que un modelo en

una hoja de cálculo que contenga información que proporcione una

descripción detallada (tamaño, edad, importancia para el negocio) de las

aplicaciones activas. Los candidatos a la reingeniería aparecen cuando se

ordena esta información en función de su importancia para el negocio,

longevidad, mantenibilidad actual y otros criterios localmente importantes. Es

entonces cuando es posible asignar recursos a las aplicaciones candidatas

para el trabajo de reingeniería.

Reestructuración de documentos: La documentación debe actualizarse

pero se tiene recursos limitados. Se utiliza un enfoque de “documentar

cuando se toque”. El sistema es crucial para el negocio y debe volver a

documentarse por completo incluso en este caso un enfoque inteligente es

recortar la documentación a un mínimo esencial. Cada una de estas opciones

es viable. Una organización de software debe elegir la más apropiada para

cada caso.

Page 11: Topicos de ingeniería de software

Ingeniería Inversa: es el proceso de análisis de un programa con el fin de

crear una representación de programa con un nivel de abstracción más

elevado que el código fuente. La Ingeniería inversa es un proceso de

recuperación de diseño. Con las herramientas de la ingeniería inversa se

extraerá del programa existente información del diseño arquitectónico y de

proceso, e información de los datos.

Reestructuración de datos: comienza con una actividad de ingeniería

inversa. La arquitectura de datos actual se analiza con minuciosidad y se

define los modelos de datos necesarios, se identifican los objetivos de datos

y los atributos, y después se revisa la calidad de las estructuras de datos

existentes.

Ingeniería directa: no solo recupera la información de diseño a partir del

software existente, también utiliza esta información para alterar o reconstruir

el sistema existente con la finalidad de mejorar su calidad global. En la

mayoría de los casos el software sometido a reingeniería vuelve a

implementar la función del sistema existente y también añade nuevas

funciones o mejoras.

Page 12: Topicos de ingeniería de software

La Ingeniería de la Web es la aplicación de metodologías sistemáticas,

disciplinadas y cuantificables al desarrollo eficiente, operación y

evolución de aplicaciones de alta calidad en la World Wide Web

En este sentido, la Ingeniería de la Web hace referencia a las

metodologías, técnicas y herramientas que se utilizan en el desarrollo de

Aplicaciones Web complejas y de gran dimensión en las que se apoya la

evaluación, diseño, desarrollo, implementación y evolución de dichas

aplicaciones.

Page 13: Topicos de ingeniería de software

El desarrollo de Aplicaciones Web posee determinadas características que lo

hacen diferente del desarrollo de aplicaciones o software tradicional y sistemas

de información.

La Ingeniería de la Web es multidisciplinar y aglutina contribuciones de

diferentes áreas:

Arquitectura de la información ingeniería de hipermedia/hipertexto

Ingeniería de requisitos

Diseño de interfaz de usuario

Usabilidad

Diseño gráfico y de presentación

Diseño y análisis de sistemas

Ingeniería de software

Ingeniería de datos

Indexado y recuperación de información

Testeo

Modelado y simulación,

Despliegue de aplicacionesOperación de sistemas y gestión de proyectos

Page 14: Topicos de ingeniería de software

La Ingeniería de la Web no es un clon o subconjunto de la ingeniería de

software aunque ambas incluyen desarrollo de software y programación, pues

a pesar de que la Ingeniería de la Web utiliza principios de ingeniería de

software, incluye nuevos enfoques, metodologías, herramientas, técnicas,

guías y patrones para cubrir los requisitos únicos de las aplicaciones web.

Los principales aspectos de la Ingeniería de la Web incluyen, entre otros, los

siguientes temas:

Diseño de procesos de negocio para aplicaciones web

Herramientas CASE para aplicaciones web

Generación de código para aplicaciones web

Desarrollo web colaborativo

Modelado conceptual de aplicaciones web

Diseñó de Modelos de datos para sistemas de información web

Ingeniería web empírica

Entornos de desarrollo de aplicaciones web integrados

Herramientas de autor para contenido multimedia

Pruebas de rendimiento de aplicaciones basadas en web

Personalización y adaptación de aplicaciones web

Modelado de procesos para aplicaciones web

Herramientas y métodos de prototipado

Page 15: Topicos de ingeniería de software

La ingeniería de software basada en componentes (CBSE) (también

conocida como desarrollo basado en componentes(CBD)) es una rama

de la ingeniería de software que enfatiza la separación de

asuntos (separation of concerns (SoC)) por lo que se refiere a la

funcionalidad de amplio rango disponible a través de un sistema de

software dado. Es un acercamiento basado en la reutilización para

definir, implementar, y componer componentes débilmente

acoplados en sistemas. Esta práctica persigue un amplio grado de

beneficios tanto en el corto como el largo plazo, para el software en sí

mismo y para las organizaciones que patrocinan tal software.

Page 16: Topicos de ingeniería de software

Los ingenieros de software consideran los componentes como parte de la

plataforma inicial para la orientación a servicios. Los componentes pueden

producir o consumir eventos y pueden ser usados para las arquitecturas

dirigida por eventos (EDA).

Beneficios del Desarrollo de Software Basado en Componentes

1. Reutilización del software. Nos lleva a alcanzar un mayor nivel de

reutilización de software.

2. Simplifica las pruebas. Permite que las pruebas sean ejecutadas probando

cada uno de los componentes antes de probar el conjunto completo de

componentes ensamblados.

3. Simplifica el mantenimiento del sistema. Cuando existe un débil

acoplamiento entre componentes, el desabollador es libre de actualizar y/o

agregar componentes según sea necesario, sin afectar otras partes del

sistema.

4. Mayor calidad. Dado que un componente puede ser construido y luego

mejorado continuamente por un experto u organización, la calidad de una

aplicación basada en componentes mejorará con el paso del tiempo

Page 17: Topicos de ingeniería de software

Ventajas:

El análisis del riesgo se hace de forma explícita y clara; Une los mejores

elementos de los restantes modelos.

Reduce riesgos del proyecto

Incorpora objetivos de calidad

Integra el desarrollo con el mantenimiento

Desventajas:

•Genera mucho tiempo en el desarrollo del sistema

Modelo costoso

Requiere experiencia en la identificación de riesgos

Inconvenientes:

Genera mucho trabajo adicional. Cuando un sistema falla se pierde tiempo y

coste dentro de la empresa. Exige una cierta habilidad en los analistas (es

bastante difícil).

Page 18: Topicos de ingeniería de software

Los sistemas críticos son sistemas técnicos o socio-técnicosde los cuales dependen las personas o los negocios. Si estossistemas no ofrecen sus servicios de la forma esperada,pueden provocar graves problemas y pérdidasimportantes.

Page 19: Topicos de ingeniería de software

Hay tres tipos principales de sistemas críticos:

1. Sistemas de seguridad críticos. Son sistemas cuyo fallo de funcionamientopuede provocar perjuicio, pérdida de vidas o daños graves al medio ambiente.ambiente. Un ejemplo de un sistema de seguridad crítico es un sistema decontrol para una planta de fabricación de productos químicos.

2. Sistemas de misión críticos. Son sistemas cuyo fallo de funcionamiento puedeprovocar errores en algunas actividades dirigidas por objetivos. Un ejemplo dede un sistema de misión crítico es un sistema de navegación para una naveespacial.

3. Sistemas de negocio críticos. Son sistemas cuyo fallo de funcionamiento puedeprovocar costes muy elevados para el negocio que utiliza un sistema de estetipo. Un ejemplo de un sistema de negocio crítico es un sistema de cuentasbancarias.

Page 20: Topicos de ingeniería de software

La propiedad más importante de un sistema crítico es su confiabilidad. Eltérmino confiabilidad fue propuesto por Laprie 1995 para hacer referencia alas siguientes propiedades relacionadas de los sistemas: disponibilidad,fiabilidad, seguridad y protección.

Existen varias razones por las que la confiabilidad es la propiedad másimportante de los sistemas críticos:

1.- Los sistemas que son no fiables, inseguros o desprotegidos son rechazadosa me- nudo por sus usuarios. Si los usuarios no confían en un sistema, senegarán a utilizarlo. Es más, también rehusarán comprar o utilizar productosde la misma compañía que produjo el sistema no confiable, puesto que creenque éstos tampoco son confiables.

Page 21: Topicos de ingeniería de software

2.- Los sistemas no confiables pueden provocar pérdida de información. Esmuy cara la captura y mantenimiento de los datos; algunas veces cuesta másque el sistema informático que los procesa. Se tiene que hacer un gran esfuerzoe invertir mucho dinero para duplicar los datos importantes a fin deprotegerlos de cualquier corrupción.

3.- Los costes de los fallos de funcionamiento del sistema pueden ser enormes.En algunas aplicaciones, como un sistema de control de reactores o un sistemade navegación aérea, el coste de un fallo en el sistema es mayor en variosórdenes de magnitud que el coste de dicho sistema de control.

Page 22: Topicos de ingeniería de software

Conclusión

A medida que se van creando más aplicaciones en la computadora, sedespiertan otras inquietudes, por lo que la capacidad de los recursosdisponibles se ve saturada. Por esto es importante hacer un buen deestos recursos, procurando aprovecharlos al máximo mediante latecnología más adecuada que garantice el éxito en las tareasemprendidas.

Los diferentes topicos mencionados anteriormente tienen comoobjetivo brindar una línea de acción en la definición y construcción deun sistema de información, por lo que a través de su conocimiento yaplicación se podrán obtener diversas experiencias, que permitirán alusuario desarrollar cada vez más y mejores sistemas.

Page 23: Topicos de ingeniería de software

Bibliografia.

http://ingdesoftware-karina.blogspot.mx/2007/07/qu-es-el-cleanroom.html

http://www.mondragon.edu/es/eps/investigacion/grupos-de-investigacion/ingenieria-del-software

http://ingenieriadelsofware.bligoo.com/ingenieria-web#.U9has7H5fIV

http://es.slideshare.net/jasc_584/ingenieriadesoftware-iansommerville7maedicion-9417118

http://cnx.org/content/m17438/latest/