El software

El software

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Rocket clouds
El software por Mind Map: El software

1. Ciclo de vida

1.1. Cascada

1.1.1. Se le denomina de esta manera debido al procedimiento secuencial que sigue para que el debido proceso de desarrollo de software sea realizado, estrictamente tienen que seguirse los pasos en escalón de arriba hacia abajo para su correcta ejecución. Cabe recalcar que para realizar cambios en un procesos es en efecto muy complicado realizarlos debido a que es difícil trabajar sobre lo ya anteriormente construido. A continuación veremos a detalle cómo funcionan cada uno de los escalones del proceso cascada.

1.1.2. 1. Requerimientos de Software: Aquí es donde se especifica los requerimientos del cliente hacia el programa, entran todas las características que va tener el programa, el tiempo que llevará a cabo la finalización de este y hay que ser muy cuidadosos de pasar por alto algún otro requerimiento durante el proceso de realización del programa puesto que ya no se podrán efectuar cambios. 2. Diseño: En este apartado se realiza en diseño completo de la estructura del programa realizando el modelado de cada uno de los elementos y sus relaciones entre ellos, a su vez que se tiene que realizar una organización de estos elementos puesto que deben funcionar cada cual de manera independiente. 3. Implementación: En esta fase se tiene que realizar la programación de los elementos de la fase anterior, para esto se tiene que hacer el debido análisis de lógica para cada componente funcione de manera correcta. 4. Verificación: Esto nos indica que hemos llegado a la parte de probar el código ya terminado y si se ve necesario tener que realizar cambios en el código para reparar problemas como bugs o defectos. 5. Implementación y Mantenimiento: Una vez ya esté terminado todo el proceso de refinación del programa se instala en un sistema y se hace la prueba de correcto funcionamiento, una vez en este escalón solo se tiene que estar al tanto de cualquier error que pueda resultar y hacer el debido mantenimiento del software.

1.2. Espiral

1.2.1. Este modelo sigue un orden iterativo, donde una vez se termina un proceso de desarrollo inmediatamente inicia uno nuevo. A su vez el modelo es capaz de reducir bastante los errores o problemas que se presenten en el desarrollo del software, esto implica que los costos en el proceso aumentan y el tiempo de entrega se vuelve más largo, se puede compensar este percance con la aplicación de otros métodos ya que el modelo espiral así lo permite.

1.2.2. 1. Determinar o Fijar Objetivos: Aquí se definen los propósitos y objetivos que tendrá en software además de realizar un modelado de la estructura del mismo. 2. Análisis de Riesgo: Se hace un debido análisis de la estructura a gran detalle para poder identificar las distintas posibilidades de riesgo que se puedan presentar en el software, una vez identificados estos riesgos se plantea una estrategia para realizar alternativas. 3. Desarrollar, Verificar y Validar: Aquí es donde se realiza el desarrollo del software para su implementación. 4. Planificar: Por último se realizan las distintas pruebas para saber si el software cumple con todos los requerimientos, una vez lo haga se pasará a la planeación del siguiente proyecto.

1.3. Prototipo

1.3.1. Este modelo se basa en la realización del software por medio de cada uno de sus componentes por separado para que entre el cliente y el desarrollador puedan ir observando de qué manera se comportará el programa, que añadidos se le van a hacer y también para que puedan prevenir cualquier error e inconformidad con este. La construcción de prototipos posee tres pasos: Escuchar al cliente y definir todos los objetivos y propósitos del software a realizar. Construir y revisar la maqueta. El cliente realiza pruebas sobre la maqueta y analiza los requisitos del software.

1.3.2. 1. Investigación Preliminar: Aclaración del problema propuesto por el cliente y recopilación de información. 2. Análisis y Especificación: Diseño básico del prototipo. 3. Diseño y Construcción: Elaboración de un prototipo inicial.

2. Conceptos

2.1. Programas de ordenador, la documentación asociada y la configuración de datos que se necesitan para hacer que estos programas operen de manera correcta.Por lo general,un sistema de software consiste en diversos programas independientes,archivos de configuración que se utilizan para ejecutar estos programas,un sistema de documentación que describe la estructura del sistema(Sommerville, Ian,2005).

