You are on page 1of 30

Tema 13

Metodologas en el desarrollo de Sistemas de Software

Prof. Oscar Adolfo Vallejos

Desarrollo de Sistemas de Software

Objetivo Conceptos en el contexto ms amplio de Software e Ingeniera de Software

Ubicacin del Proceso del Anlisis y expresin de Algortimso dentro de lo que se llama ciclo de vida del software en el desarrollo de sistemas.

Prof. Oscar Adolfo Vallejos

Metodologia del Anlisis y Diseo del Software

Ingenira del Software

Definicin La Ingeniera del Software es el rea de la ciencia Informtica que trata el anlisis, diseo e implementacin de Sistemas de Software. Un conjunto de programas relacionados, orientados a resolver un problema del mundo real que, por su complejidad y tamao, requieren para su solucin un equipo de especialistas. Programacin de una Aplicacin Tarea individual Ingeniera del Software Desarrollo en equipo Un Sistema de Software se concibe su aplicacin durante un tiempo prolongado, con lo que posteriores modificaciones, correcciones o ampliaciones al sistema pueden ser realizadas por un equipo de especialistas diferente del original. Ingeniera del Software se asocia con la existencia de una metodologa de produccin.

Evolucin del Software

Dcada de los 50 Orientacin por lotes; Distribucin limitada; Software a medida. Desde 1960 hasta mediado de los aos 70. Multiprogramacin, Multiusuario; Tiempo real; Bases de datos; Produccin software. Desde mitad de los 70 hasta mitad de los 80. Sistemas distribuidos; Inteligencia empotrada; Hardware de bajo coste; Impacto en el consumidor. Desde mitad de los aos 80 hasta nuestros das. Sistemas expertos; Mquinas de I.A; Arquitecturas paralelas.

Crisis del Software

La crisis del software es una serie de problemas que hacen que el software no alcance las expectativas u objetivos esperados por desarrolladores, gestores, clientes, etc. Problemas fundamentales.

La sofisticacin del hardware no esta acompaada de la del software. Demanda creciente. Mantenimiento difcil.
Problemas de los expertos.

Planificacin y precios imprecisos. La productividad de la gente del software no se corresponde con la demanda. La calidad muchas veces no es la adecuada.
Motivos de estos problemas

No hay tiempo para recoger los datos para el proceso de desarrollo. Falta comunicacin con el cliente. Calidad cuestionable. Dificultad en el mantenimiento.

Fases Genricas de la IS

Ciclo de Vida clsico de un Sistema de Software

Ciclo de Vida clsico de un Sistema de Software

Anlisis y Especificacin de requerimientos Objetivo: relevar, documentar y especificar los requerimientos del sistema de software, teniendo especialmente en cuenta el contexto y el enfoque del usuario. Incluye los estudios de factibilidad, riesgo del proyecto y anlisis de costo del Sistema.

Ciclo de Vida clsico de un Sistema de Software

