Está en la página 1de 63

CAPITULO

CAPITULO II

Ingeniería del Software


INF - 163

Mg. Sc. Miguel Cotaña M. 1.1 CONCEPTOS BASICOS


mickycotana@gmail.com
La Paz - Bolivia

Resumen preparado por Miguel Cotaña


CONTENIDO
CONTENIDO

1.
1. Introducción
Introducción
2.
2. Modelos
Modelos ágiles
ágiles
3.
3. Ingeniería
Ingeniería Web
Web
4.
4. Formulación
Formulación y y planeación
planeación
5.
5. Modelado
Modelado dede análisis
análisis
6.
6. Modelado
Modelado dede diseño
diseño
7.
7. Pruebas
Pruebas IWeb
IWeb
1.
1. INTRODUCCION
INTRODUCCION
Método:
Método:
Procedimiento para alcanzar un determinado fin

Los métodos de la I.S. indican “cómo”


construir técnicamente el software.

Metodología:
Metodología:
En un proyecto de desarrollo de software la
metodología define Quién debe hacer Qué,
Cuándo y Cómo debe hacerlo

Procedimiento:
Procedimiento:
Método de ejecutar algunas cosas
Proceso:
Proceso:
Conjunto de las fases sucesivas de un
fenomeno natural o de una operación artificial

Una secuencia de pasos desarrollados para un


proposito dado (por ejemplo, el proceso de
desarrollo de software).

Herramientas:
Herramientas:
Las herramientas de la I.S. proporcionan un
enfoque automático o semi-automático para el
proceso y para los métodos

Modelo:
Modelo:
Es la representación formal de un sistema
SISTEMAS
SISTEMAS

Enfoque
Enfoque de
de sistemas
sistemas

Intuitivamente decimos que cuando


no hay “Sistema” se produce el:

“Efecto 2+2=3”
Vision
Vision sistémica:
sistémica:
La visión sistémica nos ayuda a “ver” el
todo,
todo apreciar su energía y descubrir sus
características distintivas,
distintivas aquellas que
son propias del conjunto y que no
existen en las partes.

Esta visión permite ubicar al sistema en


su entorno o realidad dinámica, integral,
compleja e incierta, entre otras
características.
Pensamiento
Pensamiento sistemico:
sistemico:
“El pensamiento sistémico es la
disciplina que integra las demás ramas,
ramas
fusionándolas en un todo coherente de
teoría y práctica. .....Al enfatizar cada
una de las demás disciplinas, el
pensamiento sistémico nos recuerda
continuamente que el todo puede
superar la suma de las partes”,
partes Peter
Senge

“Efecto 2+2=5”
Definiciones
Definiciones de
de Sistema
Sistema

Se origina en la palabra griega sunistánai,


nai que
significa: causa que mantiene la unidad.
unidad

Conjunto de reglas o principios sobre una


materia enlazados entre sí.

Conjunto de cosas que ordenadamente y


relacionadas entre sí, contribuyen a
determinado objetivo.
objetivo (Diccionario de la RAE)

Sistema es cualquier proceso que convierte


inputs en outputs. (H. Eisner)
¡ESTE ES UN SISTEMA!
• Hay un conjunto de elementos : las piedras
• Están interrelacionados entre sí : la posición relativa entre
ellas
• Tienen un objetivo común : trasmitir una información
• Alguien necesita resolver una necesidad o problema
Ingeniería de Sistemas
(Ingenierizar un sistema)

SISTEMAS
INGENIERIA
DE
SISTEMAS

INGENIERIA
Ingeniería de Sistemas
(Origen teórico-científico)

TEORÍA DE
SISTEMAS + METODO
CIENTÍFICO

Bertalanffy Galileo

“INGENIERÍA DE SISTEMAS”

• COMPONENTES • FORMULACION del PROBLEMA


• INTERRELACIONES internas • MODELOS REPRESENTATIVOS
• INTERRELACIONES con sistema • ALTERNATIVAS de SOLUCIÓN
superior • VALIDACIÓN por
• OBJETIVO COMÚN EXPERIMENTACION
Definicion
Definicion de
de Ingenieria
Ingenieria de
de Sistemas:
Sistemas:

 “El diseño, producción y mantenimiento de sistemas


dentro de las restricciones de costo y tiempo”,
tiempo Sage
(1992)
 “Una aproximación interdisciplinaria para
posibilitar la realización de sistemas exitosos” INCOSE.
(1999)
 “Las acciones técnicas y de control asociadas a los
procesos de desarrollo de un sistema y sus
capacidades”
capacidades R. Stevens, P. Brook y S. Arnold.
Principios
Principios de
de la
la Ingenieria
Ingenieria de
de Sistemas:
Sistemas:

 Conozca el problema, el cliente y el usuario del


