tarea 1 analisis

49
Trabajo Investigativo 01 Análisis de sistemas Presenta David Camilo Sánchez Mora Camilo Andrés Frontado Héctor Felipe Hurtado Acosta Yojhan Rodriguez Docente Juan Carlos Guevara B. Universidad Distrital Francisco José de Caldas

Upload: david-sanchez-mora

Post on 11-Jan-2016

38 views

Category:

Documents


0 download

DESCRIPTION

Tarea analisis

TRANSCRIPT

Trabajo Investigativo 01

Análisis de sistemas

Presenta

David Camilo Sánchez Mora

Camilo Andrés Frontado

Héctor Felipe Hurtado Acosta

Yojhan Rodriguez

Docente

Juan Carlos Guevara B.

Universidad Distrital Francisco José de Caldas

Sistematización de datos

Facultad tecnológica

Bogotá D.C Colombia Agosto 22 de agosto de 2015

Contenido

2. Introducción……………………………………………………………………….3

3. Evolución del software…………………………………………………………...4

4. Ciclo de vida del software…………………………………………………….....7

4.1. Descripción del ISO/IEC 12207-1…………………………………………...13

4.2. Descripción del ISO/IEC 15504-2…………………………………………,..16

4.3. Descripción del IEEE STD 1074……………………………………………17

5. Conceptos………………………………………………………………………..18

5.1. Ciclo de vida del software…………………………………………………....18

5.2. Proceso de desarrollo de software………………………………………….18

5.3. Metodología de desarrollo de software……………………………………..19

5.4. Proyecto de software………………………………………………………….19

6. Proceso de desarrollo de software…………………………………………….19

6.1. Nombre…………………………………………………………………………19

6.2. Características………………………………………………………………....20

6.3. Etapas…………………………………………………………………………..21

6.4. Ejemplo explicativo…………………………………………………………….22

7. Metodología de desarrollo de software 01…………………………………….23

7.1. Nombre………………………………………………………………………….23

7.2. Características………………………………………………………………….23

7.3. Etapas…………………………………………………………………………...24

7.4. Diagramas utilizados en cada etapa…………………………………………25

7.5. Ejemplo explicativo…………………………………………………………….27

8. Metodología de desarrollo de software 02……………………………………34

8.1. Nombre…………………………………………………………………………34

8.2. Características…………………………………………………………………34

8.3. Etapas…………………………………………………………………………..35

8.4. Diagramas utilizados en cada etapa………………………………………...36

8.5. Ejemplo explicativo…………………………………………………………….37

9. Conclusiones……………………………………………………………………...38

10. Bibliografía……………………………………………………………………….39

2. Introducción

En el presente escrito se busca explicar la evolución del software con cada una

de sus etapas, el proceso del ciclo de vida del software, sus estándares, su

importancia y los principales modelos para el desarrollo de software. Además

se busca explicar el proceso y etapas del desarrollo de software, y junto a esto,

explicar dos metodologías de desarrollo de software la primera orientada a

proyectos grandes y estructurados y la segunda a proyectos agiles y novedosa

metodologías de trabajo. .

3. Evolución del Software

Como bien se sabe, el software son los programas informáticos que hacen que sea posible la realización de determinadas tareas, como por ejemplo programas como Word, Excel, Power Point, etc. Sin embargo, el software no ha sido siempre tan efectivo, eficaz y accesible como lo es actualmente. La evolución del software está fuertemente marcado por cinco décadas de desarrollo que se han caracterizado por grandes avances tecnológicos y mejoras que han hecho que sea posible conocer el software como hoy en día lo conocemos. A continuación se exponen los cuatro importantes periodos en la evolución del software.

Primera etapa (1950-1965)

La primera era del software se dio durante el período entre 1950 y 1965. En estos años la tecnología era muy limitada y la programación, además de que no tenía una amplia gama de métodos para su desarrollo, era muy complicada porque los programas se desarrollaban con base a elementos electrónicos, haciéndola un proceso manual.

Para hacer posible su uso, se desarrollaron tarjetas perforadas que fueron las delegadas de guardar las instrucciones que un programador escogía. Estas tarjetas se introducían en los grandes computadores de la época, que eran equipos que podían llegar a ocupar una habitación entera y que su procesamiento además de ser en serie podía durar horas. La programación se basaba en el método de prueba y error que hacían del desarrollo de software una tarea ardua ya que sin una debida planificación, hacían que la creación de un programa tomara demasiado tiempo. En esta época, la evolución de la tecnología se enfocaba en el hardware, sí lo miramos desde una perspectiva de costos solo las grandes empresas podían permitirse de estos centros de cómputo provocando que el acceso para el público en general era casi imposible.

Una de las principales características del software durante esta primer etapa es que era personalizado y solo se podía usar en donde este fue desarrollado ya que estas grandes maquinas se regían bajo un sistema operativo que era personalizado para cada equipo. Esto a su vez complicaba la tarea de los primeros programadores ya que tenían que conocer los distintos métodos únicos por cada máquina para poder hacer la relación entre hardware y software. Esto hacia provocaba que en otras palabras los software de la época no podían ser transferidos entre distintas maquinas.

Segunda etapa (1965-1975)

