Conceptualización En Desarrollo De Proyectos De Software

Description

Trabajo de catedra
Jaiver Ruano
Mind Map by Jaiver Ruano, updated 4 months ago
Jaiver Ruano
Created by Jaiver Ruano over 1 year ago
18
0

Resource summary

Conceptualización En Desarrollo De Proyectos De Software
  1. Proceso De Software
    1. Modelos Clásicos
      1. CASCADA: se define como una secuencia de actividades, donde la estrategia principal es seguir el progreso del desarrollo de software hacia puntos de revisión bien definidos (milestones o checkpoints) mediante entregas calendarizadas (schedule). El modelo de cascada fue inicialmente bien recibido, dado que las actividades de las etapas eran razonables y lógicas. Lamentablemente, no explicaba cómo modificar un resultado, en especial, considerando lo difícil que es definir todos los requisitos de un sistema inicialmente y que se mantengan estables y sin cambios durante el desarrollo.
        1. INCREMENTAL: s un desarrollo inicial de la arquitectura completa del sistema, seguido de incrementos y versiones parciales del mismo. Cada incremento tiene su propio ciclo de vida. Cada incremento agrega funcionalidad adicional o mejorada sobre el sistema. Conforme se completa cada etapa, se verifica e integra la versión con las demás versiones ya completadas del sistema. El desarrollo incremental evita la teoría del “Big Bang” para el desarrollo de software, donde una gran explosión de desarrollo se transforma repentinamente en el sistema final.
          1. EVOLUCIONARLO: es una extensión al modelo incremental, donde los incrementos se hacen de manera secuencial en lugar de en paralelo. Desde el punto de vista del cliente, el sistema evoluciona según se van entregando los incrementos. Desde el punto de vista del desarrollador, los requerimientos que son claros al principio del proyecto dictarán el incremento inicial. El modelo evolucionario es también conocido como desarrollo rápido de aplicaciones (RAD, Rapid Application Development), que se basa tradicionalmente en el uso de prototipos.
            1. ESPIRAL: Es una extensión del modelo de cascada. A diferencia del modelo de cascada, que es dirigido por documentos, el modelo de espiral se basa en una estrategia para reducir el riesgo del proyecto en áreas de incertidumbre, como requerimientos iniciales incompletos e inestables.
            2. MODELOS RECIENTES
              1. GANAR-GANAR: extiende el modelo de espiral, haciendo énfasis en la identificación de las condiciones de ganancia para todas las partes, creando un plan para alcanzar las condiciones ganadoras y los riesgos correspondientes. El modelo no necesita mucho tiempo de gestión, lo que permite utilizarlo tanto en proyectos pequeños, como mayores
                1. Programación extrema (XP): Es un modelo de proceso de software que toma los principios y prácticas aceptadas, y las lleva a niveles extremos. Tiene como objetivo reducir el riesgo en el ciclo de vida del software mediante grupos de desarrollo pequeños. XP define varias prácticas a seguir, quizás la más representativa del proceso de XP es la programación en pares (pair programming), donde todo desarrollo requiere de dos programadores que trabajan juntos.
                  1. Proceso unificado (UP): El proceso unificado tiene como aspecto esencial del desarrollo de software una visión que parte de la arquitectura del sistema, siguiendo un proceso iterativo e incremental. El proceso integra diferentes aspectos, como son los ciclos, fases, flujos de trabajo, mitigación de riesgo, control de calidad, administración de proyecto y control de configuración. De manera adicional, el proceso unificado considera las cuatro “P” del desarrollo de software: personas, proyecto, producto y proceso.
                  2. Modelos De Proceso
                    1. ARQUITECTURA: define la estructura general de un sistema y varía de acuerdo con el tipo de sistema a desarrollarse. Así, puede estar basada en elementos sencillos o componentes prefabricados de mayor tamaño, y se especifica de acuerdo con los diferentes tipos de sistemas. Ejem: Transformación en lote, continua, Sistemas interactivos, simulación dinámica, sistemas de tipo real y administración de transacción.
                      1. ACTIVIDAD: Las actividades definen los pasos necesarios para lograr las metas y los objetivos, las actividades deben ser: fáciles de definir y seguir; simplificar la comprensión del sistema; y ofrecer flexibilidad, precisión y extensibilidad. Las actividades básicas del proceso de desarrollo de software, conocidas como el ciclo de vida del software, son: Requisitos, análisis, diseño, implementación, integración, pruebas, documentación y mantenimiento.
                        1. MÉTODOS Y MÉTODOLOGIAS: Los métodos definen las reglas para las transformaciones internas de las actividades, mientras que las metodologías definen el conjunto de métodos. Un método es un procedimiento que define tareas o acciones a realizar, donde cada tarea incluye condiciones de entrada y de salida que se deben satisfacer antes y después de completarse.Las metodologías tradicionales o estructuradas se enfocan principalmente en la descomposición funcional de un sistema. Las metodologías orientadas a objetos se enfocan principalmente en el modelado de un sistema en términos de objetos. A diferencia de las metodologías estructuras, se identifican inicialmente los objetos del sistema para luego especificar su comportamiento.
                          1. ESTRATEGIAS: Las estrategias afectan aspectos como la arquitectura del sistema, el orden en que se llevarán a cabo las actividades del proceso y las metodologías a utilizarse. El uso de PROTOTIPOS es una estrategia que puede aplicarse en casi todas las actividades del proceso de software. El propósito de los prototipos es obtener rápidamente la información necesaria para ayudar en la toma de decisiones. La REUTILIZACIÓN es la explotación de componentes desarrollados anteriormente dentro de un mismo proyecto o entre proyectos. En un mismo proyecto, la reutilización se aprovecha mediante estructuras comunes de bajo nivel, como procedimientos, clases o herencia. Entre proyectos, la reutilización se aprovecha mediante estructuras comunes de alto nivel, como paquetes gráficos y bibliotecas de análisis numérico.
                            1. HERRAMIENTAS: son aplicaciones que apoyan la administración del proceso de software. El conjunto de estas herramientas se conoce como ingeniería de software asistida por computadora. CASE. Las herramientas varían en su apoyo a los procesos integrando componentes como editores de texto , generadores de modelos gráficos (diagramas) generadores de código, compiladores, depuradores, verificadores, validadores, medidores (monitores), administradores de configuración y administradores del proyecto
                          2. Entornos De Programación
                            1. Alice
                              1. Alice es un entorno de programación libre con código abierto, desarrollado en Java por la Carnegie Mellon University en 2004, en el se crean historias, juegos y videos que se pueden compartir en el sitio web. Es un entorno intuitivo y fácil de usar por medio del cual los estudiantes pueden aprender conceptos básicos de programación orientada a objetos, para construir algoritmos se utilizan bloques drag and drop que se visualizan de forma gráfica.
                                1. El entorno cuenta con una interfaz atractiva por ser tridimensional, colorida y de fácil comprensión, este aspecto incentivo a los estudiantes a realizar las actividades que se les proponen. Alice como herramienta de programación promueven aspectos relacionados con el pensamiento computacional como el modelado, la abstracción, el pensamiento algorítmico y la modularización.
                                  1. Requisitos software/hardware: Existen versiones para Windows Vista, XP, 2000, Windows 7 y 8, así como para Linux, Huayra, Ubuntu y RedHat, procesador Pentium II, similar o superior, 1Gb de memoria RAM. Para la versión Alice 3.1 se recomienda tener 2GB de memoria RAM y tener instalada Java JDK.
                                    1. Alice utiliza una interfaz gráfica basada en la programación visual. La interfaz de Alice está diseñada para ser intuitiva y accesible, especialmente para principiantes, permitiendo a los usuarios crear programas mediante la manipulación directa de objetos en un entorno 3D y la construcción de scripts mediante bloques.
                                  2. Tecnología Orientada a Objetos
                                    1. Conceptos Básicos
                                      1. CONCEPTOS DE LA PROGRAMACIÓN TRADICIONAL: Consta de múltiples datos y funciones “globales”. Esta forma de programación estructurada tiene sus orígenes en las primeras computadoras modernas basadas en la arquitectura Von Neumann, donde las instrucciones de un programa se guardaban en memoria creando el concepto de programa almacenado.
                                        1. Tiene 2 problemas principales
                                          1. El primero es obligar a un programador a que organice su programa de acuerdo con la arquitectura de la computadora, en otras palabras, que piense como la máquina. Debería ser lo opuesto.
                                            1. El segundo es que al estar separados de las funciones, los datos se vuelven globalmente visibles para poder ser llamados. Dada esta situación, cualquier cambio en la estructura de alguno de los datos pudiera llegar a requerir la modificación de todas las funciones del programa en correspondencia con los cambios en los datos.
                                          2. CONCEPTOS DE LA PROGRAMACION ORIENTADA A OBJETOS: define una estructura de más alto nivel llamada objeto. En general, un programa orientado a objetos se define exclusivamente en términos de objetos y sus relaciones
                                            1. Ofrece 2 ventajas:
                                              1. La segunda es que los datos globales desaparecen, siendo éstos junto con las funciones parte interna de los objetos. Por lo tanto, cualquier cambio en la estructura de alguno de los datos sólo debiera afectar las funciones definidas en ese mismo objeto y no en los demás
                                                1. La primera es permitir al programador que organice su programa de acuerdo con abstracciones de más alto nivel, siendo éstas más cercanas a la manera de pensar de la gente.
                                            2. Programación y Lenguajes Orientados a Objetos
                                              1. ABSTRACCIÓN: Consiste en elevar el nivel de las representaciones necesarias para un sistema de software, de manera que se reduzcan los detalles. Cuanto más alto sea el nivel de la representación, menor será el número de elementos necesarios para representar un sistema completo y más fácil será el manejo de la complejidad .
                                                1. MODULARIDAD: permite dividir un sistema en componentes separados- Esto reduce el número final de componentes en un sistema y a su vez, facilita su operación y mantenimiento. El número final de módulos u objetos es menor que el número de datos y funciones . Esto reduce la complejidad de la aplicación.
                                                  1. EXTENSIBILIDAD: Corresponde a la facilidad de modificar un sistema durante el transcurso de su vida. Los sistemas compuestos por múltiples módulos facilitan esta extensibilidad dado que los cambios en el sistema se pueden, generalmente, reducir a cambios en módulos particulares y no en todo el sistema a la vez
                                                    1. REUTILIZACIÓN: La reutilización reduce el tiempo de diseño, codificación y costo del sistemaal amortizar el esfuerzo sobre varios desarrollos. los lenguajesorientados a objetos aumentan sustancialmente las posibilidades de reutilización gracias a la mayormodularidad de los sistemas .
                                                  2. Aspectos
                                                  3. ENCAPSULACIÓN: es el mecanismo básico de la programación orientada a objetos para ocultar los detalles internos del objeto de los demás objetos. El encapsulamiento permite distinguir entre la interface del objeto, o sea, los aspectos del objeto conocidos externamente, y su implemen-tación, o sea, sus aspectos conocidos sólo internamente.
                                                    1. Características
                                                      1. CLASIFICACIÓN: En la programación orientada a objetos, la clasificación permite organizar objetos de acuerdo con estructuras comunes. Los objetos con datos y funciones similares se clasifican como si fueran de una misma clase. Éstos podrán tener datos con valores distintos.
                                                        1. GENERALIZACIÓN: Mediante la generalización, las clases con estructura y comportamiento similar se pueden reutilizar en la definición de nuevas clases, siendo éstas más especializadas que las anteriores. Las clases anteriores más especializadas son conocidas como subclases, mientras que las más generales son superclases. El mecanismo para describir jerarquías de generalización de clases se conoce como herencia.
                                                          1. POLIMORFISMO: Mediante el polimorfismo se definen múltiples funciones con nombres e interfaces similares sólo que en distintas clases. Las funciones son implementadas de manera diferente en las clases. El polimorfismo es útil para extender la funcionalidad del sistema al definir nuevas clases aún desconocidas al momento de especificarlo.
                                                    2. Lenguajes de Programación
                                                    3. Costo y Complejidad del Software
                                                      1. Costos Ocultos y Consecuencias por Fallas Del Software
                                                        1. CONSECUENCIAS INMEDIATAS Y EFECTOS DIRECTOS: Son los perjuicios ocasionados mientras dura la caída de los sistemas. En el caso de sistemas de misión crítica, de los cuales depende la operación exitosa de una empresa.
                                                          1. CONSECUENCIAS A MEDIANO Y LARGO PLAZO Y EFECTOS INDIRECTOS: Son los perjuicios posteriores a la caída de los sistemas. Las consecuencias varían, desde la restauración de datos, servicios de emergencia, propaganda negativa y pérdida de clientes, hasta posibles accidentes y juicios en contra.
                                                          2. Complejidad del Software
                                                            1. SOFTWARE SUFICIENTEMENTE BUENO: Un sistema se puede considerar correcto o exitoso cuando satisface y posiblemente excede los deseos de los usuarios al momento de utilizarse.También se considera exitoso si el sistema se termina a tiempo, de manera económica y permitiendo modificaciones y extensiones posteriores. La incorporación frecuente de nueva funcionalidad a un producto es finalmente la base del negocio de una compañía de software.
                                                              1. CONFIABILIDAD DEL SOFTWARE: depende de la cantidad de errores que un sistema posea, cuanto menor sea ésta, mayor será su confiabilidad. Aunque es casi imposible lograr software 100% confiable y robusto, o sea, software perfecto, es posible reducir el número de fallas o defectos que contenga.
                                                                1. LA BALA DE PLATA: , Brooks deja un desafío a las futuras generaciones: “según miramos al horizonte de una década, no vemos ninguna bala de plata. No existe un solo desarrollo, en la tecnología o técnica de administración, que por sí mismo prometa incluso una mejora de un orden de magnitud en productividad, confiabilidad, simplicidad, dentro de una década”. En otras palabras, Brooks sugiere que no hay nada en el horizonte que permita mejorar la calidad del software de manera drástica, dados los avances tecnológicos de ese momento y los que están en puerta
                                                                  1. CICLO DE VIDA DEL SOFTWARE: comienza con la formulación de un problema, seguido por la especificación de requisitos, análisis, diseño, implementación o codificación, integración y pruebas del software. Después viene una fase operacional durante la cual se mantiene y extiende el sistema. La mayor parte de los avances en la productividad del software se han dado históricamente gracias a herramientas, ambientes y lenguajes de programación que reducen el esfuerzo en el desarrollo de las tareas secundarias o accidentales.
                                                                Show full summary Hide full summary

                                                                Similar

                                                                Proceso administrativo como herramienta en el manejo de las empresas
                                                                Aaron Gutierrez
                                                                Mapa Mental Planificación estratégica
                                                                Verny Fernandez
                                                                Mapa Conceptual
                                                                Julio Perez
                                                                TEORIAS CONTEMPORANEAS
                                                                karen lorena miranda rojas
                                                                Mapa Conceptual
                                                                natalia forteza
                                                                Historia de la Música
                                                                Alicia Maqueira Atienza
                                                                EXPRESIONES LÚDICAS EN LA CULTURA POPULAR TRADICIONAL
                                                                Katiana Balbín
                                                                Mapa Mental de Tics
                                                                erika.m.ortiz
                                                                Cómo crear un Mapa Mental
                                                                Maria Camila Ospina Valoy
                                                                Mapa Conceptual
                                                                Brisa Jimenez Robles
                                                                Países desarrollados y subdesarrollados
                                                                sara.garcia.2eso