jueves, 8 de diciembre de 2016

Diagrama de Estado

En el diagrama de estados se indica qué eventos hacen que se pase de un estado a otro y cuáles son las respuestas y acciones que genera. También ilustra qué eventos pueden cambiar el estado de los objetos de la clase. En cuanto a la representación, un diagrama de estados es un grafo cuyos nodos son estados y cuyos arcos dirigidos son transiciones etiquetadas con los nombres de los eventos. Normalmente contienen: estados y transiciones. Como los estados y las transiciones incluyen, a su vez, eventos, acciones y actividades. Al igual que otros diagramas, en los diagramas de estado pueden aparecer notas explicativas y restricciones.

Eventos (2)

Un evento es una ocurrencia que puede causar la transición de un estado a otro de un objeto. Esta ocurrencia puede ser una:
·         Condición que toma el valor de verdadero (normalmente descrita como una expresión booleana). Es un EventoCambio.
·         Recepción de una señal explícita de un objeto a otro. Es un EventoSeñal.
·         Recepción de una llamada a una operación. Es un EventoLlamada.
·         paso de cierto período de tiempo, después de entrar al estado actual, o de cierta hora y fecha concretas. Es un EventoTiempo.
El nombre de un evento tiene alcance dentro del paquete en el cual está definido y puede ser usado en los diagramas de estado por las clases que tienen visibilidad dentro del paquete. Un evento no es local a la clase donde está declarado.

Acciones

Una acción es una operación atómica, que no se puede interrumpir por un evento y que se ejecuta hasta su finalización. Una acción puede ser:
·         Una llamada a una operación (al objeto al cual pertenece el diagrama de estado o también a otro objeto visible),
·         La creación o la destrucción de otro objeto,
·         El envío de una señal a un objeto.


Actividades

Cuando un objeto está en un estado, generalmente está esperando a que suceda algún evento. Sin embargo, a veces, queremos modelar una actividad que se está ejecutando. Es decir, mientras un objeto está en un estado, dicho objeto realiza un trabajo que continuará hasta que sea interrumpido por un evento.
Por lo tanto, una acción contrasta con una actividad, ya que ésta última puede ser interrumpida por otros eventos.

Transición (3)

Transición Simple

Una transición simple es una relación entre dos estados, indicando que un objeto del primer estado entrará en el segundo estado y realizar ciertas operaciones cuando ocurra un evento dado si determinadas condiciones se cumplen.
·         El disparador de la transición es la ocurrencia del evento que etiquetando la transición.
·         El evento podría tener parámetros, que se utilizarán en las acciones especificadas en la transición o en las acciones iniciadas en el siguiente estado.
·         Los eventos se procesan de forma exclusiva en cada momento, (nunca concurrentemente).
·         Si un evento no disparara ninguna transición, simplemente se ignora.
Las transiciones se representan por una flecha sólida que va de un estado a otro, etiquetada por un string de transición con el siguiente formato: signatura del evento ‘[‘condición guardián] ‘/’ expresión de acción
·         La signatura del evento describe el evento y sus argumentos: nombre del evento ‘(‘parámetro ‘,’... ‘)’
·         La condición guardián es una expresión lógica escrita en términos de los parámetros del evento disparado, y de los atributos y enlaces del objeto al que pertenece la máquina de estados.
·        La expresión de acción es una expresión procedural que se ejecuta cuando la transición se dispara; esta expresión se escribe en términos de operaciones, atributos, y enlaces del objeto al que pertenecen, y de parámetros del evento disparado.


Transición Compleja

•Una transición general puede tener múltiples estados fuente y múltiples estados destino.
•Representa una sincronización de threads concurrentes
•A través de ramas and/or.
•Cada uno de los threads no tendrían a su vez subestados concurrentes

En conclusion, a todos los diagramas UML se les debe de dar un gran importancia, ya que nos sirve para poder presentar mejor nuestros proyecto y asi puedan ser evaluados y a su vez aceptados. Aun asi con este video sabremos mas sobre los diagramas de estado y sus elementos.




Diagrama de Colaboracion

