miércoles, 29 de abril de 2015

Modelos de Procesos Prescriptivo


ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ


CARRERA INFORMÁTICA

    SEMESTRE  SÉPTIMO           PERIODO  ABR 2015/SEP 2015
TEMA:

MODELOS DE PROCESOS PRESCRIPTIVO
MATERIA:

INGENIERÍA DE SOFTWARE

AUTOR:

CARLOS A. ZAMBRANO VIDAL


FACILITADORA:

ING. HIRAIDA SANTANA



CALCETA,  ABRIL 2015

INTRODUCCIÓN

Para cualquier suceso en cualquier ámbito siempre se debe de tener un conjunto de actividades que ayuden a que el trabajo sea más eficiente de esta manera se trabaja con los modelos de proceso prescriptivos con su conjunto de tareas, actividades que ayudan a que se obtenga un software de buena calidad, además solucionen los casos del desarrollo del software y de esta manera complaciendo a las personas que lo usaran.

MARCO TEÓRICO

MODELOS DE PROCESOS PRESCRIPTIVO

MODELO DE CASCADA

El modelo de la cascada, a veces llamado ciclo de vida clásico, es el enfoque metodológico que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior. Sugiere un enfoque sistemático y secuencial para el desarrollo del software, que comienza con la especificación de los requerimientos por parte del cliente y avanza a través de planeación, modelado, construcción y despliegue, para concluir con el apoyo del software terminado.

El modelo de la cascada es el paradigma más antiguo de la ingeniería de software. Sin embargo, en las últimas tres décadas, las críticas hechas al modelo han ocasionado que incluso sus defensores más obstinados cuestionen su eficacia. Entre los problemas que en ocasiones surgen al aplicar el modelo de la cascada se encuentran los siguientes:
1.    Es raro que los proyectos reales sigan el flujo secuencial propuesto por el modelo. Aunque el modelo lineal acepta repeticiones, lo hace en forma indirecta. Como resultado, los cambios generan confusión conforme el equipo del proyecto avanza.
2.    A menudo, es difícil para el cliente enunciar en forma explícita todos los requerimientos. El modelo de la cascada necesita que se haga y tiene dificultades para aceptar la incertidumbre natural que existe al principio de muchos proyectos.
3.    El cliente debe tener paciencia. No se dispondrá de una versión funcional del (de los) programa(s) hasta que el proyecto esté muy avanzado. Un error grande sería desastroso si se detectara hasta revisar el programa en funcionamiento.
En un análisis interesante de proyectos reales, la naturaleza lineal del ciclo de vida clásico llega a “estados de bloqueo” en los que ciertos miembros del equipo de proyecto deben esperar a otros a fin de terminar tareas interdependientes. En realidad, ¡el tiempo de espera llega a superar al dedicado al trabajo productivo! Los estados de bloqueo tienden a ocurrir más al principio y al final de un proceso secuencial lineal.
Hoy en día, el trabajo de software es acelerado y está sujeto a una corriente sin fin de cambios (en las características, funciones y contenido de información). El modelo de la cascada suele ser inapropiado para ese tipo de labor. No obstante, sirve como un modelo de proceso útil en situaciones en las que los requerimientos son fijos y el trabajo avanza en forma lineal hacia el final.

MODELO DE PROCESO INCREMENTAL

