9
DEFINICIÓN DE MÉTODO FORMAL Un MFOO es un conjunto de técnicas de modelado para especificar, desarrollar y verificar sistemas software mediante el uso del lenguaje matemático y características orientadas a objetos . Por sistema software orientado a objetos se entiende, de forma general, a toda colección de objetos que colaboran entre sí para conseguir un propósito (objetivos del sistema software). Muchos de los métodos formales presentes en la literatura aparecen como métodos formales extendidos con conceptos de orientación a objetos. Es decir, la existencia de un lenguaje formal suele ser previa a la existencia del lenguaje orientado a objetos. Este hecho ha condicionado en gran medida las diferentes propuestas y así queda reflejado en el presente documento. Dada la diversidad de trabajos y formalismos existentes en la actualidad, es necesario establecer qué se entiende por formal y qué se entiende por orientación a objetos. El término formal queda caracterizado por la categoría de modelos matemáticos utilizados. Ejemplos de formalismos son: lógica de primer orden,álgebras, redes de Petri y lógica temporal. Por otra parte, el término orientado a objeto queda caracterizado por los conceptos de objeto, ocultación, interacción, abstracción, concurrencia, clase, herencia, (sub)tipo y genericidad. Los formalismos basados en lógica de primer orden y teoría de conjuntos [MaW85] permiten especificar el sistema mediante un concepto formal de estado y operaciones sobre estados. Con este propósito, datos y relaciones/funciones se describen en detalle y sus propiedades se expresan en lógica de primer orden. La semántica de los lenguajes está basada en la teoría de conjuntos. Durante el diseño e implementación del sistema, los elementos descritos matemáticamente pueden modificarse preservando las características esenciales de la especificación inicial. Los formalismos algebraicos proponen la descripción de estructuras de datos estableciendo el nombre de los

Definición de Método Formal

Embed Size (px)

DESCRIPTION

z

Citation preview

DEFINICIN DE MTODO FORMAL

Un MFOO es un conjunto de tcnicas de modelado para especificar, desarrollar y verificar sistemas software mediante el uso del lenguaje matemtico y caractersticas orientadas a objetos .

Por sistema software orientado a objetos se entiende, de forma general, a toda coleccin de objetos que colaboran entre s para conseguir un propsito (objetivos del sistema software).Muchos de los mtodos formales presentes en la literatura aparecen como mtodos formales extendidos con conceptos de orientacin a objetos. Es decir, la existencia de un lenguaje formal suele ser previa a la existencia del lenguaje orientado a objetos.Este hecho ha condicionado en gran medida las diferentes propuestas y as queda reflejado en el presente documento.Dada la diversidad de trabajos y formalismos existentes en la actualidad, es necesario establecer qu se entiende por formal y qu se entiende por orientacin a objetos. El trmino formal queda caracterizado por la categora de modelos matemticosutilizados. Ejemplos de formalismos son: lgica de primer orden,lgebras, redes de Petri y lgica temporal. Por otra parte, el trmino orientado a objeto queda caracterizado por los conceptos de objeto, ocultacin, interaccin, abstraccin, concurrencia,clase, herencia, (sub)tipo y genericidad.Los formalismos basados en lgica de primer orden y teora de conjuntos [MaW85] permiten especificar el sistema mediante un concepto formal de estado y operaciones sobre estados. Con este propsito, datos y relaciones/funciones se describen en detalle ysus propiedades se expresan en lgica de primer orden. La semntica de los lenguajes est basada en la teora de conjuntos.Durante el diseo e implementacin del sistema, los elementos descritos matemticamente pueden modificarse preservando las caractersticas esenciales de la especificacin inicial.Los formalismos algebraicos proponen la descripcin de estructuras de datos estableciendo el nombre de los diferentes conjuntos de datos, funciones bsicas y propiedades. No hay concepto de estado modificable en el tiempo. Las propiedades sedescriben mediante frmulas, generalmente, ecuaciones.Diferentes modelos semnticos se han propuesto para caracterizar las especificaciones algebraicas: modelos iniciales, finales y laxos.Los modelos iniciales identifican trminos cuya igualdad puede ser probada desde los axiomas. Los modelos finales identifican trminos diferentes cuya desigualdad puede ser probada desde sus axiomas y los modelos laxos identifican todas las lgebras cuyoselementos pueden denotarse con trminos sin variables. Para describir sistemas (de estructuras de datos) se propone una amplia gama de operadores de composicin y parametrizacin.Los formalismos basados en redes de Petri establecen la nocin de estado de un sistema mediante lugares que pueden contener marcas. Un conjunto de transiciones (con pre y post condiciones) describe la evolucin del sistema entendida como consumo y produccin de marcas en varios puntos de la red.Existe una extensa literatura sobre las redes de Petri y sus caracterizaciones semnticas: semntica de entrelazado ysemntica basada en concurrencia real.Los formalismos basados en lgica temporal se usanpara describir sistemas concurrentes y reactivos. Un aspectocomn asociado a las diferentes lgicas temporales es la nocin de tiempo y estado. Una especificacin escrita en lgica temporal describe las secuencias admisibles de estados (incluyendo estados concurrentes) para el sistema especificado.Por otra parte, con el propsito de unificar terminologas sobre conceptos bsicos orientados a objetos se proponen las siguientes definiciones:

