Get Started. It's Free
or sign up with your email address
software by Mind Map: software

1. Que es ?

1.1. El software de computadora es el producto que construyen los programadores profesionales y al que después le dan mantenimiento durante un largo tiempo.

2. Quien Lo Hace

2.1. Los ingenieros de software elaboran y dan mantenimiento al software, y virtualmente cada persona lo emplea en el mundo industrializado, ya sea en forma directa o indirecta.

3. Por que es Importante

3.1. El software es importante porque afecta a casi todos los aspectos de nuestras vidas y ha invadido nuestro comercio, cultura y actividades cotidianas.

4. ¿Cuáles son los pasos?

4.1. El software de computadora se construye del mismo modo que cualquier producto exitoso, con la aplicación de un proceso ágil y adaptable para obtener un resultado de mucha calidad, que satisfaga las necesidades de las personas que usarán el producto

5. Evolucion

5.1. Primeros Años (1950-1960)

5.1.1. Durante los primeros años de desarrollo de las computadoras el hardware ha sufrido constantes cambios pero el software era visto como algo adicional y por lo tanto el mismo se desarrollaba sin ninguna planificación, por lo tanto existían pocos métodos formales para el mismo utilizando

5.1.1.1. • Orientado por lotes

5.1.1.2. • Distribución limitada

5.1.1.3. • Software a la Medida para cada aplicación.

5.2. La Segunda era (1960-1970)

5.2.1. Introduce nuevos procesos mejorando la interacción entre hombre y máquina, se busca como simplificar el código y se desarrollan nuevos procedimientos para la mejorar el proceso de creación de software

5.2.1.1. • Multiproceso

5.2.1.2. • Sistema de tiempo real

5.2.1.3. • Base de datos

5.2.1.4. • Software como producto en el mercado multidisciplinar

5.3. La Tercera era (1970-1980)

5.3.1. Uso de Microprocesadores y computadoras personales implementando comunicaciones digitales,

5.3.1.1. • Sistemas distribuidos

5.3.1.2. • Incorporación de inteligencia

5.3.1.3. • Hardware de bajo costo

5.3.1.4. • Impacto en el consumo

5.3.1.5. • Redes de información

5.3.1.6. • Información como valor predominante en las organizaciones

5.4. La Cuarta era (1980-Actualidad)

5.4.1. Es la actualidad y se basa en el impacto colectivo de las computadoras y de software, las tecnologías orientadas a objetos están desplazando los enfoques de desarrollo

5.4.1.1. • Potentes sistemas de computo

5.4.1.2. • Tecnología orientada a objeto

5.4.1.3. • Sistemas expertos

5.4.1.4. • Redes neuronales artificiales

5.4.1.5. • Computación paralela

6. El software se desarrolla, no se fabrica.

6.1. A pesar de que existen las similitudes entre el desarrollo de software y la fabricación de hardware, los dos procesos tienen diferencias fundamentales. En ambos casos existen fases de análisis, diseño y desarrollo o construcción, y la calidad del producto final depende de un buen diseño. Sin embargo, en la fase de producción del hardware pueden producirse problemas que afecten a la calidad y que no existen en el caso del software

7. El software no se desgasta

7.1. El software no afectan los males del entorno que desgastan el hardware. El software se deteriora debido a los cambios y correcciones. Cada fallo en el software indica un error en alguna fase anterior del diseño.

8. La mayoría del software se construye a medida.

8.1. Los componentes del software deben diseñarse de forma que puedan utilizarse en otros programas diferentes. Esto permite a los desarrolladores crear nuevas aplicaciones a partir de componentes reutilizables.

9. Componentes

9.1. Existen dos formas básicas del software: componentes no ejecutables en la máquina y componentes ejecutables. Los componentes ejecutables se hacen a través de lenguajes de programación, los cuales se encargan de traducir las instrucciones para que la computadora las entienda

9.1.1. Procedimentales:

9.1.1.1. Lenguaje máquina

9.1.1.1.1. Lenguaje máquina - son las instrucciones inteligibles por computadora que consisten en código binario (una combinación de 0 y 1)

9.1.1.2. Lenguaje ensamblador

