2. 27/4/2022
2
3
Software, en general, es un set de
programas y la documentación
que acompaña.
Existen tres tipos básicos de software.
Estos son:
Software de Sistemas
Utilitarios
Software de Aplicación
Ingeniería de Software I – FCEN - UBA
¿Qué es la Ingeniería de Software?
• Una definición aproximada y simplificada...
– Se ocupa de construir un producto de software de buena
calidad lidiando con las múltiples restricciones (tiempo,
presupuesto, y otros...)
• Sus dos problemáticas fundamentales son:
– Lidiar con la escala y complejidad de sistemas de
software.
– Identificar que significa buena calidad y luego lograrla
• Requiere (como todas las ingenierías)
– Rigor, creatividad, documentación y gestión.
3. 27/4/2022
3
Ingeniería de Software I – FCEN - UBA
Pero… entonces…
• ¿De donde salen las pre-post condiciones?
• ¿Cómo expresamos requerimientos que transcurren en
tiempo?
• ¿Cómo describir procesos qué requieren de la
aplicación de varias operaciones?
• ¿Cuál es la pre y post condición para un sistema de
despachos de taxis?
• ¿Qué pasa si tengo que modificar en vez de desarrollar?
Ingeniería de Software I – FCEN - UBA
Ingeniería de Software
- Algunas Definiciones -
Ingeniería de software es la aplicación de un acercamiento
sistemático, disciplinado y cuantificable al
Desarrollo, operación y mantenimiento de software,
IEEE Standard Glossary of Software
Engineering Terminology, IEEE std 610.12-1990
No es solo desarrollo
4. 27/4/2022
4
Ingeniería de Software
- ¿Qué temas abarca? -
.
The Software Engineering Body
of Knowledge, IEEE CS and ACM
Interdisciplinario
La disciplina Ingeniería de Software de engloba
é para definir los
requerimientos de software, y llevar a cabo el diseño del
software, su construcción, testing y tareas de mantenimiento,
La ingeniería de software también se basa en el conocimiento de
otros campos como la ingeniería en computación, ciencias
informáticas, matemáticas, administración de proyectos ,
administración de la calidad, e ingeniería de sistemas.
Disciplinas
Técnicas
• Requerimientos
• Análisis y Diseño
• Construcción
• Prueba
• Despliegue
Disciplinas
de
Gestión
• Planificación de
Proyecto
• Monitoreo y
Control de
Proyectos
Disciplinas
de
Soporte
• Gestión de
Configuración
de Software
• Aseguramiento
de Calidad
• Métricas
6. 27/4/2022
6
Procedimientos y métodos
Proceso: La secuencia de pasos
ejecutados para un propósito dado
(IEEE)
Proceso de Software: Un conjunto
de actividades, métodos,
prácticas, y transformaciones que
la gente usa para desarrollar o
mantener software y sus
productos asociados (Sw-CMM)
Herramientas y
Equipos
Personas con
habilidades,
entrenamiento y
motivación
PROCESO
A
B
C
D
11
12
Asume que podemos
repetir el mismo proceso
una y otra vez,
indefinidamente, y obtener
los mismos resultados.
La administración y control
provienen de la
predictibilidad del proceso
definido.
7. 27/4/2022
7
13
Asume procesos complicados con variables
cambiantes. Cuando se repite el proceso, se
pueden llegar a obtener resultados
diferentes.
La administración y control es a través de
inspecciones frecuentes y adaptaciones
Son procesos que trabajan bien con
procesos creativos y complejos.
El conocimiento empírico
es aquel basado en la
experiencia
Para la Ingeniería de Software el
paradigma es una agrupación de
métodos, herramientas y
procedimientos con el fin de describir
u modelo.
Un "paradigma" es un modelo
para comprender la realidad, que nos
permite relacionarnos con el mundo
circundante y tener un sentido de
identidad dentro de lo que percibimos
que es "el mundo real".
8. 27/4/2022
8
Ingeniería de Software I – FCEN - UBA
• Analizar un aspecto del problema a
resolver o artefacto a construir para
lograr mayor confianza
• Comunicar en forma precisa aspectos
del problema y la solución a otros
Modelo
Sirve para
• Son significativamente más barato de
construir que el sistema
• Permiten detectar errores y falencias
tempranamente
Los modelos
son
efectivos
porque
Ingeniería de Software I – FCEN - UBA
Modelos y Diagramas
• Un modelo captura una vista de un sistema del mundo
real. Es una abstracción de dicho sistema,
considerando un cierto propósito. Así, el modelo
describe completamente aquellos aspectos del sistema
que son relevantes al propósito del modelo, y a un
apropiado nivel de detalle.
• Diagrama: una representación gráfica de una colección
de elementos de modelado, a menudo dibujada como
un grafo con vértices conectados por arcos.
9. 27/4/2022
9
Ingeniería de Software I – FCEN - UBA
Modelos y Diagramas
Un proceso de desarrollo de software debe
ofrecer un conjunto de modelos que permitan
expresar el producto desde cada una de las
perspectivas de interés
El código fuente del sistema es el modelo más
detallado del sistema (y además es ejecutable).
Sin embargo, se requieren otros modelos ...
Cada modelo es completo desde su punto de
vista del sistema,sin embargo, existen
relaciones de trazabilidad entre los diferentes
modelos
Ingeniería de Software I – FCEN - UBA
Modelo
El modelo es conocimiento depurado
10. 27/4/2022
10
Ingeniería de Software I – FCEN - UBA
Conocimiento implícito y explícito
El conocimiento sobre un proyecto está fragmentado, repartido entre
muchas personas y documentos, y está mezclado con otra información
de tal manera que ni siquiera conocemos cuáles son los fragmentos de
información que realmente necesitamos.
Conocimiento
explícito:
este conocimiento puede
expresarse en palabras y
números y compartido en la
forma de datos, fórmulas
científicas, especificaciones,
manuales, etc. Puede
transmitirse entre las
personas formal y
sistemáticamente
Conocimiento
implícito:
es en gran medida personal y muy
difícil de formalizar, dificultando
mucho la comunicación o el ser
compartido por otros.
Los pálpitos subjetivos, las
intuiciones, los presentimientos caen
dentro de esta categoría.
Es difícil de verbalizar, dado que
está íntimamente enraizado en las
acciones y experiencias de una
persona, además de los ideales,
valores o emociones que esa persona
pueda adoptar.
Conocimiento implícito y explícito
Relación -de acuerdo a varios autores- entre conocimiento tácito y explícito
10% Conocimiento
visible, comunicable,
formalizable (Explícito)
90% Conocimiento
oculto, ligado a la
experiencia
(Implícito)
11. 27/4/2022
11
21
Un ciclo de vida de software es un
representación de un proceso. Grafica una
descripción del proceso desde una
perspectiva particular
Los modelos especifican
Las fases de proceso.
Ejemplo: requerimientos,
especificación, diseño…
El orden en el cual se llevan a cabo
22
Hay tres tipos básicos de Ciclos
de Vida
Secuencial
Iterativo/Incremental
Recursivo
12. 27/4/2022
12
23
100% Secuencial
Requerimientos
Arquitectura Desarrollo Test
100% Iterativo
24
Build and Fix
Secuencial
Cascada
Cascada con Retroalimentación
Cascada con Subproyectos
Modelo V
Espiral
Modelo Evolucionario
RAD ( Desarrollo Rápido de Aplicaciones)
Incremental