2.2. 1) Instrucciones (programas de cómputo) que cuando se ejecutan proporcionan las características, función y desempeño buscados 2) Estructuras de datos que permiten que los programas manipulen en forma adecuada la información 3) Información descriptiva tanto en papel como en formas virtuales que describen la operación y uso de los programas. (Roger S. Pressman,2002).

2.3. Conjunto de datos y programas que maneja el ordenador. Es la parte lógica o inmaterial de un sistema informático. Almacenados en el ordenador en forma de ceros y unos (Rodríguez Aragón).

2.4. El Software es la parte lógica que dota al equipo físico de capacidad para realizar cualquier tipo de trabajo(María Antonieta Tejeda Anaya).

2.5. Es el conjunto de datos que necesita la computadora para poder trabajar. Los datos varían según el tipo de operación que deba realizar la computadora, y por eso se agrupan formando programas distintos.También podemos decir que software, es el conjunto de programas y utilidades que se encargan de explicar al hardware lo que tiene que hacer(Recursos Informáticos).

3. Metodología

3.1. 1. Object Modelling Technique (OMT): La metodología OMT es una técnica de modelado de objetos. El significado de las siglas de esta metodología es Técnica de Modelado en Objetos , la definen como una de las metodologías de la Ingeniería de Software aplicable al desarrollo orientado a objetos en las fases de análisis y diseño.

3.1.1. Etapas

3.1.1.1. 1. Análisis de objetos: se centra en entender y modelar el problema en el dominio de la aplicación.

3.1.1.2. 2. Diseño del sistema: se determina la arquitectura del sistema en términos de subsistemas.

3.1.1.3. 3. Diseño de objetos: se refina y optimiza el análisis de objetos para implementarlo.

3.1.1.4. 4. Implementación: se codifica y prueba lo ya diseñado.

3.2. 2. Unified Process (UP): Es una metodología de desarrollo de software que está basado en componentes e interfaces bien definidas, y junto con el Lenguaje Unificado de Modelado (UML), constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.

3.2.1. Etapas

3.2.1.1. 1. Inicio:tiene por finalidad definir la visión, los objetivos y el alcance del proyecto, tanto desde el punto de vista funcional como del técnico, obteniéndose como uno de los principales resultados una lista de los casos de uso y una lista de los factores de riesgo del proyecto

3.2.1.2. 2. Elaboración:tiene como principal finalidad completar el análisis de los casos de uso y definir la arquitectura del sistema, además se obtiene una aplicación ejecutable que responde a los casos de uso que la comprometen.

3.2.1.3. 3. Construcción:está compuesta por un ciclo de varias iteraciones, en las cuales se van incorporando sucesivamente los casos de uso, de acuerdo a los factores de riesgo del proyecto.

3.2.1.4. 4. Transición:se inicia con una versión “beta” del sistema y culmina con el sistema en fase de producción.

3.3. 3. Design Sprint: Es una metodología que permite prototipar y validar ideas con usuarios finales de manera rápida, con el fin de definir el roadmap de un producto en 5 fases. Este método fue creado por Google Ventures en 2010.

3.3.1. Etapas

3.3.1.1. 1. Entender: Desarrollar con un equipo un entendimiento común del contexto de trabajo, incluyendo el problema, el negocio, el cliente, la propuesta de valor y los criterios que determinarán el éxito.

3.3.1.2. 2. Bocetar: Generar ideas y soluciones potenciales a los problemas de su cliente

3.3.1.3. 3. Decidir: Tomar todas las posibilidades expuestas durante las fases 1 y 2, eliminen las ideas extremas y actualmente inviables y perfeccionen aquellas ideas con las que se sientan mejor.

3.3.1.4. 4. Prototipar: Un prototipo es una forma muy económica de obtener información muy valiosa sobre lo que el producto necesita ser. Una vez que sepan qué funciona y qué no, podrán invertir con confianza, tiempo y dinero en una implementación más permanente

3.3.1.5. 5. Validar: Es importante probar el prototipo con los clientes existentes o potenciales, porque son para quienes se desea que el producto funcione y sea valioso.