sistema
 Use criterios de efectividad basados en las
necesidades
 Establezca y administre los requerimientos
 Identifique y evalúe distintas alternativas de solución
 Verifique y valide los requerimientos y el desempeño
 Mantenga la integridad del sistema
 Use un proceso estructurado y documentado
Cumplir con los Principios
de Ingeniería de Sistemas podría evitar:

Esfuerzos Innecesarios
Cumplir con los Principios
de Ingeniería de Sistemas podría evitar:

Fustraciones

#¿?{[/&
#
Cumplir con los Principios
de Ingeniería de Sistemas podría evitar:

Desprestigio
Software
Software

El software se forma con:


Las instrucciones (programas de
ordenador) que cuando se ejecutan
proporcionan las características,
funciones y el grado de comportamiento
deseado;
Las estructuras de datos que permiten
que los programas manipulen
adecuadamente la información;
Los documentos que describen la
operación y el uso de los programas
Características:
Características:

El software se desarrolla o construye,


no se manufactura en sentido clásico
(a pesar de las similitudes entre el
desarrollo de Sw y la manufactura del
Hw, ambas son diferentes);
El software no se desgasta, pero se
deteriora (cuando un componente del
Hw se desgasta se sustituye con un
repuesto. Pero en Sw no existen
repuestos). El software es inmune a
los males ambientales (polvo,
vibración, temperatura);
Curva
Curva de
de fallos
fallos de
de Hardware
Hardware

Defectos fabricación Estropeado


(ej: mortalidad infantil) (desgaste)
Indice de fallos

Obsolescencia

Tiempo
Curva
Curva real
real de
de fallos
fallos dede Software
Software
Defectos fabricació
fabricación
Cambio Cambio Cambio
Indice de fallos

rv a
Cu l Obsolescencia
rea
Curva ideal
Tiempo
A pesar de que la industria tiene una
tendencia hacia la construcción por
componentes, la mayoría del software aún
se construye a medida.
Un componente Hw (tornillo) se puede
reutilizar.
Un componente de Sw se debe diseñar e
implementar de forma que pueda utilizarse
en muchos programas (creación de
ventanas gráficas, menús desplegables)
diferentes (encapsulan tanto los datos como
el proceso)
Categorias
Categorias del
del Software
Software

Software de sistemas
Software de aplicación
Software científico y de ingeniería
Software empotrado
Software de línea de productos
Software basadas en Web
Software de Inteligencia Artificial
EL
EL PROCESO
PROCESO

La construcción del software de


ordenador es un proceso iterativo
de aprendizaje y el resultado es
una materialización del
conocimiento recolectado,
depurado y organizado conforme
el proceso estuvo en ejecución
Existen mecanismos de evaluación del
proceso de software que permiten a las
organizaciones determinar la
“madurez” del proceso de software.
No obstante, la calidad, el tiempo
requerido, la viabilidad a largo plazo
del producto que se construye son los
mejores indicadores de la eficacia del
proceso que se utiliza.
Tres
Tres aspectos
aspectos del
del proceso
proceso
1.- Definición del proceso
Un proceso debe estar definido (documento que
especifica actividades y procedimientos del
proceso)

2.- Aprendizaje del proceso


El conocimiento del proceso debe ser
transferido a las personas (agentes) que lo
ejecutarán

3.- Resultados del proceso


Manifestación de los productos, como resultado
de la ejecución de las actividades definidas por
el proceso
Consideraciones
Consideraciones acerca
acerca de
de los
los procesos
procesos

Los comportamientos, actividades y


tareas que desempeñamos para lograr
un objetivo representan la ejecución
del proceso para alcanzar dicho
objetivo.
Un proceso disciplinado se
manifestará en patrones ordenados y
consistentes de comportamiento
individual o grupal
Por tanto, un proceso da forma a las
acciones y reacciones y tomamos
frente a una determinada situación.
Proceso
Proceso internalizado
internalizado yy proceso
proceso institucionalizado
institucionalizado
Cuando un proceso es desarrollado
profesional y naturalmente por una
persona, se dice que el proceso esta
“internalizado” por la persona.

En las organizaciones los procesos


son comunes a grupos de personas.
Para obtener disciplina en los procesos,
estos deben ser establecidos como
“institucionalizados” en la
organización.
Ingenieria
Ingenieria del
del software
software
Definicion
Definicion

teoria practica

[Ingeniería de software es] el


