Universidad de los Andes Ingeniería de Sistemas y Computación Proyecto CUPI2 Diseño de un nivel - Curso C1 J. Villalobos, R. Casallas Enero 20/2006 Documento Elaborado por Fecha Nivel: 4 Propósito general Modelaje & solución de problemas Introducir el concepto de contrato y un conjunto de técnicas metodológicas para asignación de responsabilidades, diseño de métodos y solución de problemas. En este nivel se hace énfasis en el eje de metodología. C Conceptos de precondición y postcondición, como condiciones sobre la situación inicial del problema y sobre la situación final. División de la precondición entre condiciones sobre los parámetros y condiciones sobre los atributos y las asociaciones (estado del mundo). División de la postcondición entre condiciones sobre el retorno, condiciones sobre el estado del mundo después de ejecutar el método y excepciones posibles al contrato. Concepto de contrato, definido de la siguiente manera: (1) El método tiene que suponer que la precondición se cumple (no hace ninguna validación al respecto), (2) el método se compromete a llegar a la postcondición, (3) si se presenta una situación que haga imposible llegar a la postcondición debe lanzar una de las excepciones definidas como parte del contrato. H El estudiante debe ser capaz de expresar en lenguaje natural una condición de manera no ambigua, que haga referencia a los valores válidos de los parámetros, el retorno, los atributos y las asociaciones. El estudiante debe ser capaz de escribir un contrato a partir de la descripción informal de lo que debe hacer un método. Algorítmica C Concepto de algoritmo que cumple un contrato. Responsabilidades del algoritmo en cuanto a la precondición (se da siempre por cumplida) y a la postcondición. Responsabilidad de quien usa el algoritmo (verificar que cumple la precondición y asegurarse de manejar de manera adecuada las excepciones). H El estudiante debe ser capaz de escribir un algoritmo siguiendo una especificación expresada como un contrato. El estudiante debe ser capaz de leer un algoritmo y escribir el contrato que implementa. Elementos estructuradores C Concepto de contrato, como una responsabilidad explícita que asume un elemento de la arquitectura con respecto a los demás. y arquitecturas Procesos de software H El estudiante debe ser capaz de escribir y leer un contrato simple, y de entender las responsabilidades que éste conlleva. C Estándar de documentación del contrato de un método en javadoc: /** * <descripción> * @param <nombre> <descripción> <precondición> * @param <nombre> <descripción> <precondición> * pre: <precondición> * @return <descripción> <postcondición> * post: <postcondición> * @throws Exception <descripción> */ Localización de las pruebas en el espacio de trabajo (directorio test). Estructura interna de directorios y archivos. H El estudiante debe ser capaz de expresar un contrato usando el estándar definido. El estudiante debe ser capaz de ejecutar las pruebas de una clase, y localizar un problema en caso de que exista. Tecnología y programación C javadoc: sintaxis y etiquetas Concepto de excepción como un mecanismo de manejo y recuperación de situaciones anormales. Introducción de la clase Exception de java y de los métodos principales. Instrucción try – catch de java Declaración throws e instrucción thow de java H El estudiante debe ser capaz de documentar correctamente un método usando javadoc y utilizar los comandos para generar la respectiva documentación El estudiante debe ser capaz de escribir un método que lance una excepción. El estudiante debe ser capaz de escribir un método que llame un método de puede lanzar una excepción, manejarla con la instrucción try – catch, y recuperarse de diferentes maneras. Herramientas programación C Uso de la aplicación que genera el javadoc de un programa H El estudiante debe ser capaz de generar el javadoc de un programa, y de escribir el bat correspondiente Cupi2 – Diseño de un nivel 2 Técnicas de programación y metodologías C Técnica de dividir y conquistar, aplicada a un requerimiento funcional complejo que debe ser partido en tareas más simples para facilitar su solución. Concepto de plan de solución expresado como un conjunto de tareas bien definidas y de metas intermedias. Patrón experto como guía en el proceso de asignación de responsabilidades. Relación entre el “quién sabe qué y el quién es responsable de qué”. Técnicas para definir los parámetros de un método Técnicas para diseñar el tipo de retorno de un método, en el cual informe el resultado de lo que se le pidió hacer. H El estudiante debe ser capaz de utilizar la técnica de dividir y conquistar para resolver un requerimiento funcional complejo EL estudiante debe ser capaz de asignar las responsabilidades de una clase utilizando como guía el patrón experto. El estudiante debe ser capaz de diseñar un método: (1) tipo de retorno, (2) tipo de cada parámetro, (3) lista de excepciones que debe lanzar. Entrenadores • Brazo mecánico (para dividir y conquistar de requerimientos funcionales) Cupi2 – Diseño de un nivel 3