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.