Vous êtes sur la page 1sur 21

ICI 542

INGENIERA DE SOFTWARE
Dr. Cristian Rusu
cristian.rusu@ucv.cl

2. Productos y procesos
software

2.1. Productos software


2.2. Procesos software

2.1. Productos software


Productos software:
n
Sistemas software que se distribuyen
a los usuarios, junto a la
documentacin que describe el modo
de instalacin y uso de esos productos
n
A veces son componentes de sistemas
ms complejos

2.1. Productos software


Clases principales de productos software :
n
Productos genricos
n

n
n

diseados y destinados por todo tipos de


usuarios
mayoritarios en la era PC
ms baratos

Productos personalizados (customized)

n
n
n
n

diseados y destinados por un usuario especfico


mayoritarios hasta los aos 1980
mucho ms costosos (todos los gastos de
desarrollo son cobrados de un solo usuario)

2.1.1. Evolucin del software


Primera era del software (hasta los aos sesenta):
n
n
n
n
n
n
n
n

n
n

procesamiento de datos en lotes


distribucin limitada del software
software personalizado al cliente
pocos mtodos sistemticos de desarrollo de software
no existan gerenciamientos en la realizacin del software
la realizacin de software fue un proceso casi emprico
ms importante era el hardware
muchas veces el fabricante y usuario de software eran la misma
persona
diseo del software se hizo en el mismo tiempo junto a la
programacin
la documentacin era casi inexistente
la ciencia de ingeniera de software todava no exista

2.1.1. Evolucin del software


Segunda era del software (hasta el fin de los 70):
n
n
n
n

sistemas multiusos
sistemas en tiempo real
primera generacin de sistemas de gestin de bases de datos
aparecen productos software de larga distribucin en varios
dominios (programas por computadoras mainframes y minicomputadoras distribuidos a cientos o miles de usuarios )
interaccin humano-mquina influenciada por la aparicin de los
sistemas multiusuarios
los programas fuentes contenan miles de instrucciones, cualquier
error detectado necesitaba un gran esfuerzo para su correccin
la mantencin de estos tipos de software era muy difcil, la cual
gener la primera crisis software

2.1.1. Evolucin del software


Tercera era del software (hasta el fin de los 80):
n
sistemas distribuidos (mltiples computadoras que
comunican y realizan en el mismo tiempo tareas
distintas para resolver el mismo problema)
n
las redes de extensin global demandaron nuevas y
mejores caractersticas en el desarrollo de software
n
inteligencia incorporada (embedded intelligence)
n
hardware performante y de bajo costo
n
aparecen y explotan los microprocesadores
n
impacto de los consumidores

2.1.1. Evolucin del software


Cuarta era del software:
n

n
n

n
n
n

n
n

grandes avances en las tecnologas hardware, arquitectura de los


computadores, de las redes locales y globales, de los sistemas
operativos y (como consecuencia) de las aplicaciones software
sistemas desktop de gran poder
tecnologas orientadas a objetos (reemplazan los mtodos
tradicionales de diseo y desarrollo de software en todas las
reas)
sistemas expertos
redes neuronales artificiales
la inteligencia artificial se traslada desde los laboratorios en las
aplicaciones prcticas
clculo paralelo
redes de computadoras a nivel mundial

2.1.1. Evolucin del software


n

La industria software afecta todas los


aspectos de la vida humana en general
Cualquier falla en los sistemas software
puede producir daos inmensos
La calidad y confiabilidad en el software
son extremadamente importantes!
La ingeniera de software ha adquirido una
gran importancia

2.1.1. Evolucin del software


n

Al principio de la poca de la computacin


los sistemas computacionales estaban
enfocados en la gestin del hardware
Los elementos hardware podra ser mas
fcilmente controlados: costo, eficiencia,
calidad
En el desarrollo del hardware se podran
aplicar principios ingenieriles

2.1.1. Evolucin del software


n

El software era ms un arte que un


trabajo ingenieril
Existan muy pocos mtodos formales
para el proceso de desarrollo de
software
Con el tiempo el enfoque cambi
desde el hardware al software

2.1.1. Evolucin del software