El modelo incremental aplica secuencias lineales en forma escalonada a medida que avanza el calendario de actividades. Cada secuencia lineal produce “incrementos” de software susceptibles de entregarse de manera parecida a los incrementos producidos en un flujo de proceso evolutivo.
La idea principal detrás de mejoramiento iterativo es desarrollar un sistema de programas de manera incremental, permitiéndole al desarrollador sacar ventaja de lo que se ha aprendido a lo largo del desarrollo anterior, incrementando, versiones entregables del sistema. El aprendizaje viene de dos vertientes: el desarrollo del sistema, y su uso (mientras sea posible). Los pasos claves en el proceso son comenzar con una implementación simple de los requerimientos del sistema, e iterativamente mejorar la secuencia evolutiva de versiones hasta que el sistema completo esté implementado. En cada iteración, se realizan cambios en el diseño y se agregan nuevas funcionalidades y capacidades al sistema.
Por ejemplo, un software para procesar textos que se elabore con el paradigma incremental quizá entregue en el primer incremento las funciones básicas de administración de archivos, edición y producción del documento; en el segundo dará herramientas más sofisticadas de edición y producción de documentos; en el tercero habrá separación de palabras y revisión de la ortografía; y en el cuarto se proporcionará la capacidad para dar formato avanzado a las páginas.
Debe observarse que el flujo de proceso para cualquier incremento puede incorporar el paradigma del prototipo.
Cuando se utiliza un modelo incremental, es frecuente que el primer incremento sea el producto fundamental. Es decir, se abordan los requerimientos básicos, pero no se proporcionan muchas características suplementarias (algunas conocidas y otras no). El cliente usa el producto fundamental (o lo somete a una evaluación detallada). Como resultado del uso y/o evaluación, se desarrolla un plan para el incremento que sigue. El plan incluye la modificación del producto fundamental para cumplir mejor las necesidades del cliente, así como la entrega de características adicionales y más funcionalidad. Este proceso se repite después de entregar cada incremento, hasta terminar el producto final.
El modelo de proceso incremental se centra en que en cada incremento se entrega un producto que ya opera. Los primeros incrementos son versiones desnudas del producto final, pero proporcionan capacidad que sirve al usuario y también le dan una plataforma de evaluación.
El desarrollo incremental es útil en particular cuando no se dispone de personal para la implementación completa del proyecto en el plazo establecido por el negocio. Los primeros incrementos se desarrollan con pocos trabajadores. Si el producto básico es bien recibido, entonces se agrega más personal (si se requiere) para que labore en el siguiente incremento. Además, los incrementos se planean para administrar riesgos técnicos. Por ejemplo, un sistema grande tal vez requiera que se disponga de hardware nuevo que se encuentre en desarrollo y cuya fecha de entrega sea incierta. En este caso, tal vez sea posible planear los primeros incrementos de forma que eviten el uso de dicho hardware, y así proporcionar una funcionalidad parcial a los usuarios finales sin un retraso importante.

MODELO DE PROCESO EVOLUTIVO

El software, como todos los sistemas complejos, evoluciona en el tiempo. Es frecuente que los requerimientos del negocio y del producto cambien conforme avanza el desarrollo, lo que hace que no sea realista trazar una trayectoria rectilínea hacia el producto final; los plazos apretados del mercado hacen que sea imposible la terminación de un software perfecto, pero debe lanzarse una versión limitada a fin de aliviar la presión de la competencia o del negocio; se comprende bien el conjunto de requerimientos o el producto básico, pero los detalles del producto o extensiones del sistema aún están por definirse. En estas situaciones y otras parecidas se necesita un modelo de proceso diseñado explícitamente para adaptarse a un producto que evoluciona con el tiempo.
Los modelos evolutivos son iterativos. Se caracterizan por la manera en la que permiten desarrollar versiones cada vez más completas del software. En los párrafos que siguen se presentan dos modelos comunes de proceso evolutivo.
Hacer prototipos. Es frecuente que un cliente defina un conjunto de objetivos generales para el software, pero que no identifique los requerimientos detallados para las funciones y características.
En otros casos, el desarrollador tal vez no esté seguro de la eficiencia de un algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debe adoptar la interacción entre el humano y la máquina. En estas situaciones, y muchas otras, el paradigma de hacer prototipos tal vez ofrezca el mejor enfoque.
Aunque es posible hacer prototipos como un modelo de proceso aislado, es más común usarlo como una técnica que puede implementarse en el contexto de cualquiera de los modelos.

MODELO PROCESO ESPIRAL

