miércoles, 3 de diciembre de 2014

Estructura de casos de uso


Estructura de casos de uso

  • ¿Qué formato se emplea para documentar casos de uso?
Existen dos formas principales de documentar un caso de uso:
                    a.        Un diagrama en UML:
Un diagrama en UML: El Lenguaje Unificado de Modelado (UML) provee de un grupo de elementos gráficos para representar un Caso de Uso, de manera explícita, sucinta y esquemática. Utiliza un monito para representar a los actores, una elipse con una leyenda para representar un caso de uso y una línea recta entre un actor y un caso de uso para representar la asociación entre ellos.
                    b.        Un documento detallado: Se utiliza una plantilla (en un procesador de textos) con un formato de documento a llenar.

 Caso de uso:
Nombre del caso de uso
Actores:
Actores primarios y secundarios que interaccionan con el caso de uso
Tipo:
Tipo de flujo Básico, inclusión, extensión, generalización o algún otro
Propósito
Razón de ser del caso de uso
Resumen
Resumen del caso de uso
Precondiciones
Condiciones que deben satisfacerse para poder ejecutar el caso de uso.
Flujo Principal
El flujo de eventos más importante del caso de uso, donde dependiendo de las acciones de los actores se continuará con alguno de los subflujos.
Subflujos
Los flujos secundarios del caso de uso, numerados como (S-1), (S-2), etc.
Excepciones
Excepciones que pueden ocurrir durante el caso de uso, numerados como (E-1), (E-2), etc.

 Actor:
Nombre del Actor
Caso de Uso:
Nombre de los casos de uso en los cuales participa
Tipo:
Primario o Secundario
Descripción
Breve descripción del autor

Documentar casos de usos no es una tarea fácil que se pueda dominar de un día para otro, requiere de tiempo, disciplina y experiencia, sin embargo podemos definir una serie de pasos identificables para escribir los casos de uso.
1.    Identifique a todos los actores que intervienen.
2.    Identifique todas las tareas que realizará cada actor.
3.    Agrupe las tareas repetidas.
4.    Genere el diagrama(s) UML que represente esquemáticamente los Casos de Uso.
5.    De una prioridad a cada caso de uso.
6.    Por cada caso de uso escriba un documento detallado siguiendo la plantilla especificada anteriormente.

·        ¿Qué es el análisis y diseño de software orientado a objetos?

El análisis y diseño orientado a objetos (ADOO) es un enfoque de la ingeniería de software que modela un sistema como un grupo de objetos que interactúan entre sí. Este enfoque representa un dominio en términos de conceptos compuestos por verbos y sustantivos, clasificados de acuerdo a su dependencia funcional. En éste método de análisis y diseño se crea un conjunto de modelos utilizando una notación acordada como, por ejemplo, el lenguaje unificado de modelado (UML). ADOO aplica técnicas de modelado de objetos para analizar los requerimientos para un contexto - por ejemplo, un sistema de negocio, un conjunto de módulos de software - y para diseñar una solución para mejorar los procesos involucrados. No está restringido al diseño de programas de computadora, sino que cubre sistemas enteros de distinto tipo. Las metodologías de análisis y diseño más modernas son casos de uso guiados a través de requerimientos, diseño, implementación, pruebas, y despliegue.

·        ¿Cuáles son sus principales características?

Abstracción: Son las características esenciales de un objeto, donde se capturan sus comportamientos.
Encapsulamiento: Reúne todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción.
Principio de ocultación: Cada objeto está aislado del exterior, en donde expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase.
Polimorfismo: Comportamientos diferentes el cual están 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.
Herencia: Organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Recolección de basura: Es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente los Objetos que hayan quedado sin ninguna referencia a ellos.
·         Ventajas de la POO:
Ø  Fomenta la reutilización y extensión del código.
Ø  Permite crear sistemas más complejos.
Ø  Agiliza el desarrollo de software.
Ø  Facilita el trabajo en equipo.
Ø  Facilita el mantenimiento del software.
Ø  Reduce el costo de desarrollo de los Sistemas de Información.
Ø Son efectivos en interfaz gráfica de usuario.
Ø Son efectivos en bases de datos.
Ø La notación de diseño O-O combina aspectos tanto de los diagramas de entidad-relación y de flujo de datos.

·        ¿Qué lenguajes de programación están orientados a esta metodología de desarrollo?

Ø Ada: se usa en entornos en los que se necesita una gran seguridad y fiabilidad, como en la defensa.
Ø C++: está considerado como el lenguaje más potente, debido a que permite trabajar tanto a alto como a bajo nivel, aunque obliga a hacer casi todo manualmente, al igual que C, lo que hace difícil aprendizaje.
Ø C#: combina el control a bajo nivel de lenguajes como C y la velocidad de programación de lenguajes como Visual Basic.
Ø VB.NET: es una versión de Visual Basic destinada al desarrollo de aplicaciones .NET. Visual Basic apareció en el año 1991 como una evolución del QuickBasic que fabricaba Microsoft.
Ø Clarion: está orientado a la programación de aplicaciones de bases de datos. Es compatible con una gran cantidad de ellas  incluyendo todas las de formato SQL, ADO, y XML, además puede generar salidas a HTML, XML, archivos de texto y PDF, entre otros.
Ø Delphi: entorno de desarrollo de software diseñado para programación general con especial énfasis en la programación visual. En Delphi se utiliza como lenguaje una versión moderna de Pascal llamada Object Pascal. Es producido por Borland. Delphi da la posibilidad de producir archivos ejecutables para Windows, GNU/Linux y la plataforma .NET.
Ø Eiffel: fue creado en 1985 por Bertrand Meyer. Se centra en la construcción de software robusto. Su lenguaje es parecido  al de Pascal.
Ø Java: fue  desarrollado por James Gosling y sus compañeros de Sun Microsystems al inicio de la década de 1990. A diferencia de los lenguajes de programación convencionales, Java es compilado en un bytecode que es ejecutado por una máquina virtual Java. El lenguaje toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos mucho más simple y elimina herramientas como los punteros.
Ø Lexico: es un lenguaje en español que busca facilitar el aprendizaje y la enseñanza de la programación orientada a objetos. Permite experimentar con los algoritmos diseñados sin tener que dedicar meses a aprender un lenguaje de programación.
Ø Objective-C: Es el principal lenguaje de programación en Mac OS X. Mac OS X es el sistema operativo de la familia de ordenadores Macintosh.
Ø Ocaml: nace de la evolución del lenguaje CAML, abreviación de Categorical Abstract Machine Language), al integrarsele la programación con objetos.
Ø Oz: es un lenguaje multi-paradigma. Contiene la mayoría de los conceptos de los principales paradigmas de programación, incluyendo programación lógica, funcional, imperativa, orientada a objetos, con restricciones, distribuida y concurrente.
Ø PHP: es un lenguaje de programación usado generalmente para la creación de contenidos en webs. El nombre es el acrónimo recursivo de "PHP: Hypertext Preprocessor", inicialmente PHP Tools, o, Personal Home Page Tools. Se trata de un lenguaje interpretado.
Ø PowerBuilder: herramienta de desarrollo de clase empresarial creada por la empresa Sybase. PowerBuilder permite el desarrollo de diferentes tipos de aplicaciones y componentes para arquitecturas cliente/servidor, distribuídas y Web. Las aplicaciones desarrolladas con PowerBuilder solo pueden ser ejecutadas en el sistema operativo Microsoft Windows, aunque cierto tipo de componenetes, llamados componentes no visuales o NVOs, y que contienen sólo lógica de aplicación, se pueden ejecutar en otros sistemas operativos como Unix.
Ø Python: es un lenguaje de programación interpretado e interactivo, capaz de ejecutarse en gran cantidad de plataformas. Creado por Guido van Rossum en 1990, su nombre procede de la afición de su creador por los humoristas británicos Monty Python. El principal objetivo de este lenguaje es la facilidad, tanto de lectura, como de diseño.
Ø Ruby: es un lenguaje de programación interpretado de muy alto nivel. Fue creado en Japón en el año 1993 por Yukihiro Matz Matsumoto.
Ø Smalltalk: es considerado como el primer de los lenguajes orientado a objetos. Dentro de Smalltalk todo es un objeto, incluidos los números reales o el propio entorno Smalltalk.
No todos estos lenguajes son igualmente  eficaces. Existen lenguajes como OOCOBOL, OOLISP, OOPROLOG y Object REXX que han sido desarrollados añadiendo a sus versiones anteriores las características de la orientación a objetos, como ya pasara con C++.

