viernes, 22 de mayo de 2009

Asignaciones del Segundo Corte



ACTIVIDADES DEL SEGUNDO CORTE LAPSO 2010-1:





Realice un Informe en pareja sobre los distintos Enfoques o Paradigmas en el desarrollo de Software. Enviar via email como archivo adjunto. Se evaluará presentación, redacción, y calidad de contenido. Fecha de Entrega: 26-06-10. Ponderación 10%
Rubrica de Evaluación

Realize una Exposición (utilice Power Point u OpenOffice) en equipos conformados por tres personas sobre Metodologías de Desarrollo de Software. Cada grupo debe escoger el Tópico de su preferencia, por lo que deben pasar por el Dpto. de Sistemas. La fecha de exposición será el día jueves 08-07-10 en el SAIA a las 07:00 a.m. Ponderación 20%. Se agradece puntual asistencia y desde hoy pedir permiso en el trabajo.

UNIDAD II: Modelos de Proceso. Desarrollo de Software

Existe una gran variedad de modelos de procesos que podemos clasificar en función del en foque o paradigma utilizado por el modelo.

El enfoque de ingeniería

El modelo de cascada (Waterfall Model)
El modelo V
El modelo de sala de laboratorio (Cleanroom Model)

El enfoque evolutivo

Modelos basados en prototipos
El modelo de espiral (Spiral Model)
El modelo “diente de serrucho” ( Sawtooth Model)
El modelo “diente de tiburón” (Shark Tooth Model)
Modelos de desarrollo incremental
Modelo de desarrollo por versiones
El modelo de Microsoft (The Synchronize and Stabilize Model)

El enfoque formal

El modelo de transformaciones formales

El enfoque orientado a objetos

El método Booch
El modelo de desarrollo unificado RUP: Rational Unified Process Model
El enfoque de procesos ágiles
Programación extrema

El enfoque de reutilización de software

Modelos de desarrollo de software con reutilización
Modelos de desarrollo de software para reutilización
Modelo de proceso de dos fases o modelo TWIN

UNIDAD II: Paradigmas en el Desarrollo del Software

Los paradigmas son procedimientos computacionales que utilizamos para dar solución a algún problema. Hay muchas clases de paradigmas se encuentran los demostrativos, declarativos, imperativo, funcionales y orientados a objetos. Un paradigma de programación es una colección de modelos conceptuales que juntos modelan el proceso de diseño y determinan, al final, la estructura de un programa.

Paradigmas Demostrativos: En este tipo de paradigmas el programador verifica cual es el problema y en lugar de resolverlo aporta al cliente diferentes ejemplos de soluciones a problemas similares.

Paradigmas imperativos: Este paradigma se lleva a cabo mediante un almacenamiento de información en una computadora para después donde la computadora almacena la representación codificada de un cálculo y realiza una secuencia de comandos que van modificando el contenido almacenado dándole forma de un programa. (Algoritmos mas una estructura de datos dan como resultado un programa).

Paradigma Funcional: tiene como objeto imitar las funciones matemáticas lo mas posible. Un lenguaje funcional posee la propiedad matemática de transparencia referencial, lo que significa que una expresión representa siempre el mismo valor. Esto permite razonar sobre la ejecución de un programa y demostrar matemáticamente que es correcto. Las variables de un lenguaje funcional son como las variables en algebra. Inicialmente representan un valor desconocido que, una vez calculado, ya no cambia.

Paradigmas Orientados a Objetos: La Orientación a Objetos se basa en estas ideas: un programa es un mundo que representa un subconjunto del mundo real. La estructura del programa se simplifica en gran medida si cada una de las entidades u objetos del problema que se está modelando corresponde directamente con un objeto que se puede manipular internamente en un programa. Para el desarrollo de sistemas, la orientación a objetos es un nivel de abstracción de computadora más allá de los procedimientos y los datos. La orientación a objetos anima al desarrollador de sistemas a concentrarse en los temas importantes e ignorar el resto a la hora de la modelación. La orientación a objetos quiere decir algo familiar en el cual se considera la mundo como un conjunto de objetos que se relacionan y comunican entre ellos.
Esta es la forma en que la gente normal ve el mundo, así es que este pensamiento tiene intrínsecamente sentido.

Paradigmas Programación Orientada a Componentes (POC): La Programación Orientada a Objetos (POO) ha sido el sustento de la ingeniería del software para los sistemas cerrados. Sin embargo, se ha mostrado insuficiente al tratar de aplicar sus técnicas para el desarrollo de aplicaciones en entornos abiertos. En particular, se ha observado que no permite expresar claramente la distinción entre los aspectos computacionales y meramente composicionales de la aplicación, y que hace prevalecer la visión de objeto sobre la de componente, estos últimos como unidades de composición independientes de las aplicaciones. Asimismo, tampoco tiene en cuenta los factores de mercadotecnia necesarios en un mundo real, como la distribución, adquisición e incorporación de componentes a los sistemas.A partir de estas ideas nace la programación orientada a componentes (POC) como una extensión natural de la orientación a objetos para los entornos abiertos [Nierstrasz, 1995][Szyperski y Pfister, 1997]. Este paradigma propugna el desarrollo y utilización de componentes reutilizables dentro de lo que sería un mercado global de software.

UNIDAD II: El Proceso de Desarrollo de Software

Los ingenieros resuelven problemas mediante la aplicación del Modelo de Procesos de la Ingeniería.

La Ingeniería de Software emplea procesos de desarrollo fundamentados en este modelo. Sin embargo, estos procesos deben ser adaptados para adecuarse a las propiedades particulares del software.
En Ingeniería de Software, el proceso de desarrollo se realiza bajo la modalidad de proyecto.
Un proyecto tiene un conjunto de objetivos que deben ser alcanzados dentro de restricciones tales como:
-->El presupuesto asignado al proyecto
-->El tiempo esperado de desarrollo del producto y
-->La disponibilidad de recursos humanos para desarrollarlo.

Existen tres elementos fundamentales para la realización de un proyecto



Procesos: Actividades, fases, pasos, tareas
Productos: Administrativos, técnicos, de entrega (deliverables)
Recursos: Humanos, financieros, tiempo, materiales, H/S, etc.


Estos elementos determinan los tres componentes fundamentales de un método:

El Modelo del Proceso

El Modelo del Producto

El modelo del equipo de desarrollo



Modelo del proceso:
Representación gráfica de las fases, pasos, actividades o tareas que el método propone para desarrollar software
Modelo del producto:
Descripción genérica de los productos administrativos, técnicos y de entrega que produce el método
Modelo del grupo de desarrollo
Describe la estructura y los roles del personal que participa en el proyecto de desarrollo


En particular, el principal interés de la materia estará centrado en el Modelo de procesos:


Un modelo de proceso describe que se hace en cada una de las etapas del ciclo de vida. Es una representación de las actividades requeridas para llevar a cabo una etapa del ciclo de vida


El ciclo de vida del software (software life cycle) muestra la evolución del software a través de un ciclo de cuatro etapas.


Ciclo de Vida

UNIDAD II: Fases del modelado de sistemas

  • El trabajo asociado a la ingeniería del Software puede dividirse en tres fases fundamentales, independientemente del área de aplicación:

  • FASE DE DEFINICIÓN
  • FASE DE DESARROLLO
  • FASE DE MANTENIMIENTO


    Fase de definición

Qué información ha de ser procesada,
Qué función y rendimiento se desea
Qué comportamiento del sistema
Qué interfaces van a ser establecidas
Qué restricciones de diseño existen
Qué criterios de validación se necesitan para definir

Dependiendo del paradigma o modelo se definen un conjunto específico de actividades, pero las tareas principales serán: ingeniería de sistema o de información, planificación del proyecto del software, y análisis de los requisitos.

Fase de desarrollo


Cómo han de diseñarse las estructuras de datos,
· Cómo ha de implementarse la función como una arquitectura del software
· Cómo han de caracterizarse las interfaces
· Cómo ha de traducirse el diseño en un lenguaje de programación
· Cómo ha de realizarse la prueba

Las tareas principales serán: diseño del software, generación de código y prueba del software.

Fase de Mantenimiento

Fase centrada en el cambio que va asociado a la corrección de errores, a las adaptaciones requeridas a medida que evoluciona el entorno del software, y a cambios producidos por los requisitos cambiantes del software.