establecimiento y uso de principios
de ingeniería adecuados para obtener
económicamente software que sea
confiable y trabaje eficientemente en
máquinas reales (Fritz Bauer)
Pruebas y Resolucion Administracion
control de de y gestion
calidad problemas
La ingeniería de software no es ciencia
informática.
“Un científico construye con el objetivo de
aprender, un ingeniero aprende con el objetivo
de construir”

La distinción entre ingeniería y ciencia


en el software es el mismo que en otras
disciplinas
“Los científicos aprenden lo que es verdadero y
cómo extender el conocimiento en su campo”
“Los ingenieros aprenden lo que es verdadero, lo
que es útil y cómo aplicar conocimiento bién
entendido para resolver problemas prácticos”
Científicos
 Conocimientos enfocados y especializados
 Reportan básicamente a sus colegas científicos
 No necesitan licencia

Ingenieros
 Conocimientos comprobados, efectivos y confiables
de ámbito más general
 Se necesita un amplio entendimiento de todos los
factores que intervienen en el desarrollo del producto.
 Responsabilidad con el publico
 Generalmente necesitan licencia para ejercer
Ingenieria
Ingenieria del
del software:
software: tecnologia
tecnologia estratificada
estratificada
Definicion
Definicion segun
segun el
el IEEE
IEEE

La ingenieria de software es la
aplicación de un enfoque sistemático,
disciplinado y cuantificable al
desarrollo, operación y mantenimiento
del software; es decir, la aplicación de
la ingeniería al software
La
La I.S.
I.S. es
es una
una tecnología
tecnología estratificada
estratificada

Cualquier enfoque de la ingeniería debe


estar sustentado en un compromiso con
la calidad.
La gestión de la calidad Total, Sigma
Seis y enfoques similares fomentan una
cultura de mejora continua del proceso,
y es esta cultura la que al final conduce
al desarrollo de enfoques muy efectivos
para la I.S.
El
El enfoque
enfoque de
de calidad
calidad soporta
soporta a
a la
la I.S.
I.S.

Ingeniería de Software
Software Engineering

herramientas
métodos
modelo de proceso
enfoque de “calidad”
MARCO
MARCO DE
DE TRABAJO
TRABAJO PARA
PARA EL
EL PROCESO
PROCESO

Un marco de trabajo establece la base


para un proceso de software completo al
identificar un numero pequeño de
actividades del marco de trabajo
aplicables a todos los proyectos de
software, sin importar su tamaño y
complejidad.

Abarca un conjunto de actividades


sombrilla aplicables a lo largo del
proceso del software.
Cada actividad dentro del marco de
trabajo contiene un conjunto de
acciones de ingeniería del software; es
decir, una serie de tareas relacionadas
que produce un producto del trabajo en
la I.S. (por ejemplo, el diseño es una
acción de la I.S.).

Cada acción la forman tareas de trabajo


individuales que completan alguna parte
del trabajo implicado por la acción.
Marco
Marco de
de trabajo
trabajo del
del proceso
proceso de
de software
software

Marco de trabajo del proceso


Actividades sombrilla
Actividad del marco de trabajo #1
Accion de la ingenieria de software # 1.1
Tareas del trabajo
Conjunto
Productos del trabajo
de tareas Puntos de aseguramiento
. Fundamentos del proyecto

Accion de la ingenieria de software # 1.k


Conjunto Tareas del trabajo
Productos del trabajo
de tareas
Puntos de aseguramiento
.
Fundamentos del proyecto
.

Actividad del marco de trabajo #n


Accion de la ingenieria de software # n.1
Tareas del trabajo
Conjunto
Productos del trabajo
de tareas Puntos de aseguramiento
. Fundamentos del proyecto

Accion de la ingenieria de software # n.m


Conjunto Tareas del trabajo
Productos del trabajo
de tareas
Puntos de aseguramiento
.
Fundamentos del proyecto
.
Aplicacion
Aplicacion del
del marco
marco de
de trabajo
trabajo en
en proyectos
proyectos

Comunicación. Implica una intensa colaboración


y comunicación con los clientes;
Planeación. Establece un plan para el trabajo de
la ingeniería del software. Describe las tareas
técnicas, los riesgos probables, etc.
Modelado. Abarca la creación de modelos que
permiten al desarrollador y al cliente entender
mejor los requisitos del software y el diseño.
Construcción. Esta actividad combina la
generación del codigo y la realización de pruebas
necesarias para descubrir errores en el código.
Despliegue. Se entrega al cliente, quién evalua
el producto recibido y proporciona información
basada en su evaluación.
MODELOS
MODELOS PRESCRIPTIVOS
PRESCRIPTIVOS

Los modelos prescriptivos de proceso


