Está en la página 1de 31

Una introducción a la Ingeniería de

Software

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1


Objetivos

Introducir y comprender la Ingeniería de
Software y explicar su importancia.

Establecer respuestas a preguntas clave
acerca de la Ingeniería de Software.

Introducir aspectos éticos y profesionales y
explicar la importancia de los mismos para los
ingenieros de software.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 2


Tópicos expuestos


Preguntas frecuentes acerca de la Ingeniería
de Software.

Responsabilidad ética y profesional.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 3


Ingeniería de Software

Las economías de TODAS las naciones desarrolladas
son dependientes de software y sistemas
informáticos.

Cada vez más sistemas son controlados por
software.

La Ingeniería de Software concierne teorías,
métodos y herramientas para el desarrollo
profesional de software.

Los gastos en software representan una fracción
significativa del PIB en todos los países
desarrollados.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 4


Costos del Software

Los costos del software a menudo dominan en los
costos de un sistema computacional o informático.
Los costos de software en una PC son a menudo
mayores que el costo del hardware.

Cuesta más el mantenimiento del software que el
desarrollo del mismo. Para sistemas de larga vida,
los costos de mantenimiento se multiplican con
respecto a los costos de desarrollo.

A la Ingeniería de Software le compete el
desarrollo de software rentable.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 5


Preguntas frecuentes acerca de
Ingeniería de Software

Qué es Software?

Qué es la Ingeniería de Software?

Cuál es la diferencia entre Ingeniería de
Software y Computación?

Cuál es la diferencia entre Ingeniería de
Software e Ingeniería de Sistemas?

Qué es un proceso de software?

Qué es un modelo de proceso de software?

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 6


Preguntas frecuentes acerca de
Ingeniería de Software

Cuáles son los costos que implica la Ingeniería de
Software?

Cuáles son las metodologías de desarrollo de
Software?

Qué son las herramientas CASE (Computer-
Aided Software Engineering)

Cuáles son los atributos de un buen software?

Cuáles son los desafíos primordiales frente a la
Ingeniería de Software?

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 7


Qué es software?

Programas de cómputo y documentación asociada, como ser
documentos de requerimientos, arquitectura y modelos de
diseño y manuales de usuario.

Los productos software pueden ser desarrollados para un
cliente particular o bien para el mercado en general.

Los productos software pueden ser:
• Genéricos – desarrollados para ser vendidos a una gama de diversos
clientes, ejemplo: software como Excel o Word.
• Hecho a medida – desarrollado para un cliente particular acorde a
sus requerimientos y especificaciones.

Nuevo software puede ser creado desarrollando nuevos
programas, configurando sistemas de software genérico o
reutilizando software existente.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 8


Qué es la Ingeniería de Software?

La Ingeniería de Software es una disciplina de
la ingeniería que concierne a todo lo referente
con producción de software.

Los ingenieros de software deberían adoptar
un enfoque sistemático y organizado con
respecto a su trabajo, utilizar herramientas y
técnicas apropiadas con relación al problema
planteado, las restricciones del desarrollo y
los recursos disponibles.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 9


Cuál es la diferencia entre Ingeniería de
Software y Computación?


La computación comprende teorías y
fundamentos de cualquier sistema de cómputo;
a la Ingeniería de Software le concierne los
aspectos prácticos del desarrollo y entrega de
software útil.

Las teorías de la computación aún son
insuficientes para respaldar completamente a
la Ingeniería de Software (indistintamente a,
ejemplo, la física y la ingeniería eléctrica).

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 10


Cuál es la diferencia entre Ingeniería de
Software e ingeniería de sistemas?


A la ingeniería de sistemas le competen todos los
aspectos de desarrollo de sistemas basados en
cómputos, incluyendo hardware, software y
procesos de ingeniería. La Ingeniería de Software
es parte de este proceso, haciendo referencia al
desarrollo de la infraestructura del software,
aplicaciones y bases de datos en el sistema.

Los ingenieros de sistemas están involucrados con
la especificación del sistema, diseño
arquitectónico, integración y despliegue del mismo.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 11


Qué es un proceso de software?

Un conjunto sistemático de actividades cuya meta
es el desarrollo o la evolución del software.

Actividades genéricas en todos los procesos de
software son:
• Especificación – lo que el sistema debería hacer y sus
restricciones de desarrollo
• Desarrollo – producción del sistema software
• Validación – comprobando que el software es lo que el
cliente quiere
• Evolución – cambios y mantenimiento en el software con
relación a los cambios en los requerimientos y demandas.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 12


