Uploaded by Dani González

Fundamentos basicos IS

advertisement
Fundamentos
básicos
Ingeniería del Software
Ingeniería de Software
Las economías de los países desarrollados
dependen en gran parte del software.
Mas y más sistemas son actualmente
controlados por software.
La Ingeniería de Software concierne a
teorías, métodos y herramientas para el
desarrollo profesional de software.
El gasto en La Ingeniería de Software,
representa un alto porcentaje del PIB de los
países desarrollados.
Ingeniería de Software: Conceptos
Básicos
¿Que es la Ingeniería de Software ?
¿Cual es la diferencia entre un programador y un
Ingeniero de Software?
¿Cual es la diferencia entre un Ingeniero de
Software y un Ingeniero de Sistemas?
¿Cual es la diferencia entre la Ingeniería de
Software y la Computación ?
¿Que es un sistema software ?
¿Que es un modelar un sistema software ?
¿Que actividades son necesarias para el desarrollo
de software (proceso)?
Estado del arte en Ing. De
Software
¿Es una ciencia rigurosa con fuertes fundamentos
matemáticos?
¿Es una campo técnico bien desarrollado con
mucho de disciplina de ingeniería?
O está realmente en un estado primitivo...
A lo más una serie de “mejores prácticas”,
desarrolladores de software construyen software
y si éstos funcionan entonces nosotros
estudiamos cómo ellos lo hicieron.
Si éstos funcionan por un largo tiempo entonces
estudiamos sus procesos de software aun más
cuidadosamente.
¿Que es la Ingeniería de Software? I
La Ingeniería de Software es una disciplina de la Ingeniería que
concierne a todos los aspectos de la producción de software, se
ocupa del desarrollo del software.
Término que aparece por primera vez en 1968. La producción de
programas debe abordarse como una ingeniería más.
Disciplina que comprende todos los aspectos de la producción
de software, desde las etapas iniciales hasta el mantenimiento
“disciplina de ingeniería”: aplicación de teorías, métodos y
herramientas para solucionar problemas, y teniendo en cuenta
restricciones financieras y organizativas
“todos los aspectos de producción”: comprende procesos
técnicos del desarrollo y actividades como la administración de
proyectos, desarrollo de herramientas, métodos y teorías
Se enfrenta al software como un producto de ingeniería que
requiere: planificación, análisis, diseño, implementación, pruebas
y mantenimiento
¿Que es la Ingeniería de Software? II
Trata de las teorías, métodos y herramientas que
los profesionales del desarrollo del software deben
utilizar.
No solo comprende los procesos técnicos del
desarrollo.
También los principios más relevantes de la
dirección y control de este proceso
También el desarrollo de nuevas teorías, métodos y
herramientas de apoyo a la producción del software.
Diferencia entre Ingeniería de
Software y Computación
La Ingeniería del Software se fundamenta en
técnicas relacionadas con:
ciencia de la computación, programación, ingeniería,
administración, matemáticas, economía,...
La computación concierne a la teoría y fundamentos
de cualquier sistema de computo, sea de hardware
o de software.
La Ingeniería de software concierne solo al
desarrollo de sistemas o productos de software
La Ingeniería de Software todavía mantiene ñas
distancias de otras ciencia e ingenierías como los
son la Química, la Ingeniería Civil o la Electrónica.
Ingeniería de Sistemas e Ingeniería de
Software
La Ingeniería de Sistemas concierne a todos
los aspectos del desarrollo de sistemas
basados en cómputo, información y
conocimiento que incluyen el hardware,
software, los procesos, métodos y
organización de Ingeniería.
La Ingeniería de Software es solo parte de
este proceso.
Forma parte de la “Ingeniería de Sistemas”
Ingeniería del Software.
Antecedentes-Evolución
Bohem 76
“La aplicación práctica del conocimiento científico al diseño y
construcción de programas de computador y la documentación
asociada requerida para su desarrollo, operación y
mantenimiento”
IEEE 83
“ La investigación sistemática para el desarrollo operación,
mantenimiento y requerimientos del software”
donde software es:
“ Programas de computador, procedimientos, reglas, posiblemente
la documentación asociada y los datos pertinentes para la
operatividad de un sistema informático”.
Ingeniería del Software.
Antecedentes-evolución
Fairley 85
“La ingeniería del Software es la disciplina tecnológica y
de gestión dedicada a la producción sistemática y al
mantenimiento
de
los
productos
software
desarrollados y modificados con un coste y tiempo
estimado”
Sommerville 89
“ El desarrollo y mantenimiento sistemático de software
certificado que resuelve correctamente un conjunto
preciso de especificaciones”.
Ingeniería del Software.
Definición
"El sistemático desarrollo y mantenimiento de
software certificado que resuelve correctamente
un conjunto preciso de especificaciones“.
Ingeniería del Software.
Certificación
Una garantía escrita de que un sistema o programa cumple con
sus especificaciones.
Una autorización escrita que establece que un sistema de
computación es seguro y esta permitido operar en un entorno
definido, produciendo información sensible.
La demostración formal de aceptabilidad del sistema para
obtener autorización para su uso operacional.
El proceso de confirmación que un sistema o programa es
capaz de satisfacer sus especificaciones requeridas en un
entorno operativo. Certificación dada en uso bajo las actuales
condiciones y utilizado para evaluar no solo el software en si
mismo, sino también las especificaciones en las cuales fue
construido.
El procedimiento por el cual personal debidamente autorizado
determina, verifica y da fe por escrito de que un proceso,
función, programa cumple un requerimiento dado.
Ingeniería del Software.
Software correcto
Libre de defectos de diseño y codificación. Libre
de fallos.
Cumple las especificaciones requeridas.
Cumple con las expectativas de los usuarios.
Ingeniería del Software.
Especificación
Un documento que prescribe, un completo,
preciso, verificable, conjunto de requerimientos,
diseño comportamiento y otras características de
un sistema o componente del sistema.
El proceso de desarrollar una especificación.
La declaración de un conjunto de requerimientos
que son satisfechos por un producto.
Otros conceptos de la ingeniería
del software
Sistemas y modelos
sistema: realidad subyacente
modelo: cualquier abstracción de la realidad
Productos de trabajo
artefacto o elemento que se produce durante el desarrollo
(documento, fragmento de software,...)
dos tipos:
producto de trabajo interno: producto para el consumo interno del
proyecto (por ejemplo, una revisión de la estructura de la base de
datos, resultados de pruebas para el gerente,...)
entrega: producto de trabajo para un cliente (especificación de
requisitos, manual de usuario, producto final,...)
Otros conceptos de la ingeniería
del software
Objetivos:
principios de alto nivel que se utilizan para guiar el proyecto
definen los atributos realmente importantes del sistema
(seguridad, fiabilidad,...)
a veces hay conflicto entre objetivos (por ejemplo,
seguridad y bajo coste) que aumentan la complejidad del
proyecto
Otros conceptos de la ingeniería
del software
Requerimientos
características que debe tener el sistema
requerimiento funcional: área de funcionalidad que debe
soportar el sistema (por ejemplo, proporcionar billetes de
tren)
requerimiento no funcional: restricción que se establece
sobre el funcionamiento del sistema (por ejemplo,
proporcionar billetes de tren en menos de un segundo)
Restricciones: por ejemplo, utilización de un determinado
lenguaje, de una determinada plataforma o de un sistema
antiguo que el cliente no quiere retirar
Otros conceptos de la ingeniería
del software
Actividades, tareas y recursos
actividad (o fase): conjunto de tareas que se realiza con un
propósito específico (obtención de requisitos, entrega,
administración,...) que pueden componerse de otras actividades
tarea: unidad elemental de trabajo que puede ser administrada;
consumen recursos, dan como resultado productos de trabajo y
dependen de productos de trabajo producidos por otras tareas
recursos: bienes que se utilizan para realizar el trabajo:
tiempo, equipamiento y recursos humanos
al planificar, el gerente divide el trabajo en tareas y les asigna
recursos
Otros conceptos de la ingeniería
del software
Notaciones, métodos y metodologías
notación: conjunto de reglas gráficas o de texto para representar
un modelo (UML, Unified Modelling Language, es una notación
gráfica orientada a objetos para representar modelos)
método: técnica repetible para resolver un problema específico.
Por ejemplo:
un algoritmo de ordenación es un método para ordenar
elementos en una lista
la administración de la configuración es un método para el
seguimiento de los cambios
metodología: colección de métodos, actividades y herramientas
para la resolución de una clase de problemas (OMT,
metodología de Booch, Catalysis, Proceso Unificado de
Desarrollo,...)
Otros conceptos de la ingeniería
del software
Participantes: todas las personas
involucradas en el proyecto
cliente: encarga y paga el sistema
desarrolladores: construyen el sistema (analistas,
diseñadores, programadores,...)
gerente o director del proyecto: planifica y calcula
el presupuesto, coordina a los desarrolladores y
cliente
usuarios finales: los que van a utilizar el sistema
Otros conceptos de la ingeniería
del software
Papel (rol)
conjunto de responsabilidades en el proyecto o
en el sistema
asociado con un conjunto de tareas y se asigna a
un participante
un mismo participante puede cumplir varios
papeles
Modelado
Modelado: método básico de la ciencia
Modelo
representación abstracta de un sistema que da
respuesta a preguntas sobre el sistema
útiles cuando se manejan sistemas grandes, pequeños,
complicados o caros para tener una experiencia de
primera mano
permiten visualizar y comprender sistemas que no
existen o que sólo se supone que existen
ejemplos:
modelos
Modelado
Los ingenieros de software necesitan
comprender el ambiente de funcionamiento del sistema: construyen
modelos del dominio del problema (sistemas de bolsa, control de
tráfico aéreo,...)
comprender los distintos sistemas que podrían construir para
evaluar alternativas: construyen modelos del dominio de la solución
técnicas y herramientas para construir los modelos (por ejemplo,
diagramas de UML)
SI ST EMA DE PA GOS Y
FA CT URA CIÓN
Sol ici ta r b iene s o servicios
Hojear fact uras
<<subsistema>>
Sistema de
visión
<<subsistema>>
iniciador
Co nf irm ar p ed ido
iniciador
Enviar factura al comprador
iniciador
iniciador
Planificar pago
factura
Rechazar
factura
<<subsistema>>
Controlador del
brazo
<<subsistema>>
<<subsistema>>
Co ntrolador del
asidero
Sistema d e i dentificaci ón
de objetos
Pagar factura
Vendedor
Comprador
<<extend>>
iniciador
Re al iza r t ransa cció n
Pagar factura en día
vencimiento
Pagar recargo por saldo deudor
<<subsistema>>
<<subsistema>>
Sistema de selección
de embalajes
Sistema de
cuentas bancarias
En vi ar av iso
<<subsistema>>
<<subsistema>>
Sistema de
embalaje
Contro lado r de cinta
transportadora
Solución de problemas
Los ingenieros de software buscan una solución adecuada, en
varios pasos:
1. Formular el problema
2. Analizar el problema
3. Buscar soluciones
4. Decidir la solución más adecuada
5. Especificar la solución
Actividades básicas del desarrollo
1. obtención de requerimientos
2. análisis
3. diseño del sistema
4. implementación
Solución de problemas
Otras actividades del desarrollo para evaluar la adecuación de
los modelos
revisiones del análisis: el modelo del dominio del problema se
compara con la realidad del cliente
revisiones del diseño: el modelo del dominio de la solución se
compara con los objetivos del proyecto
pruebas: el sistema se valida contra el modelo del dominio de
la solución
administración del proyecto: se compara el modelo del proceso
de desarrollo (calendario y presupuesto) con la realidad
(trabajos entregados y recursos gastados)
La ingeniería del software
Trata de ser la respuesta a los problemas y crisis del software
Combinación de elementos:
métodos completos para
todas las fases
mejores técnicas de
control de calidad
mejores elementos
de programación
herramientas para
Automatizar los métodos
filosofía de coordinación,
Control y buena gestión
Ingenieros del Software
Los ingenieros del software deben:
Adoptar un enfoque sistémico y organizado
en su trabajo y
Utilizar las herramientas y técnicas más
apropiadas dependiendo
Del problema a resolver
Las restricciones del desarrollo y
Los recursos disponibles
Responsabilidad ética y
profesional en ISW (I)
Está cobrando más interés en los últimos años.
Los ingenieros de software tienen responsabilidades frente a la
profesión y la sociedad.
Su responsabilidad no es exclusivamente técnica.
Deben comportarse de forma ética y moralmente responsable si
quieren ser respetados como profesionales.
Un ingeniero de software no debería comportarse de manera
deshonesta o de una forma que perjudique a la profesión.
Responsabilidad ética y
profesional en ISW (II)
Hay áreas donde el concepto de conducta
aceptable no está limitada por la ley sino por la
noción más tenue de responsabilidad profesional.
Algunas de ellas son:
Confidencialidad. Se debería respetar la confidencialidad
de la empresa empleadora o de los clientes
independientemente de que se haya firmado un contrato
formal de confidencialidad.
Competencia. El ingeniero de software no debería aceptar
conscientemente trabajo que esté fuera de su
competencia.
Responsabilidad ética y
profesional en ISW (III)
Derechos de la propiedad intelectual. El ingeniero de
software debería conocer las leyes que gobiernan la
propiedad intelectual, como patentes y derechos de autor,
y debería proteger la propiedad intelectual de clientes y
empleadores.
Mal uso del ordenador. El ingeniero de software no
debería usar sus conocimientos técnicos para utilizar de
forma incorrecta los ordenadores de otras personas. El
mal uso va desde lo relativamente trivial (usar el ordenador
de la empresa para jugar, p.ej.) hasta lo extremadamente
serio (diseminación de virus).
Responsabilidad ética y
profesional en ISW (IV)
ACM (Association for Computer Machinery) e IEEE (Institute
of Electrical and Electronic Engineers) publicaron en 1999
un código conjunto de ética y conducta profesional,
que establece los estándares de conducta
esperados de sus miembros.
http://www.acm.org/serving/se/code_s.html
Es preciso aceptar dicho código para poder ser
miembro de estas organizaciones.
⇒ El Octavo Principio establece como obligación el aprendizaje
continuo a través de toda la vida profesional.
Download