La segunda era en el desarrollo del software comenzó en 1965 y se extendió hasta 1975, en esta época el desarrollo del software aún era muy limitado, sin embargo, un cambio importante que se dio es que se optimizó la interacción entre el usuario y la máquina. El hardware a su vez empezó a ser cada vez más pequeño y de a poco más accesible. También las tarjetas perforadas cumplieron su ciclo pero la programación aún seguía siendo de bajo nivel, es decir que sus instrucciones ejercen control directo al hardware. Comienzan aparecer los sistemas multiprogramación, que sustituían los sistemas lineales de procesamiento de la era anterior.

Estos sistemas multiprogramación se comprendían de varios procesadores que cumplían varias tareas de un mismo programa, por eso también se les llaman sistemas multitarea. Además se comenzaron a desarrollar grandes avances en los dispositivos de almacenamiento que condujeron a las primeras generaciones de lo que después se le conocería como bases de datos.

La principal característica de la evolución del software en esta era fue que los programas empezaron a verse como productos, que ya se vendían a las personas que tuvieran los equipos de cómputo que soportaran el software, es decir a las personas o empresas que tuvieran el mismo sistema operativo. Otro gran fenómeno que se dio en esta época fue la aparición del mantenimiento del software porque la naturaleza personalizada de estos programas provocaba que se tuvieran que adaptar constantemente según nuevas necesidades.

Tercera etapa (1975 – 1989)

La tercera era en el desarrollo de software comenzó en 1975 y finalizó en 1990, este periodo es el de más avance y desarrollo del software en la cual se destaca primeramente el desarrollo de microprocesadores que facilitaron el

alcance que estos tenían haciéndolo posible para el público en general. Sin embargo, más importante que los microprocesadores es la liberación de una nueva tecnología militar conocida como ARPANET que más tarde será conocida como INTERNET. Esta liberación parcial de nuevas tecnologías se debe al fin de la guerra fría y de la caída del muro de Berlín. Estas dos grandes tecnologías hicieron posible la mejora de la comunicación que ya era un aspecto completamente necesario en el caso de ARPANET y la reducción de costos y maquinas aún más pequeñas en el caso de los microprocesadores. Debido a esto, nuevos paradigmas surgieron, y se empezaron a manipular estas nuevas pequeñas redes locales y posteriormente globales que manejaban terminales brutas conectadas a un servidor, cuyo objetivo principal era el acceso a la información lo más pronto posible.

En la programación se comienza a ver la tecnología orientada a objetos, que aprovechaba las características de los lenguajes de programación estructurados. Para hacer esto posible, estos nuevos programas debían tener dos principales particularidades; la primera, el programa debía tener una entrada y una salida, y la segunda, no debían tener bucles o instrucciones de código sin ejecutarse. En esta época también como característica importante es que se empieza a realizar la planificación en el proceso del desarrollo del software a lo cual se le conoce como ingeniería del software como solución a la crisis del software de las décadas pasadas. La ingeniería del software se define como el área de la ingeniería que ofrece métodos y técnicas para desarrollar y mantener software de calidad la cuál trata con áreas muy diversas de la informática y las ciencias de la computación, tales como las construcción de computadores y sistemas operativos, así como desarrollos intranet o internet.

A su vez las primeras generaciones de gestores de control de información conocidos como bases de datos empiezan a surgir debido a gran importancia que la información adquiere en esta época.

Cuarta etapa (1990 – Actualidad)

ARPANET siguió en un continuo desarrollo hasta como actualmente lo conocemos como Internet y es prácticamente una herramienta esencial en la sociedad hoy en día. Aparecen páginas y portales web con múltiples funciones para realizar diversas tareas, además del almacenamiento de la información y la generación de conocimiento. Aparecen los diferentes protocolos de Internet. Con el avance de las tecnologías, la computadora al fin se vuelve personal y evoluciona para estar en cada casa, luego se vuelve portable y los aparatos pequeños como los teléfonos celulares comienzan a desarrollar un software que asimile el comportamiento de un ordenador. En el comienzo de la segunda décadas del siglo actual, los teléfonos celulares inteligentes conocidos como smarthphones se convierten en una alternativa muy importante, y el software cumple un lugar esencial ya que se empieza dirigir a nuevos consumidores por medio del desarrollo de apps y sistemas operativos para móviles. Diferentes teorías como cliente/servidor y sistemas distribuidos comienzan a tomar

importancia y se adopta totalmente las prácticas de ingeniera de software como requisito básico a la hora del desarrollo de este.

4. Ciclo de Vida del Software

El ciclo de vida del software es un proceso en el cual se definen las fases, actividades y tareas que serán necesarias para un buen desarrollo, explotación y mantenimiento de un producto de software. Abarca la vida del sistema desde la definición de los requisitos hasta la finalización de su uso. El propósito es definir las distintas fases que se requieren para validar el desarrollo del producto.

Existen dos procesos principales en el ciclo de vida de un software los cuales se denominan proceso de adquisición y proceso de suministro. Dentro de estos se encuentran procesos específicos en los cuales se define un conjunto de actividades según su naturaleza.

1. Proceso de desarrollo I

Análisis de requisitos del sistema Diseño de la arquitectura del sistema Análisis de los requisitos del software Diseño de la arquitectura del software Diseño detallado del software Codificación y pruebas del software