se propusieron originalmente para
ordenar el caos del desarrollo de
software. Estos modelos
convencionales han traído consigo
cierta cantidad de estructuras útiles.
El trabajo de la IS y el producto
resultante aún permanecen “al borde
del caos”
Los modelos prescriptivos de proceso
definen un conjunto distinto de
actividades, acciones, tareas
fundamentos y productos de trabajo
que se requieren para desarrollar
software de alta calidad.
Estos modelos son una guía para el
trabajo de la IS.
Los modelos prescriptivos de proceso
proporcionan estabilidad, control y
organización a una actividad que si no
se controla puede volverse caótica.
El proceso conduce a un equipo de
software a través de un conjunto de
actividades del marco de trabajo que se
organizan en un flujo de proceso, el cual
puede ser lineal, incremental o
evolutivo.
Cualquier organización de IS debe
describir un conjunto único de actividades
dentro del marco de trabajo.
También debe llenar cada actividad del
marco de trabajo con un conjunto de
acciones de IS, y definir cada acción en
cuanto a un conjunto de tareas que
identifique el trabajo (y los productos del
trabajo) que deben completarse para
alcanzar las metas de desarrollo.
Luego, la organización debe adaptar
el modelo de proceso resultante y
ajustarlo a cada proyecto, a las
personas que lo realizarán, y el
ambiente en el que se ejecutará el
trabajo. Sin importar el modelo de
proceso seleccionado, los ingenieros
de software han elegido de manera
tradicional un marco de trabajo.
Se les llama “prescriptivos” porque
prescriben un conjunto de elementos del
proceso:
Actividades del marco de trabajo,
Acciones de la IS,
Tareas,
Productos del trabajo,
Aseguramiento de la calidad,
Mecanismos de control del cambio para
cada proyecto.
Cada modelo de proceso
prescribe también un “flujo de
trabajo”; esto es, la forma en
la cual los elementos del
proceso se interrelacionan
entre sí.
Modelo
Modelo en
en cascada
cascada

Algunas veces llamado el ciclo de vida


clásico, sugiere un enfoque sistemático
secuencial hacia el desarrollo de software.
Se considera 5 etapas:
Comunicación
Inicio proyecto
Recopilación req Planeación
estimación
itinerario
seguimiento
Modelado
análisis
Construcción
diseño
código
prueba Despliegue
Entrega
Soporte
retroalimentacion
Modelos
Modelos de
de procesos
procesos incrementales
incrementales

En algunas ocasiones los requisitos iniciales


del software están bien definidos en forma
razonable, pero el enfoque global del
esfuerzo de desarrollo excluye un proceso
puramente lineal. Además existe la
necesidad de proporcionar en forma rápida
un conjunto limitado de funcionalidad para
el usuario y después refinarla y expandirla
en las entregas posteriores. Entonces, en
estos casos se elige el modelo incremental.
El
El modelo
modelo incremental:
incremental:

El modelo incremental aplica secuencias


lineales de manera escalonada conforme
avanza el tiempo en el calendario. Cada
secuencia lineal produce “incrementos”
del software.
Se debe tener en cuenta que el flujo del
proceso de cualquier incremento puede
incorporar el paradigma de construcción de
prototipos.
Al utilizar el modelo incremental, el primer
incremento es un “producto esencial”, se
incorporan requisitos básicos. Este producto
queda en manos del cliente (o se somete a
una evaluación). Como resultado de la
evaluación se desarrolla un plan para el
siguiente incremento. El plan afronta la
modificación del producto esencial afin de
satisfacer necesidades del cliente. Este
procesos se repite hasta la entrega final.
Este modelo se enfoca en la entrega de un
producto operacional con cada
incremento. Los primeros incrementos son
versiones incompletas del producto final,
pero proporcionan al usuario la
funcionalidad que necesita y una
plataforma para evaluarlo.
El modelo incremental es útil sobre todo
cuando el personal necesario para una
implementación completa no está
disponible
Combina elementos del modelo en cascada
aplicado en forma iterativa.
Incremento #n
Funcionalidad y caractérísticas del Sw

Entrega del n-ésimo


incremento

Incremento #2

Entrega del 2do.


Incremento #1
incremento

Entrega del 1er.


incremento

Tiempo del calendario de proyecto


El
El modelo
modelo DRA
DRA

El Desarrollo Rápido de Aplicaciones es un


modelo de proceso de software incremental
que resalta un ciclo de desarrollo corto. El
modelo DRA es una adaptación a “alta
velocidad” del modelo en cascada en el
que se logra el desarrollo rápido mediante
un enfoque de construcción basado en
componentes. Si se entiende los requisitos y
el dominio del proyecto. El proceso DRA
permite crear un sistema completamente
funcional dentro de un periodo muy corto.
Equipo #n

