EL SOFTWARE Y LA INGENIERÍA DE SOFTWARE

Track and organize your meetings within your company

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
EL SOFTWARE Y LA INGENIERÍA DE SOFTWARE por Mind Map: EL SOFTWARE Y LA INGENIERÍA DE SOFTWARE

1. 1.1 La Naturaleza del Software

1.1. 1.1.1 Definición de software

1.1.1. El software es: 1) instrucciones 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, y 3) información descriptiva tanto en papel como en formas virtuales que describen la operación y uso de los programas.

1.1.2. El software se desarrolla o modifica con intelecto; no se manufactura en el sentido clásico

1.1.3. El software no se “desgasta”

1.1.4. Aunque la industria se mueve hacia la construcción basada en componentes, la mayor parte del software se construye para un uso individualizado

1.2. 1.1.2 Dominios de aplicación del software

1.2.1. Software de sistemas: conjunto de programas escritos para dar servicio a otros programas.

1.2.2. Software de aplicación: programas aislados que resuelven una necesidad específica de negocios

1.2.3. Software de ingeniería y ciencias: se ha caracterizado por algoritmos “devoradores de números”. Las aplicaciones van de la astronomía a la vulcanología, del análisis de tensiones en automóviles a la dinámica orbital del transbordador espacial

1.2.4. Software incrustado: reside dentro de un producto o sistema y se usa para implementar y controlar características y funciones para el usuario final y para el sistema en sí

1.2.5. Software de línea de productos: es diseñado para proporcionar una capacidad específica para uso de muchos consumidores diferentes.

1.2.6. Aplicaciones web: llamadas “webapps”, esta categoría de software centrado en redes agrupa una amplia gama de aplicaciones.

1.2.7. Software de inteligencia artificial: hace uso de algoritmos no numéricos para resolver problemas complejos que no son fáciles de tratar computacionalmente o con el análisis directo

1.2.8. Computación en un mundo abierto: el rápido crecimiento de las redes inalámbricas quizá lleve pronto a la computación verdaderamente ubicua y distribuida.

1.2.9. Construcción de redes: la red mundial (World Wide Web) se está convirtiendo con rapidez tanto en un motor de computación como en un proveedor de contenido.

1.2.10. Fuente abierta: tendencia creciente que da como resultado la distribución de código fuente para aplicaciones de sistemas de modo que mucha gente pueda contribuir a su desarrollo.

1.3. 1.1.3 Software heredado

1.3.1. • El software debe adaptarse para que cumpla las necesidades de los nuevos ambientes del cómputo y de la tecnología. • El software debe ser mejorado para implementar nuevos requerimientos del negocio. • El software debe ampliarse para que sea operable con otros sistemas o bases de datos modernos. • La arquitectura del software debe rediseñarse para hacerla viable dentro de un ambiente de redes

2. El software es un transformador de información que produce, administra, adquiere, modifica, despliega o transmite información que puede ser tan simple como un solo bit o tan compleja como una presentación con multimedios generada a partir de datos obtenidos de decenas de fuentes independientes

3. 1.2 La Naturaleza de las WebApps

3.1. Uso intensivo de redes. Una webapp reside en una red y debe atender las necesidades de una comunidad diversa de clientes.

3.2. Concurrencia. A la webapp puede acceder un gran número de usuarios a la vez. En muchos casos, los patrones de uso entre los usuarios finales varían mucho.

3.3. Carga impredecible. El número de usuarios de la webapp cambia en varios órdenes de magnitud de un día a otro.

3.4. Si un usuario de la webapp debe esperar demasiado (para entrar, para el procesamiento por parte del servidor, para el formado y despliegue del lado del cliente), él o ella quizá decidan irse a otra parte.

3.5. Disponibilidad. Aunque no es razonable esperar una disponibilidad de 100%, es frecuente que los usuarios de webapps populares demanden acceso las 24 horas de los 365 días del año.