3.4. 4. 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.

3.4.1. Etapas

3.4.1.1. 1. Planificación del sprint: En la primera reunión del equipo se definirán aspectos como la funcionalidad, objetivos, riesgos del sprint, plazos de entrega, entre otros. Posteriormente se realiza una junta entre el equipo y el jefe del proyecto para explicar cómo se desarrollará cada punto del intervalo.

3.4.1.2. 2. Etapa de desarrollo: Cuando el trabajo del sprint está en curso, los encargados deben garantizar que no se generen cambios de último momento que puedan afectar los objetivos del mismo. Además, se asegura el cumplimiento de los plazos establecidos para su término.

3.4.1.3. 3. Revisión del sprint: Al final del desarrollo del intervalo, es posible analizar y evaluar los resultados. Si es necesario, todo el equipo colaborará para saber qué aspectos necesitan ser cambiados.

3.4.1.4. 4. Retroalimentación: Los resultados pueden ser entregados para recibir un feedback no solo por parte de los profesionales dentro del proyecto, sino también de las personas que utilizarán directamente lo que se desea lograr; es decir, los clientes potenciales.

3.5. 5. Crystal : es una metodología de desarrollo de Software ágil, que en realidad está considerada como una familia de metodologías debido a que se subdivide en varios tipos de metodologías en función a la cantidad de personas que vayan a conformar el proyecto. Creada por Alistair Cockburn.

3.5.1. Etapas

3.5.1.1. 1 Entrega frecuente: Consiste en entregar software a los clientes con frecuencia, no solamente compilar el código.

3.5.1.2. 2 Comunicación osmótica. Todos juntos en el mismo cuarto.Una variante especial es disponer en la sala de un experto diseñador senior y discutir respecto del tema que se trate.

3.5.1.3. 3. Mejora reflexiva:Tomarse un pequeño tiempo para pensar bien qué se está haciendo,cotejar notas, reflexionar, discutir.

3.5.1.4. 4. Seguridad personal: Hablar con los compañeros cuando algo molesta dentro del grupo.

3.5.1.5. 5. Foco: Saber lo que se está haciendo y tener la tranquilidad y el tiempo para hacerlo.

3.5.1.6. 6. Fácil acceso a usuarios expertos:Tener alguna comunicación con expertos desarrolladores.

3.6. 6. Programación extrema (XP): Es una metodología ágil y flexible utilizada para la gestión de proyectos.Extreme Programming se centra en potenciar las relaciones interpersonales del equipo de desarrollo como clave del éxito mediante el trabajo en equipo, el aprendizaje continuo y el buen clima de trabajo.Esta metodología pone el énfasis en la retroalimentación continua entre cliente y el equipo de desarrollo y es idónea para proyectos con requisitos imprecisos y muy cambiantes.

3.6.1. Etapas

3.6.1.1. 1. Exploración: En esta fase, los clientes plantean a grandes rasgos las historias de usuario que son de interés para la primera entrega del producto. Al mismo tiempo el equipo de desarrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en el proyecto.

3.6.1.2. 2. Planificación de la Entrega: En esta fase el cliente establece la prioridad de cada historia de usuario, y correspondientemente, los programadores realizan una estimación del esfuerzo necesario de cada una de ellas.

3.6.1.3. 3. Iteraciones: Esta fase incluye varias iteraciones sobre el sistema antes de ser entregado. En la primera iteración se puede intentar establecer una arquitectura del sistema que pueda ser utilizada durante el resto del proyecto.

3.6.1.4. 4. Producción: La fase de producción requiere de pruebas adicionales y revisiones de rendimiento antes de que el sistema sea trasladado al entorno del cliente.

3.6.1.5. 5. Mantenimiento: Mientras la primera versión se encuentra en producción, el proyecto XP debe mantener el sistema en funcionamiento al mismo tiempo que desarrolla nuevas iteraciones. Para realizar esto se requiere de tareas de soporte para el cliente.

3.6.1.6. 6.Muerte del Proyecto: Es cuando el cliente no tiene más historias para ser incluidas en el sistema. Esto requiere que se satisfagan las necesidades del cliente en otros aspectos como rendimiento y confiabilidad del sistema.