2. Proceso de desarrollo ll Integración del software

Pruebas del software Integración del sistema Prueba del sistema Instalación del software Soporte del proceso de aceptación del software

3. Proceso de explotación4. Proceso de mantenimiento5. Proceso de documentación6. Proceso de gestión de configuración7. Proceso de aseguramiento de calidad8. Proceso de verificación9. Proceso de validación10.Proceso de revisión conjunta11.Proceso de auditoria12.Proceso de resolución de problemas13.Proceso de gestión 14.Proceso de infraestructura15.Proceso de mejora16.Proceso de formación

Las tareas de estos diferentes procesos que conforman el ciclo de vida del software pueden ser vistas desde un modelo de ciclo de vida del software.

DEFINICION DE UN MODELO DE CICLO DE VIDA

Un modelo de ciclo de vida de software es una vista de las actividades que ocurren durante el desarrollo de software, intenta determinar el orden de las etapas involucradas y los criterios de transición asociadas entre estas etapas.

Un modelo de ciclo de vida del software:

• Describe las fases principales de desarrollo de software.

• Define las fases primarias esperadas de ser ejecutadas durante esas fases.

• Ayuda a administrar el progreso del desarrollo, y

• Provee un espacio de trabajo para la definición de un detallado proceso de desarrollo de software.

Así, los modelos por una parte suministran una guía para los ingenieros de software con el fin de ordenar las diversas actividades técnicas en el proyecto,

por otra parte suministran un marco para la administración del desarrollo y el mantenimiento, en el sentido en que permiten estimar recursos, definir puntos de control intermedios, monitorear el avance.

Un modelo de ciclo de vida tiene diversas clasificaciones dependiendo el tipo y la complejidad de proyecto se escoge el modelo más apropiado.

Modelo Cascada

Este es el más básico de todos los modelos, y sirve como bloque de construcción para los demás modelos de ciclo de vida. La visión del modelo cascada del desarrollo de software es muy simple; dice que el desarrollo de software puede ser a través de una secuencia simple de fases. Cada fase tiene un conjunto de metas bien definidas, y las actividades dentro de una fase contribuyen a la satisfacción de metas de esa fase o quizás a una subsecuencia de metas de la fase. Las flechas muestran el flujo de información entre las fases. La flecha de avance muestra el flujo normal. Las flechas hacia atrás representan la retroalimentación.

El modelo de ciclo de vida cascada, captura algunos principios básicos:

• Planear un proyecto antes de embarcarse en él.

• Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura interna.

• Documentar los resultados de cada actividad.

• Diseñar un sistema antes de codificarlo.

• Testear un sistema después de construirlo.

Una de las contribuciones más importantes del modelo cascada es para los administradores, posibilitándoles avanzar en el desarrollo, aunque en una escala muy bruta.

Modelo De Desarrollo Incremental

Los riesgos asociados con el desarrollo de sistemas largos y complejos son enormes. Una forma de reducir los riesgos es construir sólo una parte del sistema, reservando otros aspectos para niveles posteriores. El desarrollo incremental es el proceso de construcción siempre incrementando subconjuntos de requerimientos del sistema. Típicamente, un documento de requerimientos es escrito al capturar todos los requerimientos para el sistema completo.

Note que el desarrollo incremental es 100% compatible con el modelo cascada. El desarrollo incremental no demanda una forma específica de observar el desarrollo de algún otro incremento.

Modelo De Desarrollo Evolutivo

Mientras que la aproximación incremental presupone que el conjunto completo de requerimientos es conocido al comenzar, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto.

En el modelo evolutivo, los requerimientos son cuidadosamente examinados, y sólo esos que son bien comprendidos son seleccionados para el primer incremento. Los desarrolladores construyen una implementación parcial del sistema que recibe sólo estos requerimientos.

El sistema es entonces desarrollado, los usuarios lo usan, y proveen retroalimentación a los desarrolladores. Basada en esta retroalimentación, la especificación de requerimientos es actualizada, y una segunda versión del producto es desarrollada y desplegada. El proceso se repite indefinidamente.

Modelo Espiral

El modelo espiral de los procesos software es un modelo del ciclo de meta-vida. En este modelo, el esfuerzo de desarrollo es iterativo. Tan pronto como uno completa un esfuerzo de desarrollo, otro comienza. Además, en cada desarrollo ejecutado, puedes seguir estos cuatros pasos:

Determinar qué quieres lograr.

Determinar las rutas alternativas que puedes tomar para lograr estas metas. Por cada una, analizar los riesgos y resultados finales, y seleccionar la mejor.

Seguir la alternativa seleccionada en el paso 2. Establecer qué tienes terminado

Modelo de desarrollo Concurrente

La mayoría de los modelos de procesos de desarrollo del software son dirigidos por el tiempo; cuanto más tarde sea, más atrás se encontrará en el proceso de desarrollo.

Un modelo de proceso concurrente está dirigido por las necesidades del usuario, las decisiones de la gestión y los resultados de las revisiones. El modelo de proceso concurrente se utiliza a menudo como el paradigma de desarrollo de aplicaciones cliente/ servidor". Un sistema cliente/servidor se compone de un conjunto de componentes funcionales. Cuando se aplica a cliente/servidor, el modelo de proceso concurrente define actividades en dos dimensiones:Una dimensión de sistemas y una dimensión de componentes. Los aspectos del nivel de sistemas se afrontan mediante tres actividades: diseño, ensamblaje y uso.

