Sunteți pe pagina 1din 6

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 matemticos
utilizados. 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 y
sus 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 se
describen 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 cuyos
elementos 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 aspecto

comn 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), nivel
fuerte (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 de
proteccin de fallos.
Se aplican a partes crticas de los requisitos modelados.
En los casos que se exponen, se utilizan slo en las primeras etapas
de 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 aplicados
por expertos en mtodos formales, externos al proyecto de
desarrollo.
Las Metodologas giles
A principios de la dcada del 90, surgi un enfoque que fue bastante
revolucionario para su momento ya que iba en contra de toda creencia de que
mediante procesos altamente definidos se iba a lograr obtener software en tiempo,
costo y con la requerida calidad. El enfoque fue planteado por primera vez por
Martin[2] y se dio a conocer en la comunidad de Ingeniera de Software con el nombre
de RAD o Rapid Application Development. RAD consista en un entorno de
desarrollo altamente productivo, en el que participaban grupos pequeos de

programadores utilizando herramientas que generaban cdigo en forma


automtica 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 la
comunidad de la Ingeniera de Software tiene sus inicios en la creacin de una de
las metodologas utilizada como arquetipo: XP - eXtreme Programming, que nace de
la mente de Kent Beck, tomando ideas recopiladas junto a Ward Cunningham.
Durante 1996, Beck es llamado por Chrysler como asesor del proyecto Chrysler
Comprehensive Compensation (C3) payroll system. Dada la poca calidad del sistema
que se estaba desarrollando, Beck decide tirar todo el cdigo y empezar de cero
utilizando 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 de
2.000 clases y 30.000 mtodos, es puesto en operacin en Mayo de 1997 casi
respetando el calendario propuesto. Como consecuencia del xito de dicho proyecto,
Kent Beck dio origen a XP iniciando el movimiento de metodologas giles al que se
anexaran otras metodologas surgidas mucho antes que el propio Beck fuera
convocado por Chrysler.
Es as como que este tipo de metodologas fueron inicialmente llamadas
metodologas livianas, sin embargo, aun no contaban con una aprobacin pues se le
consideraba por muchos desarrolladores como meramente intuitiva. Luego, con el pasar
de los aos, en febrero de 2001, tras una reunin celebrada en Utah-EEUU, nace
formalmente el trmino gil aplicado al desarrollo de software. En esta misma
reunin participan un grupo de 17 expertos de la industria del software, incluyendo
algunos de los creadores o impulsores de metodologas de software con el objetivo
de esbozar los valores y principios que deberan permitir a los equipos desarrollar
software rpidamente y respondiendo a los cambios que puedan surgir a lo largo del
proyecto. Se pretenda ofrecer una alternativa a los procesos de desarrollo de
software tradicionales, caracterizados por ser rgidos y dirigidos por la documentacin
que se genera en cada una de las actividades desarrolladas.
Tras esta reunin se cre The Agile Alliance, una organizacin, sin nimo de
lucro, dedicada a promover los conceptos relacionados con el desarrollo gil de
software y ayudar a las organizaciones para que adopten dichos conceptos. El punto
de partida fue el Manifiesto gil, un documento que resume la filosofa gil.

CA RA C TER S TI CA S BS I CA S
Las 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.

La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es


un paradigma de programacin que usa los objetos en sus interacciones, para disear
aplicaciones y programas informticos. Est basado en varias tcnicas,
incluyendo herencia, cohesin, abstraccin, polimorfismo, acoplamiento y encapsulami
ento. 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 POO
Existe 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 revelar cmo se 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 lacohesin de 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 una interfaz a 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 o rompecabezas de
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 llama asignacin
tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms
estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y
la sobrecarga de operadores de 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 en clases y
estas en rboles o enrejados que reflejan un comportamiento comn. Cuando un
objeto hereda de ms de una clase se dice que hay herencia mltiple.

Recoleccin de basura: la recoleccin de basura o garbage collector es 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++ u Object Pascal, esta caracterstica no existe y la
memoria debe desasignarse manualmente.

S-ar putea să vă placă și