Está en la página 1de 32

Ingeniera de Software

Unidad 1

L.I. Patricia Arieta


Melgarejo
M.S.I. Eloisa Ruz

Antecedentes del Software

Tema 1: introduccin

Programa

Introduccin

Proceso de software y modelos de desarrollo


Gestin de proyectos de software
Fases del desarrollo de software
Aseguramiento de calidad de software
Gestin de configuracin de software
Evolucin del software
Mejoramiento de procesos

Introduccin
Software
Evolucin del Software
1950

1960

- o r ie n t a c i n b a t c h
- d is tr ib u c i n lim it a d a
- s o f t w a r e " c u s t o m iz a d o "
o " a la m e d id a "

1970

- m u lt i- u s u a r io
- t ie m p o r e a l
-b a s e s d e d a to s
- p ro d u c to s (c a s a s
d e s o ftw a re )

1980

- s is t e m a s d is t r ib u id o s
- in t e lig e n c ia in t e g r a d a
- h a r d w a r e b a jo c o s t o
im p a c t o
en
el
c o n s u m id o r

1990

2000

- p o d e r o s o s s is t e m a s
d e e s c r it o r io
- t e c n o lo g a s O O
- s is t e m a s e x p e r t o s
- r e d e s n e u r o n a le s ( IA )
- c o m p u t a c i n p a r a le la

Introduccin
Software
Grandes problemas actuales
Retraso respecto al potencial de hardware
Insatisfaccin de la demanda
Mantencin
Mala percepcin de la disciplina
Ineficiencia
Altos costos
Baja Confiabilidad
Escasa Ingeniera

Introduccin
Software
Proceso de software
Nuevo e inmaduro
No ocurre aislado
Transforma modelos: transforma
necesidades y requerimientos en
sistemas

Introduccin
Software
Qu es Software?
Cdigo fuente ms todos aquellos productos de trabajo asociados
que se han generado durante el desarrollo y mantenimiento

Desde la perspectiva de negocios, es estratgico. Acta como


diferenciador.

Es diferente a cualquier otra cosa que se construya: captura


informacin, produce informacin, y es informacin en s mismo.

Introduccin

Productos de Software
Productos genricos.

Productos que son producidos por una organizacin para ser vendidos al
mercado.

Productos hechos a medida.

Sistemas que son desarrollados bajo pedido a un desarrollador especfico.

La mayor parte del gasto del software es en


productos genricos, pero hay ms esfuerzo
en el desarrollo de los sistemas hechos a
medida.

Introduccin
Caractersticas de los Productos de Software

Mantenibles.

Debe ser posible que el software evolucione y que siga


cumpliendo con sus especificaciones.

Confiabilidad.

El software no debe causar danos fsicos o econmicos en el caso


de fallos.

Eficiencia.

El software no debe desperdiciar los recursos del sistema.

Utilizacin adecuada.

El software debe contar con una interfaz de usuario adecuada y su


documentacin.

Introduccin
Software
Componentes del Software:

Introduccin
Crisis de Software
Sntomas
Funcionalidad incorrecta
Desarrollo y mantencin inadecuadas
Insatisfaccin de la demanda
Problemas
Carencia de informacin sobre que realizamos y como
Insatisfaccin de clientes y usuarios
Calidad sospechosa
Mantencin difcil y costosa

Introduccin
Crisis de Software
Sntomas
Funcionalidad incorrecta
Desarrollo y mantencin inadecuadas
Insatisfaccin de la demanda
Problemas
Carencia de informacin sobre que realizamos y como
Insatisfaccin de clientes y usuarios
Calidad sospechosa
Mantencin difcil y costosa

Introduccin
Crisis de Software
Potenciales causas
Carcter lgico del software
Formacin profesional (falta de...?)
Entrenamiento y actualizacin
Resistencia al cambio
Solucin
Enfoque ingenieril Enfoque formal de resolucin
de problemas

Anlisis

Enfoque de sistemas

Implementacin

Enfoque de ingeniera

Introduccin
Ingeniera de Software
Define un conjunto de tcnicas y herramientas para la resolucin de
un problema e implementacin de la solucin
Establecimiento y uso de principios con caracteres de ingeniera
apropiados para obtener, eficientemente, software confiable, que opere
eficaz y eficientemente en mquinas reales
Fritz Bauer
Ambigedades
Cules son los principios adecuados aplicables al desarrollo de sw?
Cmo desarrollar econmicamente sw confiable?
Qu implica crear sw que opere eficientemente en mquinas reales?

Introduccin
Ingeniera de Software
Omisiones
Calidad de software
Satisfaccin de las necesidades del cliente
Mediciones y mtricas
Madurez del proceso de desarrollo

Introduccin
Ingeniera de Software
Software engineering is a layered
technology....

Herramientas
Metodos
Procesos
Enfoque de calidad

Introduccin
Ingeniera de Software
Objetivos
Maximizar la calidad
Maximizar productividad
Minimizar riesgos

Introduccin
Ingeniera de Software
Dificultades
De produccin de software
Esenciales
Complejidad
Conformidad
Necesidad de cambios
Invisibilidad

Accidentales
Metodologas
No silver bullet?

