Ingeniería del Software

Anuncio
IGEIERÍA DEL SOFTWARE.
Mª Dolores Carballar Falcón
28935146L
REFERECIA AL SISTEMA EDUCATIVO ACTUAL.
Los contenidos de este tema, están enfocados a introducir al alumno en el concepto
de Ingeniería del Software. Estos contenidos, según determina el Decreto 132/1995 por
el que se establece el currículo del ciclo formativo de grado superior de Desarrollo de
Aplicaciones Informáticas, se corresponden al módulo de Análisis y Diseño Detallado
de Aplicaciones Informáticas de Gestión. Puede ser tomado como tema inicial del
módulo porque ofrece una panorámica general del concepto de Ingeniería del Software,
el ciclo de vida del software así como las distintas metodologías que se utilizan en el
desarrollo de aplicaciones.
1.- ITRODUCCIÓ A LA IGEIERÍA DEL SOFTWARE
Software: instrucciones que cuando se ejecutan proporcionan la función deseada.
Sus características principales son:
a) es intangible, no es algo físico.
b) se desarrolla, no se fabrica. El desarrollo implica que hasta que no llegan las
fases finales no vemos el resultado.
c) el software no se estropea… ¿Seguro?:
Fallos del hardware en función
Fallo
del tiempo. (Vida normal de
s
cualquier hardware).
1)
En un principio la proporción
3)
de fallos del hardware 1) es
2)
alta debido a defectos en el
diseño o en la fabricación.
Tiempo
Posteriormente la proporción
de fallos se estabiliza 2) y en un plazo más lejano vuelven a aumentar los fallos
como consecuencia del deterioro de los componentes 3). Esta es la llamada curva de
bañera. Si nos fijamos ahora en los fallos del software en función del tiempo,
podemos observar una
primera línea que parte
de una gran cantidad de
Fallo
3´´)
fallos 1) debido a fallos
s
en el desarrollo o en el
1)
3) 3´)
diseño. Después se esta2)
biliza 2) debido
2´)
a la resolución de los
fallos, aunque rápidamente aparecen nuevos
Tiempo
fallos tanto en el mantenimiento como en el
nuevo desarrollo de
software 3) que aunque se solucionan, pronto vuelven a aparecer otros que también
se solucionan 3´) 3´´)...... pero contribuyen al deterioro definitivo del software.
En un principio podríamos pensar que la gráfica seguiría la línea 2´) debido a que el
software no se estropea, pero la realidad es, que aunque no se pueda deteriorar
físicamente, si lo hace en el ámbito de mantenimiento, siguiendo la pauta de la
anterior gráfica que se puede simplificar en la siguiente:
Fallo
s
Tiempo
Además, cuando un hardware se estropea, se sustituye por una pieza de repuesto,
pero no hay piezas de repuesto para el software. Cada fallo en el software implica
errores en el diseño o en el proceso de traducción de ese diseño al código ejecutable,
por tanto el mantenimiento del software es mucho más complicado que el del
hardware.
d) La mayoría del software se construye a medida, es decir, adaptado a las
necesidades del cliente en vez de ensamblar componentes existentes. Todavía está
por conseguir la reusabilidad del software.
Definiciones de Ingeniería del Software:
1) Es la disciplina que intenta obtener productos de calidad del software.
2) Es una disciplina tecnológica-administrativa dedicada a la producción
sistemática de productos de programación, que se han desarrollado y
modificado a tiempo y dentro de un presupuesto definido.
La Ingeniería del Software está compuesta por tres elementos claves:
1- Técnicas ó Métodos: proporcionan las normas a seguir al construir software
(MER, DFD,…)
2- Herramientas: sirven de soporte a las técnicas; hoy se habla de Herramientas
CASE (ingeniería del software asistida por computadora) como una gran ayuda en el
análisis y diseño de aplicaciones.
3- Procedimientos: Definen la secuencia en la que se aplican las técnicas.
2.-COCEPTOS BÁSICOS.
Sistema: Conjunto de componentes, que ordenadamente relacionados entre sí,
contribuyen a un determinado objetivo.
Sistemas de Información: Sistema que me proporciona información para la toma de
decisiones.
Sistema Informático: Es un sistema de información basado en ordenadores.
Aplicación Informática: También llamado proyecto software y es el conjunto de
programas que resuelven un determinado problema. Estas aplicaciones se desarrollan
siguiendo un esquema que recibe el nombre de ciclo de vida de una aplicación
(paradigma).
Un sistema informático sería el conjunto de elementos necesarios para la realización y
utilización de aplicaciones informáticas.
3.-ETAPAS DEL CICLO DE VIDA DE UA APLICACIÓ IFORMÁTICA.
Ciclo de vida se define como el conjunto de fases que transcurren desde que surge la
idea de construir una aplicación, hasta que la aplicación deja de tener validez y se
desecha.
Etapas fundamentales en el ciclo de vida de todo proyecto:
PLANIFICACIÓN
DESARROLLO
MANTENIMIENTO
-
Planificación: En esta fase se hace imprescindible conocer el sistema de
información o informático, en el que va a estar inmerso el software que voy a
desarrollar, determinar los objetivos a cumplir, definir un plan de acción
(proyecto a desarrollar y calendario que se va a seguir), evaluar los recursos
necesarios y determinar un plan de seguimiento con mecanismos de evaluación
adecuados. (Técnicas de Análisis Coste/Beneficio)
-
Desarrollo: Se divide en cuatro etapas:
Análisis: Consiste en responder a la siguiente pregunta: ¿Qué
es lo que tenemos que hacer? Se trata de conocer los datos a
manejar, el conjunto de entradas que necesita el sistema, el
conjunto de salidas que van a producirse y los procesos que
tengo que implantar. Siempre dependiendo de las
especificaciones marcadas por el cliente. (MER,MR,DFD)
Diseño: Consiste en responder a la siguiente pregunta: ¿Cómo
lo tenemos que hacer? Se trata de cómo los programas van a
conseguir los objetivos con los datos disponibles. (DE,DTE)
Codificación: Consiste en traducir los resultados del diseño a
un lenguaje de programación.
Pruebas: Consiste en verificar y validar la solución obtenida.
Existen pruebas unitarias, que comprueban el funcionamiento
de cada componente individual y pruebas de integración que
comprueban que componentes probados individualmente
funcionan bien de forma conjunta.
-
Mantenimiento: aquí me pregunto cómo se gestiona el cambio una vez que el
sistema está en explotación.
Mantenimiento Correctivo: Consiste en la corrección de errores
que aparezcan con el uso normal de los programas.
Mantenimiento Adaptativo: Consiste en modificar los programas
existentes, a causa de un cambio en el entorno físico y lógico en el
que están implantados.
Mantenimiento Perfectivo: Consiste en realizar mejoras y
ampliaciones que el cliente solicite sobre la aplicación.
Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida.
4.-TIPOS DE CICLO DE VIDA DE UA APLICACIÓ IFORMÁTICA.
Ciclo de Vida Clásico
También es llamado ciclo de vida en cascada o "modelo de ciclo de vida tradicional".
Consiste en ir desarrollando cada una de las etapas secuencialmente, hasta la fase de
implantación del sistema. En este tipo de ciclo hay que esperar a que termine una etapa
para poder empezar la siguiente.
Definición
Análisis
Diseño
Codificación
Prueba
Mantenimiento
Este ciclo de vida está anticuado y es muy criticado porque no tiene vuelta atrás,
no se ve el producto hasta la etapa final (el usuario debe tener mucha paciencia) y
tampoco posibilita la realimentación. La secuencialidad no es real.
Ciclo de Vida en cascada con vuelta atrás
Introduce mejoras al ciclo anterior.
Definición
Análisis
Diseño
Codificación
Prueba
Mantenimiento
Este es el ciclo de vida más conocido y experimentado. En muchos casos, una
etapa del CV no puede ser completada del todo por falta de detalles en la definición del
problema. En estas situaciones, se hace necesario dejar dicha etapa sin terminar y pasar
a las siguientes, para regresar más tarde a completarla. En otras ocasiones, las
decisiones tomadas en etapas posteriores obligan a modificar otras ya dadas por
terminadas y definitivas. O bien se descubren errores en etapas ya superadas. Este ciclo
contempla la posibilidad de volver atrás desde cualquier etapa. También se le llama
ciclo de realimentación.
Ciclo de Refinamiento de Prototipos
FINAL
COMIENZO
Producto
ingeniería
Refinamiento
prototipo
Evaluación
prototipo
Recogida y
refinamiento de
requisitos
Diseño
rápido
Construcción
prototipo
Entendemos por prototipo un modelo evolutivo de la solución software final.
Poco a poco se irá refinando para adaptarlo a las necesidades del proyecto.
Dentro de los inconvenientes de este ciclo encontramos:
-
-
Posible incorporación al producto final de deficiencias asumidas en la
construcción del prototipo, ya que se continúa a partir del prototipo y no se
empieza de nuevo.
Ralentiza el proceso de desarrollo.
Se debe contar con la participación activa del cliente, mediante entrevistas,
sesiones de demostración,...etc.
Ventajas:
- Genera un producto más seguro, en cuanto a satisfacción de las necesidades del
cliente.
Ciclo de Vida en Espiral
Trata de aunar las ventajas de los modelos anteriores, incorporando el análisis de
riesgos, con lo que ganan importancia los factores económicos del proyecto.
Se distribuye en 4 etapas: Planificación, análisis de riesgos, ingeniería y
evaluación. Recibe su nombre por la forma circular y creciente en que se va pasando de
cada etapa a la siguiente: en cada vuelta del CV cada etapa es más compleja, comprende
más trabajo y consume más recursos (tiempo, dinero,...), pero está más cercana a la
solución final. De esta manera el proceso global de construcción del producto software
es claramente evolutivo (a la manera de los prototipos), mientras que en cada vuelta del
ciclo, este proceso es lineal (como el modelo en cascada).
Aquí el proyecto se comienza desde el primer instante, no como en el de prototipos.
Planificación
Análisis
de riesgo
Evaluación
del cliente
Ingeniería
El análisis de riesgo es una etapa donde nos preguntamos si es conveniente
seguir con el proyecto. Esto suele producirse a partir de la segunda versión.
En general:
Si el problema es perfectamente conocido,
en el que el usuario define claramente los
requisitos, y el equipo de desarrollo tiene
amplia experiencia en la cuestión
Si el desarrollo conlleva muchos riesgos
Si es importante ir probando el producto a
medida que se desarrolla para demostrarle
al usuario y al cliente su utilidad
CV en cascada
CV en espiral
CV basado en prototipos
En la vida real, no se da ninguna de estas situaciones en estado puro, sino mezcladas
entre sí. Por este motivo, el criterio y la experiencia de los jefes de proyecto y de los
analistas son cruciales para realizar una buena elección del tipo de ciclo de vida a
seguir.
5.-METODOLOGÍAS DE DESARROLLO DE SOFTWARE.
Definimos metodología como un conjunto de pasos y procedimientos, que deben
seguirse para el desarrollo del software.
Los enfoques metodológicos han ido evolucionando a lo largo del tiempo.
Inicialmente se identifica un período de desarrollo convencional, durante el cual las
prácticas de desarrollo eran totalmente artesanales y en el que no había metodologías
definidas, lo que acarreaba multitud de problemas.
Posteriormente surge el desarrollo estructurado partiendo de la programación
estructurada y que sigue con los métodos de análisis y diseño estructurado, hasta llegar
a metodologías estructuradas que cubren el ciclo de vida completo.
En la actualidad aparece el paradigma de la orientación a objetos, como un nuevo
enfoque en la ingeniería del software.
Desarrollo Convencional: en los años 50, no existían metodologías de
desarrollo. Las personas que desarrollaban los sistemas eran programadores más
enfocados en la tarea de codificar, que en la de recoger y comprender las
necesidades de los usuarios. Estos, a menudo, no quedaban satisfechos con el
sistema, porque sus necesidades no estaban definidas con claridad en una fase de
análisis previo. Ante esta perspectiva se vio la importancia del análisis y del
diseño en el desarrollo de un sistema. Ahora se empieza a hablar de analistas
programadores y analistas de sistemas.
Problemas:
1) Los resultados finales son impredecibles.
2) No hay forma de controlar lo que está sucediendo en el proyecto. El director de
proyecto, al no existir fases establecidas y productos intermedios concretos
sobre los que realizar verificaciones, no puede saber cuál es el estado actual del
proyecto; lo que influye en su toma de decisiones.
Esto lleva también a una detección tardía de defectos, que se pueden presentar
cuando se está probando el código o aún peor, cuando el sistema ya esté en
explotación, con lo que los costes se disparan.
Para controlar lo que está sucediendo en un proyecto, es necesario establecer
puntos de control donde se verifique que el desarrollo avanza de forma
adecuada; donde se confirme que los defectos detectados son corregidos y que
en su corrección no se produzcan nuevos errores.
3) Falta de documentación estandarizada y actualizada adecuadamente.
Desarrollo Estructurado: el nacimiento de las técnicas estructuradas se puede
considerar un punto de partida en el que se pasa de la construcción de programas
de forma artesanal, a una que sigue unos métodos de ingeniería, sentando las
bases para un desarrollo automatizado (herramientas CASE).
- Programación Estructurada: el enfoque de desarrollo estructurado
comenzó con la programación para determinar como se debía ver un programa
de forma que fuera lo más comprensible posible. Empieza a usarse a finales de
los 60. Consiste en establecer normas para la aplicación de las estructuras de
datos y de control.
⇒ Tipos de estructuras de control: secuencial, repetitiva (bucle), y alternativas.
⇒ Tipos de estructuras de datos: vectorial, matricial, listas,...
- Diseño Estructurado: a mediados de los 70, el enfoque estructurado se
extiende a la fase de diseño. Se define un nivel de abstracción más amplio
utilizando el módulo de programa como componente básico de construcción.
- Análisis Estructurado: hasta la aparición de los primeros conceptos
sobre el análisis estructurado, en la mayoría de los proyectos se hacía una
especificación narrativa de los requisitos tal y como los percibía el analista.
Estas especificaciones tenían varios problemas:
(1) Eran monolíticas, es decir había que leer la especificación de
requisitos completamente para poder entenderla.
(2) Eran redundantes, es decir, frecuentemente se repetía la
misma información en partes diferentes del documento. Esto implica que
si se cambia algún requisito del usuario, se debía modificar dicha
especificación en varios lugares, para evitar inconsistencias.
(3) Eran ambiguas, es decir, un informe detallado de los requisitos
se interpretaba de forma diferente por usuarios, analistas y diseñadores,
por esto se produce un movimiento gradual hacia las especificaciones
funcionales gráficas (aquellas compuesta por variedad de diagramas,
apoyados con técnicas textuales detalladas, que sirven de referencia a la
especificación. Ej: diagrama de flujo de datos), particionadas (aquellas
que permiten que se puedan leer porciones independientes de la
especificación) y mínimamente redundantes. Este enfoque se conoce
como análisis estructurado o también análisis descendente o Top-Down.
Desarrollo Orientado a Objetos: el paradigma orientado a objetos, a diferencia
del enfoque estructurado trata los procesos y los datos de forma conjunta, es
decir, modulariza tanto la información como el procesamiento. La orientación a
objetos empieza con los lenguajes de programación orientados a objetos; en
estos lenguajes los problemas del mundo real se representan como un conjunto
de objetos para los que se adjuntan un conjunto de operaciones. Ej: C++, Java.
En España, la metodología utilizada en la Administración pública es METRICA V3
(http://www.csi.map.es/csi/metrica3/). También existen otras para distintos países de
Europa como MERISSE en Francia y SSADM en el Reino Unido.
Descargar