3.7. 7.Kanban: Es una de las llamadas metodología ágiles, aquellas que buscan gestionar de manera generalizada cómo se van completando las tareas. Kanban es una palabra japonesa que se compone de dos partes: Kan, que significa visual, y Ban, que hace referencia a tarjeta, de modo que como podemos deducir la metodología utiliza tarjetas para gestionar, de manera visual, la realización de determinados procesos y tareas.

3.7.1. Etapas

3.7.1.1. 1. Objetivos: se marcan los objetivos a largo plazo, con la idea de que todos los miembros del equipo los tengan en mente.

3.7.1.2. 2.Pendiente: engloba las tareas pendientes que se pueden afrontar de forma inmediata.

3.7.1.3. 3.Preparación: Aquí incluimos aquellas tareas que necesitan cierta discusión interna antes de ser afrontadas.

3.7.1.4. 4.Desarrollo: en este espacio situamos la tarea hasta que la terminemos. Si algo falla, regresar a la fase anterior.

3.7.1.5. 5.Prueba: comprobamos que todo funciona bien.

3.7.1.6. 6.Aplicación: la existencia de esta etapa depende de las características de cada tarea.

3.8. 8. Rational Unified Process (RUP):La metodología RUP utiliza el enfoque de la orientación a objetos en su diseño y está diseñado y documentado el uso de la notación UML para ilustrar los procesos en acción. Utiliza técnicas y prácticas probadas comercialmente. proporcionando técnicas que deben seguir los miembros del equipo de desarrollo de software con el fin de aumentar su productividad en el proceso de desarrollo.

3.8.1. Etapas

3.8.1.1. 1.Diseño: Contiene los flujos de trabajo necesarios para el acuerdo de las partes interesadas con los objetivos, la arquitectura y la planificación del proyecto.

3.8.1.2. 2.Elaboración: La preparación será para el diseño del sistema, como complemento de la encuesta y / o documentación de casos de uso, frente a la arquitectura del sistema, revisar el modelo de negocio para el proyecto e iniciar la versión del manual del usuario.

3.8.1.3. 3.Construcción: El desarrollo físico del software se inicia, códigos de producción, pruebas alfa. pruebas beta se llevaron a cabo al inicio de la fase de transición.

3.8.1.4. 4.Transición:En esta fase es la entrega de software, que se lleva a cabo el plan de despliegue y entrega, el seguimiento y la calidad del software.

3.9. 9. Rapid application development (RAD): El desarrollo rápido de aplicaciones es un proceso de desarrollo de software. El método comprende el desarrollo interactivo, la construcción de prototipos y el uso de utilidades CASE (Computer Aided Software Engineering). Tradicionalmente, el desarrollo rápido de aplicaciones tiende a englobar también la usabilidad, utilidad y la rapidez de ejecución.

3.9.1. Etapas

3.9.1.1. 1.Modelado de gestión: el flujo de información entre las funciones de gestión se modela de forma que responda a las siguientes preguntas: ¿Qué información conduce el proceso de gestión? ¿Qué información se genera? ¿Quién la genera? ¿A dónde va la información? ¿Quién la proceso?

3.9.1.2. 2. Modelado de datos: el flujo de información definido como parte de la fase de modelado de gestión se refina como un conjunto de objetos de datos necesarios para apoyar la empresa.

3.9.1.3. 3. Modelado de proceso: los objetos de datos definidos en la fase de modelado de datos quedan transformados para lograr el flujo de información necesario para implementar una función de gestión.

3.9.1.4. 3. Generación de aplicaciones: El DRA asume la utilización de técnicas de cuarta generación. En lugar de crear software con lenguajes de programación de tercera generación, el proceso DRA trabaja para volver a utilizar componentes de programas ya existentes o a crear componentes reutilizables.

3.9.1.5. 4. Pruebas de entrega: Como el proceso DRA enfatiza la reutilización, ya se han comprobado muchos de los componentes de los programas. Esto reduce tiempo de pruebas.

3.10. 10.EUP fue introducido originalmente para superar algunas carencias de RUP, a saber, la falta de rendimiento y utilidad así como la eventual retirada de un sistema de software. Se agregaron dos fases y varias disciplinas nuevas.