9.1.1.2.1. son las instrucciones más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. También conocidas como nemotécnicos. Por ejemplo: ADD, SUB, DIV (las operaciones aritméticas)

9.1.2. No Procedimentales

9.1.2.1. Lenguajes de cuarta generación

9.1.2.1.1. son lenguajes que se relacionan menos con los procedimientos e incluyen las capacidades de consulta a bases de datos, de creación de códigos y capacidades gráficas.

10. Áreas de aplicación de software:

10.1. Software de Sistemas

10.1.1. Es un conjunto de programas que han sido escritos para servir a otros programas.

10.2. Software de Tiempo Real

10.2.1. Es el software que da seguimiento a los sucesos del mundo real conforme ocurren.

10.3. Software de Gestión

10.3.1. Software de sistemas de información de gestión SIG se usa para el procesamiento de información comercial y gestiona las bases de datos que contienen esa información.

10.4. Software Empotrado

10.4.1. Es el tipo de software que reside en memoria de solo lectura y se utiliza para controlar productos y sistemas de los mercados industriales y de consumo.

10.5. Software de computadoras personales

10.5.1. Aplicaciones tales como procesadores de textos, hojas de cálculo, gráficos por computadora, entretenimientos, gestión de bases de datos, aplicaciones financieras, de negocios y personales.

10.6. Software de inteligencia Artificial

10.6.1. este tipo de software utiliza los algoritmos no numéricos para resolver problemas complejos para los que no son adecuados el cálculo o el análisis directo. Aplicaciones: sistemas expertos o también llamados sistemas basados en el conocimiento, reconocimiento de patrones (imágenes y voz), redes neuronales artificiales.

11. Modelado del Proceso y Ciclo de Vida

11.1. Para solucionar los problemas en el desarrollo de software no existe una única solución. Sin embargo con una combinación de métodos completos para todas las etapas del desarrollo , mejores herramientas automatizadas, mejores técnicas para garantizar la calidad del software y una filosofía predominante para la coordinación, control y gestión se puede conseguir una disciplina para el desarrollo de software: Ingeniería del Software.

11.2. Métodos

11.2.1. Indican como construir el software así mismo las tareas de planificación y estimación de proyectos, análisis de los requerimientos, diseño de estructuras de datos, arquitectura de programas y algoritmos, codificación pruebas y mantenimiento.

11.3. Las herramientas

11.3.1. Proporcionan un soporte automatizado para la implementación de los métodos, Ingeniería del software asistida por computadora CASE, combina software, hardware y base de datos para crear un entorno de ingeniería

11.4. Procedimientos

11.4.1. Indican la secuencia en que se aplican los métodos usando herramientas para facilitar un desarrollo racional y oportuno

11.5. El ciclo de Vida Clásico o en Cascada

11.5.1. El ciclo de vida clásico o modelo en cascada es un paradigma que proporciona un enfoque sistemático y secuencial del desarrollo de software que inicia en el nivel del sistema y progresa a través del análisis, diseño, codificación, prueba y mantenimiento. Cada fase tiene documentos que deben aprobarse por el usuario.

11.5.2. Ingeniería y análisis del sistema

11.5.2.1. Debido que el software forma parte de un sistema más complejo, el desarrollo inicia estableciendo los requisitos de todos los elementos del sistema y luego se asignan algún subconjunto de estos requisitos al software.

11.5.3. Diseño:

11.5.3.1. se realiza la descomposición en elementos que pueden desarrollarse por separado y se establecen las especificaciones para cada elemento. Codificación: el diseño se traduce en forma legible para la máquina.

11.5.4. Prueba

11.5.4.1. se juntan todos los elementos y se prueba el sistema completo

11.5.5. Mantenimiento

11.5.5.1. se realizan cambios ocasionales para mejorar el software o para corregir los errores.

11.5.6. Características

11.5.6.1. • Cada fase empieza cuando se ha terminado la anterior.

11.5.6.2. • Para pasar a la fase posterior es necesario haber logrado los objetivos de la previa

11.5.6.3. • Es útil como control de fechas de entregas.

11.5.6.4. • Al final de cada fase el personal técnico y los usuarios tienen la oportunidad de revisar el progreso del proyecto.

11.6. Construcción de prototipos