Es un modelo evolutivo del proceso del software y se acopla con la naturaleza iterativa de hacer prototipos con los aspectos controlados y sistémicos del modelo de cascada. Tiene el potencial para hacer un desarrollo rápido de versiones cada vez más completas. Describe el modelo del modo siguiente:
El modelo de desarrollo espiral es un generador de modelo de proceso impulsado por el riesgo, que se usa para guiar la ingeniería concurrente con participantes múltiples de sistemas intensivos en software.
Tiene dos características distintivas principales. La primera es el enfoque cíclico para el crecimiento incremental del grado de definición de un sistema y su implementación, mientras que disminuye su grado de riesgo. La otra es un conjunto de puntos de referencia de anclaje puntual para asegurar el compromiso del participante con soluciones factibles y mutuamente satisfactorias.
Con el empleo del modelo espiral, el software se desarrolla en una serie de entregas evolutivas.
Durante las primeras iteraciones, lo que se entrega puede ser un modelo o prototipo. En las iteraciones posteriores se producen versiones cada vez más completas del sistema cuya ingeniería se está haciendo.
Un modelo en espiral es dividido por el equipo de software en un conjunto de actividades estructurales. Para fines ilustrativos, se utilizan las actividades estructurales generales ya analizadas.

PROCESO MODELO CONCURRENTE

El modelo de desarrollo concurrente, en ocasiones llamado ingeniería concurrente, permite que un equipo de software represente elementos iterativos y concurrentes de cualquiera de los modelos de proceso. Es un modelo de tipo de red donde todas las personas actúan simultáneamente o al mismo tiempo Por ejemplo, la actividad de modelado definida para el modelo espiral se logra por medio de invocar una o más de las siguientes acciones de software:
Hacer prototipos, análisis y diseño
El modelo de desarrollo concurrente se utiliza a menudo como el paradigma de desarrollo de aplicaciones cliente/servidor. Un sistema cliente/servidor se compone de un conjunto de componente funcional.

CONCLUSIONES

Cada uno de estos modelos ayuda a que un software sea de calidad ya que cumplen con los diferentes requisitos en un orden jerárquico y específico.
El modelo de cascada es uno de los modelos más utilizado pero para proyectos pequeños porque tiene una desventaja que es que hay que esperar que se finalice una actividad para empezar con la otra y tomar en cuenta que si no se toman bien los requerimientos hay que empezar de nuevo y además el cliente deberá tener mucha paciencia porque el solo vera el software al final. El modelo incremental va a comienza con una implementación de los requerimientos del sistema, y va a mejorar secuencialmente hasta que sistema completo esté implementado. En cada iteración, se harán cambios en el diseño y se agregan nuevas funcionalidades y capacidades al sistema. Modelo evolutivo  en cada negocio se realizaran cambios y se implementan nuevas ideas de parte del cliente es por esto que este modelo ayuda de una manera en la que permiten desarrollar versiones cada vez más completas del software. Modelo espiral es cíclico y de esta manera colabora con el crecimiento incremental a medida que el sistema y su implementación disminuyen su grado de riesgo. Modelo concurrente este modelo es de tipo de red donde todas las personas actúan al mismo tiempo en el desarrollo del software.

BIBLIOGRAFÍA

Pressman, R. 2010. INGENIERÍA DEL SOFTWARE. Un enfoque práctico. Séptima edición.

jueves, 23 de abril de 2015

Introduccion



ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ


CARRERA INFORMÁTICA

    SEMESTRE  SÉPTIMO           PERIODO  ABR 2015/SEP 2015
TEMA:

INTRODUCCIÓN A INGENIERÍA DE SOFTWARE

MATERIA:

INGENIERÍA DE SOFTWARE

AUTOR:

CARLOS A. ZAMBRANO VIDAL


FACILITADORA:

ING. HIRAIDA SANTANA



CALCETA,  ABRIL 2015

INTRODUCCIÓN

Hoy en día, el software es una parte integral de la mayoría de los sistemas. Para ejecutar proyectos software de forma satisfactoria y construir productos de alta calidad, los profesionales del software necesitan entender las características únicas del software y el enfoque usado para desarrollar y mantener software.

MARCO TEÓRICO

HISTORIA DE LA INGENIERÍA DEL SOFTWARE