En realidad, el modelo de proceso concurrente es aplicable a todo tipo de desarrollo de software y proporciona una imagen exacta del estado actual de un proyecto.

4.1 DESCRIPCIÒN DE ISO/IEC 12207-1

El ISO/IEC 12207 es el estándar para los procesos de ciclo de vida del software de la organización ISO.

Este estándar se concibió para aquellos interesados en adquisición de software, así como desarrolladores y proveedores. El estándar indica una serie de procesos desde la recopilación de requisitos hasta la culminación del software.

El estándar comprende 17 procesos lo cuales son agrupados en tres categorías:

Principales de apoyo de organización

Este estándar agrupa las actividades que se pueden llevar a cabo durante el ciclo de vida del software en cinco procesos principales, ocho procesos de apoyo y cuatro procesos organizativos. Cada proceso del ciclo de vida está

divido en un conjunto de actividades; cada actividad se sub -divide a su vez en un conjunto de tareas.

Proceso de Adquisición: Define las actividades del adquiriente, es decir, la organización que adquiere un sistema, producto software o servicio software.

El proceso contiene las actividades y tareas del adquiriente. El proceso comienza con la identificación de adquirir un producto software. El proceso continúa con la preparación y publicación de propuestas, la selección de un proveedor y la gestación del proceso de adquisición hasta la aceptación del producto software

Este proceso consiste de las siguientes actividades:

a. Iniciob. Preparación de la solicitud de propuestasc. Preparación y actualización del contratod. Seguimiento del proveedore. Aceptación y finalización.

Proceso de Suministro: Se relaciona con las actividades del proveedor, organización que proporciona sistema, producto o servicio software al adquiriente.El proceso de suministro contiene las actividades y tareas del proveedor. El proceso se puede iniciar ya sea por la decisión de preparar una oferta para contestar a una solicitud de propuestas de un adquiriente, o por la firma e inicio de un contrato con el adquiriente para proporcionarle un sistema, producto software o servicio software. El proceso continúa con la determinación de los procedimientos y recursos necesarios para gestionar y asegurar el proyecto, incluyendo la preparación y ejecución de los planes del proyecto hasta la entrega al adquiriente del sistema, producto o servicio software.

Este proceso consta de las siguientes actividades:

a. Iniciob. Preparación de la respuestac. Contratod. Planificacióne. Ejecución y control

f. Revisión y Evaluacióng. Entrega y finalización

Proceso de Desarrollo: Define las actividades que tiene que llevar a cabo el desarrollador, organización que define y desarrolla el producto software.El proceso de desarrollo contiene las actividades y tareas del desarrollador. El proceso contiene las actividades para el análisis de los requerimientos, diseño, codificación, integración, pruebas e instalación y aceptación relacionadas con los productos software. Puede contener

actividades a nivel de sistema si se estipula en el contrato. El desarrollador lleva a cabo o soporta las actividades de este proceso de acuerdo con el contrato.

Este proceso consta de las siguientes actividades

a. Implementación del procesob. Análisis de los requerimientos del sistemac. Diseño de la arquitectura del sistemad. Análisis de los requerimientos softwaree. Diseño de la arquitectura del softwaref. Diseño detallado del softwareg. Codificación y pruebas del software

h. Integración del softwarei. Pruebas de calificación del softwarej. Integración del sistemak. Pruebas de calificación del sistemal. Instalación del softwarem. Apoyo a la aceptación del software

Proceso de Operación: Define las actividades del operador, organización que proporciona el servicio, organización que proporciona el servicio de operar un sistema informático en su entorno real.

Este proceso contiene las tareas del operador. El proceso cubre la operación del producto software y el apoyo a la operación de los usuarios. Se deben considerar tanto la operación del producto software integrada a la operación del sistema.

El operado hace uso de otros procesos a nivel de proyecto para llevar a cabo su función:

- El proceso de gestión- Proceso de infraestructuraA nivel de organización emplea los siguientes:

- El proceso de mejora de procesos- Y proceso de recursos humanosEste proceso consta de las siguientes actividades:

a. Implementación del procesob. Pruebas de operaciónc. Operación del sistema

d. Soporte de Usuario

Proceso de Mantenimiento: Define las actividades del responsable de mantenimiento o la organización que se encarga de esta función; es decir, la gestión de las modificaciones al producto para mantenerlo actualizado y operativo.

El proceso de mantenimiento contiene las actividades y tareas del responsable de mantenimiento. Este proceso se inicia cuando el producto software sufre modificaciones en el código y la documentación asociada, debido a un problema o a la necesidad de mejora o adaptación. El objetivo es modificar el producto software existente preservando su integridad. Este proceso incluye la migración y retirada del producto software. El proceso termina con la retirada del producto software.

El operado hace uso de otros procesos a nivel de proyecto para llevar a cabo su función:

- El proceso de gestión- Proceso de infraestructuraA nivel de organización emplea los siguientes:

- el proceso de mejora de procesos- y proceso de recursos humanosEste proceso consta de las siguientes actividades:

