miércoles, 24 de julio de 2013

PROYECTOS Y TIPOS DE REQUISITOS


Requerimientos funcionales
 Son declaraciones de los servicios que debe proporcionar el sistema, de la manera en que éste debe reaccionar a entradas particulares y de cómo se debe comportar en situaciones particulares .En algunos casos, los requerimientos funcionales de los sistemas también pueden declarar explícitamente lo que el sistema no debe hacer

Los requerimientos funcionales de un sistema describen lo que el sistema debe hacer. Estos requerimientos dependen del tipo de software que se desarrolle, de los posibles usuarios del software y del enfoque general tomado por la organización al redactar requerimientos. Cuando se expresan como requerimientos del usuario, habitualmente se describen de una forma bastante abstracta. Sin embargo. Los requerimientos funcionales del sistema describen con detalle la función de éste, sus entradas y salidas, excepciones, etcétera. Los requerimientos funcionales para un sistema software se pueden expresar de diferentes formas. A continuación se presentan algunos ejemplos de estos requerimientos funcionales para un sistema de biblioteca universitaria, denominada LIBSYS, utilizada por estudiantes y personal docente que solicitan libros y documentos de otras bibliotecas.
1. El usuario deberá tener la posibilidad de buscar en el conjunto inicial de la base de datos o seleccionar un subconjunto de ella.
2. El sistema deberá proporcionar visores adecuados para que el usuario lea documentos en el almacén de documentos.
3. A cada pedido se le deberá asignar un identificador único (ID_PEDIDO), que el usuario podrá copiar al área de almacenamiento permanente de la cuenta.
Estos requerimientos funcionales del usuario definen los recursos específicos que el sistema debe proporcionar. Dichos requerimientos se toman del documento de requerimientos del usuario, e ilustran los diferentes niveles de detalle en que se pueden redactar los requerimientos funcionales (contraste los requerimientos l y 3). El sistema LIBSYS es una interfaz única para diferentes bases de datos de artículos. Esto permite a los usuarios descargar copias de artículos publicados en revistas. Periódicos y publicaciones científicas. Una descripción más detallada de los requerimientos para el sistema en el cual se basa LIBSYS se puede ver en mi libro con Gerald Kotonya sobre ingeniería de requerimientos (Kontonya y Sommerville, 1998). La impresión en la especificación de requerimientos es la causa de muchos de los problemas de la ingeniería del software.
Para un desarrollador de sistema es natural dar interpretaciones de un requerimiento ambiguo con el fin de simplificar su implementación. Sin embargo. a menudo no es lo que el cliente desea. Se deben establecer nuevos requerimientos y hacer cambios en el sistema. Por supuesto. Esto retrasa la entrega de éste e incrementa los costes.

Requerimientos no funcionales

Requerimientos no funcionales. Son restricciones de los servicios o funciones ofrecidos por el sistema. Incluyen restricciones de tiempo, sobre el proceso de desarrollo y estándares. Los requerimientos no funcionales a menudo se aplican al sistema en su totalidad. Normalmente apenas se aplican a características o servicios individuales del sistema.

Los requerimientos no funcionales, como su nombre sugiere, son aquellos requerimientos que no se refieren directamente a las funciones específicas que proporciona el sistema, sino a las propiedades emergentes de éste como la fiabilidad, el tiempo de respuesta y la capacidad de almacenamiento. De forma alternativa, definen las restricciones del sistema como la capacidad de los dispositivos de entrada/salida y las representaciones de datos que se utilizan en las interfaces del sistema.

Los requerimientos no funcionales rara vez se asocian con características particulares del sistema. Más bien, estos requerimientos especifican o restringen las propiedades emergentes del sistema. Por lo tanto, pueden especificar el rendimiento del sistema, la protección, la disponibilidad, y otras propiedades emergentes. Esto significa que a menudo son más críticos que los requerimientos funcionales particulares. Los usuarios del sistema normalmente pueden encontrar formas de trabajar alrededor de una función del sistema que realmente no cumple sus necesidades. Sin embargo. el incumplimiento de un requerimiento no funcional puede significar que el sistema entero sea inutilizable.