n

El proceso de desarrollo de software y


hardware son fundamentalmente
distintas
El hardware se fabrica en el sentido
clsico de la palabra mientras que el
software no se fabrica como un
elemento fsico, es un elemento lgico

2.1.1. Evolucin del software


Los problemas de calidad que se presentan
en los dos casos son distintos
Las curvas de fallas por el hardware y el
software tienen formas distintas:

El software no tiene una alta tasa de fallas al


final de la vida til al contrario del hardware
Los cambios efectuados en el software pueden
traer altas en las tasas de fallas, en cualquier
momento de la vida til

2.1.1. Evolucin del software


n

El hardware tiene una orientacin por


componentes
Si una componente falla en una
computadora, se puede reemplazar
La idea de desarrollar componentes
software que pueden ser reutilizado
(reusability) fue slo un deseo, por
mucho tiempo

2.1.1. Evolucin del software


n

Los primeros pasos en la reutilizacin


del software fueron las bibliotecas de
rutinas
Las rutinas existentes se pudieron
reutilizar tal como eran, sin que sea
posible el mejoramiento por adicin de
nuevas funcionalidades
Agregar nuevas funcionalidades fue
posible despus de la aparicin de las
tecnologas orientadas a objetos

2.1.1. Evolucin del software


n

El programador que usa objetos tiene


la posibilidad de particularizarlos y de
darle nuevas caractersticas, partiendo
desde las caractersticas que ya
posean
Las tecnologas orientadas a objetos
ofrecen la bases del software de
componentes
l ms conocido ejemplo de uso de
componentes software es el diseo de
las interfaces usuario

2.1.2. Tipos de aplicaciones


software
n

Los productos software pueden ser


utilizados en cualquier situacin que
se puede resolver en base a una
sucesin de operaciones predefinidas
(un algoritmo)
Dependiente del uso final, existen
varias categoras de aplicaciones
(productos) software

2.1.2. Tipos de aplicaciones


software
Los dos ms importantes criterios para la
categorizacin de los productos software son:

el contenido de la informacin que debe ser procesada


(datos de entrada y resultados de salida)
la determinacin de la informacin (predefinicin, orden
de aparicin, procesamiento de datos y eventos
ocurridos)

La dificultad de definir categoras genricas de


productos software crece con el aumento de la
complejidad de esos productos

2.1.2. Tipos de aplicaciones


software
Software de sistemas:
n
Colecciones de programas por computadoras con el
objetivo de servir a otros programas
n
Interaccionan fuertemente con el hardware, a nivel
bsico (mquina), tienen que cumplir varias tareas
concurrentes, gestionar y compartir recursos,
estructuras de datos complejos, y mltiples
interfaces externos
n
Ejemplos: sistemas operativos, drivers, rutinas de
comunicacin con otras mquinas, compiladores,
editores, gestionares de archivos, etc.

2.1.2. Tipos de aplicaciones


software
Software de tiempo real:
n
Monitorea, analiza y controla eventos que aparecen
en el mundo real, dando respuestas y tomando
decisiones en tiempo real
n
El tiempo de respuestas es muy corto
(habitualmente milisegundos)
n
Ejemplos: colectores de datos, controladores de
procesos industriales, sistemas de seguridad etc.

10

2.1.2. Tipos de aplicaciones


software
Software de gestin:
n
Gestiona bases de datos con
informaciones econmicas y de
negocios, entre otros,
reestructurndole para ofrecer soporte
necesario en la toma de decisiones
n
Ejemplos: transacciones bancarias,
cuentas, sistemas de pago, negocios
en Internet etc.

2.1.2. Tipos de aplicaciones


software
Software ingenieril o cientfico:
n
Tradicionalmente gestionan y procesan
datos numricos
n
Se usan en todas las reas de la ingeniera
y ciencia
n
Los algoritmos numricos convencionales se
complementan con nuevos tipos de
aplicaciones (diseo asistido por
computadora, sistemas de simulacin etc.)

11

2.1.2. Tipos de aplicaciones