3.10.1. Etapas: Contiene las 4 primeras etpas de la metodologia RUP

3.10.1.1. 1. Produccion: Esta fase del EUP contiene las actividades de soporte y operación del sistema, para ello el aplicativo debe estar en funcionamiento.

3.10.1.2. 2. Retiro : cuando el aplicativo ya no estará más en uso.

4. Evolución de Software

4.1. etapas

4.1.1. 1950-1965

4.1.1.1. En los primeros años el software se contemplaba como un añadido, para el que existían pocos métodos sistemáticos. El desarrollo de los software eran realizados con grandes esfuerzos y se obtenían pocos éxitos.

4.1.1.1.1. Los problemas a ser resueltos eran principalmente de naturaleza técnica, el énfasis estaba en expresar algoritmos conocidos eficazmente en algún lenguaje de programación.

4.1.1.2. En estos primeros años lo normal era que el hardware fuera de propósito general. Por otra parte, el software se diseñaba a medida para cada aplicación y tenía una distribución relativamente pequeña.

4.1.2. 1965-1972

4.1.2.1. La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre máquina y las técnicas interactivas abrieron un nuevo mundo de aplicaciones y niveles de clasificación del hardware y software.

4.1.2.2. Los sistemas de tiempo real podían recoger, analizar y transformar datos de múltiples fuentes, controlando así los procesos y produciendo salidas en mili segundos en lugar de en minutos.

4.1.2.2.1. Los avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de bases de datos.

4.1.3. 1972-1989

4.1.3.1. El sistema distribuido, múltiples computadoras, cada una ejecutando funciones concurrentemente y comunicándose con alguna otra, incrementó notablemente la complejidad de los sistemas informáticos, las redes de área local y global, las comunicaciones digitales de alto ancho de banda y creciente demanda de acceso “instantáneo” a los datos, supusieron una fuerte presión sobre los desarrolladores del software.

4.1.3.1.1. llegaron los mircroprocesadores

4.1.4. 1989

4.1.4.1. Las arquitecturas informáticas están cambiando de entornos centralizados de grandes computadoras a entornos descentralizados cliente/servidor.

4.1.4.2. Las redes de información en todo el mundo proporcionan una infraestructura que iguala a expertos y políticos en pensar sobre una “superautopista de información” y una “conexión del ciberespacio”. ej: la internet

5. Paradigmas de desarrollo de software

5.1. consiste en métodos para llevar a cabo cómputos y la forma en la que deben estructurarse y organizarse las tareas que debe realizar un programa

5.1.1. Orientada A Servicios

5.1.1.1. La orientación a servicios es una forma de pensar en servicios, su construcción y sus resultados. Un servicio es una representación lógica de una actividad de negocio que tiene un resultado de negocio específico (ejemplo: comprobar el crédito de un cliente, obtener datos de clima, consolidar reportes de perforación)

5.1.2. Orientada A Objetos

5.1.2.1. El comportamiento del programa es llevado a cabo por objetos, entidades que representan elementos del problema a resolver y tienen atributos y comportamiento.

5.1.3. Dirigido Por Eventos

5.1.3.1. El flujo del programa está determinado por sucesos externos (por ejemplo, una acción del usuario).

5.1.4. Orientada A Aspectos

5.1.4.1. Apunta a dividir el programa en módulos independientes, cada uno con un comportamiento bien definido.

5.1.5. imperativo

5.1.5.1. Son aquellos que facilitan los cálculos por medio de cambios de estado, entendiendo como estado la condición de una memoria de almacenamiento. Los lenguajes estructurados en bloques, se refieren a los ámbitos anidados, es decir los bloques pueden estar anidados dentro de otros bloques y contener sus propias variables.

6. Lenguaje de modelado

6.1. DFD