Objeto: entidad discreta con lmites bien definidos e identidad que encapsula estado y comportamiento.Ocultacin: habilidad para ocultar el estado de los objetos para el exterior, la nica forma de interactuar con un objeto es a travs de unos de sus servicios (comportamiento) .Interaccin: Especificacin de la comunicacin entre objetos. Se proponen dos modelos: interaccin sncrona e interaccin asncrona .Abstraccin: Caractersticas esenciales de un objeto que lo distingue de otros. Las caractersticas esenciales son relativas al observador .Concurrencia: La realizacin de dos o ms actividades durante elmismo intervalo de tiempo .Clase: Habilidad para describir aspectos comunes de objetos (intensin) y habilidad para describir colecciones existentes de objetos (extensin).Herencia: La reutilizacin o modificacin de una clase paraobtener otra nueva.Subtipo: Dada una jerarqua de tipos, todo subtipo respeta el principio de sustitucin respecto al tipo padre en la jerarqua. El principio de sustitucin se puede establecer a tres niveles: nivel dbil (slo se consideran los perfiles de las operaciones), nivelfuerte (se considera adems la semntica de las operaciones) y nivel observacional (slo se consideran un subconjunto de las operaciones) .Genericidad: Capacidad para establecer descripciones parametrizables de clases y tipos.

Caracteristicas

No garantizan la completitud ni la correccin de los requisitos deproteccin de fallos. Se aplican a partes crticas de los requisitos modelados. En los casos que se exponen, se utilizan slo en las primeras etapasde la ingeniera de requerimientos requisitos voltiles. Mejoran la calidad de las especificaciones informales existentes. Ayudan a centrar la atencin en las reas ms susceptibles a errores. Requieren una gran cantidad de conocimientos. Para reducir los costes del proyecto, es preferible que sean aplicadospor expertos en mtodos formales, externos al proyecto dedesarrollo.

Las Metodologas giles

A principios de la dcada del 90, surgi un enfoque que fue bastanterevolucionario para su momento ya que iba en contra de toda creencia de quemediante procesos altamente definidos se iba a lograr obtener software en tiempo,costo y con la requerida calidad. El enfoque fue planteado por primera vez porMartin[2] y se dio a conocer en la comunidad de Ingeniera de Software con el nombrede RAD o Rapid Application Development. RAD consista en un entorno dedesarrollo altamente productivo, en el que participaban grupos pequeos deprogramadores utilizando herramientas que generaban cdigo en formaautomtica tomando como entradas sintaxis de alto nivel. En general, se considera que Metodologas giles este fue uno de los primeros hitos en pos de la agilidad en los procesos de desarrollo.La historia de las Metodologas giles y su apreciacin como tales en lacomunidad de la Ingeniera de Software tiene sus inicios en la creacin de una delas metodologas utilizada como arquetipo: XP - eXtreme Programming, que nace dela mente de Kent Beck, tomando ideas recopiladas junto a Ward Cunningham.Durante 1996, Beck es llamado por Chrysler como asesor del proyecto ChryslerComprehensive Compensation (C3) payroll system. Dada la poca calidad del sistemaque se estaba desarrollando, Beck decide tirar todo el cdigo y empezar de ceroutilizando las prcticas que l haba ido definiendo a lo largo del tiempo. El sistema,que administra la liquidacin de aproximadamente 10.000 empleados, y consiste de2.000 clases y 30.000 mtodos, es puesto en operacin en Mayo de 1997 casirespetando el calendario propuesto. Como consecuencia del xito de dicho proyecto,Kent Beck dio origen a XP iniciando el movimiento de metodologas giles al que seanexaran otras metodologas surgidas mucho antes que el propio Beck fueraconvocado por Chrysler.Es as como que este tipo de metodologas fueron inicialmente llamadasmetodologas livianas, sin embargo, aun no contaban con una aprobacin pues se leconsideraba por muchos desarrolladores como meramente intuitiva. Luego, con el pasarde los aos, en febrero de 2001, tras una reunin celebrada en Utah-EEUU, naceformalmente el trmino gil aplicado al desarrollo de software. En esta mismareunin participan un grupo de 17 expertos de la industria del software, incluyendoalgunos de los creadores o impulsores de metodologas de software con el objetivode esbozar los valores y principios que deberan permitir a los equipos desarrollarsoftware rpidamente y respondiendo a los cambios que puedan surgir a lo largo delproyecto. Se pretenda ofrecer una alternativa a los procesos de desarrollo desoftware tradicionales, caracterizados por ser rgidos y dirigidos por la documentacinque se genera en cada una de las actividades desarrolladas.Tras esta reunin se cre The Agile Alliance, una organizacin, sin nimo delucro, dedicada a promover los conceptos relacionados con el desarrollo gil desoftware y ayudar a las organizaciones para que adopten dichos conceptos. El puntode partida fue el Manifiesto gil, un documento que resume la filosofa gil.