Modelado
Modelado del negocio
Modelado de los datos
Modelado del proceso

Equipo #2 construcción
Reutilización componentes
Modelado
Generación de código
Modelado del negocio
pruebas
Modelado de los datos
comunicación
Modelado del proceso

Equipo #1 construcción despliegue

Reutilización componentes integración


planeación Modelado
Generación de código entrega
Modelado del negocio
pruebas retroalimentación
Modelado de los datos
Modelado del proceso

construcción
Reutilización componentes
Generación de código
pruebas

60 – 90 días
Modelos
Modelos de
de procesos
procesos evolutivos
evolutivos

El software, al igual que todos los sistemas


complejos, evolucionan con el tiempo. Los
requisitos de los negocios y productos a
menudo cambian conforme se realiza el
desarrollo; por lo tanto, la ruta lineal que
conduce a un producto final no será real;
las fechas tope del mercado imposibilitan la
conclusión de un producto completo.
Por lo que se debe presentar una versión
limitada para liberar la presión competitiva
y de negocios; se tiene claro un conjunto de
requisitos del producto o sistema esencial.
Pero todavía se deben definir los detalles de
las extensiones del producto. Por lo que se
necesita un modelo de proceso que haya
sido diseñado de manera explícita para
incluir un producto que evoluciones con el
tiempo
Construcción
Construcción de
de prototipos
prototipos

Con frecuencia un cliente define un conjunto de


objetivos generales para el software, pero no
identifica los requisitos detallados de entrada,
procesamiento o salida. En otros casos, el
responsable del desarrollo de software está
inseguro de la eficacia de un algoritmo, de la
adaptabilidad de un SO. En estas y en otras
situaciones , un paradigma de construcción
de prototipos puede ofrecer el mejor enfoque
Plan rápido

comunicación
Modelado
Diseño rápido

Construcción
Desarrollo
del prototipo
Entrega y
retroalimentación

Modelo de construcción de prototipos


El
El modelo
modelo en
en espiral
espiral

El modelo en espiral que Boehm propuso


originalmente, es un modelo de proceso de
software evolutivo que conjuga la
naturaleza iterativa de la construcción de
prototipos con los aspectos controlados y
sistemáticos del modelo en cascada.
Proporciona el material para el desarrollo
rápido de versiones incrementales del
software.
Estimación
Itinerario
Analisis de riesgos
Planeación
modelado
comunicación

Analisis
diseño
Desarrollo del
Desarrollo de concepto
Mejora de la Nueva Aplicación
la Aplicación
Mantenimiento
Reingeniería de la Aplicación

Entrega Codigo
despliegue retroalimentación construcción
construcción
Modelos
Modelos especializados
especializados de
de proceso
proceso

Desarrollo
Desarrollo basado
basado en
en componentes
componentes

Los nuevos componentes de software


comerciales (NCSC), desarrollados por
vendedores que los ofrecen como productos, se
pueden emplear cuando el software está en
proceso de construcción. Estos componentes
proporcionan funcionalidad dirigida con
interfaces bien definidas que permiten que el
componente se integre en el software.
El modelo de desarrollo basado en
componentes (DBC) incorpora muchas de las
características del modelo en espiral. Es
evolutivo por naturaleza y exige un enfoque
iterativo para la creación del software.
Sin embargo, el modelo configura aplicaciones
a partir de componentes de software
empaquetados previamente.
Desarrollo
Desarrollo del
del software
software orientado
orientado a
a aspectos
aspectos

Independientemente del proceso de


software que se elija, los constructores de
software complejo implementan de manera
invariable un conjunto específico de
características, funciones y contenido de
información. Estas características
específicas del software se modelan como
componentes (por ejemplo, clases
orientadas a objetos) y después se
construyen dentro del contexto de una
arquitectura de sistema.
Conforme los sistemas basados en
computadora se vuelven más elaborados (y
complejos), ciertos “intereses” abarcan
toda la arquitectura. Algunos intereses son
propiedades de alto nivel de un sistema
(por ejemplo, seguridad, falta de
tolerancia). Otros intereses afectan las
funciones (como la palicación de reglas de
negocios), mientras que otros son
sistemáticos (como la sincronización de
tareas o la gestión de memoria).
Cuando los intereses se relacionan con
múltiples funciones, características e
información del sistema, con
frecuencia se denominan “intereses
generales”. Los requerimientos de
aspectos definen estos intereses
generales que ejercen un impacto a
través de la arquitectura del software.

También podría gustarte