software
Software incorporado (embedded) :
n
Sistemas de caractersticas limitadas,
destinados a realizar tareas especificas
n
Incorporados en varios equipos de uso
domestico o industrial, partiendo de
las microondas y llegando al
dispositivos de control para
automviles, sistemas GPS, etc.

2.1.2. Tipos de aplicaciones


software
Inteligencia artificial clsica:
n
Utiliza algoritmos non-numricos para
resolver problemas difcil o imposible
de resolver por mtodos clsicos
n
Sistemas expertos (sistemas basados
en conocimientos), basados en reglas
de decisin
n
Sistemas de reconocimiento de
patrones (pattern recognicion), como
voz, imgenes, etc.

12

2.1.2. Tipos de aplicaciones


software
Inteligencia computacional (Soft computing):
n
Enfoque alternativo a la computacin algortmica
n
Nuevas tcnicas que reflejan la capacidad del ser
humano de tomar decisiones en un entorno de
imprecisin:
n

n
n
n
n

Redes neuronales artificiales (artificial neural network,


neurocomputing)
Lgica borrosa (fuzzy logic)
Computacin evolutiva (evolutionary computation)
Aprendizaje en mquinas (machine learning)
Computacin probabilstica (probabilistic reasoning)

2.1.2. Tipos de aplicaciones


software
Redes neuronales artificiales:
n

Simulan la estructura y los procesos del cerebro


humano (las funciones de la neurona biolgica)
Los sistemas ANN pueden aprender de experiencias
anteriores y tomar decisiones en base de esas

Lgica borrosa:
n

Tolerante a la imprecisin y verdades parciales, tpicos


para el mundo real
Soluciones ms robustas, de bajo costo

13

2.1.3. Los atributos de los


productos software
La calidad de un producto software se refleja por los
atributos asociados a esto producto
Los atributos no son directamente asociados con lo
que hace el software
Dependiente del tipo de software, algunos atributos
son mas importante que otros:

para un software de uso general, es importante la facilidad


de utilizar el programa
para un sistema de tiempo real, es importante el tiempo de
reaccin (respuesta)
para un sistema de gestin (negocios) es importante la
seguridad

2.1.3. Los atributos de los


productos software
Los atributos generales, esenciales para cualquier
tipo de producto software son:
n

Usabilidad el software debe ser fcil de utilizar (debe


tener una interfaz de usuario apropiada y una
documentacin adecuada)
Mantenibilidad la posibilidad de hacer cambios en el
software, la posibilidad que el software evoluciona,
para cumplir las nuevas necesidades de los usuarios
Confiabilidad el software no debe causar daos
fsicos o econmicos en el caso de una falla del
sistema
Eficiencia el software debe usar eficientemente los
recursos del sistema (memoria, procesador etc.)

14

2.2. Procesos software


El proceso software consiste en el conjunto de actividades
y resultados asociados cuyo objetivo es obtener un
producto software.
Las actividades incluidas en todos los procesos software
son:
n
Especificaciones define la funcionalidad y los
constreimientos (restricciones) del producto software
n
Desarrollo la fabricacin del producto software
n
Validacin la validacin del producto software, para
que corresponde a las necesidades del consumidor
n
Evolucin el producto software tiene que evolucionar
para cumplir los requisitos que el consumidor demanda

2.2.1. Especificacin del


software
n

La actividad de especificacin del software,


denominada generalmente como ingeniera de
requerimientos, establece qu servicios se
requieren del sistema y las restricciones de
operacin y desarrollo del mismo.
Es una etapa critica, ya que los errores en esta
etapa producen problemas posteriores en el
diseo e implementacin del sistema

15

2.2.1. Especificacin del


software
El proceso de ingeniera de requerimientos
produce un documento de requerimientos, que
representa la especificacin del sistema
El documento presenta dos niveles de detalles:

para los clientes una declaracin de alto nivel de


requerimientos
para los desarrolladores del sistema una
especificacin detallada

2.2.1. Especificacin del


software
Las fases principales en el proceso de
ingeniera de requerimientos son:

n
n
n
n

Estudio de factibilidad
Obtencin y anlisis de requerimientos
Especificacin de requerimientos
Validacin de requerimientos