6.1.1. Un diagrama de flujo de datos (DFD) traza el flujo de la información para cualquier proceso o sistema. Emplea símbolos definidos, como rectángulos, círculos y flechas, además de etiquetas de texto breves, para mostrar las entradas y salidas de datos, los puntos de almacenamiento y las rutas entre cada destino. Los diagramas de flujo de datos pueden variar desde simples panoramas de procesos incluso trazados a mano, hasta DFD muy detallados y con múltiples niveles que profundizan progresivamente en cómo se manejan los datos. Se pueden usar para analizar un sistema existente o para modelar uno nuevo.

6.2. UML

6.2.1. (Lenguaje Unificado de Modelado) es un lenguaje estándar para escribir planos de software, UML se puede utilizar para visualizar, especificar, construir y documentar los artefactos de un sistema que involucra una gran cantidad de software. UML prescribe un conjunto de notaciones y diagramas estándar para modelar sistemas orientados a objetos, y describe la semántica esencial de lo que estos diagramas y símbolos significan. UML se puede usar para modelar distintos tipos de sistemas como por ejemplo: sistemas de software, sistemas de hardware, y organizaciones del mundo real. UML ofrece nueve diagramas en los cuales modelar sistemas. Es un lenguaje muy expresivo, que cubre todas las vistas necesarias para desarrollar y luego desplegar tales sistemas.

6.3. BPMN

6.3.1. Business Process Model and Notation (BPMN) es una notación gráfica que describe la lógica de los pasos de un proceso de Negocio. Esta notación ha sido especialmente diseñada para coordinar la secuencia de los procesos y los mensajes que fluyen entre los participantes de las diferentes actividades. BPMN proporciona un lenguaje común para que las partes involucradas puedan comunicar los procesos de forma clara, completa y eficiente. La notación BPMN especifica el proceso de negocio en un diagrama en el que es fácil de leer tanto para los usuarios técnicos como para los usuarios de negocios. Es intuitivo y permite la representación de los detalles complejos del proceso.

7. Herramientas

7.1. Editores

7.1.1. 1. Eclipse: Este entorno es bastante conocido por los desarrolladores, se basa en un entorno de código abierto que posee una comunidad muy amplia que trabaja a su vez en plugins para facilitar nuestro manejo dentro del entorno. Sirve para Java, C++, PHP, Perl, etc. 2. NetBeans: Este entorno también es bastante utilizado por la comunidad, aquí se pueden crear bastantes aplicaciones tanto de web como de escritorio, a su vez que puede trabajar con Android mediante pluguins. Funciona más que nada para Java pero también se puede trabajar JavaScript, HTML5, PHP, C/C++, etc. 3. Visual Studio: Este entorno funciona con el lenguaje de Microsoft y actualmente es de pago, aquí podremos hacer aplicaciones web y de escritorio. El único lenguaje que soporta es Microsoft. 4. CodeLite: Es un entorno abierto y libre, funcional para bastantes sistemas operativos, todas las herramientas que se pueden observar dentro de su interfaz cumplen con la política de herramientas completamente libres. Este entorno soporta C/C++, PHP y Node.js.

7.2. Modelado

7.2.1. 1. ArgoUML: Este editor gratuito posee la capacidad de exportar varios formatos gráficos y en varios lenguajes de programación. Tiene las habilidades de generar diagramas en distintos formatos, generar código y soporte para bases de datos. 2. StarUML: Lo increíble con esta herramienta es que puede generar diagramas compatibles con toda la ofimática de Microsoft Office, a su vez que también es compatible con C++ y Java, también se pueden modificar los diagramas para hacerlos más comprensibles hacia los que no están acostumbrados al modelamiento UML casual. 3. Eclipse: Esta aplicacion requiere de una extension a parte para realizar un modelado UML y tambien permite que aquellos diagramas se conviertan en codigo. Las herramientas se llaman: UML2 y UML2 Tools. 4. Bizagi: Con esta herramienta se tiene la posibilidad de hacer diagramas y documentar los procesos de manera más eficiente, se enfoca más que nada en las organizaciones empresariales para que estas vean una facilidad en la modelación de todos sus procesos que deseen representar en diagramas.

7.3. Generadores de Código

7.3.1. CASE

