Cualidades del Software

Slides:



Advertisements
Presentaciones similares
UPDS Gestión de riesgos Gestión de riesgos Ingeniería del Software Por Ernesto Soto Roca.
Advertisements

Introducción a la Ingeniería del Software 1 El Diseño de Software Caracteristicas: Proceso Creativo Requiere de experiencia e ingenio Necesita del aprendizaje.
ANALISIS DE FALLA Y CRITICIDAD
Lenguajes de programación Web Juan Felipe Muñoz Fernández.
 La administración de toda empresa requiere una serie de actividades que deben desarrollarse adecuada y oportunamente, con el propósito de asegurar la.
Principios de la Ingeniería de Software Principio s Metodologías Herramientas Técnicas Cada estrato se basa en los inferiores y es más susceptible a cambios.
Ciclo de vida del software. Definición ' El proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una.
SOFTWA RE APLICATIVO Y DE DESARROLLO. Software aplicativo Software de Aplicación es todo programa informático diseñado para facilitar al usuario la realización.
Programación INSTITUTO EVANGELICO LUZ Y VERDAD Nombre: Karoline Cañas Profesor: Moisés Bados Director: Armando Santos.
Fundamentos de Programación de Computadores Módulo de Análisis y Diseño de Algoritmos.
Análisis y Especificación de Requisitos
wShifts – Gestión de Turnos de Trabajo
INTEGRANTES: MAURICIO GARCÍA CÁRDENAS CARLOS PALACIOS CONTRERAS
PROGRAMACIÓN ORIENTADA A OBJETOS
Alcance Visión general
MODELO DE AUTOEVALUACION UNAB
Mejores Prácticas en Proyectos de Desarrollo de Software
Planificación estratégica de Marketing
Proceso para el desarrollo de software
Polimorfismo subtipado
TEMA 21 EL PLAN DE MARKETING
TEMA 14 DISTRIBUCIÓN COMERCIAL (II)
Artículos Definición de grupos de artículos
Cualidades del Software
CIENCIA TECNOLOGÍA Y SOCIEDADES
Introducción a los protocolos de enrutamiento dinámico
Proyecto de Software. t07
Fundamentos de programación
Seminario de Arquitectura de Software
El futuro debe ser Abierto
Departamento de Informática y Sistemas Universidad EAFIT
Proyecto de Software. Clase 06
INGENIERIA EN MINAS GERENCIA EMPRESARIAL
Proceso de Desarrollo de SW
Elaboración del formulario
introducción Ingeniería de software
Cualidades del Software
DIAGRAMA DE PARETO. NOTAS __________________________________________ 1.
En la siguiente presentación veremos algunos términos que debemos conocer para iniciar la educación virtual.
ENFOQUES DE CONSERVACIÓN
PROCESO DE DISEÑO Conceptos de Creatividad e Innovación
INNOVACIONES TECNICAS A LO LARGO DE LA HISTORIA
Tema 6. Conceptos básicos de programación Clase 1
y Administración Pública
Universidad manuela beltran - virtual
METODOLOGIA DEL DESARROLLO DE SISTEMAS
Introducción a la Simulación
Ashu Handa Universidad de Carolina del Norte en Chapel Hill
Las herramientas Case Julian madrigal.
Introducción Gabriel Montañés León.
Diagramas del modelo uml
Fundamentos de Programación
6.6 Administración de defectos
PROGRAMACIÓN 1 INTRODUCCIÓN
Curso de estadística aplicada
IAP: indicadores operativos y analíticos
Proceso de Desarrollo de SW
Objetivos de alta precisión. Consideraciones especiales
GERENCIA DE PROYECTOS Y LAS TIC GESTIÓN DE LOS COSTOS DEL PROYECTO
Ing. Francisco Rodríguez Novoa
Modelo de la cascada (cont.)
GESTIÓN DEL TALENTO HUMANO
Tema 2 Sistemas de información y la organización
PRINCIPIOS FUNDAMENTALES DE LA AUDITORÌA DE DESEMPEÑO
ADMINISTRACION DE OBRAS
PROYECTO INFORMÁTICO ¿QUÉ ES UN PROYECTO INFORMÁTICO?
Requisitos Ing. Maribel Valenzuela Beltrán 1.
Instituto Tecnológico de Zacatecas
LA INTEGRACIÓN SEGMENTADA COMO METODOLOGÍA DE DESARROLLO PARA UNA GERENCIA DE SISTEMAS DE INFORMACIÓN EFECTIVOS 05/08/2019.
Gestión de Proyectos Informáticos (GPI) ISW
Transcripción de la presentación:

Cualidades del Software ¿Qué es un buen software?

Cualidades del Software Correcto Confiable Robusto Eficiente Amigable Verificable Reusable Portable Interoperable Productivo A Tiempo Visible Coheso Desacoplado Comprensible Mantenible Seguro Escalable

Correcto La definición supone: Un software es correcto si se comporta de acuerdo con su especificación. La definición supone: la existencia de un especificación de requisitos la posibilidad de determinar sin ambigüedad la correspondencia entre la especificación y el diseño. La correctitud del software puede comprobarse probándolo o mediante análisis.

Confiable El software es confiable si se comporta de acuerdo con lo esperado por el usuario. A diferencia de la corrección, la confiabilidad es algo relativo. El mercado puede admitir algunos errores en el software siempre que en general se comporte en forma esperable. No sólo no damos garantías de corrección del software, sino que varios productos incluyen un “disclaimer”. Esta es una señal de la inmadurez del área.