Cuatro tipos de cambio:
Corrección, Adaptación (Cambio de sistema Operativo, reglas de la empresa,etc.), Mejora, Prevención (reingeniería).

Actividades a realizar:
Gestión de riesgos, revisiones técnicas formales, mediciones, garantia de calidad del software, seguimiento y gestion del proyecto de software, gestión de reutilización.


Unidad II.- El Proceso de Desarrollo. Modelos.

Objetivo Terminal

Comprender los aspectos fundamentales para el desarrollo de software, el conjunto de etapas que describen el proceso de desarrollo de software desde su nacimiento hasta su reemplazo o eliminación así como las diferentes metodologías.

Introducción

Los seres humanos se han convertido en la especie más influyente de este planeta, debido a su capacidad para abstraer el pensamiento. Los sistemas complejos, sean naturales o artificiales, sólo pueden ser comprendidos y gestionados cuando se omiten detalles que son irrelevantes a nuestras necesidades inmediatas. El proceso de excluir detalles no deseados o no significativos, al problema que se trata de resolver, se denomina abstracción, y es algo que se hace en cualquier momento.

Cualquier sistema de complejidad suficiente se puede visualizar en diversos niveles de abstracción dependiendo del propósito del problema. Si nuestra intención es conseguir una visión general del proceso, las características del proceso presente en nuestra abstracción constará principalmente de generalizaciones. Sin embargo, si se trata de modificar partes de un sistema, se necesitará examinar esas partes con gran nivel de detalle. La existencia de diferentes niveles de abstracción conduce a la idea de una metodología.

Las soluciones a problemas triviales y no triviales tienen una metodología.
Existen múltiples tendencias, filosofías, metodologías, herramientas y demás aspectos que pretenden ofrecer una guía para el desarrollo de proyectos de software, sin embargo cada uno se puede o no aplicar dependiendo del contexto del proyecto, la empresa y en definitiva del nivel de abstracción que se haga del proceso.

Es por ello que es imprescindible conocer y manejar los conceptos asociados con las metodologías efectivas y productivas para el desarrollo de un proyecto de software. La selección de un modelo o paradigma específico dependiendo de la naturaleza del proyecto y/o aplicación, los métodos, las herramientas a utilizar, los controles y entregas que se requieren
Los paradigmas o modelos de desarrollo de Software son estrategias de desarrollo para organizar las diversas etapas y actividades del ciclo de vida del software. Describe las transiciones entre las etapas, especificando qué actividades desarrollar en cada momento.




  • Definiciones

  • CICLO DE VIDA: Conjunto de etapas que se han de llevar a cabo para crear, explotar y mantener un Sistema Informático.
  • METODOS: Son las normativas que marcan las directrices que se han de seguir para llevar a cabo una tarea. Responde a la pregunta QUÉ.
  • TECNICAS: Es un modo de representación para la solución de un problema concreto. Responde a la pregunta CÓMO.
  • METODOLOGIA: Es un conjunto coherente de métodos y técnicas que cubren más de una etapa del ciclo de vida.
  • HERRAMIENTAS: Proporcionan un soporte automático o semi-automático para el proceso y para los métodos.
  • CICLO DE VIDA DEL SOFTWARE Marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de los requisitos hasta la finalización de su uso. Norma ISO 12207-1

martes, 5 de mayo de 2009

Asignaciones del Primer Corte

Las actividades del primer corte corresponden a los topicos de la UNIDAD I

Asignaciones :

Elaborar un ensayo, de no más de tres páginas, de tema "Ingenieria del software, evolución e importancia". Ponderación 10%. Fecha Tope de Entrega: Sabado 8 de Mayo . Enviar al correo saia.ingsoftware@gmail.com

Las características generales y básicas, para desarrollar un sistema o producto de software son: Confiabilidad, Flexibilidad, Eficiencia, Utilidad, Comprensibilidad y Bajo Costo. Investigar y definir cada una de estas características

Clase Presencial, discusión y taller sobre el ensayo y los puntos anteriores el día jueves 06 de Mayo 07:00 a.m. Ponderación 10%

Evaluación Presencial para el día Jueves 20 de Mayo. Hora: 07:00 a.m. Lugar. Laboratorio del SAIA. Ponderación 10%