Por ejemplo, si un sistema de vuelo no cumple sus requerimientos de fiabilidad, no se certificará como seguro para el funcionamiento; si un sistema de control de tiempo real no cumple sus requerimientos de rendimiento, las  
Funciones de control no funcionarán correctamente. Los requerimientos no funcionales no sólo se refieren al sistema software a desarrollar. Algunos de estos requerimientos pueden restringir el proceso que se debe utilizar para desarrollar el sistema. Ejemplos de requerimientos de procesos son la especificación de los estándares de calidad que se deben utilizar en el proceso, una especificación que 


Proyecto se refiere a todas las acciones que deben realizarse para cumplir con una necesidad definida dentro de los plazos. Así, ya que el proyecto es una acción temporaria que tiene principio y fin, que utiliza recursos identificados (humanos y materiales) durante su ejecución, y que tiene uncosto, deberá tener recursos presupuestados y una hoja de balance independiente a la de la compañía. "Productos finales" se refiere a los resultados esperados del proyecto.
Diagrama de los objetivos-costos-plazos
La dificultad de la gestión de un proyecto radica en gran medida en la cantidad de personas involucradas. De hecho, en contrapartida con los proyectos personales o internos en pequeña escala para los cuales la necesidad y la respuesta para dicha necesidad puede ser provista por la misma persona o por un grupo limitado de personas, en un proyecto en el sentido profesional, la expresión de una necesidad y la satisfacción de esta necesidad generalmente es responsabilidad de diferentes personas.
Así, es necesario asegurarse (para toda la duración del proyecto) que el producto que se está creando cumpla claramente con las expectativas del "cliente". En contraposición con el modelo tradicional comercial ("vendedor"/"comprador") en el que un cliente compra un producto ya fabricado para que cumpla con su necesidad, el proyecto busca crear un producto original que cumpla con una necesidad específica que debe estar claramente expresada. Esta expresión de las necesidades es incluso más difícil ya que generalmente el proyecto no tiene precedentes dentro de la compañía, dado que es una novedad. En forma opuesta, generalmente es difícil resumir soluciones existentes y concentrarse solamente en las necesidades en términos funcionales.
Ejemplo: para  realización de  un proyecto se deben tener en  cuenta  muchas  factores las cuales  van a ayudar  a  que este  proyecto conlleve  mas n aya  de lo común.
por ejemplo para la realización de  un software de contabilidad, debemos tener en cuenta que es lo que  nos están pidiendo  y desde  allí desglosar  un mundo de parámetros para  plantear  una "hipótesis"   o  un pequeño plano de lo que se va eleborar  para esto surgen  las preguntas como, cuando , donde  para que o con que fin , riesgos   que podría tener.
ya después de plantear  todo   con la  cual se  podra elaborar  el proyecto,se pasa  a la  getion de anctividades , recolección de papeleo, aleboracion de un sistema  para la elaboracion  de este,requiesitos, un listado con todo lo que nos esta pidiendo  la persona a la  cual le estamos realizando el trabajo,  mirar minuciosamente que nos sirve  y que no nos sierbe.
luego     de tener  todo  esto planteado y organiado daremos paso a la elaboracion del proyecto,para que  este proyecto  no se  cea afectado por  un lacso de tiempo  deberemos de tener un cronograma  que   nos facilitara para  ver con que tiempo    estamos elaborando  el programa   si si   nos esta rindiendo el tiempo instipulado por el cliente o si  nos estamos retrasando  por  alguna  rezon, si seestra retrasando el trabajo analizar y  mirar ell por que  de la situacion  y  dar una solucion  lo mas antes posible


3)MODULO
En programación un módulo es una porción de un programa de computadora. De las varias tareas que debe realizar un programa para cumplir con su función u objetivos, un módulo realizará, comúnmente, una de dichas tareas (o varias, en algún caso).
En general (no necesariamente relacionado con la programación), un módulo recibe como entrada la salida que haya proporcionado otro módulo o los datos de entrada al sistema (programa) si se trata del módulo principal de éste; y proporcionará una salida que, a su vez, podrá ser utilizada como entrada de otro un módulo o bien contribuirá directamente a la salida final del sistema (programa), si se retorna al módulo principal.
Particularmente, en el caso de la programación, los módulos suelen estar (no necesariamente) organizados jerárquicamente en niveles, de forma que hay un módulo principal que realiza las llamadas oportunas a los módulos de nivel inferior.
Cuando un módulo es convocado, recibe como entrada los datos proporcionados por otro del mismo o superior nivel, el que ha hecho la llamada; luego realiza su tarea. A su vez este módulo convocado puede llamar a otro u otros módulos de nivel inferior si fuera necesario; cuando ellos finalizan su tareas, devuelven la salida pertinente al módulo inmediato llamador, en secuencia reversa, finalmente se continúa con la ejecución del módulo principal.

CARACTERISTICAS DE UN MODULO

.Cada uno de los módulos de un programa idealmente debería cumplir las siguientes características:
  • Tamaño relativamente pequeño.- Esto facilita aislar el impacto que pueda tener la realización de un cambio en el programa, bien para corregir un error, o bien por re diseño del algoritmo correspondiente.
  • Independencia modular.- Cuanto más independientes son los módulos entre sí más fácil y flexible mente se trabajará con ellos, esto implica que para desarrollar un módulo no es necesario conocer detalles internos de otros módulos. Como consecuencia de la independencia modular un módulo cumplirá:
La independencia modular mejora el rendimiento humano, pudiendo realizarse programación en equipo y desarrollar módulos paralelamente. También contribuye a la re utilización de software.



viernes, 19 de julio de 2013

HERRAMIENTAS DE GESTION DE PROYECTOS

(Windows)
FusionDesk Starter Edition proporciona la planificación del proyecto básico y algunas características de gestión. No podrá ser la solución adecuada si estás buscando un programa de gestión de proyectos completo, ya que carece de algunas características de gestión como los diagramas de Gantt y de gestión de recursos. 



 





(Windows, Mac, Linux)
GanttProject tiene una interfaz fácil de usar, simplemente puedes iniciar la planificación de proyectos de inmediato después de la instalación. Este programa es una herramienta de gestión publicada bajo la licencia GPL. Por tanto, puedes descargarlo y utilizarlo de forma gratuita. Está disponible para múltiples plataformas, incluyendo Windows, Linux y Mac.  



(Windows)
Open Workbench ha sido diseñado para la programación y gestión de proyectos. Open Workbench está patrocinado por la División Clarity de CA. Se trata de una aplicación de código abierto que se ejecuta en la plataforma Windows, incluyendo Windows 2000 y XP. El software se puede descargar y utilizar de forma gratuita. 





para desarrollar un proyecto  para  mi es el ganttproject


(Windows, Mac, Linux)
GanttProject tiene una interfaz fácil de usar, simplemente puedes iniciar la planificación de proyectos de inmediato después de la instalación. Este programa es una herramienta de gestión publicada bajo la licencia GPL. Por tanto, puedes descargarlo y utilizarlo de forma gratuita. Está disponible para múltiples plataformas, incluyendo Windows, Linux y Mac.  

Ventajas de GanttProject

  • Se puede descargar de forma gratuita y además es una aplicación íntegramente escrita en Java por lo que lo hace multiplataforma.
  • Reportes en PDF o HTML.
  • Posibilidad de importar y exportar archivos de MS Project.
  • Organización de tareas en forma jerárquica.
  • Permite crear diagramas y asignares tiempos, recursos.
  • Otra variante que se puede utilizar en combinación, es el diagrama de Pert.
  • Fácil aprendizaje.
  • Precio excelente.
  • Las herramientas de gestión de proyectos comerciales cuestan una gran cantidad de dinero.
  • Gratuito para cualquier propósito.
  • Interfaz amigable

Desventajas de GanttProject

  • Carece de muchas de las características adicionales que hacen de MS Project la herramienta estándar.
  • Poca difusión entre las pequeñas y medianas empresas, para la gestión de sus proyectos.

Es ta herramienta  es  plataforma?
Está disponible para múltiples plataformas, incluyendo Windows, Linux y Mac.


¿como instalar  GanttProject?


Periódicamente me gusta probar opciones a programas comerciales para ver su estado de madurez. Una de las herramientas imprescindibles para mucha gente son los generadores de diagramas de Gantt (esto que parece rebuscado lo he dicho a posta.. ya que raramente esta herramientas se usan para más).
Esta vez he elegido GanttProject. El nombre es sugerente… Nos vamos a su Web y nos lo descargamos.http://ganttproject.biz
 Ocupa, más o menos, 8 Megas. Para cacharrear hay hasta una opción de arrancarlo vía Web.
En instalador como siempre ok, ok, ok
 Elegimos las opciones de instalación (yo he seleccionado todas menos preseleccionar ficheros de Microsoft Project, que es como viene por defecto).
Elegimos el trayecto
Y nos aseguramos que todo ha ido bien.
Si tenéis Windows Vista y se queda toda la vida en la ventana de carga, probad a arrancar como administrador... no falla.
En el menú de proyecto pulsamos Nuevo y aparece un Wizard o asistente. Rellenamos los campos básicos.
Elegimos nuestro tipo de proyecto. Aunque no lo veáis marcado, yo he elegido de software, donde aparecen pre-seleccionado los roles que participarían (esto debería ser indicativo de que una sola persona raramente puede ser eficaz haciendo de todos los roles)
Elegimos la jornada de trabajo y el idioma... y ya estamos.
Dentro de los menús, podemos elegir las propiedades. Una bastante útil es marcar con una línea roja el día de hoy (sobre todo para reuniones de seguimiento)
on esto, solo tenemos que empezar a añadir tareas y endentarlas (con las flechas amarillas). Si pulsamos el botón derecho sobre los títulos de la tabla de la izquierda, podemos elegir las columnas a mostrar. Una de las más útiles que no viene por defecto es la duración.
Si os fijáis, hay una lengüeta de recursos: esto vale para indicar quién se ocupará de cada tarea.
Si hacemos doble click o damos a las propiedades de una tarea, podemos elegir los recursos existentes.
Ahora bien, para que salgan en los diagramas de Gantt como en Microsoft Project, hay que decirlo en las propiedades.
Podemos ver la representación del diagrama PERT
Si os fijáis bien, podemos representar el camino crítico (aquellas tareas que si se retrasan retrasarán todo el proyecto... marcadas en azul oscuro). Es un botón en la barra a la derecha del todo.
He dado a imprimir, y por lo menos nos sale algo decente.
Y en el menú de exportación tenemos opciones para mi gusto más útiles... como es hacerlo a una imagen o HTML para meterlo en el informe de seguimiento de un proyecto.
Elegimos el trayecto
Y tenemos un Web navegable con la información del proyecto.
Ahora probamos la exportación a Microsoft Project.
Elegimos el trayecto y ya en MS Project (2007) seleccionamos ficheros XML.
Y vemos que lo hace estupendamente.
Bueno. Hoy hemos visto que las opciones de Software Libre van ganando peso. Los que estamos acostumbrados a MS Project seguro que todavía echamos de menos algunas cosas: Gráfico de evolución de tareas, dividir tareas, capacidades de impresión...







jueves, 18 de julio de 2013

INGENIERÍA DE SOFTWARE

1)Qué es una metodología?

Una metodología es el conjunto de métodos por los que se rige una investigación científica por ejemplo, para aclarar mejor el concepto, cabe aclarar que un método es el procedimiento que se llevará a cabo en orden a la consecución de determinados objetivos. Por ende, la función que cumple la metodología es estudiar los métodos para luego determinar cuál es el más adecuado a aplicar o sistematizar en una investigación o trabajo.

2)Clases de metodologías de desarrollo de software que existen?

Metodología: Conjunto de procedimientos, técnicas, herramientas y un soporte documental que ayuda a los desarrolladores a realizar nuevo software.
Tarea: Actividades elementales en que se dividen los procesos.
Procedimiento: Definición de la forma de ejecutar la tarea.
Técnica: Herramienta utilizada para aplicar un procedimiento. Se pueden utilizar una o varias.
Herramienta: Para realizar una técnica, podemos apoyarnos en las herramientas software que automatizan su aplicación.
Producto: Resultado de cada etapa.


DESARROLLO CONVENCIONAL
 Los resultados finales son impredecibles. No hay forma de controlar lo que está sucediendo en el proyecto.  Los cambios organizativos afectan negativamente al proceso de desarrollo.

DESARROLLO ESTRUCTURADO
Programación estructurada
Diseño estructurado
Análisis estructurado
Especificaciones funcionales:
Gráficas
Particionadas
Mínima mente redundantes


EJEMPLO DE PROGRAMACIÓN CONVENCIONAL

10-CLS
20-A=10
30-INPUT B
40-IF B=A THEN GOTO 50 ELSE GOTO 70
50-PRINT “A Y B SON IGUALES”
60-GOTO 100
70-IF A>B THEN GOTO 80 ELSE GOTO 90
80-B= B + 1; GOTO 40
90-B= B - 1; GOTO 40
100-END

EJEMPLO DE PROGRAMACIÓN ESTRUCTURADA

PROGRAMARA NUMEROS IGUALES
BEGIN
CLEARSCREEN;
A: =10;
INPUT B;
REPEAT
                IF B=A THEN PRINT “A Y B SON IGUALES”
ELSE REDUCEDIFERENCIA (A,B);
UNTIL B=A;
END;

PROCEDURE REDUCEDIFENCIA (A, B);
BEGIN
IF A>B THEN B: = B+1
ELSE B:= B - 1
END

RELACIÓN HISTÓRICA DE LAS PRINCIPALES METODOLOGÍAS
AÑO      METODOLOGÍA
1968      Conceptos sobre la programación estructurada de DIJKSTRA
1974      Técnicas de programación estructurada de WARNIER y JACKSON
1975      Primeros conceptos sobre diseño estructurado de MYERS y YOURDON
1977      Primeros conceptos sobre análisis estructurado GANE y SARSON
1978      Análisis estructurado: DEMARCO y WEINBERG Nace MERISE
1981      SSADM (versión inicial) Information Engineering (versión inicial)
1985      Análisis y Diseño estructurado para sistemas de tiempo real de WARD y MELLOR
1986      SSADM Versión 3
1987      Análisis y Diseño estructurado para sistemas de tiempo real de HATLEY y PIRHBAY
1989      MÉTRICA (versión inicial)
1990      SSADM Versión 4
1993      MÉTRICA Versión 2
1995      MÉTRICA Versión 2.1

DESARROLLO ORIENTADO AL OBJETO
La esencia del desarrollo orientado a objetos es la identificación y organización de conceptos del dominio de la aplicación y no tanto de su representación final en un lenguaje de programación.

CARACTERÍSTICAS DESEABLES DE UNA METODOLOGÍA
Existencia de reglas predefinidas
Cobertura total del ciclo de desarrollo
Verificaciones intermedias
Planificación y control
Comunicación efectiva
Utilización sobre un abanico amplio de proyectos
Fácil formación
Herramientas CASE
Actividades que mejoren el proceso de desarrollo
Soporte al mantenimiento
Soporte de la re utilización de software

CLASIFICACIÓN DE LAS METODOLOGÍAS
Estructuradas
Orientadas a Procesos
Orientadas a datos
     Jerárquicas
     No Jerárquicas
Mixtas
Orientadas a Objetos
Para Sistemas de Tiempo Real

METODOLOGÍAS ESTRUCTURADAS

METODOLOGÍAS ORIENTADAS A DATOS JERÁRQUICOS
-La estructura de control del programa debe ser jerárquica y se debe derivar de la estructura de datos del programa
-El proceso de diseño consiste en definir primero las estructuras de los datos de entrada y salida, mezclaras todas en una estructura jerárquica de programa y después ordenar detalladamente la lógica procedimental para que se ajuste a esta estructura
-El diseño lógico debe preceder y estar separado del diseño físico.


 3)Elabore  un diagrama  del ciclo de vida clásico del software