Diseo y Especificacin de Sistema Dos niveles de diseo del SS. La concepcin de la arquitectura del sistema (definicin del soporte fsico de contexto y la subdivisin funcional del sistema en mdulos.

El diseo detallado que refina la especificacin de cada uno de los mdlos y su interfaz de comunicacin intra mdulos y con el usuario.

Ciclo de Vida clsico de un Sistema de Software

Codificacin y verificacin de los mdulos La produccin efectiva del cdigo da cada uno de los mdulos y la prueba funcional de los mismos con datos que representen la operatoria normal del sistema constituyen el ncleo de esta etapa.

Ciclo de Vida clsico de un Sistema de Software

Integracin y prueba global del Sistema

Los mdulos desarrollados y probados independientemente deben acoplarse en un sistema nico y realizar un prueba funcional con el sistema en su ambiente real, a fin de llegar a la entrega definitiva del sistema al usuario.
Relacin de la prueba global con el documento de requerimientos inicial.

Ciclo de Vida clsico de un Sistema de Software

Mantenimiento del Sistema Un concepto de calidad lleva a suponer que una vez desarrollado, el sistema debera ser estable y libre de errores. (El producto que se ha entregado es un producto definitivo y que su tarea ha concluido). Una vez entregado el SS comienza la etapa tal vez ms compleja. Los sistemas fallan, se modifican y crecen. Tres aspectos :

Errores de la concepcin y/o desarrollo del sistema Modificaciones a pedido del usuario Crecimientos de especificaciones iniciales

Ciclo de Vida clsico de un Sistema de Software

Ciclo de Vida clsico de un Sistema de Software

Tiempos y costos requeridos por las etapas del ciclo de vida Los costos dependen del tipo de sistema.

Los errores y modificaciones se hacen mas costosos a medida que estamos mas avanzados en el desarrollo de sistema.
En la etapa tradicional de programacin y prueba, difcilmente se invierta mas del 15% del tiempo y costo de desarrollo. La actividad creativa es el diseo. (25 %). Es imprescindible contar con equipos multidisciplinarios y con gran capacidad de comprensin del ambiente y actividad del usuario en la etapa del anlisis de requerimientos.

El usuario debe participar efectivamente tanto de la especificacin de requerimientos como de pruebas parciales y finales del sistema.
La etapa de mantenimiento de los sistemas de software es costosa y de costo creciente en el tiempo (35 %).

Ciclo de Vida clsico de un Sistema de Software

Especificacin, codificacin y prueba de algoritmos El costo y el tiempo de la actividad de codificacin es relativamente pequeo, dentro de sistemas complejos. Objetivo: desarrollar programas eficientes y verificables. Verificar la correccin controlando el cumplimiento de las especificaciones realizadas. Actualmente se esta haciendo un gran esfuerzo por lograr la automatizacin en la generacin del cdigo.

Ciclo de Vida clsico de un Sistema de Software

Mtodo de refinamiento sucesivos Primero se modeliza el problema del mundo real. Se analizan las estructura global del sistema y los datos que representan el problema. Se descompone la solucin en partes (modularizacin). Se desarrolla cada uno de los mdulos bsicos y se los prueba. Si es necesario se sigue refinando cada mdulo en sus partes elementales. Desde el punto de vista formativo, el criterio de abstraer lo general y derivar lo particular es muy til. En la concepcin de software de alta productividad muchas veces se utilizan mdulos previamente desarrollados (reusabilidad).

Ciclo de Vida clsico de un Sistema de Software

Nocin de paradigma de programacin Paradigma procedural (imperativo) Paradigma de Lgica y Funcional Paradigma Orientados a Objetos (?)

Paradigmas Orientados a Eventos.

Ciclo de Vida clsico de un Sistema de Software

El rol del especialista en software Analizar el problema del mundo real, abstrayendo sus requerimientos Disear la posible solucin de los mismos (c/htas informticas). Establecer mtodos de verificacin y prueba de los sistemas de software desarrollados. Mantener los sistemas asimilando las modificaciones y ampliaciones solicitadas por el usuario. Tener capacidad de eleccin entre los recursos que ofrece la tecnologa que sean las mejores para resolver el problema.

Ciclo de Vida clsico de un Sistema de Software

Aspectos importantes de los Sistemas de Software

Cualidades de software que son deseables. Algunas de stas se aplican tanto al producto como al proceso usado para producir el producto.
El usuario quiere que el producto de software sea confiable, eficiente y fcil de usar. El productor del software quiere que sea verificable, mantenible, portable y extensible. El director del proyecto de software quiere que el proceso de desarrollo del software sea productivo y fcil de controlar.

Cualidades Externas Versus Internas


Las externas son visibles a los usuarios del sistema Las cualidades internas son aquellas que incumben a los que desarrollan el sistema.

Cualidades de Producto y de Proceso

Cualidades al proceso

Requiere una planificacin cuidadosa de los datos de prueba del programa antes de comenzar cualquier diseo y desarrollo del sistema, la confiabilidad del producto aumentar. Algunas cualidades, tales como la eficiencia, se aplican a ambos (al producto y al proceso).
Un producto se refiere a lo que es entregado al cliente. (perspectiva del cliente). Un Producto no solo es cdigo y manuales, sino, requerimientos, diseo, arquitectura, configuracin, etc. (perspectiva del developer) La gestin de configuracin es la parte del proceso de produccin del software que se ocupa de mantener y controlar la relacin entre todas las piezas relacionadas de las diferentes, diversas versiones de un producto.

Correccin Un programa es funcionalmente correcto si se comporta de acuerdo a la especificacin de las funciones que debera proveer (especificaciones de requerimientos funcionales). La definicin de correccin asume que una especificacin del sistema est disponible y que es posible determinar sin ambigedad si el programa satisface o no las especificaciones. Claramente, la correccin es una propiedad conveniente, aconsejable para los sistemas de software. La correccin es una propiedad matemtica que establece la equivalencia entre el software y su especificacin. La correccin se puede evaluar a travs de una variedad de mtodos. La correccin tambin puede ser aumentada usando herramientas adecuadas. Puede ser mejorada usando algoritmos estndar o usando bibliotecas de mdulos estndar, en lugar de inventar otros nuevos.

Confiabilidad

Informalmente, el software es confiable si el usuario puede contar con l. Formalmente, confiabilidad del software es la probabilidad de que el software va a funcionar como debe en un intervalo de tiempo especificado. La correccin es una cualidad absoluta: cualquier desviacin de los requerimientos hace que el sistema sea incorrecto, sin tener en cuenta cuan menor o grave sea la consecuencia de la desviacin. La nocin de confiabilidad es, por otro lado, relativa: si la consecuencia de un error del software no es grave, el software incorrecto puede an ser confiable. Se espera de los productos de ingeniera que sean confiables. Este es uno de los sntomas ms sorprendentes de la inmadurez del campo de la ingeniera de software como una disciplina de ingeniera. [Dijkstra, 1989, el trmino bug que a menudo usan los ingenieros de software, es falta de profesionalismo].

Los errores de diseo de software son tratados como inevitables. (Se espera que ocurran).
La ingeniera de software ser una disciplina de la ingeniera slo cuando podamos lograr confiabilidad del software.

Robustez

Un producto es robusto si se comporta razonablemente, an en circunstancias que no fueron previstas en las especificaciones de requerimientos. La robustez es una cualidad difcil de definir; si pudiramos establecer con precisin lo que deberamos hacer para conseguir que una aplicacin sea robusta, seramos capaces de especificar su comportamiento razonable completamente. As, la robustez se convertira en equivalente a correccin (o confiabilidad, en el sentido de la Figura). La cantidad de cdigo dedicado a robustez depende del rea de aplicacin. La robustez y la correccin, estn plenamente relacionadas, sin una lnea divisoria definida entre ellas. Si colocamos un requerimiento en la especificacin, su logro se convierte en una cuestin de correccin; si lo dejamos fuera de la especificacin, puede convertirse en una cuestin de robustez. Por ltimo, la confiabilidad interviene porque no todos los comportamientos incorrectos indican problemas igualmente graves; algunos comportamientos incorrectos pueden, de hecho, ser tolerados. La correccin, la robustez y la confiabilidad se aplican tambin al proceso de produccin del software.

Amigabilidad [User Friendliness]

La interfaz con el usuario es un componente importante de la amigabilidad.

Por Ej.: un sistema de software embebido [embedded] no tiene una interaccin con un usuario humano. En lugar de eso, interacta con el hardware y quizs otros sistemas de software. En este caso la amigabilidad se refleja en la facilidad con la cual el sistema puede ser configurado y adaptado al ambiente del hardware.
En general, la amigabilidad de un sistema depende de la consistencia de las interacciones de su usuario y operador. La correccin y performance, afectan a la amigabilidad. La amigabilidad tambin es tratada bajo el tema factores humanos. La importante actividad actual de investigacin y desarrollo en el rea de interaccin estndar con el usuario para sistemas de software llevar al desarrollo de sistemas ms amigables en el futuro.

Verificabilidad

Un sistema de software es verificable si sus propiedades pueden ser verificables fcilmente.


Por ejemplo, la correccin o la perfomance de un sistema de software, son propiedades que son interesantes de ser verificadas. Diseo modular, prctica de codificacin disciplinado y el uso de un apropiado lenguaje de programacin, todo esto contribuye a la verificabilidad. La verificabilidad es usualmente una cualidad interna, aunque algunas veces se vuelve una cualidad externa. El alto nivel del estndar de seguridad para un sistema de computadora creble, requiere de la verificabilidad del kernel del sistema operativo.

Maintainability Mantenimiento de software: se referirse a las modificaciones que se hacen a un sistema de software despus de su versin inicial. El mantenimiento ha sido usado bug fixing y fue afligente descubrir cuanto esfuerzo se ha gastado en corregir los defectos. Mantenimiento: No es apropiado usarlo con el sofware. 1ro. En esencia es, modificaciones por la evolucin del software. 2do. El usar el trmino mantenimiento con software da una connotacin errnea debido a que el software no se desgasta. El costo de mantenimiento excede el 60% del total del costo del software. Para analizar los factores que afectan dichos costos, es necesario dividir el mantenimiento del software en tres categoras: mantenimiento correctivo, adaptativo y perfectivo.

Maintainability

Mantenimiento correctivo: tiene que hacer en todo aquello que se hace para remover los errores residuales presentes en el producto cuando se liber, como tambin los errores introducidos dentro del software durante su mantenimiento.
Mantenimientos adaptativo y perfectivo son las fuentes reales de cambio en el software; ellos motivan la introduccin de la evolucionabilidad como una calidad fundamental del software y la anticipacin del cambio como un principio general que deber guiar al ingeniero de software. Los costos de mantenimiento adaptativo son cercanas a otro 20% de los costos de mantenimiento mientras que ms del 50% es absorbido por el mantenimiento perfectivo.

El mantenimiento adaptativo involucra ajustes en la aplicacin de cambios en el medio ambiente.


Finalmente, el mantenimiento perfectivo involucra cambios en el software para mejorar algunas de estas cualidades.

Reusabilidad La reusabilidad est emparentado con la evolucionabilidad. En la evolucin del producto, modificamos un producto para construir una nueva versin del mismo producto: en el reuso de un producto, nosotros lo usamos al producto para producir otro producto. La reusabilidad aparece como ms aplicable a los componentes de software que a un producto completo pero ciertamente parece posible construir productos que son reusables. Las bibliotecas cientficas son los ms conocidos componentes reusables. La reusabilidad es difcil de lograr a posteriori, sin embargo, uno debera esforzarse por la reusabilidad cuando los componentes del software son desarrollados. (ADOO, POO).
La reusabilidad aplicada en el proceso de software es buena.

Los distintos modelos de ciclo de vida hacen tambin el intento del reuso de los procesos de alto nivel
La reusabilidad es el factor clave que caracteriza la madurez del campo industrial. El bajo grado de reusabilidad en el software es un claro indicador que el campo debe evolucionar para conseguir el status de una bien establecida disciplina ingenieril.

Portabilidad.

El software es portable si puede correr en diferentes ambientes. (plataforma de hardware o un ambiente de software as como un sistema operativo particular). Una forma de conseguir portabilidad dentro de una arquitectura de una mquina es tener un sistema de software que asuma una configuracin mnima tan lejos como la capacidad de memoria que es involucrada y use un subconjunto de las facilidades de la mquina que son garantizadas para que estn disponibles sobre todos los modelos de la arquitectura. Necesitamos usar tcnicas que permitan que el software determine las capacidades del hardware y que se adapte a ellas. La portabilidad se refiere a la habilidad de correr un sistema sobre diferentes plataformas de hardware. En tanto crezca la relacin de dinero gastado sobre las ganancias de software versus hardware, la portabilidad gana ms importancia. Para muchas aplicaciones, es importante ser portable a travs de los sistemas operativos. O, mirndolo de otra forma, el sistema operativo provee la portabilidad a travs de las plataformas de hardware.

El ciclo de vida clsico de un Sistema de Software

You might also like