Qué es un modelo de proceso de
software?

Una representación simplificada de un proceso de
software, presentada desde una perspectiva específica.

Ejemplos de perspectivas de proceso son:
• Perspectiva de flujo de trabajo – secuencia de actividades;
• Perspectiva de flujo de datos – flujo de información;
• Perspectiva de Casos de Uso – quién hace qué (funcionalidad).

Modelos de proceso genéricos
• Modelo en Cascada;
• Desarrollo iterativo;
• Ingeniería de Software basada en componentes.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 13


Cuáles son los costos de Ingeniería de
Software?


Rigurosamente, 60% de los costos son de
desarrollo, 40% son costos de prueba. Para
software hecho a medida, los costos de evolución
a menudo exceden los costos de desarrollo.

Varían acorde al tipo de sistema a desarrollar y a
los requerimientos con respecto a los atributos
del mismo, como ser el funcionamiento y la
confiabilidad del sistema.

La distribución de los costos depende del modelo
empleado para el desarrollo del software

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 14


Distribución de costos por
actividad
Waterfall model
0 25 50 75 100

Specification Design Development Integ ration and testing

Iterative development

0 25 50 75 1 00

Specification Iterative development System testing

Component-based software eng ineering

0 25 50 75 1 00

Specification Development Integ ration and testing

Development and evolution costs for long-lifetime syst ems


0 10 200 30 400

System development System evolution

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 15


Costos de desarrollo del producto

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 16


Cuáles son las metodologías de desarrollo de
software?

Acercamientos estructurados al desarrollo de
software que incluyen modelos del sistema, notaciones,
reglas, pautas de diseño y pasos a seguir.

Descripciones del modelo
• Descripciones de modelos gráficos que deben ser producidos;

Reglas
• Restricciones aplicadas a los modelos del sistema;

Recomendaciones
• Pautas para un buen diseño en la práctica;

Pasos a seguir
• Qué actividades deben seguirse.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 17


Qué son las herramientas CASE (Computer-
Aided Software Engineering)


Sistemas de software cuya finalidad es la de proveer
soporte automatizado para actividades de proceso o
desarrollo de software.

Los sistemas CASE son usados con frecuencia como
soporte dentro de la metodología de desarrollo.

Herramientas CASE tempranas o Superiores
• Herramientas para soportar las actividades tempranas de
requerimientos y diseño dentro del proceso de software;

Herramientas CASE tardías o Inferiores
• Herramientas para soportar actividades posteriores como ser
la programación, depuración y prueba o testeo.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 18


Cuáles son los atributos de un buen software?


El software debe entregar la funcionalidad y el
funcionamiento requeridos por el usuario al él mismo, y
debe ser mantenible, confiable y aceptable.

Mantenibilidad
• El software debe evolucionar para cubrir necesidades
cambiantes;

Confiabilidad
• El software debe ser confiable;

Eficiencia
• El software no debería hacer mal uso de los recursos del
sistema;

Aceptabilidad
• El software debe aceptar las necesidades de los usuarios
para los cuales fue diseñado. Esto significa que debe ser
entendible, de utilidad y compatible con otros sistemas.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 19
Cuáles son los desafíos primordiales frente a la
Ingeniería de Software?


Heterogeneidad, entrega y confianza.

Heterogeneidad
• Técnicas de desarrollo para la construcción de software que
puedan encararse con plataformas heterogéneas y
ambientes de ejecución apropiados;

Entrega
• Técnicas de desarrollo que lleven a una entrega de software
más rápida;

Confianza
• Técnicas de desarrollo que demuestren que el software es
de confianza para con sus usuarios.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 20


Responsabilidad ética y profesional

La Ingeniería de Software implica
responsabilidades mayores que el simple uso de
habilidades técnicas.

Los ingenieros de software deben comportarse
de manera honesta y éticamente responsable
si van a ser respetados como profesionales.

Comportamiento éticamente responsable es
mucho más que simplemente actuar dentro de
la ley.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 21


Aspectos de responsabilidad
profesional

Confidencialidad
• Los ingenieros deberían normalmente respetar la
confidencialidad de sus clientes
independientemente de que se haya firmado o no
un previo acuerdo de confidencialidad.

Capacidad
• Los ingenieros no deberían pretender tener mayor
capacidad (intelectual y laboral) de la que tienen,
deben aceptar conscientemente trabajo que esté
acorde a su capacidad.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 22


Aspectos de responsabilidad
profesional