Robusto Datos de entrada incorrectos o fallas de hardware. Un software es robusto si se comporta en forma razonable aún en situaciones no anticipadas. Datos de entrada incorrectos o fallas de hardware. La cantidad de código que se dedica a hacer el software robusto depende de la experiencia de los usuarios o lo crítico de su misión. Si algo se especifica como requisito, cumplirlo es cuestión de corrección; si no está en los requisitos es cuestión de robustez.

Eficiencia Un sistema de software es eficiente si usa sus recursos en forma económica. Muy lento → baja la productividad de los usuarios. Usa mucho disco → puede ser muy caro ejecutarlo. Usa mucha memoria → puede afectar la performance de otros sistemas. Los criterios de eficiencia varían con la tecnología y el tiempo. Métodos de evaluación de performance: monitoreo, análisis, simulación. No es bueno evaluar la performance sólo después que el producto esta listo.

Amigable Un software es amigable si sus usuarios lo encuentran fácil de utilizar. La interfaz con el usuario es parte esencial del ser amigable. Depende de los usuarios: novicios: mejor largos mensajes explicativos. expertos: aprecian los atajos. Los sistemas insertos son amigables si son fáciles de configurar. La consistencia de las interfaces es un factor determinante. También la performance y la confiabilidad.

Verificable El software es verificable si sus propiedades pueden ser comprobadas. La corrección y la performance pueden verificarse fácilmente. La verificación puede hacerse mediante análisis o tesiting. Más verificable: monitores en el código, diseño modular, disciplina en la codificación, lenguaje de programación adecuado.

Reusable Un software es reusable si una vez construido se puede usar con pocos o ningún cambio como parte de otra aplicación. La reutilización es más apropiada para componentes que para sistemas completos. Las bibliotecas científicas FORTRAN son los ejemplos más antiguos. Java APIs son ejemplos más nuevos. Los servicios web son un caso actual. El reuso es una cualidad difícil (¿imposible?) de conseguir a posteriori. La orientación a objetos tiene el potencial para mejorar la reutilización y la evolución. También los patrones de arquitectura y el desarrollo de familias de productos.

Portable Un software es portable si puede ejecutarse en distintos ambientes (hardware, sistemas operativos, etc.). Una forma de lograr portabilidad es suponer la mínima configuración. Esto penaliza los sistemas que podrían ejecutar mejor haciendo uso del ambiente disponible. Otra opción es determinar sobre la marcha las disponibilidades del ambiente.

Interoperable Un sistema es interoperable si puede coexistir y cooperar con otros sistemas. Las componentes reutilizables son (deben ser) inherentemente interoperables. La estandarización de las interfaces promueve la interoperabilidad. Los sistemas abiertos son casos típicos de sistemas interoperables.

Productivo La productividad es la eficiencia del proceso de desarrollo del software. La productividad de un equipo de desarrollo es generalmente menor que la suma de las productividades individuales. Existen métricas para medir la productividad (LOC, puntos de función, etc.). La automatización y el soporte de software de desarrollo aumentan la productividad.

A Tiempo El proceso de desarrollo debe obtener su producto en el tiempo planeado. Tener el producto a tiempo da, en general, una mejor oportunidad comercial, y a veces hace que el producto sea útil o inútil. Tener un producto a tiempo sin confiabilidad o eficiencia tampoco es útil. Requiere: planificación estimación del trabajo hitos verificables

Visible Un proceso de desarrollo de software es visible si todos sus pasos están claramente documentados, y se puede saber su estado de avance en cada momento. Diseño, testing, codificación e integración pueden suceder simultáneamente, pero deben coordinarse. La visibilidad ayuda a evaluar el impacto de las decisiones. También es esencial cuando existe rotación en el personal.

Cohesión Medida de la relación entre las partes de una componente. Coincidental: no relacionados. Lógica: funciones similares. Temporal: ejecución simultánea. Procedural: secuencia de control. Comunicacional: comparten el input. Secuencial: output de uno es input del otro. Funcional: todas las partes son necesarias para la función. Objeto: todas las acciones actúan sobre los mismos datos del objeto.

Acoplamiento Sistemas muy acoplados Sistemas desacoplados Medida de la interdependencia de distintas componentes. Sistemas muy acoplados comparten variables o información de control. Sistemas desacoplados interfaces definidas con listas de parámetros.

Comprensible Un sistema es comprensible si es fácil comprender cómo funciona. Características que afectan la comprensibilidad del sistema: cohesión y acoplamiento nombres documentación complejidad Si un sistema es comprensible, es también más mantenible y verificable. Desde el punto de vista del usuario, ser comprensible es ser amigable y robusto.

Mantenible Un sistema es mantenible si es fácil modificarlo. Tipos de mantenimiento: correctivo (aprox. 20%) adaptativo (aprox. 20%) perfectivo (más de 50%) Software Mantenible: reparable: que permite corregir defectos, evolucionable: facilita la introducción de nuevas funcionalidades. Condiciones: número de componentes, acoplamiento, documentación completa, comprensible, al día, uso de componentes estándar. La evolucionabilidad decrece con cada versión del software.

Seguro Un software es seguro si es capaz de resistir usos maliciosos sin restar funcionalidad a los usos regulares. Una estrategia habitual es definir identificación de usuarios para acceder al sistema. Otra estrategia más sofisticada es la definición de perfiles. En sistemas abiertos: inundar servidor con solicitudes le impide brindar otros servicios.

Escalable Un sistema es escalable si puede crecer sin degradarse significativamente. Un sistema puede crecer con respecto al número de usuarios, cantidad de datos manejado o alguna otra dimensión. Durante el análisis y el diseño del sistema se piensa las dimensiones de crecimiento y se realizan pruebas de esfuerzo.