a. Implementación del procesob. Análisis de problemas y modificacionesc. Implementación de las modificacionesd. Revisión/aceptación del mantenimientoe. Migraciónf. Retirada del software

4.2 DESCRIPCION DEL ISO/IEC 15504-2

ISO / IEC 15504-2: 2003 define los requisitos para la realización de la evaluación de proceso como base para su uso en la mejora del proceso y determinación de la capacidad.

Evaluación de proceso se basa en un modelo de dos dimensiones que contiene una dimensión de proceso y una dimensión de capacidad. La dimensión de proceso es proporcionada por un modelo de referencia de proceso externo, que define un conjunto de procesos que se caracterizan por las declaraciones de los resultados de uso de procesos y procesos. La dimensión de la capacidad consiste en un marco de medición que comprende seis niveles de capacidad del proceso y sus atributos de proceso asociados.

La salida de la evaluación consiste en un conjunto de calificaciones de atributos proceso para cada proceso de evaluación, denominado el perfil de proceso, y también puede incluir el nivel de capacidad alcanzado por ese proceso.

ISO / IEC 15504-2: 2003 identifica el marco de medición de la capacidad del proceso y los requisitos para:

a realización de una evaluación;

Modelos de referencia proceso;

Modelos de evaluación de proceso;

La verificación de la conformidad de la evaluación del proceso.

Los requisitos para la evaluación de procesos definidos en la norma ISO / IEC 15504-2: 2003 forma una estructura que:

Facilita la autoevaluación;

Proporciona una base para su uso en la mejora de procesos y la determinación de la capacidad;

Tiene en cuenta el contexto en el que se implementa el proceso de evaluar;

Produce una calificación de proceso;

Aborda la capacidad del proceso para lograr su propósito;

Es aplicable en todos los dominios de aplicación y tamaños de organización; y

Puede proporcionar un punto de referencia objetiva entre organizaciones.

El conjunto mínimo de requisitos definidos en la norma ISO / IEC 15504-2: 2003 garantiza que los resultados de la evaluación son objetiva, imparcial, consistente, repetible y representante de los procesos evaluados

4.3 DESCRIPCION DEL IEEE STD 1074

IEEE STD 1074. Esta norma define el conjunto de actividades que constituyen los procesos que son obligatorios para el desarrollo y mantenimiento de software. Los procesos de gestión y de apoyo que continúan a lo largo de todo el ciclo de vida, así como todos los aspectos del ciclo de vida del software desde el concepto de exploración a través de la jubilación, están cubiertos. También se proporciona entrada asociada y la información de salida. Utilización de los procesos y sus actividades componentes maximiza los beneficios para el usuario cuando se inicia el uso de esta norma al principio del ciclo de vida del software. Esta norma requiere definición de ciclo de vida del software del usuario y muestra su mapeo en los ciclos de vida del software típicos. No se pretende definir o implica un ciclo de vida del software propio.

5. Conceptos

5.1 Ciclo de vida del software

El ciclo de vida del software define el estado de las fases en el desarrollo de software, desde la primera fase conocida como fase inicial hasta su finalización conocido como fase final y posteriormente hasta que es obsoleto. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados.

5.2 Proceso de desarrollo de software

El proceso de desarrollo de software es una estructura que es aplicada al desarrollo de software. Se puede dividir en varios modelos a seguir para establecer un proceso sistematizado para un eficiente desarrollo de este; esto significa que es el proceso que se sigue para la construcción, entrega y evolución del software, desde la concepción de una idea hasta la entrega y el retiro del sistema. Durante décadas se ha tratado de conseguir el objetivo de conseguir procesos reproducibles y predecibles que mejoren la productividad y la calidad del software. Algunas de estas soluciones pretenden sistematizar o formalizar la que es considerada frecuentemente desorganizada y ardua tarea del desarrollo de software. Tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas. Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos a cualquier otro proyecto de ingeniería, en el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido.

5.3 Metodología de desarrollo de software

La metodología de desarrollo de software es un marco de trabajo en el cual se impone un proceso disciplinado, estructurado y planificado sobre el desarrollo de software con el objetivo de poder hacer este aún mucho más predecible y eficiente. Esto se consigue a través de un proceso más detallado que el convencional en el cual su énfasis es en la planificación que generalmente es aplicado en otras ramas de la ingeniería.

Hoy en día existen numerosas propuestas metodológicas que inciden en distintas dimensiones del proceso de desarrollo. Un ejemplo de ellas son las propuestas tradicionales centradas específicamente en el control del proceso pero estas a través de la experiencia han mostrado no ser suficientemente eficientes porque en algunos casos no se conocen con exactitud los requisitos como pasa en proyectos volátiles.

Para enfrentar estos problemas surgen nuevas metodologías lo cual buscan el equilibrio entre ningún y demasiado proceso. Ejemplo de nuevas metodologías son el proceso unificado de desarrollo (RUP), programación extrema XP lo cual busca la satisfacción del cliente entre otras.

5.4 Proyecto de software

