• No se han encontrado resultados

INGENIERÍA DE SOFTWARE I. Alejandra Mercedes Colina Vargas, Ph.D. Mayo, 2019

N/A
N/A
Protected

Academic year: 2021

Share "INGENIERÍA DE SOFTWARE I. Alejandra Mercedes Colina Vargas, Ph.D. Mayo, 2019"

Copied!
63
0
0

Texto completo

(1)

INGENIERÍA DE SOFTWARE I

Alejandra Mercedes Colina Vargas, Ph.D. Mayo, 2019

(2)

CAPÍTULO 2:

Introducción la Ingeniería del

Software

Ing. Alejandra Colina V. Mayo, 2019

(3)

• Reconocer los elementos que conforman la Ingeniería del Software y sus principales componentes de estudio.

(4)

Contenido

Software: definición, características, dominios de aplicación y software

heredados. Proceso de Ingeniería de software Ingeniería de software: definición y capas Modelos de ingeniería de software Métodos de ingeniería de software

(5)
(6)

En la actualidad, el software tiene un papel dual.

Introducción la Ingeniería del Software

Producto

Vehículo para entregar producto

Transformador de información

Distribuir el producto

El software de computadora sigue siendo la tecnología más importante en la escena mundial.

Se considera una tecnología indispensable para los negocios, ciencias e ingeniería.

Crea nuevas tecnologías

Amplia tecnologías existentes

(7)
(8)
(9)

Según Pressman (2010) el software es:

1) instrucciones (programas de cómputo) que cuando se ejecutan proporcionan las características, función y desempeño buscados;

2) estructuras de datos que permiten que los programas manipulen en forma adecuada la información, y

3) información descriptiva tanto en papel como en formas virtuales que describen la operación y uso de los programas

(10)
(11)

El software se desarrolla o modifica con intelecto; no se manufactura en el sentido clásico.

El software no se “desgasta”.

Aunque la industria se mueve hacia la construcción basada en

componentes, la mayor parte del software se construye para un uso

(12)
(13)

Existen siete grandes categorías de software de computadora como retos continuos a los ingenieros de software

Software de sistemas(Sistemas operativos. Compiladores) Software de aplicación (Bases de datos y sistemas de gestión de información) Software de ingeniería y ciencias (Aplicaciones en la astronomía, física cuántica,) Software incrustado (Tablero de refrigeradores, de microondas) Software de línea de productos (Control de inventario) Aplicaciones web (Webapps) Software de inteligencia artificial (Elaboración de algoritmos numéricos)

(14)
(15)

Los sistemas de software heredado son programas que han sido desarrollados hace varias décadas y modificados de manera continua para que satisfagan los cambios en los requerimientos de los negocios y plataformas de computación (Pressman, 2010).

Se convierten en dolores de cabeza para las organizaciones grandes, son costoso mantenerlos y riesgoso hacerlos evolucionar.

(16)

¿QUÉ HAGO SI ENCUENTRO UN SISTEMA

HEREDADO DE MALA CALIDAD?

(17)

Un software HEREDADO es de mala calidad cuando: ‒ No son susceptibles de extenderse

‒ Código confuso

‒ Documentación mala o inexistente

‒ Casos de pruebas y resultados nunca se archivaron

‒ Historia de los cambios mal administrada.

Sin embargo, AUN dan apoyo a las “funciones básicas del negocio y son indispensables para éste”.

(18)

¿QUÉ TIPOS DE CAMBIOS SE HACEN A LOS

SISTEMAS HEREDADOS?

(19)

‒ El software debe adaptarse para que cumpla las necesidades de los nuevos ambientes del cómputo y de la tecnología.

‒ El software debe ser mejorado para implementar nuevos requerimientos del negocio.

‒ El software debe ampliarse para que sea operable con otros sistemas o bases de datos modernos.

‒ La arquitectura del software debe rediseñarse para hacerla viable dentro de un ambiente de redes.

(20)

1. Muchas aplicaciones modernas cambian con frecuencia, antes de que se presenten al usuario final y después de que la primera versión ha entrado en uso. Sugiera algunos modos de elaborar software para detener el deterioro que produce el cambio.

2. Considere las siete categorías de software. ¿Piensa que puede aplicarse a cada una el mismo enfoque de ingeniería de software? Explique su respuesta.

(21)
(22)
(23)

Es el establecimiento y uso de principios fundamentales de la ingeniería con objeto de desarrollar en forma económica software que sea confiable y que trabaje con eficiencia en máquinas reales.

Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software; es decir, la aplicación de la ingeniería al software (IEEE).

(24)

La ingeniería de software es una tecnología multicapa, cualquier enfoque de ingeniería debe apoyarse sobre un compromiso de organización de calidad.

(25)

Capas

Herramienta

Método

Proceso

Enfoque de calidad

MÉTODO: cómo se debe construir técnicamente el software. abarcan una gran

gama de tareas, que incluyen: Análisis de requisitos. Diseño. Construcción de programas. Pruebas. Mantenimiento.