Durante los primeros años de la informática, el software era un añadido. La programación se consideraba un "arte", para el que no existían metodologías, era un proceso que se realizaba sin planificación alguna. En esta época toda la programación se desarrollaba a medida para cada necesidad concreta, y en consecuencia tenía muy poca difusión, habitualmente quien lo escribía era porque lo necesitaba, y era quien lo mantenía.

En una segunda época (a partir de mitad de la década de 1960) se estableció el software como producto y aparecieron las empresas dedicadas al desarrollo y distribución masiva del mismo. El origen del término Ingeniería del Software, como se ha visto previamente se atribuye a dos conferencias organizadas por la OTAN en 1967 y 1968.

La tercera era comenzó a mediados de la década de 1970, época en la que los sistemas informáticos aumentaron mucho en su complejidad, y nacieron las redes de ordenadores. Esto supuso mucha presión para los desarrolladores, aunque los ordenadores para uso personal, apenas estaban difundidos. Esta época acabó con la aparición de los microprocesadores.

La cuarta era de la evolución de los sistemas informáticos, comienza hacia 1990 y se dirige al impacto colectivo de los ordenadores y el software, en todos los entornos. La industria del software tiene un gran peso en la economía mundial. Aparecen las técnicas de redes neuronales, junto con la lógica difusa, de interés en el campo de la Inteligencia Artificial.

EL SOFTWARE EN LA ACTUALIDAD
Hoy en día el software tiene un doble papel. Es un producto, pero simultáneamente es el vehículo para hacer entrega de un producto. Como producto permite el uso del hardware, ya sea, por ejemplo, un ordenador personal o un teléfono móvil celular. Como vehículo utilizado para hacer entrega del producto, actúa como base de control, por ejemplo un sistema operativo, o un sistema gestor de redes. El software hace entrega de lo que se considera como el producto más importante del siglo veintiuno, la información. El software transforma datos personales para que sean más útiles en un entorno local, gestiona información comercial para mejorar la competitividad, proporciona el acceso a redes a nivel mundial, y ofrece el medio de adquirir información en todas sus formas.

Actualmente se considera la Ingeniería del Software como una nueva área de la ingeniería, y la profesión de ingeniero informático es una de las más demandadas, aunque en España los salarios suelen ser bajos para la cualificación de estos profesionales. La palabra ingeniería tiene una connotación de prestigio que provoca que muchas ramas del conocimiento tiendan a autodenominarse así.

Actualmente existe sobredemanda de profesionales altamente cualificados, sucede principalmente en las grandes industrias, como Google, Facebook, Twitter y otras grandes compañías que más que competir, combaten entre sí para captar a los valiosos egresados de las principales universidades. Esta situación hace más que evidente la patente realidad del cambio de sistema y las tendencias laborales del nuevo ciclo, principalmente en el mercado norteamericano, ya que es el que mayor concentración y origen de empresas actores tecnológicos posee, aunque son datos fácilmente extrapolables a otras zonas con nivel de desarrollo análogo.


CONCLUSIONES

Como tecnología en el área de informática es principal conocer el enfoque en el análisis, tanto para aplicarlo en el trascurso de la vida, ya que se debe analizar desde los diferentes puntos de vista un sitio.
Es importante saber leer, escribir y plantear un problema para desarrollar un proyecto tanto laboral, eso me lo da a entender la ingeniería, me permite aprender a tener todo claro y a saber escribir y saber leerlo para que no se me presenten serio problemas por no tener todo claro.

BIBLIOGRAFÍA

Pressman, R. 2010. INGENIERÍA DEL SOFTWARE. Un enfoque práctico. Séptima edición.
Mejía. P. 2013. Ingeniería de Software. Edición: 5a. Y 6a. Capítulo 1. Formato: PDF.Consultado: 22 Abril 2015. Disponible en: http://www.ctic.uni.edu.pe/files/insoft01.pdf


Silabo




ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ


CARRERA INFORMÁTICA

    SEMESTRE  SÉPTIMO           PERIODO  ABR 2015/SEP 2015
                             