CARACTERSTICAS BSICASLas caractersticas bsicas de los proyectos gestionados con metodologas giles son las siguientes: Incertidumbre: la direccin indica la necesidad estratgica que se desea cubrir (sin entrar en detalles), ofreciendo mxima libertad al equipo de trabajo. Equipos auto-organizados: no existen roles especializados Autonoma: libertad para la toma de decisiones. Auto-superacin: de forma peridica se evala el producto que se esta desarrollando. Auto-enriquecimiento: transferencia del conocimiento. Fases de desarrollo solapadas: Las fases no existen como tal sino que se desarrollan tareas/actividades en funcin de las necesidades cambiantes durante todo el proyecto. De hecho, en muchas ocasiones no es posible realizar un diseo tcnico detallado antes de empezar a desarrollar y ver algunos resultados. Por otra parte, las fases tradicionales efectuadas por personas diferentes no favorece el trabajo en equipo y pueden llegar a generar ms inconvenientes que ventajas (p.ej. un retraso en una fase, afecta a todo el proyecto). Control sutil: establecimientos de puntos de control para realizar un seguimiento adecuado sin limitar la libertad y creatividad del equipo. As mismo, se recomienda: Evaluar el ambiente laboral, siendo fundamental la eleccin de personas que no generen conflictos. Reconocer los mritos mediante un sistema de evaluacin justo y entender los errores como puntos de mejora y aprendizaje. Potenciar la interaccin entre el equipo y el negocio, para que puedan conocer las necesidades de primera mano. Difusin y transferencia del conocimiento: alta rotacin de los miembros de los equipos entre diferentes proyectos. Por otra parte, potenciar el acceso libre a la informacin y documentacin.

Laprogramacin orientada a objetosoPOO(OOPsegn sus siglas en ingls) es unparadigma de programacinque usa losobjetosen sus interacciones, para disear aplicaciones y programasinformticos. Est basado en varias tcnicas, incluyendoherencia,cohesin,abstraccin,polimorfismo,acoplamientoyencapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos.

Caractersticas de la POOExiste un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las caractersticas siguientes son las ms importantes: Abstraccin: denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelarcmose implementan estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad de tcnicas son requeridas para ampliar una abstraccin.El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar lacohesinde los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultacin, principalmente porque se suelen emplear conjuntamente. Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Estos mdulos se pueden compilar por separado, pero tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas. Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone unainterfaza otros objetos que especifica cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. La aplicacin entera se reduce a un agregado orompecabezasde objetos. Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que se est usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llamaasignacin tardaoasignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y lasobrecarga de operadoresde C++. Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos enclasesy estas enrbolesoenrejadosque reflejan un comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hayherencia mltiple. Recoleccin de basura: la recoleccin de basura ogarbage collectores la tcnica por la cual el entorno de objetos se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a Objetos como C++ uObject Pascal, esta caracterstica no existe y la memoria debe desasignarse manualmente.