Un proyecto de software es una iniciativa que tiene como objetivo la realización y sistematización de un programa para computador o servidor web y en el cual participan factores como personal especializado, tiempo, recursos económicos y herramientas de desarrollo. Se realiza identificando los requerimientos del software a partir de las necesidades provenientes del cliente que se deben satisfacer. La definición cubre aspectos funcionales del proyecto y los atributos de calidad que debe tener en términos de desempeño, facilidad de uso, confiabilidad, seguridad, y facilidad de mantenerlo a lo largo del tiempo. Teniendo claro estos elementos, la definición se complementa con los modelos de arquitectura que puede garantizar el éxito de un proyecto de software desde el punto de vista técnico.

6. Proceso de desarrollo de software

6.1 Nombre

Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas. Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos a cualquier otro proyecto de ingeniería, en el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido.

El proceso de desarrollo de software no es único. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de software.

6.2 Características

Las características de un proceso de software se resumen a continuación:

Comprensión: Este requiere claridad y declaración de la naturaleza explicita de la definición del proceso.

Visibilidad: Se refiere a la capacidad de observar la salida de arias actividades del proceso, de manera que se mida el proceso del progreso.

Confiabilidad: Se refiere a la capacidad del proceso para evadir errores o detectar errores y manejarlos antes de que estos avancen en el producto.

Robustez: Se refiere a la capacidad del proceso de no detenerse a pesar de problemas inesperados.

Facilidad de mantenimiento: Se refiere a la cantidad de modificaciones que pueden hacerse al sistema de software sin introducir errores.

Facilidad de verificación: Un proceso es verificable si sus propiedades pueden ser fácilmente verificadas.

Rapidez: Se refiere a la agilidad y rapidez del proceso para ser capaz de entregar un producto final a partir de las especificaciones.

Facilidad de soporte: Se refiere a la posibilidad de que las actividades del proceso sean soportadas por un conjunto de herramientas automatizadas.

Facilidad de aceptación: Se refiere a la capacidad del proceso a ser aceptado y usado por el equipo de ingenieros.

Facilidad de adaptación: Se refiere a la capacidad del proceso a ser modificado para satisfacer las necesidades de cambio en el ambiente de desarrollo.

6.3 Etapas

Después de haber discutido las características del proceso de desarrollo de software, se presenta a continuación las diferentes fases del proceso de desarrollo de software.

Etapa de definición: esta fase se concentra principalmente en definir los requerimientos, actividades, materiales y costos del software.

Etapa de desarrollo: esta fase enfoca en el cumplimiento de los requerimientos del sistema diseño y construcción del software.

Etapa de mantenimiento esta etapa se enfoca en cambio, el mantenimiento incluye la corrección de errores y la adaptación, conforme evoluciona el entorno del software.

6.4 Ejemplo Explicativo:

Un proceso de software detallado y completo suele llamarse “Metodología”. Las metodologías se basan en una combinación de los modelos de proceso genéricos (cascada, evolutivo, incremental, en espiral, etc.). Adicionalmente una metodología debería definir con precisión los artefactos, roles y actividades involucrados, junto con prácticas y técnicas recomendadas, guías de adaptación de la metodología al proyecto, guías para uso de herramientas de apoyo, etc. Habitualmente se utiliza el término “método” para referirse a técnicas, notaciones y guías asociadas, que son aplicables a algunas actividades del proceso de desarrollo, por ejemplo, suele hablarse de métodos de análisis y/o diseño. La comparación y/o clasificación de metodologías no es una tarea sencilla debido a la diversidad de propuestas y diferencias en el grado de detalle, información disponible y alcance de cada una de ellas. A grandes rasgos, si tomamos como criterio las notaciones utilizadas para especificar artefactos producidos en actividades de análisis y diseño, podemos clasificar las metodologías en dos grupos: Metodologías Estructuradas y Metodologías Orientadas a Objetos. Por otra parte, considerando su filosofía de desarrollo, aquellas metodologías con mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado, reciben el apelativo de Metodologías Tradicionales (o peyorativamente denominada Metodologías Pesadas, o Peso Pesado). Otras metodologías, denominadas Metodologías Ágiles, están más orientadas a la generación de código con ciclos muy cortos de desarrollo, se dirigen a equipos de desarrollo pequeños, hacen especial hincapié en aspectos humanos asociados al trabajo en equipo e involucran activamente al cliente en el proceso. A continuación se revisan brevemente cada una de estas categorías de metodologías.

7. Metodología de desarrollo de Software 01

7.1 Nombre

La primera calificación que se le puede dar a las metodologías de desarrollo son los métodos estructurados. Estos se comenzaron a desarrollar a finales de los años setenta con la saliente programación estructurada y luego tiempo después a mediados de los años setenta aparecieron técnicas para el diseño como fue en primer caso los diagramas de estructura y consecutivamente para un correcto análisis, los diagramas de flujo de datos. Estas metodologías son particularmente apropiadas en proyectos que utilizan para la implementación lenguajes de tercera y cuarta generación.

A continuación se exponen los ejemplos más comunes de metodologías estructuradas de ámbito gubernamental:

- SSADM (Reino Unido) - MERISE (Francia)- MÉTRICA (España)

A su vez, ejemplos de propuestas de métodos estructurados en el ámbito académico:

- Yourdon & DeMarco- Gane & Sarson - Ward & Mellor- Information Engineering

7.2 Características

- Tiene como objetivo emplear las metodologías de análisis y diseño estructurado que logran incrementar la productividad en el desarrollo e implementación de sistemas de información.

