miércoles, 25 de junio de 2014

Diagrama de Clases

Un diagrama de clases sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contención.

Un diagrama de clase incluye los siguientes elementos:
  • Clase: atributos, métodos y visibilidad.
  • Relaciones: Herencia, Composición, Agregación, Asociación y Uso.
Clase

Se encapsula toda la información de un objeto (un objeto es una instancia de una clase)
Atributos y Métodos:
  • Atributos:
    Los atributos de una Clase pueden ser de tres tipos, de acuerdo a su visibilidad:
    • public (+,): Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
    • private (-,): Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).
    • protected (#,): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven (ver herencia).
  • Métodos:
    Los métodos u operaciones de una clase son la forma en como ésta interactúa con su entorno, éstos pueden tener las características:
    • public (+,): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
    • private (-,): Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de la clase lo pueden accesar).
    • protected (#,): Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (ver herencia).
Relaciones entre Clases:
En UML, la cardinalidad de las relaciones indica el grado y nivel de dependencia, se anotan en cada extremo de la relación y éstas pueden ser:
  • uno o muchos: 1..* (1..n)
  • 0 o muchos: 0..* (0..n)
  • número fijo: m (m denota el número).

Herencia (Especialización/Generalización)
Indica que una subclase hereda los métodos y atributos especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected), ejemplo:
Agregación
Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye
Composición:
 Es un tipo de relación estática, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye. 
Asociación
La relación entre clases conocida como Asociación, permite asociar objetos que colaboran entre si. Cabe destacar que no es una relación fuerte, es decir, el tiempo de vida de un objeto no depende del otro.

Dependencia o Instanciación (uso)
Representa un tipo de relación muy particular, en la que una clase es instanciada (su instanciación es dependiente de otro objeto/clase). Se denota por una flecha punteada.


miércoles, 11 de junio de 2014

Desarollo ágil de software


El desarrollo ágil de software es un paradigma de las metodologías de desarrollo basado en procesos ágiles. Los procesos ágiles de desarrollo de software, intenta evitar la ambigüedad en el uso de las metodologías tradicionales. El objetivo del desarrollo ágil es esbozar los valores y principios que deben permitir a los equipos el desarrollo de software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto.

Manifiesto ágil

  • Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:
  • A los individuos y su interacción, por encima de los procesos y las herramientas.
  • El software y su interacción, por encima de los procesos y las herramientas.
  • El software que funciona, por encima de la documentación exhaustiva.
  • La colaboración con el cliente, por encima de la negociación contractual.
  • La respuesta al cambio, por encima del seguimiento de un plan.
  • Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.


http://www.dosideas.com/wiki/Desarrollo_Agil_De_Software


miércoles, 4 de junio de 2014

Administración de proyectos


Gestión de proyectos

La gestión de proyectos implica la planificación, supervisión y control del personal, del proceso y de los eventos que ocurren mientras evoluciona  el software desde la fase preliminar a la implementación operacional.













Planificación

La construcción de software es una actividad bastante compleja, en especial si participa mucha gente, trabajando durante un periodo de tiempo relativamente largo. Esta es la razón por la cual los proyectos de software necesitan ser gestionados y planificados.

La siguiente lista, refleja las actividades que se derivan de la planificación:


  • Fijar los objetivos y metas
  • Desarrollar estrategias
  • Desarrollar políticas
  • Anticipar futuras situaciones
  • Conducir un establecimiento de riesgos
  • Determinar posibles cursos de acción
  • Tomar decisiones de planificación
  • Fijar procedimientos y reglas
  • Desarrollar los planes del proyecto
  • Preparar presupuestos
  • Documentar los planes del proyecto.

Observación

Como ya se ha mencionado, la observación en la fase de prueba del proyecto es de vital importancia, ya que durante esta etapa se podrán ver aquellas situaciones y eventos inesperados dentro de la planificación. Como ejemplo tenemos:

Un sistema que requiere entradas de texto con letras muy pequeñas, un usuario con manos grandes y guantes industriales.

El problema que se presenta es la poca adaptabilidad que se tendrá en el sistema táctil con el uso de los guantes, ya que el pulso que se necesita para activar el sistema no será el adecuado y obviamente el tamaño, tampoco. La solución a implementar es el uso de una pluma especial, teclas más grandes y una pantalla más grandes. 

De esta manera, la observación del proyecto nos hará comprender y aprender muchas cosas de nuestro propio software, las cuales pasan desapercibidas pesé a la planificación inicial.