Documente Academic
Documente Profesional
Documente Cultură
Agenda
Introduccin
Calidad de software, atributos de calidad, tcnicas O-O,
Conceptos Fundamentales
Correccin relativa, frmulas de correccin, pre y poscondiciones,
Establecimiento de Contratos
Significado de un contrato, no redundancia, trabajo con aserciones,
Agenda
Clases Correctas
Invariantes de clases, la vida de un objeto, validez del invariante,
Introduccin
Introduccin
conjunto de tcnicas que tiene el potencial para mejorar significativamente la calidad de los productos de software Rpido, confiable, fcil de usar, legible, modular, estructu-rado, etc., describen dos tipos diferentes de cualidades
Para que los usuarios disfruten de los atributos visibles, los desarrolladores debemos aplicar tcnicas internas que aseguren los atributos escondidos
Robustez
Acta bien en condiciones anormales
Extensibilidad
Acepta cambios de especificacin
Reusabilidad
til para muchos productos
Compatibilidad
Combinable con otros productos
Transportabilidad
til en diversos entornos
Facilidad de uso
Para diversos tipos de usuarios
Funcionalidad
Posibilidades ofrecidas
Oportunidad
Entregable a tiempo
Conceptos Fundamentales
Una pieza de software no es correcta o incorrecta per se
Conceptos Fundamentales
Tradicionalmente, un programa define slo las operaciones que le ordenamos ejecutar a un computador (el cmo)
la especificacin usaremos
Definiremos una pre y una poscondicin para cada rutina de una clase (a continuacin) Definiremos un invariante para cada clase (tarea) Nuestro lenguaje de aserciones tiene slo parte del poder del clculo de predicados (la nocin matemtica ms cercana) Nuestras aserciones sern simplemente expresiones de Boole
Significado de un contrato
Al definir una precondicin pre y una poscondicin pos para una rutina r
Establecimiento de Contratos
Se establece un contrato que vincula a r proveedor de un serviciocon los que llaman a rclientes de ese servicio La clase de r le dice a sus clientes: Si ustedes prometen llamar a r con pre verdadera, yo prometo producir un estado final en que pos sea verdadera
Significado de un contrato
El contrato trae obligaciones y beneficios para ambos: pre es una obligacin para el cliente y un beneficio para el proveedorla condicin para que una llamada sea legtima
Establecimiento de Contratos
pre-condicin): la llamada
puede hacerse slo si s no est lleno
Las aserciones no son estructuras de controlo tcnicas para manejar casos especiales
La violacin de una asercin (precondicin / poscondicin) en tiempo de ejecucin es la manifestacin de un bug en el software (cliente / proveedor)
Incluir la precondicin input > 0 en una rutina que recibe input interactivamente sera slo una expresin de deseo, no una tcnica de confiabilidad
Hay que validar todo objeto recibido desde el exterior lo ms cercanamente posible a su fuente, p.ej., usando filtros
Cumplir la condicin de operacin de una rutina debe ser responsabilidad de slo uno (no redundancia) de
Los clientesdiseo exigente La rutinadiseo tolerante
Exportacin de atributos
Todo atributo que aparece en la precondicin de una rutina debe estar disponible para todos los clientes para los cuales la rutina est disponible
Invariantes de clases
Las pre y poscondiciones describen las propiedades de rutinas individuales Cmo expresar propiedades globales de las instancias de una clase que deben ser preservadas por todas las rutinas? El invariante de una clase
Clases Correctas
es un conjunto de aserciones que se incluye en el texto de la clase captura las propiedades semnticas y las restricciones de integridad ms profundas que caracterizan a la clase
El objeto es engendrado mediante una instruccin de creacin, que puede o no llamar a una rutina de creacin definida en T, y alcanza su primer estado en la vida:
El objeto es creado inicialmente con valores por defecto para sus atributos Si se llam a una rutina de creacin, sta puede asignar otros valores iniciales a los atributos del objeto
Luego, a travs de alguna referencia a, los clientes de T usan el objeto, secuencialmente, aplicando operaciones de la forma af(), en que f es un atributo o una rutina de T
Toda instancia a de una clase T debe satisfacer el invarian-te de T en todo momento en el cual el estado de a es obser-vable desde el exterior:
El estado que resulta al crearse la instancia a
Los estados inmediatamente antes e inmediatamente despus de una invocacin ar() ejecutada por un cliente, en que r es una rutina de T
Es aceptable que una rutina de T destruya el invariante de T durante su ejecucin, siempre que lo restablezca antes de terminar su ejecucin
Los invariantes son propiedades que cambian mucho menos frecuentemente que los atributos y las rutinas de las clases
Una clase es correcta o incorrecta slo con respecto a una especificacin Las pre y poscondiciones de las rutinas y el invariante son una forma de incluir la especificacin en el texto de la clase Una clase es correcta si y slo si su implementacinlos cuerpos de las rutinases consistente con el invariante y con las pre y poscondiciones
hereda todos los atributos y funciones de POLIGONO puede redefinir perimetro, establecer en su invariante que num_vertices = 4, definir un nuevo atributo
diagonal
Asociacin dinmica
Qu pasa cuando una rutina con ms de una versin por herencia es aplicada a una entidad polimrfica? En pperimetro, p puede haber sido declarado de tipo POLIGONO, pero al momento de la llamada estar vinculada a un objeto de tipo RECTANGULO La forma dinmica del objeto vinculado a la entidad polimrfica determina cul versin de la rutina hay que aplicar
datos polimrficas
Reglas fundamentales
Aserciones y herencia
En una clase descendiente, todas las aserciones de los ancestros (pre y poscondiciones de rutinas, e invariantes de clases) son aplicables