3.6. Orientadas a los datos. La función principal de muchas webapp es el uso de hipermedios para presentar al usuario final contenido en forma de texto, gráficas, audio y video

3.7. Contenido sensible. La calidad y naturaleza estética del contenido constituye un rasgo importante de la calidad de una webapp

3.8. Evolución continua. A diferencia del software de aplicación convencional que evoluciona a lo largo de una serie de etapas planeadas y separadas cronológicamente, las aplicaciones web evolucionan en forma continua.

3.9. Aunque la inmediatez es una característica en muchos dominios de aplicación, es frecuente que las webapps tengan plazos de algunos días o semanas para llegar al mercado

3.10. Seguridad. Debido a que las webapps se encuentran disponibles con el acceso a una red, es difícil o imposible limitar la población de usuarios finales que pueden acceder a la aplicación

3.11. Estética. Parte innegable del atractivo de una webapp es su apariencia y percepción.

4. 1.3 Ingeniería de Software

4.1. El software se ha incrustado profundamente en casi todos los aspectos de nuestras vidas y, como consecuencia, el número de personas que tienen interés en las características y funciones que brinda una aplicación específica8 ha crecido en forma notable.

4.2. Los requerimientos de la tecnología de la información que demandan los individuos, negocios y gobiernos se hacen más complejos con cada año que pasa.

4.3. Los individuos, negocios y gobiernos dependen cada vez más del software para tomar decisiones estratégicas y tácticas, así como para sus operaciones y control cotidianos.

4.4. A medida que aumenta el valor percibido de una aplicación específica se incrementa la probabilidad de que su base de usuarios y longevidad también crezcan.

5. 1.4 El Proceso de Software

5.1. Diferencias entre Proyectos

5.1.1. • Flujo general de las actividades, acciones y tareas, así como de las interdependencias entre ellas

5.1.2. • Grado en el que las acciones y tareas están definidas dentro de cada actividad estructural

5.1.3. • Grado en el que se identifican y requieren los productos del trabajo

5.1.4. • Forma en la que se aplican las actividades de aseguramiento de la calidad

5.1.5. • Manera en la que se realizan las actividades de seguimiento y control del proyecto

5.1.6. • Grado general de detalle y rigor con el que se describe el proceso

5.1.7. • Grado con el que el cliente y otros participantes se involucran con el proyecto

5.1.8. • Nivel de autonomía que se da al equipo de software

5.1.9. • Grado con el que son prescritos la organización y los roles del equipo

5.2. Actividades de sombrilla

5.2.1. Seguimiento y control del proyecto de software: permite que el equipo de software evalúe el progreso comparándolo con el plan del proyecto y tome cualquier acción necesaria para apegarse a la programación de actividades

5.2.2. Administración del riesgo: evalúa los riesgos que puedan afectar el resultado del proyecto o la calidad del producto.

5.2.3. Aseguramiento de la calidad del software: define y ejecuta las actividades requeridas para garantizar la calidad del software.

5.2.4. Revisiones técnicas: evalúa los productos del trabajo de la ingeniería de software a fin de descubrir y eliminar errores antes de que se propaguen a la siguiente actividad

5.2.5. Medición: define y reúne mediciones del proceso, proyecto y producto para ayudar al equipo a entregar el software que satisfaga las necesidades de los participantes

5.2.6. Administración de la configuración del software: administra los efectos del cambio a lo largo del proceso del software

5.2.7. Administración de la reutilización: define criterios para volver a usar el producto del trabajo y establece mecanismos para obtener componentes reutilizables

5.2.8. Preparación y producción del producto del trabajo: agrupa las actividades requeridas para crear productos del trabajo, tales como modelos, documentos, registros, formatos y listas

5.3. Comunicación. Antes de que comience cualquier trabajo técnico, tiene importancia crítica comunicarse y colaborar con el cliente (y con otros participantes)

5.4. Planeación. Cualquier viaje complicado se simplifica si existe un mapa. Un proyecto de software es un viaje difícil, y la actividad de planeación crea un “mapa” que guía al equipo mientras viaja