7.3.1.1. Estas herramientas son de gran utilidad para el proceso de elaboración de software puesto que implementa parte de un diseño en forma de código automáticamente y también tiene la habilidad de una compilación automática, detección de errores, etc. Todas estas capacidades facilitan mucho la vida del desarrollador. Se clasifican en: Middle CASE: Automatizan las tareas de diseño y análisis dentro del desarrollo del software. Lower CASE: No realizan una automatización completa a la hora de generar código, detecta errores, cuanta también con la capacidad de depurar programas y automatiza la documentación de código.

7.3.1.2. 1. Microsoft Project: Su principal objetivo se encuentra en ayudar al administrador para la realización de planes y seguimiento de procesos dentro del trabajo. 2. Visual Paradigm for UML: Tiene una amplia cantidad de usuarios que dedican esta herramienta a diferentes usos como analizar sistemas, negocios, arquitectura, etc. Construye un sistema confiable mediante el uso de visualización mediante objetos. 3. ArgoUML: Esta herramienta posee funciones ya bastante avanzadas respecto a las anteriores herramientas, esta permite un amplio modelaje, soporta UML y está integrado con la WEB. 4. Poseidon: No viene estrictamente relacionado con la programación por computadora pero aun así presenta herramientas de notable ayuda como soporte con diagramas UML, genera código para Java y HTML y soporta gráficos de la mayoría de formatos.

7.3.2. MDA

7.3.2.1. 1. Representación directa: Es una estrategia que se basa más en cómo funciona el problemas respecto a la tecnología. Los demás modelos buscan más que nada separar sus problemas respecto a las decisiones que vaya tomando la tecnología. Esta estrategia se basa de que el desarrollo y mantenimiento de nuevo software se dan por los cambios de negocio más que por la evolución de las plataformas tecnológicas. 2. Automatización: El modelo MDA ya tiene previsto que con el tiempo surgirán nuevas funcionalidades que las herramientas de modelamiento, por eso como herramientas para el facilitamiento no se verán afectadas negativamente por este constante cambio puesto que estan un proceso constante de transformación. 3. Estándares Abiertos: Un gran reto para estas herramientas es incluir apoyo robusto para el desarrollo, que cuando se desarrolle un diagrama en UML este mismo pueda visualizarse en distintos formatos como por ejemplo en XML. Estos mecanismos ayudan bastante para la comunidad que los usa o incluso para nuevas personas que buscan este tipo de opciones.

8. Ingeniería de Software

8.1. Concepto

8.1.1. Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993).

8.1.2. Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993).

8.1.3. La Ingeniería del Software trata con diferentes áreas de la Informática y de las ciencias de la computación, como construcción de compiladores, desarrollos de Intranet/Internet o sistemas operativos, abarcando todas las fases del desarrollo de software.

8.2. Áreas de trabajo

8.2.1. La ingeniería del software trata campos muy variados de la informática y de las Ciencias de la Computación, que además se aplican a un amplio espectro de campos, tales como negocios, investigación científica, medicina, producción, logística, banca, meteorología, derecho, redes, entre otras muchas.

8.2.2. Administrar empresas de desarrollo de software. Proyectar y diseñar arquitecturas virtuales, soluciones inteligentes y software interactivo haciendo uso de técnicas emergentes tales como world wide web (WWW), cloud computing y redes sociales, entre otras. Ejecutar proyectos que garanticen el desarrollo y mantenimiento de la calidad del software. Impulsar soluciones móviles para las principales plataformas del mercado (Android, iOS, Windows Phone 7, etcétera) y de integración de software de sistemas heterogéneos a nivel empresarial. Tendrá la capacidad diseñar, proponer y poner en funcionamiento cualquier proyecto digital.

8.2.3. Administrar empresas de desarrollo de software. Proyectar y diseñar arquitecturas virtuales, soluciones inteligentes y software interactivo haciendo uso de técnicas emergentes tales como world wide web (WWW), cloud computing y redes sociales, entre otras. Ejecutar proyectos que garanticen el desarrollo y mantenimiento de la calidad del software. Impulsar soluciones móviles para las principales plataformas del mercado (Android, iOS, Windows Phone 7, etcétera) y de integración de software de sistemas heterogéneos a nivel empresarial. Tendrá la capacidad diseñar, proponer y poner en funcionamiento cualquier proyecto digital.