SILABO DEL CURSO


MATERIA:

INGENIERÍA DE SOFTWARE



CALCETA,  MAYO 2015

1.              CÓDIGO Y NÚMERO DE CRÉDITOS:

CÓDIGO: 0704                    
CRÉDITOS: 3 (2 TEÓRICOS, 1 PRÁCTICO)
SEMESTRE: SÉPTIMO                      PARALELO: A

2.              DESCRIPCIÓN DEL CURSO:
Este curso permite al estudiante desarrollar los conocimientos necesarios para gestionar proyectos de software, se exponen conceptos de análisis y diseño estructurado y la gestión de aspectos relativos  a calidad y riesgos aplicables a un producto de software.

3.              PRE-REQUISITOS Y CO-REQUISITOS: Pre-requisitos: 0604 Gestión Informática Co-requisitos:  

4.              TEXTO Y REFERENCIAS REQUERIDAS PARA EL DICTADO DEL CURSO:  

TEXTO GUÍA:      

Roger S. Pressman (2010), Ingeniería del Software un enfoque Práctico, 7ma. ed. México: Mc Graw
Hill.

BIBLIOGRAFÍA COMPLEMENTARIA
Pavón, Juan. Gestión de Software. 3era. Edición. Editorial Complutense, 2008, Madrid.


5.              OBJETIVOS GENERALES DEL CURSO (RESULTADOS O LOGROS DE APRENDIZAJE DEL CURSO):
a)      (C1) Conocer el ciclo de vida del software, así como metodologías, modelos y patrones de diseño.
b)      (C4 ) Organizar un equipo de trabajo de desarrollo de software, en base a un concepto metodológico.
c)       (C5 ) Desarrollar un producto software empleando una metodología de desarrollo de software.
d)      (A4) Integrar equipos de desarrollo de software.
e)      (P4) Administrar equipos de desarrollo de software.

6.              TÓPICOS O TEMAS CUBIERTOS:

TEMÁTICA
CONTENIDO
HORAS TEÓRICAS
HORAS PRÁCTICA
TRABAJO
AUTÓNOMO
LOGRO DE APRENDIZAJE
TEMA 1.
Metodologías de Desarrollo de Software
1.1 Ciclos de Vida del Software.  1.2 Metodologías Tradicionales.
1.3 Metodologías Agiles. 
8
4
12
a, b, c
TEMA 2.
Lenguaje
Unificado de
Modelado
UML
2.1 Diagramas de Comportamiento: casos de uso, actividad, interacción, estado, secuencia, comunicación, tiempo.
2.2 Diagramas de Estructura: clases, estructuras compuestas, componentes, despliegue, objeto, paquetes.
16
8
24
a, c


TEMA 3.
Gestión de
Proyectos de
Software
3.1 Gestión de Requerimientos, Presupuesto y Tiempo. 
3.2 Gestión de Riesgo.
3.3 Gestión de Calidad. 
3.4 Gestión de Cambio. 
8
4
12
b, d, e

TOTAL
32
16
48
a, b, c ,d, e


7.              HORARIO DE CLASE:
16 Semanas por el semestre, más una semana cultural, 3 horas de  clases por semana de 60 minutos cada una.
        Martes: Dos horas en el aula de clases 304. (20h15 a 22h15)
        Miércoles: Una hora en el aula de clases 202. (18h00 a 19h00)
8.              CONTRIBUCIÓN DEL CURSO EN LA FORMACIÓN DEL INGENIERO EN INFORMÁTICA:

SIGLAS
OBJETIVOS EDUCACIONALES DE LA CARRERA
CONTRIBUCIÓN
DESCRIPCIÓN
1
Manejar las herramientas de software de última tecnología en el ámbito de su profesión que se encuentren en el mercado.


El contenido de esta asignatura contribuye directamente con el formación del futuro Ingeniero
Informático, pues le permite al estudiante desarrollar los
conocimientos necesarios para
gestionar proyectos de software,
empleando para ello la metodología
más adecuada, de tal forma que los se cumplan los requerimientos,
presupuesto y tiempo designado para la implementación de la solución software.
2
Implementar redes y sistemas de comunicación con su respectivo soporte 