Un Diagrama de Colaboración describe en forma de un grafo el comportamiento de sistemas, subsistemas y operaciones, representando los objetos que intervienen, así como los mensajes que intercambian, enumerados en el tiempo. Un diagrama de colaboración es un tipo de diagrama que muestra las interacciones entre objetos organizadas y enlazados entre ellos.
Los diagramas de colaboración muestran las interacciones que ocurren entre los objetos que participan en una situación determinada. Esta es más o menos la misma información que la mostrada por los diagramas de secuencia, pero destacando la forma en que las operaciones se producen en el tiempo, mientras que los diagramas de colaboración fijan el interés en las relaciones entre los objetos y su topología.

En cuanto a la representación, un Diagrama de Colaboración muestra a una serie de objetos con los enlaces entre los mismos, y con los mensajes que se intercambian dichos objetos. Los mensajes son flechas que van junto al enlace por el que “circulan”, y con el nombre del mensaje y los parámetros (si los tiene) entre paréntesis. Cada mensaje lleva un número de secuencia que denota cuál es el mensaje que le precede, excepto el mensaje que inicia el diagrama, que no lleva número de secuencia.

Consiste en:
*Muestra cómo las instancias específicas de las clases trabajan juntas para conseguir un objetivo común.

*Consiste especificar un contrato entre objetos

*Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de un objeto a otro. Dicha implementación es llamada "enlace".


Un Diagrama de Colaboración muestra una interacción organizada basándose en los objetos que toman parte en la interacción y los enlaces entre los mismos (en cuanto a la interacción se refiere).

En este video se explica mejor los diagramas de colaboracion:



jueves, 3 de noviembre de 2016

Obtencion y Analisis de Requerimientos

En esta actividad se determina el dominio de la aplicación, se especifican los servicios que debe proveer el sistema, la funcionalidad requerida del sistema, y las restricciones de hardware y software. Es indispensable la participación de los usuarios y clientes para la identificación de los requerimientos del sistema.

Como resultado de esta actividad se debe obtener un documento inicial de definición de los requerimientos (DDR), en donde se definen las necesidades iniciales del sistema, o lo que se conoce como requerimientos iniciales. Estos requerimientos pudieran no ser los definitivos, ni tampoco todos los requerimientos. Nuevos requerimientos pueden ser agregados al documento conforme se vayan descubriendo o incluso los requerimientos ya definidos pueden modificarse o eliminarse.

Resultado de imagen para obtencion y analisis de requerimientos

Tareas de análisis


El análisis de requisitos del software se puede subdividir en cinco áreas de esfuerzo:

1.      Reconocimiento del problema
2.      Evaluación y síntesis
3.      Modelado
4.      Especificación
5.      Revisión

Todos los métodos de análisis se relacionan por un conjunto de principios operativos:

1.      Debe representarse y entenderse el dominio de la información de un problema.

2.      Deben definirse las funciones que debe realizar el software.

3.  Debe representarse el comportamiento del software (como consecuencia de acontecimientos externos)

4. Deben dividirse los modelos que representan información, función y comportamiento de manera que se descubran los detalles por capas (o jerárquicamente).

5.      El proceso de análisis debería ir desde la información esencial hasta el detalle de la implementación.

Además de los principios operativos mencionados anteriormente, se sugiere un conjunto de principios directrices para la ingeniería de requerimientos:
           
1.      Entender el problema antes de empezar a crear el modelo de análisis.
2.      Desarrollar prototipos que permitan al usuario entender cómo será la interacción hombre-máquina.
3.      Registrar el orden y la razón de cada requerimiento,
4.      Usar múltiples planteamientos de requerimientos.
5.      Priorizar los requerimientos.
6.      Trabajar para eliminar la ambigüedad.

Un ingeniero de software que se apegue a estos principios es muy probable que desarrolle una especificación de software que represente un excelente fundamento para el diseño.


Las actividades del proceso son:
1.     Comprensión del dominio
2.     Recolección de requisitos
3.     Clasificación
4.     Resolución de conflictos
5.     Priorización
6.     Verificación de requisitos
7.     Análisis



Especificación de requerimientos



Introducción

La presente Especificación de requerimientos de software (SRS) del sistema a construir surge para ser un conjunto de información necesaria que ayuda a los desarrolladores del software a analizar y entender todos los requisitos y requerimientos que nuestro cliente desea , de la misma forma como este constituye un informe útil para que el cliente del producto final describa lo que el realmente desea obtener, y de esta manera lograr tener un documento necesario cuya información en el futuro servirá para el desarrollo del software, es decir en la codificación correcta del mismo. Se describirá en forma detallada las interfaces de usuario, de software, del hardware y comunicaciones, así como de los requerimientos del cliente, atributos del sistema entre otros.

Despues de un estudio de factibilidad y analisis de requerimientos se deben especificar concretamente dichos requerimientos, esta claro que ambos temas estan ligados.

Resultado de imagen para especificaciones de requerimientos

¿Que son los requerimientos?

Los requerimientos/requisitos de un sistema describen los servicios que ha de ofrecer el sistema y las restricciones asociadas a su funcionamiento. Son propiedades o restricciones determinadas de forma precisa que deben satisfacerse.

Los requerimientos:

-        -  Se suelen especificar en lenguaje natural,
-        -  Se expresan de forma individual (p.ej. esquemáticamente)
-        -  Se organizan de forma jerárquica (a distintos niveles de detalle)
-        -  A menudo, se numeran (para facilitar su gestión)

Los requerimientos han de ser:
-  - Claros y concretos (evitando imprecisiones y ambigüedades) p.ej. Uso de puntos suspensivos, etcétera…
-         -  Concisos (sin rodeos ni figuras retóricas)
-        -   Completos y consistentes.

Requisitos Funcionales

Expresan la naturaleza del funcionamiento del sistema (cómo interacciona el sistema con su entorno y cuáles van a ser su estado y funcionamiento). A veces, también es conveniente indicar lo que no hará el sistema.

Los requisitos funcionales definen qué debe hacer un sistema.

Requisitos no funcionales

Restricciones sobre el espacio de posibles soluciones.

-         -  Rendimiento del sistema: Fiabilidad, tiempo de respuesta, disponibilidad…
-         -  Interfaces: Dispositivos de E/S, usabilidad, interoperabilidad…
-         -  Proceso de desarrollo: Estándares, herramientas, plazo de entrega

Para etender mejor en que conciste las especificaciones de requerimientos este video explica de manera mas resumida tosa la inforación.







-         

miércoles, 21 de septiembre de 2016

Estudio de factibilidad

Factibilidad: se refiere a la disponibilidad de los recursos necesarios para llevar a cabo los objetivos o metas señalados, la factibilidad se apoya en 3 aspectos: básicos:

        Operativo.
        Técnico.
        Económico.

El éxito de un proyecto está determinado por el grado de factibilidad que se presente en cada una de los tres aspectos anteriores.

Estudio de Factibilidad: Sirve para recopilar datos relevantes sobre el desarrollo de un proyecto y en base a ello tomar la mejor decisión, si procede su estudio, desarrollo o implementación.
Objetivos de un Estudio de Factibilidad.
        Auxiliar a una organización a lograr sus objetivos.

     Cubrir las metas con los recursos actuales en las áreas técnicas, económicas y operativas.

Recursos de los estudios de Factibilidad

La determinación de los recursos para un estudio de factibilidad sigue el mismo patrón considerado por los objetivos vistos anteriormente, el cual deberá revisarse y evaluarse si se llega a realizar un proyecto, estos recursos se analizan en función de tres aspectos


Factibilidad Operativa

 Se refiere a todos aquellos recursos donde interviene algún tipo de actividad (Procesos), depende de los recursos humanos que participen durante la operación del proyecto. Durante esta etapa se identifican todas aquellas actividades que son necesarias para lograr el objetivo y se evalúa y determina todo lo necesario para llevarla a cabo.

La Factibilidad de sistemas Operativa, tiene como objetivo comprobar que a empresa u organización será capaz de darle uso al sistema, que cuenta con el personal capacitado para hacerlo o tiene los recursos humanos necesarios para mantener el sistema. Para esto, el sistema debe contemplar cuatro puntos importantes al momento de desarrollarse.
El sistema no debe ser complejo para los usuarios de la organización o los que operan el sistema, hay que evitar que el usuario ocupe el sistema de manera que pueda ocasionar errores o darle un uso indebido, simplificar las funciones y dar todo por servido.

Evitar que a los usuarios les incomode el nuevo sistema, ya sea porque se sientan desplazados de sus obligaciones o por la costumbre a un sistema antiguo, mantenerlo amigable y comprensible para los operadores.
Un cambio repentino, puede ocasionar un lento aprendizaje, capacitar y permitir al personal adaptarse a él con la tranquilidad y apoyo necesario, manuales, charlas, capacitaciones.
Como último punto a considerar es la posibilidad de la obsolescencia subsecuente. La tecnología existe, pero aún no está disponible en ese caso, es mejor constar con tecnología que esté disponible en el momento y sea fácil de obtener o esté más al alcance de la mano (por si se requieren repuestos o correcciones sea fácil de conseguir). También tener en consideración las políticas habidas y por haber, de manera que si hay un cambio administrativo el sistema no quede obsoleto muy pronto.



Factibilidad Técnica

Se refiere a los recursos necesarios como herramientas, conocimientos, habilidades, experiencia, etc., que son necesarios para efectuar las actividades o procesos que requiere el proyecto. Generalmente nos referimos a elementos tangibles (medibles). El proyecto debe considerar si los recursos técnicos actuales son suficientes o deben complementarse.
Factibilidad de sistemas Técnica es una evaluación que debe demostrar la facultad del sistema para ponerse en marcha y mantenerse durante el tiempo, además debe demostrar que la planeación del sistema ha sido desarrollada cuidadosamente contemplando todas las restricciones y objetivos, aprovechando los recursos que entrega la organización.
Los conceptos que hay que considerar en la planeación de la Factibilidad de sistemas técnica es:

  • El sistema funciona como corresponde (números de pruebas)
  • El sistema está desarrollado para mantenerse cerca de los consumidores.
  • Escalas de producción (Ampliación o reducción de producción).
  • Complementos que ayuden el desarrollo del proyecto: ¿Existe la tecnología necesaria? ¿De dónde se obtendrá la tecnología, ¿Se puede capacitar al personal con la nueva tecnología? ¿Hay proveedores alternativos para el sistema?


Factibilidad Económica

Se refiere a los recursos económicos y financieros necesarios para desarrollar o llevar a cabo las actividades o procesos y/o para obtener los recursos básicos que deben considerarse son el costo del tiempo, el costo de la realización y el costo de adquirir nuevos recursos.
Generalmente la factibilidad económica es el elemento más importante ya que a través de él se solventan las demás carencias de otros recursos, es lo más difícil de conseguir y requiere de actividades adicionales cuando no se posee.
En esta etapa, hay que comprobar que el proyecto es sustentable económicamente Justificar que la inversión genera una ganancia, demostrar que si el sistema no cumple con su objetivo no habrá pérdidas económicas o serán las mínimas.
Los Costos: Considerar costos Fijos y variables
Las Ventas: demostrar cómo se ha definido el costo del producto y cuáles son los estimados de ventas por el periodo de al menos un año, justificando cada calculo, investigación de mercado y estadísticas.



Opinion

En mi opinion, Los estudios de factibilidad deben de considerarse como otro medio para que cada proyecto realizado puede obtener grnades estandares de calidad. En conjunto con las metodologias para el desarrollo de software, los estudios de factibilidad deben de ser una prioridad para el desarroyo de proyecto.

Es claro que para realizar proyectos debemos ser muy meticulosos y debemos de investigar y adoptar metodos para desarrollar y realizar mejores proyectos.

Este diagrama, nos muestra los pasas que podemos seguir tomando en cuenta el estudio de factibilidad:


Metodologías para el desarrollo de software

Para muchas personas los software son solo programas de computadora, sin embargo, nos comenta que son todos aquellos documentos asociados a la configuración de datos que se necesitan para hacer que estos programas operen de manera adecuada. Estos productos de software se desarrollan para algún cliente en particular o para un mercado en general. Para el diseño y desarrollo de proyectos de software se aplican metodologías, modelos y técnicas que permiten resolver los problemas. En los años 50 no existían metodologías de desarrollo, el desarrollo estaba a cargo de los propios programadores. De ahí la importancia de contar con analistas y diseñadores que permitieran un análisis adecuado de las necesidades que se deberían de implementar. (Sommerville, 2005)


Aun así los resultados eran impredecibles, no se sabía la fecha exacta en que concluiría un proyecto de software, no había forma de controlar las actividades que se estaban desarrollando. Tampoco se contaba con documentación estandarizada. El nacimiento de técnicas estructuradas es lo que da origen al desarrollo de aplicaciones a través de métodos de ingeniería. La informática aporta herramientas y procedimientos que se apoyan en la ingeniería de software con el fin de mejorar la calidad de los productos de software, aumentar la productividad y trabajo de los ingenieros desarrolladores de software, facilitar el control del proceso de desarrollo de software y suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente. (Gacitúa, 2003).

Metodologías agiles para el desarrollo de software.


Actualmente los negocios operan en un entorno global que cambia rápidamente. Tienen que responder a nuevas oportunidades y mercados, condiciones económicas cambiantes y la aparición de productos y servicios competidores. El software es parte de casi todas las operaciones de negocio, por lo que es fundamental que el software nuevo se desarrolle rápidamente para aprovechar nuevas oportunidades y responder a la presión competitiva. Actualmente el desarrollo y entrega de manera rápida son los requerimientos más críticos de los sistemas. De hecho, muchas organizaciones están dispuestas a obtener una pérdida en la calidad del software y en el compromiso sobre los requerimientos en favor de una entrega rápida del software.
Los métodos ágiles no se deben de utilizar para el desarrollo de sistemas críticos en los que es necesario generar un análisis detallado de todos los requerimientos del sistema para así comprender mejor sus implicaciones de seguridad o de protección. El crecimiento de los métodos ágiles y su penetración ocurre a un ritmo pocas veces visto en la industria: en tres o cuatro años, según el Cutter Consortium, el 50% de las empresas define como “ágiles” más de la mitad de los métodos empleados en sus proyectos (Charette, 2004). Algunas de las metodologías agiles más usadas en la actualidad se describen a continuación.



Metodología XP programación extrema


La programación extrema XP es posiblemente el método ágil más conocido y ampliamente utilizado. El nombre de XP fue acuñado por (Beck, 2000), debido a que el enfoque fue desarrollado utilizando las mejores prácticas del desarrollo iterativo y con la participación extrema del cliente. La programación extrema (XP), que algunos consideran una innovación extraordinaria y otros creen cínica (Rakitin, 2001). En la metodología extrema, todos los requerimientos se expresan como escenarios (llamados historias de usuario), los cuales se implementan directamente como una serie de tareas. Los programadores trabajan en parejas y desarrollan pruebas para cada tarea antes de escribir el código. Todas las pruebas se deben ejecutar satisfactoriamente cuando el código nuevo se integra al sistema. Existe un pequeño espacio de tiempo entre las entregas del sistema.

El desarrollo incremental se lleva a través de entregas pequeñas y frecuentes del sistema y por medio de un enfoque que sirve para la descripción de requerimientos basado en las historias los clientes o escenarios que pueden ser la base para el proceso de planificación.

La participación del cliente se lleva a cabo a través del compromiso y del tiempo completo del cliente en el equipo de desarrollo. Los colaboradores directos de los clientes participan en el desarrollo y son los responsables de definir las pruebas necesarias que servirán para la aceptación del sistema. El interés de las personas, en vez de los procesos, se lleva a través de la programación en parejas, la propiedad colectiva del código y un proceso de desarrollo sostenible que no implique excesivas jornadas de trabajo. El cambio se lleva a cabo a través de las entregas regulares del sistema, un desarrollo previamente probado y la integración continua. El mantenimiento se lleva a cabo a través de una recta actualización constante para mejorar la calidad del código y la utilización de diseños sencillos que no prevén cambios futuros en el sistema.