Introduccin
Ingeniera de Software
Dificultades
Mitos
Basta con tener estndares y procedimientos
Basta con la tecnologa de punta
Si estoy atrasado, pongo ms gente y me pongo
al da
Hay que partir programando inmediatamente
Los cambios se acomodan fcilmente
El cdigo es el nico producto

Introduccin
Ingeniera de Software
Dificultades
Contractuales
Time to market
Cambio en la relacin de costos entre el hardware y el
software
Acceso a los computadores
Redes
Tecnologa de Orientacin a Objetos
Interfaces grficas
Resultados impredecibles al usar el Modelo en cascada

Introduccin
Ingeniera de Software
Enfoque para una disciplina slida
Abstraccin
Diferentes propsitos, diferentes niveles de
generalizacin
Notacin y mtodos de anlisis y diseo
Facilita la comunicacin, colaboracin, consistencia y
corroboracin
Prototipos e Interfaces usuarias
Da soporte a la especificacin de los requerimientos, a
estudios de factibilidad y al diseo de IHM
Disminuye la brecha entre el dominio de la aplicacin
y el desarrollo

Introduccin
Ingeniera de Software
Arquitectura del sistema
Clave para una fcil implementacin y
para la expansin del sistema
Proceso de desarrollo
Reuso
Mediciones
Herramientas y ambientes integrados

Introduccin
Principios de Ingeniera de Software
Rigor y formalidad
Proceso de desarrollo es una actividad creativa que
necesita de rigurosidad para concretar resultados
Cundo ser riguroso y cuando ser creativo?
Impacto
Producto - confiabilidad, validacin, mantencin,
reusabilidad, comprensin e interoperabilidad
Proceso - timeliness y productividad

Introduccin
Principios de Ingeniera de Software

Separacin de aspectos
Idea: Abarcar y resolver los diferentes aspectos de un problema
separadamente
Cada aspecto involucra una decisin
Producto - funcionalidad, confiabilidad, eficiencia, interfaz usuari
seguridad,...
Proceso - ambiente, organizacin, procedimientos, herramientas...
Cmo separar?
Tiempo- planificacin de actividades y recursos
Atributos eficiencia
Visiones - interfaz, procedimientos, datos
Partes - subproblemas
Desventaja: se pierde la posibilidad de optimizar

Introduccin
Principios de Ingeniera de Software
Modularidad
Un sistema complejo puede ser divido en piezas denominadas
mdulos. Un sistema particionado en mdulos se denomina modular.
La modularidad est asociado y facilita el principio anterior
Permite trabajar en mdulos aisladamente
Se preocupa, tambin, de las relaciones entre los mdulos durante
su integracin
Objetivos
Descomposicin de un sistema complejo
Composicin de un sistema a partir de mdulos existentes
Comprensin del sistema en piezas
Para alcanzar dichos objetivos es necesario contar con mdulos con
alta cohesin y bajo acoplamiento

Introduccin
Principios de Ingeniera de Software
Abstraccin
Identificar aspectos relevantes de un fenmeno ignorando los detalles

Es un tipo de separacin de aspectos por nivel de importancia o


detalle

Cuanto y qu ignorar? Cada abstraccin debe entregar slo la


informacin til a su propsito.

Permite abarcar la complejidad

Introduccin
Principios de Ingeniera de Software
Anticipacin al cambio

El software cambia constantemente. Por qu?


Requerimientos ambiguos
Nuevas necesidades
Cambios por reparacin o evolucin

Impacto
Evolucin del software
Reusabilidad

Introduccin
Principios de Ingeniera de Software
Generalidad
Existen tareas que realiza comnmente un cierto nicho

Generalizar una solucin tiene alto costo. Debe ser evaluada


cuidadosamente. Ejemplos:
Planillas de clculo, procesadores de texto

Tendencia: Desarrollar paquetes para reas de aplicacin


especficas

Introduccin
Principios de Ingeniera de Software
Incrementalidad

Conseguir un objetivo a travs de incrementos

Ventajas
Clarificar objetivos y metas
Feedback
Anticipar cambios

Introduccin
Principios de Ingeniera de Software
Principios generales
Hacer de la calidad primer
objetivo
Software de alta calidad es
posible
Entregar tempranamente
productos a los clientes
Determinar el problema
antes de escribir los
requerimientos
Evaluar alternativas de
diseo

Usar un modelo (paradigma)


apropiado
Usar lenguajes diferentes para
fases diferentes
Minimizar la distancia
intelectual
Decidir las tcnicas antes que
las herramientas
Hacerlo correcto antes de
hacerlo rpido

Introduccin
Principios de Ingeniera de Software
Inspeccionar diseo y cdigo
Gestin ms importante que
tecnologa
Gente: clave del xito
Adoptar tcnicas y tecnologas
con cuidado
Asumir responsabilidad
Comprender prioridades de los
clientes

Clientes/usuarios: ms ven,
ms necesitan
Planificar para desechar
parcialmente
Disear para el cambio
Diseo sin documentacin no
es diseo
Usar herramientas con
realismo
Evitar trucos
Encapsular

Introduccin
Principios de Ingeniera de Software
Usar acoplamiento y cohesin
Usar mediciones de complejidad
No probar el software propio
Analizar causas de errores
Asumir que entropa del software aumenta
Gente y tiempo no son intercambiables
Esperar y demandar excelencia

También podría gustarte