3
Brindar mantenimiento preventivo y correctivo a diferentes equipos y sistemas computacionales en instituciones y empresas públicas y privadas.

4
Desarrollar sistemas informáticos de hardware  o software para la solución eficiente y eficaz de problemas de procesamiento automático de datos y de información.
Alto
5
Cursar  programas de  posgrado  o  de formación continua  en áreas afines.

6
Participar en proyectos de investigación, desarrollo y automatización tecnológica



9.              RELACIÓN DEL CURSO CON EL CRITERIO RESULTADOS DE APRENDIZAJE:

Resultados de Aprendizaje
Contribución
El estudiante debe:
a) Aplica fundamentos matemáticos y físicos en el diseño, implementación y mantenimiento de sistemas informáticos; ya sea a nivel de hardware, software, o como una combinación de ambos.
**********

b) Participa en proyectos de investigación, innovación, o desarrollo, mediante la experimentación y el análisis e interpretación de datos y resultados, en el área de informática.
Media
Aplicar sus conocimientos en la definición de un modelo de ingeniería de software, identificando las características de cada una de ellos y los resultados correspondientes.
c) Identifica las necesidades de sistemas informáticos que permitan automatizar procesos y tareas, para personas naturales o jurídicas.
Alta
Reconocer los requerimientos de ingeniería de software que permita diseñar un sistema basado en necesidades personales o institucionales.
d) Desarrolla sistemas de procesamiento y transmisión de información y de automatización, seleccionando el método de ingeniería y las herramientas más adecuadas de acuerdo a cada caso.
Baja
Organizar los datos e información relacionados a un proyecto de software seleccionado.
e) Manejar adecuadamente las herramientas informáticas de última generación, para el almacenamiento, procesamiento, y transmisión de datos e información.
Media
Emplear acertadamente software pertinente para presentar informes y emitir resultados.
f) Integra grupos de trabajo profesional y multidisciplinario en la solución de problemas relacionados a su competencia.
Media
Conformar grupos para elaborar trabajos y desarrollar proyectos de ingeniería informática. 
g) Demostrar comportamiento ético en su trabajo, así como conocimientos de la legislación relacionada al campo de profesión.
Media
Identificar las normas que rigen en una institución y en el desarrollo de un proyecto de ingeniería de software.
h) Comunicar efectivamente, de forma oral, escrita o digital, información sobre su trabajo, en idioma español o en un idioma extranjero.
Media
Representar acertadamente resultados de los proyectos desarrollados.
i) Participa en actividades de capacitación, así como cursos de formación continua que le sirvan de actualización profesional.
**********
***************************
j) Identificar los aspectos actuales de su entorno, no solo de su profesión sino también en los campos social, cultural, y económico.
Baja
Reconocer los recursos del medio circundante para  aplicarlos en su futura profesión.
k) Transmite los conocimientos y experiencias profesionales, mediante la enseñanza en capacitación, cursos de formación, y en todo el proceso educativo.
*********
***************************


10.          FORMA DE EVALUACIÓN DEL CURSO:

PARÁMETROS DE EVALUACIÓN 
TEMÁTICA
NÚMERO DE INSTRUMENTOS DE EVALUACIÓN
Exposiciones u otros.
1, 2 ,3
3
Trabajos en Grupo
1, 2
2
Trabajo de Investigación
2, 3
1
Lecciones Escritas
1, 2
2
Examen Final
1, 2, 3
1


11.          RESPONSABLE DE LA ELABORACIÓN DEL SÍLABO Y FECHA DE PRESENTACIÓN Y REVISIÓN:

Docente:
Ing. Hiraida Santana.
Coordinador de Año:
Lic. Guillermo Intriago
Auditor/a (Par  Académico):


Fecha:
Abril del 2015.
Fecha:
Abril del 2015.
Fecha:
Firma:

Firma:
Firma: