1. Equipo 4
Ing. De Software Aplicada
110602
Hernández Rosales Alejandra
Hurtado Escobedo Alejandro
Islas Castro Amainary Jazmín
Martinez Alejandro Josue
2. 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 .
3. La Ingeniería de Sistemas representa la principal herramienta de trabajo de los
desarrolladores de sistemas de información. Está representa por una metodología
compuesta por un conjunto de etapas que se realizan secuencialmente para dar
vida a una aplicación en forma evolutiva. Cada
etapa se integra por un conjunto de acciones encaminadas para obtener productos
específicos, como: especificaciones, diagramas, formatos, código, pruebas y
documentos diversos. A continuación se describen algunos enfoques para el
desarrollo de los sistemas de información:
Cleanroom
Reingeniería
Ingeniería web
Desarrollo basado en componentes
Sistemas críticos
4. 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.
5. 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.
6. 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.
7. 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.
8. 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.”
9. 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.
10. 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.
11. 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.
12. 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.
13. 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 aplicaciones
Operación de sistemas y gestión de proyectos
14. 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
15. 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.
16. 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
17. 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).
18. Los sistemas críticos son sistemas técnicos o socio-técnicos
de los cuales dependen las personas o los negocios. Si estos
sistemas no ofrecen sus servicios de la forma esperada,
pueden provocar graves problemas y pérdidas
importantes.
19. Hay tres tipos principales de sistemas críticos:
1. Sistemas de seguridad críticos. Son sistemas cuyo fallo de funcionamiento
puede 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 de
control para una planta de fabricación de productos químicos.
2. Sistemas de misión críticos. Son sistemas cuyo fallo de funcionamiento puede
provocar errores en algunas actividades dirigidas por objetivos. Un ejemplo de
de un sistema de misión crítico es un sistema de navegación para una nave
espacial.
3. Sistemas de negocio críticos. Son sistemas cuyo fallo de funcionamiento puede
provocar costes muy elevados para el negocio que utiliza un sistema de este
tipo. Un ejemplo de un sistema de negocio crítico es un sistema de cuentas
bancarias.
20. La propiedad más importante de un sistema crítico es su confiabilidad. El
término confiabilidad fue propuesto por Laprie 1995 para hacer referencia a
las siguientes propiedades relacionadas de los sistemas: disponibilidad,
fiabilidad, seguridad y protección.
Existen varias razones por las que la confiabilidad es la propiedad más
importante de los sistemas críticos:
1.- Los sistemas que son no fiables, inseguros o desprotegidos son rechazados
a me- nudo por sus usuarios. Si los usuarios no confían en un sistema, se
negarán a utilizarlo. Es más, también rehusarán comprar o utilizar productos
de la misma compañía que produjo el sistema no confiable, puesto que creen
que éstos tampoco son confiables.
21. 2.- Los sistemas no confiables pueden provocar pérdida de información. Es
muy cara la captura y mantenimiento de los datos; algunas veces cuesta más
que el sistema informático que los procesa. Se tiene que hacer un gran esfuerzo
e invertir mucho dinero para duplicar los datos importantes a fin de
protegerlos 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 sistema
de 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.
22. Conclusión
A medida que se van creando más aplicaciones en la computadora, se
despiertan otras inquietudes, por lo que la capacidad de los recursos
disponibles se ve saturada. Por esto es importante hacer un buen de
estos recursos, procurando aprovecharlos al máximo mediante la
tecnología más adecuada que garantice el éxito en las tareas
emprendidas.
Los diferentes topicos mencionados anteriormente tienen como
objetivo brindar una línea de acción en la definición y construcción de
un sistema de información, por lo que a través de su conocimiento y
aplicación se podrán obtener diversas experiencias, que permitirán al
usuario desarrollar cada vez más y mejores sistemas.