- Crea los modelos de forma ascendente. Son las orientadas a procesos, a datos y a las mixtas.

- Utiliza varias herramientas como diagramas de flujo (DFD) en la cual representan la forma en que los datos se mueven y se transforman. A sus vez implementa lo que es conocido como diccionario de datos.

- Podemos encontrar que esta metodología se subdivide en metodologías orientadas a procesos y orientadas a datos manteniendo su base de metodología estructurada

- Es particionada, esto significa que a fin de manipular de una mejor manera la inherente a un proyecto, la metodología se divide en fases.

7.3 Etapas

Para explicar las etapas de la metodología estructurada, se tomará como referencia la propuesta por DeMarco.

Pasos metodología DeMarco

1. Estudio del entorno físico actual: Esto significa desarrollar un modelo del sistema actual con sus procedimientos a través de la herramienta que esta metodología dispone conocida como DFD.

2. Derivación del correspondiente modelo lógico actual: Se refiere a un modelo derivado del anterior desarrollado sin connotación física.

3. Derivación del nuevo modelo lógico: Una vez realizado lo anterior, se debe tomar en cuenta las nuevas necesidades. Formado por un DFD, diccionario de datos y especificaciones de proceso del sistema.

4. Crear un conjunto de modelos físicos: A partir del nuevo modelo lógico se comienzan a crear alternativas para poder evaluar y escoger el más conveniente.

5. Valorar cada opción: Una vez se estudien estas alternativas se pasa a estimar los costos y beneficios de los modelos lógicos.

6. Seleccionar una opción: Finalmente una vez realizado lo anterior, se selecciona el modelo físico más adecuado.

7. Empaquetar la especificación: Como último paso se recopila toda la documentación.

7.4 Diagramas utilizados en cada etapa

El siguiente diagrama muestra todos los diferentes diagramas que se utilizan en el desarrollo de un modelo estructurado.

Como primer parte se encuentra el modelo ambiental, donde se define que forma parte del sistema y que no. Como figura importante entra el diagrama de contexto donde se definen las personas, organizaciones o sistemas con el que el sistema se comunica.

La lista de eventos que es una lista narrativa de los estímulos que ocurre en el mundo exterior.

De base a esta lista de eventos, se procede con la creación de DFDs para cada evento. Como resultado se da el DFD preliminar.

La creación del modelo de datos es una actividad que puede ser hecha en paralelo o también anteceder a la creación del DFD preliminar.

Como ejemplo siguiente un DFD que explica como procesar el pedido de los clientes, validando su estado de cuenta, verifica la existencia de la mercancía y se hacen validaciones en caso de ingresar datos erróneos.

7.5 Ejemplo explicativo

Se toma como referencia una administración hotelera, en la cual como primera medida se definen los objetivos funcionales como lo son: la administración de información de reservas, pasajeros, tarifas y ocupación habitaciones, facturación online, informes semanales de servicios y facturación.

Una vez hecho esto se realiza la lista de eventos para el caso de estudio en el cual se toma la siguiente lista:

1. Un pasajero realiza un pedido de reserva

2. Un pasajero acepta la reserva

3. Un pasajero paga la reserva

4. Un pasajero cancela la reserva

5. Un pasajero se presenta para alojarse

6. Un pasajero informa que se retira

7. Un pasajero paga la factura

8. El concesionario entrega factura por consumición

9. Es hora de confeccionar el informe para el concesionario y pagar (C.t.: ha pasado una semana desde el último informe)

Una vez teniendo claro los objetivos y la lista de eventos se puede decir que se comprende un poco más el problema que se ha tenido desde el principio. De aquí sale el desarrollo del diagrama de contexto.

Otro

elemento importante es la creación del diccionario de datos que

es una herramienta fundamental para el modela de sistemas. Existen muchas notaciones sin embargo para realizar este proceso pero la que se presenta a continuación es la más común.

Para la el modelado de la base de datos, se da un sistema popularmente conocido como modelo entidad/relación, en el cual se establecen los atributos y las relaciones entre diferentes clases.

Un modelo entidad/relación puede estar definido por distintas características y distintas notaciones, sin embargo a continuación se expone uno comúnmente utilizado. En este modelo solo se usa Cliente y articulo y no significa que está incompleto, es solo uno de los casos que se presentaran en el sistema de información.

A su vez también es importante el proceso de la especificación de procesos que es una herramienta que presenta un modo práctico de describir una función que debe ser ejecutada por un proceso, sin que sea necesario extenderse demasiado sobre el algoritmo o procedimiento.

Una vez comprendido más el problema mediante el diagrama de contexto, se debe realizar el DFD por cada uno de los eventos.

Luego de desarrollar un diagrama por cada evento se deben conectar los diagramas en uno único, agregando los repositorios necesarios entre los datos que una burbuja produce y que otra consume. Conviene tener en cuenta en este paso, que toda información entrante a un proceso que no proviene del medio ambiente externo, debe provenir necesariamente de un almacenamiento. Por otra parte, toda información generada que no se emita directamente al medio ambiente, deberá almacenarse. Este paso puede apoyarse también en la construcción de un modelo de datos y en los objetos candidatos a memoria esencial observados en la lista de eventos, para identificar los repositorios de datos. En el caso de estudio, los repositorios identificados son: Reservas, Habitaciones, Pasajeros, y Servicios

