Anda di halaman 1dari 31

Una introduccin a la Ingeniera de Software

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 1

Objetivos

Introducir y comprender la Ingeniera de Software y explicar su importancia. Establecer respuestas a preguntas clave acerca de la Ingeniera 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

Tpicos expuestos

Preguntas frecuentes acerca de la Ingeniera de Software. Responsabilidad tica y profesional.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 3

Ingeniera de Software

Las economas de TODAS las naciones desarrolladas son dependientes de software y sistemas informticos. Cada vez ms sistemas son controlados por software. La Ingeniera de Software concierne teoras, mtodos y herramientas para el desarrollo profesional de software. Los gastos en software representan una fraccin significativa del PIB en todos los pases desarrollados.
Software Engineering, 7th edition. Chapter 1 Slide 4

Ian Sommerville 2004

Costos del Software

Los costos del software a menudo dominan en los costos de un sistema computacional o informtico. Los costos de software en una PC son a menudo mayores que el costo del hardware. Cuesta ms 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 Ingeniera de Software le compete el desarrollo de software rentable.
Software Engineering, 7th edition. Chapter 1 Slide 5

Ian Sommerville 2004

Preguntas frecuentes acerca de Ingeniera de Software


Qu es Software? Qu es la Ingeniera de Software? Cul es la diferencia entre Ingeniera de Software y Computacin? Cul es la diferencia entre Ingeniera de Software e Ingeniera 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 Ingeniera de Software

Cules son los costos que implica la Ingeniera de Software? Cules son las metodologas de desarrollo de Software? Qu son las herramientas CASE (ComputerAided Software Engineering) Cules son los atributos de un buen software? Cules son los desafos primordiales frente a la Ingeniera de Software?
Software Engineering, 7th edition. Chapter 1 Slide 7

Ian Sommerville 2004

Qu es software?

Programas de cmputo y documentacin asociada, como ser documentos de requerimientos, arquitectura y modelos de diseo 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:

Genricos 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 genrico o reutilizando software existente.
Software Engineering, 7th edition. Chapter 1 Slide 8

Ian Sommerville 2004

Qu es la Ingeniera de Software?

La Ingeniera de Software es una disciplina de la ingeniera que concierne a todo lo referente con produccin de software. Los ingenieros de software deberan adoptar un enfoque sistemtico y organizado con respecto a su trabajo, utilizar herramientas y tcnicas apropiadas con relacin al problema planteado, las restricciones del desarrollo y los recursos disponibles.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 9

Cul es la diferencia entre Ingeniera de Software y Computacin?

La computacin comprende teoras y fundamentos de cualquier sistema de cmputo; a la Ingeniera de Software le concierne los aspectos prcticos del desarrollo y entrega de software til. Las teoras de la computacin an son insuficientes para respaldar completamente a la Ingeniera de Software (indistintamente a, ejemplo, la fsica y la ingeniera elctrica).

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 10

Cul es la diferencia entre Ingeniera de Software e ingeniera de sistemas?

A la ingeniera de sistemas le competen todos los aspectos de desarrollo de sistemas basados en cmputos, incluyendo hardware, software y procesos de ingeniera. La Ingeniera 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 estn involucrados con la especificacin del sistema, diseo arquitectnico, integracin y despliegue del mismo.
Software Engineering, 7th edition. Chapter 1 Slide 11

Ian Sommerville 2004

Qu es un proceso de software?

Un conjunto sistemtico de actividades cuya meta es el desarrollo o la evolucin del software. Actividades genricas en todos los procesos de software son:
Especificacin lo que el sistema debera hacer y sus restricciones de desarrollo Desarrollo produccin del sistema software Validacin comprobando que el software es lo que el cliente quiere Evolucin cambios y mantenimiento en el software con relacin a los cambios en los requerimientos y demandas.
Software Engineering, 7th edition. Chapter 1 Slide 12

Ian Sommerville 2004

Qu es un modelo de proceso de software?

Una representacin simplificada de un proceso de software, presentada desde una perspectiva especfica. Ejemplos de perspectivas de proceso son:
Perspectiva de flujo de trabajo secuencia de actividades; Perspectiva de flujo de datos flujo de informacin; Perspectiva de Casos de Uso quin hace qu (funcionalidad). Modelo en Cascada; Desarrollo iterativo; Ingeniera de Software basada en componentes.

Modelos de proceso genricos


Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 13

Cules son los costos de Ingeniera de Software?

Rigurosamente, 60% de los costos son de desarrollo, 40% son costos de prueba. Para software hecho a medida, los costos de evolucin a menudo exceden los costos de desarrollo. Varan 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 distribucin de los costos depende del modelo empleado para el desarrollo del software
Software Engineering, 7th edition. Chapter 1 Slide 14

Ian Sommerville 2004

Distribucin de costos por actividad


Waterfall mod el 0 25 50 75 100 Sp ecif icatio n Design Develo pment Integ ration and tes tin g

Iterative develo pmen t 0 25 50 75 1 00

Sp ecif icatio n

Iterativ e d evelop men t ineerin g 50 75

Sys tem tes tin g

Co mpo nent-based so ftware en g 0 25

1 00

Sp ecif icatio n

Develo pment

Integ ration and tes tin g

Develo pment an d evolu tion cos ts for lo ng -lifetime sy st 0 10 200

ems 30 400

Sys tem d ev elop ment

Sys tem evo lu tion

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

Cules son las metodologas de desarrollo de software?

Acercamientos estructurados al desarrollo de software que incluyen modelos del sistema, notaciones, reglas, pautas de diseo y pasos a seguir. Descripciones del modelo
Descripciones de modelos grficos que deben ser producidos; Restricciones aplicadas a los modelos del sistema; Pautas para un buen diseo en la prctica; Qu actividades deben seguirse.

Reglas

Recomendaciones

Pasos a seguir

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 17

Qu son las herramientas CASE (ComputerAided 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 metodologa de desarrollo. Herramientas CASE tempranas o Superiores
Herramientas para soportar las actividades tempranas de requerimientos y diseo dentro del proceso de software; Herramientas para soportar actividades posteriores como ser la programacin, depuracin y prueba o testeo.

Herramientas CASE tardas o Inferiores

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 18

Cules 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;
El software debe ser confiable; El software no debera hacer mal uso de los recursos del sistema; El software debe aceptar las necesidades de los usuarios para los cuales fue diseado. Esto significa que debe ser entendible, de utilidad y compatible con otros sistemas.
Software Engineering, 7th edition. Chapter 1 Slide 19

Confiabilidad

Eficiencia

Aceptabilidad

Ian Sommerville 2004

Cules son los desafos primordiales frente a la Ingeniera de Software?


Heterogeneidad, entrega y confianza. Heterogeneidad


Tcnicas de desarrollo para la construccin de software que puedan encararse con plataformas heterogneas y ambientes de ejecucin apropiados; Tcnicas de desarrollo que lleven a una entrega de software ms rpida; Tcnicas de desarrollo que demuestren que el software es de confianza para con sus usuarios.

Entrega

Confianza

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 20

Responsabilidad tica y profesional

La Ingeniera de Software implica responsabilidades mayores que el simple uso de habilidades tcnicas. Los ingenieros de software deben comportarse de manera honesta y ticamente responsable si van a ser respetados como profesionales. Comportamiento ticamente responsable es mucho ms que simplemente actuar dentro de la ley.
Software Engineering, 7th edition. Chapter 1 Slide 21

Ian Sommerville 2004

Aspectos de responsabilidad profesional

Confidencialidad
Los ingenieros deberan normalmente respetar la confidencialidad de sus clientes independientemente de que se haya firmado o no un previo acuerdo de confidencialidad. Los ingenieros no deberan pretender tener mayor capacidad (intelectual y laboral) de la que tienen, deben aceptar conscientemente trabajo que est acorde a su capacidad.

Capacidad

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 22

Aspectos de responsabilidad profesional

Derechos de propiedad intelectual


Los ingenieros deberan 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. Los ingenieros de software no deberan usar sus habilidades tcnicas 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).

