Calidad del software y principios de diseño

Calidad del software

Cuanto más cerca esté un producto software de sus requisitos, y esos requisitos coincidan con lo que quiere el cliente, mayor será la calidad.

Defecto

Es una desviación de los requisitos, pueden ocurrir en cualquier momento del proceso de desarrollo, identificarlos y eliminarlos lo antes posible.

Verificación

Cada paso en el proceso de desarrollo se ha llevado de manera correcta.

Validación

Cada artefacto producido coincide con los requisitos especificados en fases anteriores.

Quality Metrics

Medidas numéricas que cuantifican el grado en que el software o un proceso posee un atributo dado, pueden ser recogidas y analizadas a lo largo del ciclo de vida y ayudan a determinar el nivel de calidad.

Goals

Sufficiency, modularity, cohesion, coupling, robustness, flexibility, reusability, information hiding, efficiency, reliability.

Robustness

Cada cuanto la app reacciona positivamente a una entrada anómala.

Flexibility

Puede aumentar el tiempo de diseño, desarrollo y mantenimiento, medir con número de niveles de herencia y patrones de diseño.

Reusability

Compensación entre la reutilización y las prioridades para el proyecto actual, características: lo suficientemente abstracto como para obtener una amplia cobertura, suficientemente específico para ser útil, interfaces parametrizadas.

Eficiencia

Temporal y espacial.

Reliability

Buscar puntos en los que la app es más probable que falle.

Continuous Integration

Proceso que rebuilds y testea una app de manera frecuente.

Testing

Proceso utilizado para ayudar a identificar la exactitud, integridad, seguridad y calidad del software desarrollado; unit, integration, system: – funcional no funcional, aceptación, cobertura.

Verificación formal

Herramientas y técnicas con base matemática aplicadas a la verificación funcional o no funcional de software, hardware o protocolos, más potentes que testing normal.

Property-based

El tester especifica una propiedad en un lenguaje formal, la herramienta genera los casos de test óptimos automáticamente para esa propiedad.

Model Checking

Dada una propiedad, explora todos los posibles caminos del programa para comprobar que esa propiedad se sostiene.

Theorem Proving

Dado un modelo formal del software y una fórmula lógica, se realizan pasos matemáticos para mostrar si la fórmula es una consecuencia lógica del modelo.

Principios diseño universal

Equitable use, flexibility use, simple and intuitive use, perceptible information, tolerance for error, low physical effort, size and space for approach and use.

A11y

Asegurando que un sistema puede ser usado por todo el mundo sin depender de edad o habilidades.

Web Acces

Es la práctica de hacer webs usables para todo el mundo, muy relacionado con usabilidad y diseño universal.

WA difficultades

Visual, mobility, auditory, cognitive/intellectual.

Webs accesibles

Transformables, entendibles, navegables.

WCAG

No depender solo del color, clarify natural language use, provide clear navigation mechanisms, design for device-independence.

ATAG

Editing-views perceivable, operable, understandable.

UAAG

Highlighting, alternative views, text search, sequential navigation.

WAI-ARIA

Páginas se declaran a sí mismas como aplicaciones en vez de documentos; uso para desarrolladores, web browsers, tecnologías de asistencia.

Beneficios web A11y

Aumenta el mercado objetivo, menos costes de mantenimiento a la larga, mejor funcionamiento, mejor imagen social, en muchos países sigue la ley.

Patrones

Definición: Técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Objetivo: colección de soluciones de diseño, ya aplicadas con éxito, válidas en distintos contextos. Solución a un problema de diseño no trivial, efectiva y reusable. Soluciones de sentido común para el diseñador experto. Facilitan la comunicación entre diseñadores, High-level perspective, software more modifiable.

Estructura

Nombre, intención, problema, solución, participantes y colaboradores, consecuencias, implementación.

Ideas principales

Diseñar de cara a interfaces, prevalece composición sobre herencia, encontrar lo que cambia y encapsular.