5.5. Modelado. Ya sea usted diseñador de paisaje, constructor de puentes, ingeniero aeronáutico, carpintero o arquitecto, a diario trabaja con modelos

5.6. Construcción. Esta actividad combina la generación de código (ya sea manual o automatizada) y las pruebas que se requieren para descubrir errores en éste

5.7. Despliegue. El software (como entidad completa o como un incremento parcialmente terminado) se entrega al consumidor que lo evalúa y que le da retroalimentación, misma que se basa en dicha evaluación

6. 1.5 Practica de la Ingeniería de Software

6.1. 1.5.1 La Esencia de la practica

6.1.1. Resolver Problemas:

6.1.1.1. Entender el problema: En ocasiones es difícil de admitir, pero la mayor parte de nosotros adoptamos una actitud de orgullo desmedido cuando se nos presenta un problema. Escuchamos por unos segundos y después pensamos: Claro, sí, entiendo, resolvamos esto. Desafortunadamente, entender no siempre es fácil.

6.1.1.2. Planear la solución. Ahora entiende el problema (o es lo que piensa) y no puede esperar para escribir el código. Antes de hacerlo, cálmese un poco y haga un pequeño diseño

6.1.1.3. Ejecutar el plan. El diseño que creó sirve como un mapa de carreteras para el sistema que quiere construir. Puede haber desviaciones inesperadas y es posible que descubra un camino mejor a medida que avanza, pero el “plan” le permitirá proceder sin que se pierda

6.1.1.4. Examinar el resultado. No se puede estar seguro de que la solución sea perfecta, pero sí de que se ha diseñado un número suficiente de pruebas para descubrir tantos errores como sea posible

6.2. 1.5.2 Principios Generales

6.2.1. Primer principio: La razón de que exista todo Un sistema de software existe por una razón: dar valor a sus usuarios. Todas las decisiones deben tomarse teniendo esto en mente. Antes de especificar un requerimiento del sistema, antes de notar la funcionalidad de una parte de él, antes de determinar las plataformas del hardware o desarrollar procesos

6.2.2. Segundo principio: MSE (Mantenlo sencillo, estúpido…) El diseño de software no es un proceso caprichoso. Hay muchos factores por considerar en cualquier actividad de diseño. Todo diseño debe ser tan simple como sea posible, pero no más.

6.2.3. Tercer principio: Mantener la visión Una visión clara es esencial para el éxito de un proyecto de software. Sin ella, casi infaliblemente el proyecto terminará siendo un ser “con dos [o más mentes]”. Sin integridad conceptual, un sistema está amenazado de convertirse en una urdimbre de diseños incompatibles unidos por tornillos del tipo equivocado

6.2.4. Tercer principio: Mantener la visión Una visión clara es esencial para el éxito de un proyecto de software. Sin ella, casi infaliblemente el proyecto terminará siendo un ser “con dos [o más mentes]”.

6.2.5. Cuarto principio: Otros consumirán lo que usted produce Rara vez se construye en el vacío un sistema de software con fortaleza industrial. En un modo u otro, alguien más lo usará, mantendrá, documentará o, de alguna forma, dependerá de su capacidad para entender el sistema.

6.2.6. Quinto principio: Ábrase al futuro Un sistema con larga vida útil tiene más valor. En los ambientes de cómputo actuales, donde las especificaciones cambian de un momento a otro y las plataformas de hardware quedan obsoletas con sólo unos meses de edad, es común que la vida útil del software se mida en meses y no en años

6.2.7. Sexto principio: Planee por anticipado la reutilización La reutilización ahorra tiempo y esfuerzo.15 Al desarrollar un sistema de software, lograr un alto nivel de reutilización es quizá la meta más difícil de lograr.

6.2.8. Séptimo principio: ¡Piense! Este último principio es tal vez el que más se pasa por alto. Pensar en todo con claridad antes de emprender la acción casi siempre produce mejores resultados. Cuando se piensa en algo es más probable que se haga bien.