·        ¿Qué diferencia existe con la técnica de programación procedimental o imperativa?

Programación Imperativa: En la programación imperativa se describen sentencias que modifican el estado de un programa. En muchos sentidos la programación imperativa es la programación natural para las CPUs que se basan en ese paradigma al nivel más básico.
En este paradigma se expresa como debe solucionarse un problema especificando una secuencia de acciones a realizar a través de uno o más procedimientos denominados subrutinas o funciones.
Dentro de esta categoría se engloban:
a.    la programación estructurada que restringe el uso de la instrucción goto,
b.    la programación modular y
c.    la programación orientada a objetos.
Programación Declarativa: A la programación imperativa se le contrapone la programación declarativa en la que se describe la lógica de computación necesaria para resolver un problema sin describir un flujo de control de ningún tipo. Efectivamente, en la programación declarativa no es necesario definir algoritmos, puesto que se detalla la solución del problema en lugar de cómo llegar a esa solución. En la programación declarativa, la solución es alcanzada a través de mecanismos internos de control pero no se especifica exactamente como llegar a ella. Las variables son utilizadas con transparencia referencial, es decir una expresión puede ser sustituida por el resultado de ser evaluada en el programa sin alterarlo semánticamente.
Diferencias principales: La principal diferencia entre ambos paradigmas es que en la programación imperativa se describe paso a paso un conjunto de instrucciones que han de ejecutarse con la finalidad de variar el estado del programa y resolver un problema para hallar una solución. Es decir, se describe un algoritmo en el que se detallan los pasos secuenciales necesarios a seguir para la resolución de un problema. Y en la programación declarativa solo se describe el problema pero no los pasos necesarios para llegar a su solución, la cual es hallada mediante mecanismos internos de inferencia de información a partir de la descripción del problema en sí.
¿Cómo diferenciar una de la otra?: Podemos diferenciarlas sin temor a equivocarnos en los siguientes supuestos:
Ø  Un programa que describe que problemas deben resolverse pero no cómo, está programado con programación declarativa
Ø  Cualquier programa que evita los efectos secundarios o es referencialmente transparente, está programado con programación declarativa
Ø  Todo lo que no cuadre con las dos afirmaciones anteriores usa programación imperativa o una mezcla de ambas.

Y qué hay de la programación orientada a objetos?: La programación orientada a objetos es una forma de programación imperativa puesto que al programar orientando a objetos se describe la secuencia que debe seguir el programa para resolver un problema dado.
La diferencia con otras formas de programación imperativas como la programación estructurada es que en la orientación a objetos se hace uso de estructuras de datos llamadas objetos que aglutinan propiedades y métodos conjuntamente con sus interacciones.
Un objeto es una estructura abstracta que describe con la mayor fiabilidad posible un objeto del mundo real y cómo se relaciona o interactúa con el resto del mundo que lo rodea a través de interfaces. La programación orientada a objetos se basa también en conceptos como la abstracción de datos, la encapsulación, los eventos, la modularidad, la herencia y el polimorfismo.

Referencias


trutt-iliana.blogspot.com/2009/.../analisis-y-diseno-orientado-objetos.htm...




No hay comentarios.: