Kategorien: Alle - corrección - complejidad - modularidad - crisis

von Jordan Arevalo Choez Vor 5 Jahren

421

Organigrama

La calidad del software se evalúa mediante factores externos e internos. Los factores externos, como corrección, eficiencia, portabilidad y facilidad de uso, son perceptibles para los usuarios y son cruciales para la satisfacción del cliente.

Organigrama

Reutilización del software

Beneficios esperados de la reutilización del software Beneficios de reutilizar software: *Aumento de la productividad *Disminuye el esfuerzo de mantenimiento *Aumenta la fiabilidad y eficiencia Beneficios de producir software reutilizable: *Preservar la experiencia de los mejores desarrolladores

PROBLEMAS DE REUTILZACIÓN No técnicos: Cautela respecto al uso del código desarrollado por otros Se requiere una mayor inversión. Técnicos: A pesar de la naturaleza repetitiva de la programación, hacemos las mismas cosas pero no de la misma forma. Difícil capturar las similitudes. Se debe permitir la adaptación (P. Abierto-Cerrado)

Requisitos del código reutilizable Variación de tipos El algoritmo de búsqueda debería ser aplicable a muchos tipos diferentes de elementos (enteros, reales, etc.) „ Variación en estructuras de datos y algoritmos, variación de implementación El tipo Colección[T] puede estar implementado de diferentes formas (Tabla, Lista, etc.) „ Comenzar, Avanzar, Actual, EsUltimo puede estar ligado a diferentes rutinas según sea el tipo de la colección Agrupar rutinas relacionadas Definir en un mismo módulo las operaciones de un tipo „ Factorizar comportamiento común Ejemplo: “Una secuencia es un caso particular de colección que puede ser implementada como un array, una lista enlazada, un fichero secuencial, ..” „ Evitar repeticiones de código en una familia de módulos relacionados. „ Definición incremental: Esquema General y Añadir propiedades específicas.

Requisitos del código reutilizable Ejemplo: algoritmo de búsqueda de un elemento en una colección secuencial:

NOMBRE: Jordan Arevalo Choez CURSO: 5-4

CALIDAD DEL SOFTWARE

Factores de calidad Internos

Ocultación de Información “El diseñador de cada módulo debe seleccionar un subconjunto de propiedades de un módulo como información oficial para ponerla a disposición de los autores de módulos clientes ” Consiste en ocultar los detalles de la implementación al código cliente *INTERFAZ parte pública visible a los clientes *IMPLEMENTACIÓN Parte privada visible sólo dentro del módulo Auto-documentación: “El diseño de un módulo debería esforzarse para lograr que toda la información relativa al módulo forme parte del propio módulo ”. Útiles herramientas que generan la documentación de usuario a partir de los módulos documentados Principio de acceso uniforme Sea c una variable representando una cuenta bancaria y saldo un servicio proporcionado por el módulo de cuentas bancarias, c.saldo -> saldo es un campo saldo(c) -> saldo es una función Necesitamos constructores sintácticos que nos permitan expresar de la misma manera el acceso a una función y a un atributo.

Cohesión: En el diseño orientado a objetos hay tres tipos de módulos: clases, métodos y paquetes. Con los métodos, podemos adoptar las mismas definiciones que para los procedimientos y funciones del diseño estructurado. Las clases tendrán alta cohesión cuando se refieran a una única entidad. Podemos garantizar una fuerte cohesión disminuyendo al mínimo las responsabilidades de una clase Acoplamiento: El acoplamiento mide el grado de relacionamiento de un módulo con los demás. A menor acoplamiento, mejor: el módulo en cuestión será más sencillo de diseñar, programar, probar y mantener. Una clase, en cambio, tendrá bajo acoplamiento cuando tenga la menor dependencia posible de otras clases. Esta dependencia significa que – si bien puede haber muchas clases que dependen de una – debería haber pocas dependencias hacia otras clases desde una sola.  Principios de diseño modular: Ocultación de Información Auto-documentación Acceso Uniforme Abierto-Cerrado Elección Única