En XP, los clientes están implicados en la especificación y establecimiento de prioridades de los requerimientos del sistema. Dichos requerimientos no se especifica como una lista de funciones requeridas en el sistema. Más bien, los clientes del sistema son parte fundamental del equipo de desarrollo esto permite que discutan escenarios con todos los miembros del equipo. Desarrollar conjuntamente tarjetas de historia (story card) que recogen las necesidades del cliente. Por ende el equipo de desarrollo intentará implementar esos escenarios en una entrega futura del software. Un punto fundamental en la ingeniería del soporte tradicional es que se debe de diseñar para futuros. Esto es que se deben de prever los cambios futuros y diseñar éste de forma que tales cambios se puedan implementar fácilmente.


Metodología SCRUM


A pesar de que la metodología XP recibe la mayor atención bibliográfica, las organizaciones están enfocando su atención en la metodología ágil denominada SCRUM (Schwaber & Shuterland, 2011) (Shuterland, 2012), la cual aplica las mismas premisas conceptuales que XP pero para resolver un problema ligeramente distinto como es el de desarrollo evolutivo de aplicaciones. SCRUM es una metodología ágil y flexible que sirve para gestionar el desarrollo de software, cuyo principal objetivo es maximizar el retorno de la inversión para su empresa. Se basa principalmente en construir la funcionalidad de mayor valor para el cliente y en los principios de inspección continua, adaptación, auto-gestión e innovación.

Con SCRUM el cliente es pieza fundamental en el desarrollo de software, se entusiasma y se compromete con el proyecto dado que lo ve crecer iteración a iteración. Asimismo le permite en cualquier momento realinear el software con los objetivos de negocio de su empresa, ya que puede introducir cambios funcionales o de prioridad en el inicio de cada nueva iteración. Esta forma de trabajo promueve la innovación, motivación y el compromiso del equipo que forma parte del proyecto, por lo que los profesionales encuentran un ámbito propicio para desarrollar sus capacidades. SCRUM genera algunas ventajas a diferencia de otras metodologías agiles entre ellas:

• Cumplimento de expectativas: El cliente establece sus expectativas indicando el valor que aporta a cada requisito / historia del proyecto, el equipo los estima y con esta información el propietario del producto establece su prioridad. 
• Flexibilidad a cambios: Genera una alta capacidad de reacción ante los cambios de requerimientos generados por necesidades del cliente o evoluciones del mercado. La metodología está diseñada para adaptarse a los cambios de requerimientos que conllevan los proyectos complejos.
 • Reducción del tiempo: El cliente puede empezar a utilizar las funcionalidades más importantes del proyecto antes de que esté finalizado por completo.
• Mayor calidad del software: La forma de trabajo y la necesidad de obtener una versión funcional después de cada iteración, ayuda a la obtención de un software de calidad superior.


• Mayor productividad: Se consigue entre otras razones, gracias a la eliminación de la burocracia y a la motivación del equipo que proporciona el hecho de que sean autónomos para organizarse.
• Maximiza el retorno de la inversión (ROI): Producción de software únicamente con las prestaciones que aportan mayor valor de negocio gracias a la priorización por retorno de inversión.
• Predicciones de tiempos: Mediante esta metodología se conoce la velocidad media del equipo por sprint (los llamados puntos historia), con lo que consecuentemente, es posible estimar fácilmente para cuando se dispondrá de una determinada funcionalidad que todavía está retrasada. 
• Reducción de riesgos: El hecho de llevar a cabo las funcionalidades de más valor en primer lugar y de conocer la velocidad con que el equipo avanza en el proyecto, permite despejar riesgos eficazmente de manera anticipada.

Este es el proceso por que el cual se debe pasar al tomar la metodologia de scrum:


Desarrollo adaptativo de software (DAS)


El desarrollo adaptativo software (DAS) lo propuso Jim Highsmith en 1998 como una técnica para construir software y sistemas complejos. Los apoyos filosóficos del DAS se enfocan en la colaboración humana y la organización propia del equipo. Un enfoque de desarrollo ágil y adaptativo basado en la colaboración es " una fuente de orden en las complejas interacciones entre disciplina e ingeniería". El define el ciclo de vida del DAS, como se muestra en la figura 2.29 el cual incorpora tres fases principales:

1)         Especulación; en esta fase se inicia el proyecto y se conduce el ciclo adaptativo de planeación. Este último utiliza información de inicio del proyecto, es decir, el enunciado de la misión del cliente, restricciones del proyecto y los requisitos básicos. Esto permite definir el conjunto de ciclos de lanzamiento que se requerirán para el proyecto.
2)         Colaboración; la gente motivada trabaja de una forma que multiplica su talento y sus salidas creativas más allá de sus números absolutos. Este enfoque de colaboración es un tema recurrente en todos los métodos ágiles, pero la cooperación no es fácil. No solamente es la comunicación, o que la comunicación es parte de ella. No sólo es un asunto de trabajo en equipo, aunque un equipo cuajado es esencial para la presencia de la colaboración real. No es un rechazo al individualismo ya que la creatividad individual representa un papel importante en el pensamiento de colaboración. Esto es, por encima de todo, una cuestión de confianza. Las personas que trabajan juntas deben confiar entre sí para:

a) Criticar de forma constructiva
b) Ayudar sin resentimientos
c) Trabajar más duro de lo que ya lo hace
d) Tener el conjunto de actitudes para contribuir al trabajo curso
e) Comunicar los problemas o preocupaciones en una forma que conduzca a la acción efectiva

Metodologías Complejas o tradicionales para el desarrollo de software


Hay una serie de metodologías que solemos llamar tradicionales, propuestas casi todas ellas con anterioridad a los años 90 del siglo XX, y que pretendían ayudar a los profesionales indicando pautas para realizar y documentar cada una de las tareas del desarrollo del software. Sin embargo, tienen casi todas ellas un gran lastre: asumen que un proyecto informático es casi una extensión de un proyecto burocrático tradicional. Así pues, los pasos que sugieren para llevar a cabo cada tarea, aunque bienintencionados, están cargados de burocracia, reiteraciones, ambigüedades... No suelen tener en cuenta cosas como la calidad, la satisfacción, la competitividad, los beneficios. Fueron metodologías creadas en los años 70-80 pensando en los negocios de los años 50.

Desarrollo de sistemas de Jackson (JSD)


Es otra metodología de diseño y desarrollo de software y sistemas, diseñada por M. A. Jackson y J. R. Cameron. Publicada por primera vez en 1983. Algunos consideran que es una de las primeras metodologías de desarrollo de software orientado a objetos. Se considera una tecnología madura.
Originalmente su nombre era “Orientado a objeto” en la que se identificaban objetos como parte de un método, en un tiempo en el que los métodos se basaban en descomposición funcional o en el análisis estático de datos. Jackson divide en dos etapas el desarrollo de sistemas:
– Especificación (incluye análisis y diseño)
– Implementación
Los modelos de JSD consideran al mundo real y que el propósito de un sistema es el de proporcionar una funcionalidad. Jackson sostiene que es necesario considerar primeramente la forma en que esa funcionalidad del sistema encaja en el mundo real.
En el enfoque JSD se describe al mundo real en “entidades”, “acciones” y “secuencias de acciones” creando un modelo dinámico de datos. En donde las entidades se denotan como sustantivos (ejemplo: botón, elevador) y las acciones se denotan como verbos (ejemplo: pulsar, llega, sale).

1. Paso de acciones de entidades: definición de listado de entidades y acciones del mundo real.
2. Paso de estructuras de entidades: se ordenan las acciones de las entidades.
3. Paso de modelo inicial: muestra la manera en la que el mundo real se conecta con el mundo abstracto. Se admiten los vectores de estado.
4. Paso de función: indica las salidas de las acciones.
5. Paso de temporización del sistema: conjunto de notas informales acerca de las restricciones de rendimiento.
6. Paso de implementación: asigna procesadores a los procesos.

Con esta tabla comparativa de las metodologías ágiles y tradicionales podrás darte cuenta y saber en que momento poder aplicarla en algún proyecto.