Las fases no se llevan a cabo


estrictamente secuencial, muchas
veces se entrelazan

16

2.2.1. Especificacin del


software
n

Estudio de factibilidad se estima si las

necesidades del usuario se pueden satisfacer


con las tecnologas actuales de software y
hardware se determina el costo del sistema
desde el punto de vista de negocios y si se
puede desarrollar dadas las restricciones del
presupuesto
Obtencin y anlisis de requerimientos se
establecen los requerimientos del sistema por
medio de observacin de los sistemas
existentes, discusiones con los usuarios y
proveedores, anlisis de tareas etc.

2.2.1. Especificacin del


software
n

Especificacin de requerimientos se traduce

la informacin recolectada durante el anlisis


en un documento que define el conjunto de
requerimientos
Validacin de requerimientos comprueba la
veracidad, consistencia y complecin de los
requerimientos; los errores detectados se
corrigen!

17

2.2.2. Diseo e
implementacin del software
n

El proceso de conversin de la
especificacin del sistema en un sistema
ejecutable incluye los procesos de diseo y
programacin de software y, a veces, un
refinamiento de la especificacin
El diseo de software es una descripcin de
su estructura, los datos que son partes del
sistema las interfaces entre los
componentes y, algunas veces, los
algoritmos utilizados

2.2.2. Diseo e
implementacin del software
n

El diseo se desarrolla de manera iterativa,


a travs de varios modelos del sistema, con
diferentes niveles de abstraccin
En cuanto se descompone el sistema, se
describen los errores y omisiones de las
etapas previas
La retroalimentacin del proceso permite
mejorar los modelos de diseo previo
El resultado final del proceso son
especificaciones precisas de los algoritmos y
estructuras de datos a implementarse

18

2.2.2. Diseo e
implementacin del software
El modelo general del proceso de diseo incluye
los siguientes actividades:
n
n
n
n
n
n

Diseo arquitectnico
Especificacin abstracta
Diseo de la interfaz
Diseo de componentes
Diseo de la estructuras de datos
Diseo de algoritmos

2.2.2. Diseo e
implementacin del software
La implementacin es generalmente denominada como
programacin.
n
Es bastante comn que las primeras etapas de
diseo y desarrollo de programas estn
entrelazadas
n
La programacin es una actividad personal y no
existe un proceso general que se siga comnmente
n
Las pruebas establecen la existencia de defectos
n
La localizacin y correccin de estos defectos se
denomina depuracin

19

2.2.3. Validacin del software


n

La validacin y verificacin del software se


realizan para comprobar que el sistema est
acorde a su especificacin y que cumple con
las expectativas de los usuarios/clientes
La mayora de los costos de validacin
aparecen despus de la implementacin,
cuando la funcionalidad del sistema se pone
a prueba
El proceso de pruebas es iterativo, con
retroalimentacin

2.2.3. Validacin del software


Las etapas del proceso de validacin del
software son:
n
n
n
n
n

Prueba de unidades
Prueba de mdulos
Prueba de subsistemas
Prueba del sistema
Prueba de aceptacin

20

2.2.4. Evolucin del software


n

El software ofrece una flexibilidad que el hardware


no la puede ofrecer
Los cambios en el hardware son mucho mas caros
que los cambios en el software
El proceso de mantenimiento del software es el
proceso de cambio de sistema una vez que se ha
puesto en funcionamiento
Aunque los costos iniciales de desarrollo de
software son inferiores a los costos de
mantenimiento, el proceso de mantenimiento es
menos problemtico que el desarrollo de software
original

2.2.4. Evolucin del software


n

Histricamente el proceso de desarrollo y de


evolucin de software fueron actividades distintas
Hoy en da pocos sistemas de software son
completamente nuevos, por lo tanto tiene mas
sentido ver el desarrollo y el mantenimiento como
actividades continuas
Es ms realista considerar a la ingeniera de
software como un proceso evolutivo en el cual el
software se cambia durante su periodo de vida,
como respuesta a los requerimientos cambiantes y
necesidades del usuario

21

Vous aimerez peut-être aussi