Derechos de propiedad intelectual
• Los ingenieros deberían estar conscientes de las leyes que
gobiernan el uso de propiedad intelectual, como ser patentes
y derechos reservados. Deben ser cuidadosos al garantizar
que la propiedad intelectual de sus clientes está protegida.

Mal uso de la computadora
• Los ingenieros de software no deberían usar sus habilidades
técnicas para un mal uso de las computadoras de otras
personas. El mal uso de una computadora comprende desde
lo relativamente simple (jugar en la computadora del cliente)
hasta lo extremamente serio (diseminar virus).

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 23


Código de Etica ACM/IEEE

Las sociedades profesionales en los Estados Unidos
cooperaron para producir un código de práctica ética.

Miembros de estas organizaciones fueron
consecuentes con el código de práctica ética cuando
se asociaron.

El código contiene ocho principios relacionados al
comportamiento y las decisiones hechas por
ingenieros de software profesionales, incluyendo a
los que lo ejercían, educadores, encargados,
supervisores y editores, asi como aprendices y
estudiantes de la profesión.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 24


Código de Etica - preámbulo

Preámbulo
• La versión corta del código resume aspiraciones a un alto nivel de
abstracción; las cláusulas que se incluyen en la versión completa
dan ejemplos y detalles de cómo estas aspiraciones cambian
nuestro modo de actuar como profesionales de la Ingeniería de
Software. Sin las aspiraciones, los detalles pueden llegar a ser
legalistas y aburridos; sin los detalles, las aspiraciones pueden
llegar a ser ruidosas pero vacías; juntas, las aspiraciones y los
detalles forman un código cohesivo.
• Los ingenieros de software se comprometerán a hacer del
análisis, especificación, diseño, desarrollo, prueba y
mantenimiento de software una profesión respetable y
beneficiosa. Acorde a su compromiso con la salud, bienestar y
seguridad del público, los ingenieros de software se adherirán a
los ocho principios siguientes:

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 25


Código de Etica - Principios

PUBLICO
• Los ingenieros de software actuarán constantemente con el
interés público.

CLIENTE Y EMPLEADOR
• Los ingenieros de software actuarán acorde al mayor interés
de sus clientes y empleadores en constancia con el interés
público.

PRODUCTO
• Los ingenieros de software garantizarán que sus productos y
relativas modificaciones van acorde a los estándares
profesionales más altos posibles.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 26


Código de Etica - Principios

JUICIO
• Los ingenieros de software mantendrán su integridad e
independencia de juicio como profesional.

GERENCIA
• Gerentes y líderes de Ingeniería de Software suscribirán y
promoverán un acercamiento ético hacia el manejo de
desarrollo de software y evolución.

PROFESION
• Los ingenieros de Software incrementarán la integridad y
reputación de la profesión en constancia con el interés
público.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 27


Código de Etica - Principios

COLEGAS
• Los ingenieros de software serán
condescendientes y brindarán apoyo a sus colegas.

UNO MISMO
• Los ingenieros de software participarán en la
formación continua con respecto a la práctica de
su profesión y promoverán un acercamiento ético a
la práctica de la profesión.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 28


Dilemas Eticos

Desacuerdo en principio con las políticas de
administración superior.

El empleador actúa de un modo no ético y lanza
un sistema de seguridad crítico sin terminar la
prueba del sistema.

Participación en el desarrollo de armamento
militar o sistemas nucleares.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 29


Puntos Clave

La Ingeniería de Software es una disciplina de la ingeniería
concerniente a todos los aspectos de la producción de
software.

Los productos software están consistidos de programas
desarrollados y su documentación asociada. Atributos
esenciales del producto son la mantenibilidad, formalidad,
eficiencia y utilidad.

El proceso de software consiste en actividades involucradas
en el desarrollo de productos software. Actividades básicas
son la especificación del software, desarrollo, validación y
evolución.

Las metodologías son maneras organizadas de producir
software. Estas incluyen sugerencias para el proceso a
seguir, notaciones a usar, reglas que rigen las descripciones
del sistema que son pautas para el desarrollo.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 30
Puntos Clave

Las herramientas CASE son sistemas de software diseñadas
para soportar actividades rutinarias en el proceso de
software, como ser: editar diagramas de diseño,
verificaciones de la consistencia de diagramas y seguir el
rastro de las pruebas del programa que han sido ejecutadas.

Los ingenieros de software tienen responsabilidades para
con la profesión y la sociedad. No deberían simplemente
preocuparse de aspectos técnicos.

Las sociedades profesionales publican códigos de conducta
que establecen los estándares de comportamiento que se
esperan de sus miembros.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 31

También podría gustarte