11.6.1. La construcción de prototipos es un proceso que facilita al programador la creación de un modelo de software y ayuda a comprender los requisitos que plantea el usuario. También es útil cuando el diseñador del sistema tiene dudas sobre su viabilidad.

11.6.2. Ventajas

11.6.2.1. • Permite identificar los requisitos incrementalmente

11.6.2.2. • Permite probar diferentes alternativas a los desarrolladores

11.6.2.3. • Tiene una alta visibilidad: tanto clientes como desarrolladores ven resultados rápidamente.

11.7. Modelo en Espiral

11.7.1. El modelo en espiral combina las mejores características tanto del ciclo de vida clásico, como de la creación de prototipos agregando un nuevo elemento: el análisis de riesgo.

11.7.2. Actividades

11.7.2.1. • Planificación: determinación de objetivos, alternativas y restricciones

11.7.2.2. • Análisis de riesgo: análisis de alternativas e identificación y resolución de riesgos.

11.7.2.3. • Ingeniería: desarrollo del producto

11.7.2.4. • Evaluación del cliente: valoración de los resultados

11.8. Desarrollo Interactivo

11.8.1. El modelo iterativo consiste en iteración de varios ciclos de vida en cascada. En cada iteración se realizan cambios en el diseño y se agregan nuevas funciones (desarrollo incremental). Al final de cada iteración se entrega una versión mejorada.

11.8.2. Etapa de inicialización

11.8.2.1. se crea una versión del sistema donde el cliente puede interactuar y dar retroalimentación. Para guiar el proceso de iteración se crea la lista de control de proyecto.

11.8.3. Etapa de iteración

11.8.3.1. consiste en el rediseño e implementación de una tarea de la lista de control de proyecto, y el análisis de la versión más reciente del sistema.

11.8.4. Ventajas

11.8.4.1. • Se puede financiar el proyecto por partes

11.8.4.2. • Apropiado para proyectos grandes de larga duración

11.8.4.3. • No se necesita tanto personal al principio como para una implementación completa

11.9. Desarrollo Ágil

11.9.1. El desarrollo ágil de software es un modelo que se basa en el desarrollo iterativo e incremental. Existen muchos métodos de desarrollo ágil que permiten minimizar el riesgo y desarrollar el software en plazos cortos. Estos métodos intentan evitar las metodologías tediosas y burocráticas.

11.9.2. Scrum

11.9.2.1. es una metodología que se utiliza en los entornos complejos, cuando se necesita obtener los resultados de manera rápida y donde los requisitos son inestables o poco definidos. Este método se utiliza para resolver las situaciones cuando al cliente no se entrega lo que necesitaba, cuando los plazos de entrega se alargan demasiado, cuando la calidad no se aceptable o cuando los costos de desarrollo se elevan demasiado.

11.9.3. Lean Software Development LSD

11.9.3.1. fue desarrollada por Toyota en los años noventa, como una práctica de producción. Esta metodología considera como desperdicio el uso de recursos en actividades que no generen valor para el cliente. La metodología Lean contiene una serie de herramientas diseñadas para eliminar los problemas de desperdicio promoviendo la interacción entre las personas, la colaboración y flexibilidad.

11.9.4. Agile Unified Process o Proceso Unificado Ágil

11.9.4.1. es un método iterativo e incremental que especifica muchas actividades y componentes involucrados en el desarrollo de software. El mayor énfasis se hace en ña gestión de riesgos proponiendo que aquellos elementos que tengan alto riesgo obtengas prioridad en el proceso de desarrollo y sean abordados en las primeras etapas del proyecto.

11.9.5. Extreme Programm XP

11.9.5.1. es una metodología que se enfatiza en la adaptabilidad. Se basa en la visión de que los cambios de requisitos sobre la marcha es un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos. El sistema debe adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto.

11.10. Codificación y Corrección

11.10.1. El método de codificación y corrección (en inglés Code and fix) surge como una práctica que se basa en la falta de experiencia y presión de trabajo que se ejerce sobre los desarrolladores para entregar los proyectos en una fecha predeterminada. Esta práctica consiste en elaborar el código sin dedicar el tiempo suficiente al diseño del sistema. En la fase de pruebas de software surgen inevitables errores que deben corregirse antes de entregar el proyecto