HERRAMIENTAS: Soporte de ayuda para construir el software, proporciona un

enfoque automático o semiautomático para el proceso y para los métodos.

ENFOQUE DE CALIDAD: comprende la gestión para

obtener un software de calidad, y hace revisiones para hacer mejoras al producto.

PROCESO: definen las actividades para poder realizar el

(26)

¿Cuáles son los elementos de un proceso de

software?

(27)

Proceso

Es un conjunto de actividades, acciones y tareas que se ejecutan cuando va a crearse algún producto del trabajo.

Actividad

Pretende lograr un objetivo amplio y se desarrolla sin importar el dominio de la aplicación, tamaño del proyecto, complejidad del esfuerzo o grado de rigor con el que se usará la ingeniería de software.

Acción

(28)

Tarea

Centra en un objetivo pequeño pero bien que produce un resultado tangible.

En el contexto de la INGENIERÍA DE SOFTWARE un proceso NO es una prescripción rígida de cómo elaborar software de cómputo.

Es un enfoque adaptable que permite que las personas que hacen el trabajo busquen y elijan el conjunto apropiado de acciones y tareas para el trabajo.

Un proceso de software es una serie de actividades relacionadas que conduce a la elaboración de un producto de software .

(29)
(30)

Se define proceso del software como una estructura para las actividades, acciones y tareas que se requieren a fin de construir software de alta calidad (Pressman, 2010).

(31)

ESTRUCTURA DE UN PROCESO DEL SOFTWARE

(32)

Los procesos de software se clasifican:

• Dirigidos por un plan: son aquellos donde todas las actividades del proceso se planean por anticipado y el avance se mide contra dicho plan

• Procesos ágiles: la planeación es incremental y fácil modificar el proceso para reflejar los requerimientos cambiantes del cliente.

(33)

¿Cuáles son las cinco actividades

(34)

• Entender los objetivos de los participantes respecto del proyecto, y reunir los requerimientos que ayuden a definir las características y funciones del software.

Comunicación.

• Define el trabajo de ingeniería de software al describir las tareas técnicas por realizar, los riesgos probables, los recursos que se requieren, los productos del trabajo que se obtendrán y una programación de las actividades.

Planeación.

• Un ingeniero de software hace lo mismo al crear modelos a fin de entender mejor los requerimientos del software y el diseño que los satisfará.

(35)

• Esta actividad combina la generación de código y las

pruebas que se requieren para descubrir errores en éste.

Construcción.

• El software se entrega al consumidor que lo evalúa y que

le da retroalimentación, misma que se basa en dicha

evaluación.

(36)

• Un flujo de proceso lineal ejecuta cada una de las cinco actividades estructurales en secuencia, comenzando por la comunicación y terminando con el despliegue.

• Un flujo de proceso iterativo repite una o más de las actividades antes de pasar a la siguiente.

(37)

• Un flujo de proceso evolutivo realiza las actividades en forma “circular”. A través de las cinco actividades, cada circuito lleva a una versión más completa del software.

(38)

• Un flujo de proceso paralelo ejecuta una o más actividades en paralelo con otras

(39)

¿Qué acciones son apropiadas para una actividad estructural, dados la naturaleza del problema por resolver, las características de las personas que hacen el trabajo y los participantes que patrocinan el proyecto?

▪ Para un proyecto de software pequeño solicitado. ▪ Para proyecto de software grande.

Diferentes proyectos demandan diferentes conjuntos de tareas.

El equipo de software elige el conjunto de tareas con base en las características del problema y el proyecto.

(40)

¿Cuáles son las etapas generales

del proceso del software?

(41)

Planificación

• Proporcionar un marco de trabajo que permita al gestor hacer

estimaciones razonables de

recursos, costos y planificación temporal.

• Producto: Plan de trabajo

Definición y análisis de requerimientos

• Reunirse con los clientes para definir los requerimientos. Los

requerimientos definen el sistema. • Producto de trabajo Documento de

Requerimientos Definición de requerimientos (clientes)

Especificación de requerimientos (diseñadores)

(42)

Diseño del sistema • Transformar el problema en

una solución, es decir realizar un diseño del sistema que

satisfaga las necesidades de los clientes.

• Producto de trabajo:

Especificación de Diseño Documentación dirigida al cliente. Terminología técnica para describir la estructura del sistema, datos y funciones.

Codificación

• Proceso creativo que traduce el diseño a un lenguaje de programación.

• Código Fuente.

Documentación del programa. Documentación interna.

(43)

Pruebas

• Demoler el producto de software con el propósito de detectar defectos

• Producto del trabajo: Plan de Prueba.

Diseño de los casos de prueba. Ejecución en las pruebas.

Evaluación de los resultados.

Liberación del producto • Es más que solo la

entrega del producto, sino que es el momento del

desarrollo en que se ayuda a los usuarios a comprender el producto entregado y a sentirse cómodos con él.

• Producto del trabajo: Manuales de usuario, Manuales del operador, guía general del sistema, etc. Producto operando

Mantenimiento • Mantener un sistema