Es necesario observar que el DFD resultante se compone de un solo nivel con un proceso por cada uno de los eventos. Para un sistema mediano o grande el DFD preliminar contendrá demasiados procesos y se presentará probablemente muy desnivelado, estando representados diferentes niveles de abstracción de manera simultánea. Para mejorar su comprensión, precisamos subdividirlo realizando abstracciones.

8. Metodología de desarrollo de Software 02

8.1 Nombre

Scrum es una metodología ágil y flexible para gestionar el desarrollo de software, cuyo principal objetivo es maximizar el retorno de la inversión para su empresa (ROI). Se basa en construir primero 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 la metodología Scrum el cliente 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 sin ningún problema.

Esta metódica de trabajo promueve la innovación, motivación y compromiso del equipo que forma parte del proyecto, por lo que los profesionales encuentran un ámbito propicio para desarrollar sus capacidades.

8.2 características:

- Adoptar una estrategia de desarrollo incremental, en lugar de la planificación y ejecución completa del producto.

- Basar la calidad del resultado más en el conocimiento tácito de las personas en equipos auto organizados, que en la calidad de los procesos empleados.

- Solapamiento de las diferentes fases del desarrollo, en lugar de realizar una tras otra en un ciclo secuencial o de cascada.

- Flexibilidad a cambios. Gran capacidad de reacción ante los cambiantes requerimientos generados por las necesidades del cliente o la evolución del mercado. El marco de trabajo está diseñado para adecuarse a las nuevas exigencias que implican proyectos complejos.

- Reducción del Time to Market. El cliente puede empezar a utilizar las características más importantes del proyecto antes de que esté completamente terminado.

- Mayor calidad del software. El trabajo metódico y la necesidad de obtener una versión de trabajo funcional después de cada iteración, ayuda a la obtención de un software de alta calidad.

- Mayor productividad. Se logra, entre otras razones, debido a la eliminación de la burocracia y la motivación del equipo proporcionado por el hecho de que pueden estructurarse de manera autónoma.

- Maximiza el retorno de la inversión (ROI). Creación de software solamente con las prestaciones que contribuyen a un mayor valor de negocio gracias a la priorización por retorno de inversión.

- Predicciones de tiempos. A través de este marco de trabajo se conoce la velocidad media del equipo por sprint, con lo que es posible estimar de manera fácil cuando se podrá hacer uso de una determinada funcionalidad que todavía está en el Backlog.

- Reducción de riesgos El hecho de llevar a cabo las funcionalidades de mayor valor en primer lugar y de saber la velocidad a la que el equipo avanza en el proyecto, permite despejar riesgos efectivamente de manera anticipada.

8.3 etapas

8.4 Diagrama Utilizado en Cada Etapa

8.5 ejemplo explicativo

9. Conclusiones

Desde el nacimiento del software este siempre ha estado en constantes cambios y transformaciones ya sea en su estructura y su forma de desarrollar y como se expuso se dieron distintos problemas en el desarrollo de software que hacen ahora que este procedimiento no sea un trabajo sencillo de realizar. Por el contrario es todo un proceso que implica tiempo y costes para su desarrollo y que si no se cuenta con una planificación pre-establecida las posibilidades de que el proyecto fracase son mayores.

Definir el ciclo de vida del software es una parte esencial para el manejo de proyectos ya que gracias a sus fases podemos orientarnos para crear estrategias y actividades óptimas para un buen desarrollo.

Las metodologías de desarrollo de software son herramientas muy importantes para la construcción de nuevo software, ya que permiten estandarizar su creación y así reducir fallos en un porcentaje menor, mejorar su estructura e identificar parte por parte las funcionalidades del mismo para entregar óptimos resultados al solicitante del mismo

Para llegar a ser un sobresaliente profesional en el desarrollo de software se debe ser consciente de que es una tarea que aunque parezca ardua, puede garantizar resultados predecibles apuntados al éxito que pueden garantizar que el desarrollo de software sea una labor gratificante.

10 Bibliografia

- Metodologia para desarrollo de softwarehttp://procesosdesoftware.wikispaces.com/METODOLOGIAS+PARA+DESARROLLO+DE+SOFTWARE

- Ciclo de vida del softwarefile:///C:/Users/Invitado/Downloads/Ciclos%20de%20Vida%20Sofware.pdf

- Ciclo de vida del softwarehttp://www.ctr.unican.es/asignaturas/is1/is1-t02-trans.pdf

- Ciclo de vida del softwarehttp://es.ccm.net/contents/223-ciclo-de-vida-del-software

- Modelo de desarrollohttp://modelosdrayevolutivos.blogspot.com/2008/10/modelo-de-desarrollo-concurrente.html

- ISO/IEC 15504-2:2003 http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=37458

- Procesos de desarrollohttps://es.wikiversity.org/wiki/Procesos_de_desarrollo_software

- Metodología de desarrollohttps://es.wikipedia.org/wiki/Metodología_de_desarrollo_de_software

- metodología Scrumhttp://openaccess.uoc.edu/webapps/o2/bitstream/10609/17885/1/mtrigasTFC0612memoria.pdf