Ingeniería Del Software
Ingeniería Del Software
Ingeniería Del Software
desarrollan a partir de los antiguos y […] que todo debe operar entre sí y cooperar con cada uno
de los demás” [Day99].
Uso intensivo de redes. Una webapp reside en una red y debe atender las necesidades
? ¿Qué característica
diferencia las webapps de una comunidad diversa de clientes. La red permite acceso y comunicación mundiales
de otro software? (por ejemplo, internet) o tiene acceso y comunicación limitados (por ejemplo, una intranet
corporativa).
Concurrencia. A la webapp puede acceder un gran número de usuarios a la vez. En mu-
chos casos, los patrones de uso entre los usuarios finales varían mucho.
Carga impredecible. El número de usuarios de la webapp cambia en varios órdenes de
magnitud de un día a otro. El lunes tal vez la utilicen cien personas, el jueves quizá 10 000
usen el sistema.
Rendimiento. 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.
Disponibilidad. Aunque no es razonable esperar una disponibilidad de 100%, es fre-
cuente que los usuarios de webapps populares demanden acceso las 24 horas de los 365
días del año. Los usuarios en Australia o Asia quizá demanden acceso en horas en las que
las aplicaciones internas de software tradicionales en Norteamérica no estén en línea por
razones de mantenimiento.
Orientadas a los datos. La función principal de muchas webapp es el uso de hiperme-
dios para presentar al usuario final contenido en forma de texto, gráficas, audio y video.
Además, las webapps se utilizan en forma común para acceder a información que existe en
bases de datos que no son parte integral del ambiente basado en web (por ejemplo, comer-
cio electrónico o aplicaciones financieras).
6 En el contexto de este libro, el término aplicación web (webapp) agrupa todo, desde una simple página web que
ayude al consumidor a calcular el pago del arrendamiento de un automóvil hasta un sitio web integral que pro-
porcione servicios completos de viaje para gente de negocios y vacacionistas. En esta categoría se incluyen sitios
web completos, funcionalidad especializada dentro de sitios web y aplicaciones de procesamiento de informa-
ción que residen en internet o en una intranet o extranet.
www.FreeLibros.me
1. 3 INGENIERÍA DE SOFTWARE
Con objeto de elaborar software listo para enfrentar los retos del siglo XXI, el lector debe aceptar
algunas realidades sencillas:
PU
NT
• El software se ha incrustado profundamente en casi todos los aspectos de nuestras vidas
O y, como consecuencia, el número de personas que tienen interés en las características y
CLAVE funciones que brinda una aplicación específica8 ha crecido en forma notable. Cuando ha
Entender el problema antes de dar
de construirse una aplicación nueva o sistema incrustado, deben escucharse muchas
una solución.
opiniones. Y en ocasiones parece que cada una de ellas tiene una idea un poco distinta
de cuáles características y funciones debiera tener el software. Se concluye que debe
hacerse un esfuerzo concertado para entender el problema antes de desarrollar una aplica-
ción de software.
PU
NT
• Los requerimientos de la tecnología de la información que demandan los individuos,
O negocios y gobiernos se hacen más complejos con cada año que pasa. En la actualidad,
CLAVE grandes equipos de personas crean programas de cómputo que antes eran elaborados
El diseño es una actividad crucial de
por un solo individuo. El software sofisticado, que alguna vez se implementó en un
la ingeniería de software.
ambiente de cómputo predecible y autocontenido, hoy en día se halla incrustado en el
interior de todo, desde la electrónica de consumo hasta dispositivos médicos o sistemas
de armamento. La complejidad de estos nuevos sistemas y productos basados en
computadora demanda atención cuidadosa a las interacciones de todos los elementos
del sistema. Se concluye que el diseño se ha vuelto una actividad crucial.
7 Con las herramientas modernas es posible producir páginas web sofisticadas en unas cuantas horas.
8 En una parte posterior de este libro, llamaré a estas personas “participantes”.
www.FreeLibros.me
PU
NT • Los individuos, negocios y gobiernos dependen cada vez más del software para tomar
O decisiones estratégicas y tácticas, así como para sus operaciones y control cotidianos. Si
CLAVE el software falla, las personas y empresas grandes pueden experimentar desde un incon-
Tanto la calidad como la facilidad de
veniente menor hasta fallas catastróficas. Se concluye que el software debe tener alta
recibir mantenimiento son resultado
de un buen diseño. calidad.
Estas realidades simples llevan a una conclusión: debe hacerse ingeniería con el software en todas
sus formas y a través de todos sus dominios de aplicación. Y esto conduce al tema de este libro: la
ingeniería de software.
Aunque cientos de autores han desarrollado definiciones personales de la ingeniería de soft-
Cita: ware, la propuesta por Fritz Bauer [Nau69] en la conferencia fundamental sobre el tema todavía
sirve como base para el análisis:
“Más que una disciplina o cuer-
po de conocimientos, ingeniería [La ingeniería de software es] el establecimiento y uso de principios fundamentales de la ingeniería
es un verbo, una palabra de con objeto de desarrollar en forma económica software que sea confiable y que trabaje con eficiencia
acción, una forma de abordar en máquinas reales.
un problema.”
El lector se sentirá tentado de ampliar esta definición.9 Dice poco sobre los aspectos técnicos
Scott Whitmir
de la calidad del software; no habla directamente de la necesidad de satisfacer a los consumi-
dores ni de entregar el producto a tiempo; omite mencionar la importancia de la medición y la
metrología; no establece la importancia de un proceso eficaz. No obstante, la definición de
Bauer proporciona una base. ¿Cuáles son los “principios fundamentales de la ingeniería” que
pueden aplicarse al desarrollo del software de computadora? ¿Cómo se desarrolla software “en
forma económica” y que sea “confiable”? ¿Qué se requiere para crear programas de cómputo
que trabajen con “eficiencia”, no en una sino en muchas “máquinas reales” diferentes? Éstas son
las preguntas que siguen siendo un reto para los ingenieros de software.
El IEEE [IEEE93a] ha desarrollado una definición más completa, como sigue:
www.FreeLibros.me
FIGURA 1.3
Capas de la Herramientas
ingeniería de
software
Métodos
Proceso
WebRef oportuno del software de cómputo. El proceso define una estructura que debe establecerse para
CrossTalk es un periódico que da la obtención eficaz de tecnología de ingeniería de software. El proceso de software forma la base
información práctica sobre procesos, para el control de la administración de proyectos de software, y establece el contexto en el que
métodos y herramientas. Se encuentra
en www.stsc.hill.af.mil
se aplican métodos técnicos, se generan productos del trabajo (modelos, documentos, datos,
reportes, formatos, etc.), se establecen puntos de referencia, se asegura la calidad y se adminis-
tra el cambio de manera apropiada.
Los métodos de la ingeniería de software proporcionan la experiencia técnica para elaborar
software. Incluyen un conjunto amplio de tareas, como comunicación, análisis de los requeri-
mientos, modelación del diseño, construcción del programa, pruebas y apoyo. Los métodos de
la ingeniería de software se basan en un conjunto de principios fundamentales que gobiernan
cada área de la tecnología e incluyen actividades de modelación y otras técnicas descriptivas.
Las herramientas de la ingeniería de software proporcionan un apoyo automatizado o se-
miautomatizado para el proceso y los métodos. Cuando se integran las herramientas de modo
que la información creada por una pueda ser utilizada por otra, queda establecido un sistema
llamado ingeniería de software asistido por computadora que apoya el desarrollo de software.
www.FreeLibros.me