Mal uso de la computadora

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 23

Cdigo de Etica ACM/IEEE

Las sociedades profesionales en los Estados Unidos cooperaron para producir un cdigo de prctica tica. Miembros de estas organizaciones fueron consecuentes con el cdigo de prctica tica cuando se asociaron. El cdigo contiene ocho principios relacionados al comportamiento y las decisiones hechas por ingenieros de software profesionales, incluyendo a los que lo ejercan, educadores, encargados, supervisores y editores, asi como aprendices y estudiantes de la profesin.
Software Engineering, 7th edition. Chapter 1 Slide 24

Ian Sommerville 2004

Cdigo de Etica - prembulo

Prembulo
La versin corta del cdigo resume aspiraciones a un alto nivel de abstraccin; las clusulas que se incluyen en la versin completa dan ejemplos y detalles de cmo estas aspiraciones cambian nuestro modo de actuar como profesionales de la Ingeniera 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 vacas; juntas, las aspiraciones y los detalles forman un cdigo cohesivo. Los ingenieros de software se comprometern a hacer del anlisis, especificacin, diseo, desarrollo, prueba y mantenimiento de software una profesin respetable y beneficiosa. Acorde a su compromiso con la salud, bienestar y seguridad del pblico, los ingenieros de software se adherirn a los ocho principios siguientes:
Software Engineering, 7th edition. Chapter 1 Slide 25

Ian Sommerville 2004

Cdigo de Etica - Principios

PUBLICO
Los ingenieros de software actuarn constantemente con el inters pblico. Los ingenieros de software actuarn acorde al mayor inters de sus clientes y empleadores en constancia con el inters pblico. Los ingenieros de software garantizarn que sus productos y relativas modificaciones van acorde a los estndares profesionales ms altos posibles.

CLIENTE Y EMPLEADOR

PRODUCTO

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 26

Cdigo de Etica - Principios

JUICIO
Los ingenieros de software mantendrn su integridad e independencia de juicio como profesional. Gerentes y lderes de Ingeniera de Software suscribirn y promovern un acercamiento tico hacia el manejo de desarrollo de software y evolucin. Los ingenieros de Software incrementarn la integridad y reputacin de la profesin en constancia con el inters pblico.

GERENCIA

PROFESION

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 27

Cdigo de Etica - Principios

COLEGAS
Los ingenieros de software sern condescendientes y brindarn apoyo a sus colegas. Los ingenieros de software participarn en la formacin continua con respecto a la prctica de su profesin y promovern un acercamiento tico a la prctica de la profesin.

UNO MISMO

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 28

Dilemas Eticos

Desacuerdo en principio con las polticas de administracin superior. El empleador acta de un modo no tico y lanza un sistema de seguridad crtico sin terminar la prueba del sistema. Participacin en el desarrollo de armamento militar o sistemas nucleares.

Ian Sommerville 2004

Software Engineering, 7th edition. Chapter 1

Slide 29

Puntos Clave

La Ingeniera de Software es una disciplina de la ingeniera concerniente a todos los aspectos de la produccin de software. Los productos software estn consistidos de programas desarrollados y su documentacin 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 bsicas son la especificacin del software, desarrollo, validacin y evolucin. Las metodologas 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.
Software Engineering, 7th edition. Chapter 1 Slide 30

Ian Sommerville 2004

Puntos Clave

Las herramientas CASE son sistemas de software diseadas para soportar actividades rutinarias en el proceso de software, como ser: editar diagramas de diseo, 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 profesin y la sociedad. No deberan simplemente preocuparse de aspectos tcnicos. Las sociedades profesionales publican cdigos de conducta que establecen los estndares de comportamiento que se esperan de sus miembros.
Software Engineering, 7th edition. Chapter 1 Slide 31

Ian Sommerville 2004