que evoluciona constantemente.

• Producto de trabajo Nuevo código fuente Cambios en los

(44)

¿De qué técnicas formales se

dispone para evaluar el proceso del

software?

(45)

• Proporciona un modelo de cinco fases para evaluar el proceso: inicio, diagnóstico, establecimiento, actuación y aprendizaje.

Método de evaluación del estándar CMMI para el proceso de mejora (SCAMPI, por sus siglas en

inglés):

• Proporciona una técnica de diagnóstico para evaluar la madurez relativa de una organización de software; usa el SEI CMM como la base de la evaluación.

Evaluación basada en CMM para la mejora del proceso interno (CBA IPI, por sus siglas en

(46)

• Define un conjunto de requerimientos para la evaluación del proceso del software. Cuyo objetivo es ayudar a las organizaciones a desarrollar una evaluación objetiva de cualquier proceso del software definido.

SPICE (ISO/IEC 15504):

• Estándar genérico que se aplica a cualquier organización que desee mejorar la calidad general de los productos, sistemas o servicios que proporciona.

(47)
(48)

El modelo de proceso de software es una representación simplificada de este proceso. Cada modelo del proceso representa a otro desde una particular perspectiva y, por lo tanto, ofrece sólo información parcial acerca de dicho proceso (Sommerville, 2011).

(49)

“Es una representación abstracta de un proceso de software. Cada modelo de proceso representa un proceso desde una perspectiva particular por lo que sólo provee información parcial acerca de ese proceso”.

(50)

• Muestra la secuencia de actividades en el proceso junto con sus entradas, salidas y dependencias (Acciones humanas).

Un modelo de flujo de trabajo

• Representa el proceso como un conjunto de actividades, cada una de las cuales realiza alguna transformación en los datos (Personas o computadoras).

Un modelo de flujo de datos o de actividad

• Representa los roles de las personas

involucrada en el proceso del software y las actividades de las que son responsables. Un modelo de rol/acción

(51)
(52)

Modelos de procesos prescriptivos

Los modelos de proceso prescriptivo fueron propuestos originalmente para poner orden en el caos del desarrollo de software, no se realizaba una planificación y estimación de ningún tipo, por ello se trato de importar herramientas y metodologías de otras aéreas de Ingeniería.

El proceso se realiza de manera secuencial donde cada etapa se alimenta de la anterior y el producto software está disponible al final de todo el proceso, además son difíciles de aplicarlas en su totalidad por ser bastantes rígidas e idealistas.

(53)

Modelos de procesos prescriptivos

Definen un conjunto prescrito de elementos del proceso: actividades estructurales, acciones de ingeniería de software, tareas, productos del trabajo, aseguramiento de la calidad y mecanismos de control del cambio para cada proyecto.

Cada modelo del proceso indica un flujo del proceso, la manera en la que los elementos del proceso se relacionan entre sí.

(54)

Modelos de procesos prescriptivos Ciclo de vida clásico Construcción por prototipo Desarrollo Rápido de Aplicaciones Métodos Iterativos como el incremental y espiral.

(55)

Modelos de proceso especializado

Los modelos de proceso especializado tienen muchas de las características de uno o más de los modelos tradicionales.

Pueden caracterizarse como un conjunto de técnicas o

“metodología” para alcanzar una meta específica de desarrollo de software. No obstante, implican un proceso.

(56)

Modelos de procesos especializado Modelo de desarrollo basado en componentes Modelo de métodos formales (matemáticos) Desarrollo de software orientado a aspectos

(57)
(58)

Método: Es un conjunto de herramientas, técnicas y procesos que brindan soporte y facilitan el logro u obtención de una meta

Método: que hacer, a lo largo de todo el ciclo de vida del software, para construir un producto bueno, de calidad, dentro del presupuesto y a tiempo

(59)

¿Por qué es necesario un método para desarrollar software?

Por lo complejo que resulta desarrollar software

(60)
(61)

Métodos tradicionales

• Basadas en normas o prescripciones de estándares propios dl entorno de

desarrollo.

• Ofrecen ciertas resistencia al cambio. • Impuesta externamente

• Procesos muy controlados por normas y políticas

• Existe un contrato prefijado

• El cliente interactúa mediante reuniones • Grupos grandes.

• La arquitectura del software es esencial y representada mediante modelos

Métodos ágiles

• Basadas en heurísticas

• Preparadas para los cambios • Impuesta internamente

• Procesos no controlados muy pocos principios

• No existen un contrato tradicional

• El cliente s parte del equipo de desarrollo • Grupo pequeños y trabajan en el mismo

sitio

• Menos énfasis en la arquitectura del

(62)

BIBLIOGRAFÍA

Ian Sommerville, Software Engineering. 9th edition, 2011, Addison-Wesley

Roger Pressman, Ingeniería de Software: Un Enfoque Práctico. Séptima Edición, 2010, McGraw-Hill

(63)

PRÓXIMA CLASE…

¿Cuáles son los elementos que conforman la Ingeniería de Software?

Referencias

Documento similar