Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 1
Tema 1: introduccin
Programa
Introduccin
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
Introduccin
Productos de Software
Productos genricos.
Productos que son producidos por una organizacin para ser vendidos al
mercado.
Introduccin
Caractersticas de los Productos de Software
Mantenibles.
Confiabilidad.
Eficiencia.
Utilizacin adecuada.
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
Introduccin
Principios de Ingeniera de Software
Anticipacin al cambio
Impacto
Evolucin del software
Reusabilidad
Introduccin
Principios de Ingeniera de Software
Generalidad
Existen tareas que realiza comnmente un cierto nicho
Introduccin
Principios de Ingeniera de Software
Incrementalidad
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
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