Factores de calidad externos

6. Eficiencia: Es la capacidad de un sistema software de requerir la menor cantidad posible de recursos hardware. 7. Portabilidad: Es la facilidad de transferir productos software a diferentes plataformas (entornos hw y sw) 8.Facilidad de uso: Es la facilidad con la que personas con diferentes niveles de experiencia pueden aprender a usar los productos software y aplicarlos a resolver problemas. También incluye la facilidad de instalación, operación y supervisión. 9.Funcionalidad: *Conjunto de posibilidades ofrecido por un sistema *Evitar añadir propiedades de forma incontrolada *Mantener constante el nivel de calidad 10.Oportunidad: Es la capacidad de un sistema software de ser lanzado cuando los usuarios lo desean, o antes

1.Corrección: Es la capacidad de los productos de software de realizar con exactitud su tarea, tal y como es definida en la especificación. 2.Robustez: Es la capacidad de los productos de software de reaccionar adecuadamente ante situaciones excepcionales 3. Extensibilidad: Es la facilidad de adaptación de los productos software a los cambios en la especificación. „ La dificultad de adaptación es proporcional al tamaño del sistema. „ Principios esenciales para facilitar la extensibilidad Simplicidad de la arquitectura del software Descentralización: módulos autónomos 4. Reutilización: Es la capacidad de un producto software de ser utilizado en la construcción de diferentes aplicaciones Se escribe menos software, luego se puede dedicar mas tiempo a mejorar otros factores como la fiabilidad (corrección y robustez) „ 5. Compatibilidad: Es la facilidad de combinar unos elementos software con otros

EI término ingeniería de software fue acuñado en 1968 como una respuesta al nivel de progreso desolador del objetivo de desarrollar software de calidad a tiempo y dentro del presupuesto. No se era capaz de definir objetivos concretos, predecir los recursos necesarios para lograr esos objetivos. Con mucha frecuencia se prometía la luna y la construcción de un vehículo lunar, y se entregaba un par de ruedas cuadradas.

Introducción

IINTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS

Calidad del software

Factores Externos 1- Corrección 6- Eficiencia 2- Robustez 7- Portabilidad 3- Extensibilidad 8- Facilidad de uso 4- Reutilización 9- Funcionalidad 5- Compatibilidad 10- Oportunidad Factores Internos 1- Modularidad 2- Legibilidad
Factores externos: *Pueden ser detectados por los usuarios *Calidad externa es la que realmente preocupa Factores internos: *Sólo lo perciben los diseñadores e implementadores *Medio para conseguir la calidad externa.

Problemas en la creación de software

A finales de los 60 se acuñó el término crisis del software: *Los proyectos no cumplían los plazos y presupuestos. Dificultades inherentes a la naturaleza del software: * Complejidad * Dificultad de enumerar todos los estados posibles del programa. *Dominios de aplicación complejos *Dificultad de comunicación entre los miembros del equipo Sujeto a continuos cambios

Fallas de la Ing. Software

Error del año bisiesto A un supermercado le pusieron una multa de 1,000 dólares por tener carne que había caducado por un día, el 29 de febrero de 1988. El programa de computadora que imprimió la fecha de caducidad en las etiquetas de la carne no tomó en cuenta que 1988 era año bisiesto. Entrega a tiempo Después de 18 meses de desarrollo, se entrego un sistema de 200 millones de dólares a una compañía de seguros de salud en Wisconsin en 1984. Sin embargo, el sistema no funcionó en forma correcta: se expidieron 60 millones de dólares de pagos extras. Se necesitaron tres años para componer el sistema. Cada una de las fallas descritas antes se debió a un problema relacionado con software. En algunos casos los desarrolladores no anticiparon situaciones que ocurren rara vez (una persona que vive más de cien años, años bisiestos que tienen un impacto en las fechas de caducidad).