[go: up one dir, main page]

0% encontró este documento útil (0 votos)
64 vistas63 páginas

UNIDAD 1 - Introducción A La Ingenieria de Software

Cargado por

DANNY
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
64 vistas63 páginas

UNIDAD 1 - Introducción A La Ingenieria de Software

Cargado por

DANNY
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 63

Introducción a la Ingeniería de

Software
UNIDAD # 1

MSIG. KATTY LINO


Temas
• Introducción a la Ingeniería de Software

• Procesos del Software

• Desarrollo Metodologías Ágiles

• Requerimientos de Ingeniería de Software


Introducción
Objetivos de la Unidad

Entender los conflictos


Conocer que es la Comprender las distintas
éticos y profesionales que
Ingeniería de Software y técnicas de Ingeniería de
son importantes para los
por qué es importante Software
ingenieros de Software
Definiciones Básicas
¿Qué es la Ingeniería de Software?
Es el proceso de desarrollo que seguimos para construir
un sistema informático y posteriormente mantenerlo,
ajustándonos siempre a diferentes factores: recursos,
coste, duración, calidad, etc.
La ingeniería de software es importante por
dos razones:

Cada vez con mayor frecuencia, los individuos y la sociedad se apoyan en los
avanzados sistemas de software. Por ende, se requiere producir económica y
rápidamente sistemas confiables.

A menudo resulta más barato a largo plazo usar métodos y técnicas de


ingeniería de software para los sistemas de software, que sólo diseñar los
programas como si fuera un proyecto de programación personal. Para muchos
tipos de sistemas, la mayoría de los costos consisten en cambiar el software
después de ponerlo en operación
Actividades fundamentales de la Ingeniería de
Software

Especificación Desarrollo

Evolución del
Validación
software
¿Cuáles son los costos de la Ingeniería de
Software?
Desarrollo
60%

Producto
Final
Pruebas
40%
Ingeniería de Software

El software no es sólo
Los productos de
un programa o
software se desarrollan
programas, sino que
para el cliente o para
también incluye
un mercado en general
documentación.
Atributos esenciales del buen software
Estándares de comportamiento aceptable
para un Ingeniero de Software
1. Debe respetar la confidencialidad de
2. No hay que aceptar de manera
sus empleadores o clientes sin importar
intencional trabajo que esté fuera de su
si se firmó o no un acuerdo formal
competencia
sobre la misma

3. Tiene que conocer las leyes locales


que rigen el uso de la propiedad
4. No debe emplear sus habilidades
intelectual, como las patentes y el
técnicas para usar incorrectamente las
copyright. Debe ser cuidadoso para
computadoras de otros individuos
garantizar que se protege la propiedad
intelectual de empleadores y clientes
Ética en la Ingeniería de Software

Los ingenieros de software deben comprometerse a hacer del


análisis, la especificación, el diseño, el desarrollo, la prueba y el
mantenimiento del software, una profesión benéfica y respetada.

De acuerdo con su compromiso con la salud, la seguridad y el


bienestar del público, los ingenieros de software tienen que
adherirse a los ocho principios siguientes:
Principios del Código de Ética en la
Ingeniería de Software
Proceso de
Desarrollo de
Software
Proceso de Desarrollo de Software

Existen muchos procesos de


Es una serie de actividades
software pero todos deben
relacionadas que conduce a
incluir 4 actividades que
la elaboración de un
son fundamentales para la
producto de software
Ingeniería de Software
Proceso de Desarrollo de Software

Evolución del
Software
Validación del
Software

Diseño e
implementación
del Software

Especificación
del Software
Modelos de Proceso

Modelo en Cascada

Desarrollo incremental
Modelo en Cascada (Waterfall)

Toma las actividades fundamentales


del proceso de especificación,
desarrollo. validación y evolución y ,
luego, los representa como fases
separadas del proceso, tal como
especificación de requerimientos,
diseño de software, implementación,
pruebas
Modelo en Cascada - Características

Una fase no
comienza hasta que
la anterior ha
Consiste en la terminado.
ejecución secuencial
de una serie de fases
Primer modelo
empleado (Royce,
1970), también
denominado ciclo de
vida clásico y modelo
lineal secuencial.
Problemas que en ocasiones surgen al aplicar
el modelo de la cascada
1. Es raro que los proyectos reales sigan el flujo secuencial propuesto por el
modelo. Aunque el modelo lineal acepta repeticiones, lo hace en forma
indirecta. Como resultado, los cambios generan confusión conforme el
equipo del proyecto avanza.

2. A menudo, es difícil para el cliente enunciar en forma explícita todos


los requerimientos. El modelo de la cascada necesita que se haga y tiene
dificultades para aceptar la incertidumbre natural que existe al principio
de muchos proyectos.

3. El cliente debe tener paciencia. No se dispondrá de una versión


funcional del(de los) programa(s) hasta que el proyecto esté muy
avanzado. Un error grande sería desastroso si se detectara hasta revisar el
programa en funcionamiento.
Desarrollo Incremental
Este enfoque vincula las actividades de
especificación, desarrollo y validación. El sistema
se desarrolla como una serie de
versiones(incrementos) y cada versión añade
funcionalidad a la versión anterior

Se basa en la idea de diseñar una implementación


inicial, exponer ésta al comentario del usuario y
luego desarrollarla en diversas versiones hasta
producir un sistema adecuado. Las actividades de
especificación, desarrollo y validación están
entrelazadas en vez de separadas, con rápida
retroalimentación a través de las actividades.
Beneficios del Desarrollo incremental

Es más sencillo obtener retroalimentación


Es posible que sea más rápida la entrega e
del cliente sobre el trabajo de desarrollo
Se reduce el costo de adaptar los implementación de software útil al cliente,
que se realizó. Los clientes pueden
requerimientos cambiantes del cliente. La aun si no se ha incluido toda la
comentar las demostraciones del software y
cantidad de análisis y la documentación que funcionalidad. Los clientes tienen
darse cuenta de cuánto se ha
tiene que reelaborarse son mucho menores posibilidad de usar y ganar valor del
implementado. Los clientes encuentran
de lo requerido con el modelo en cascada. software más temprano de lo que sería
difícil juzgar el avance a partir de
posible con un proceso en cascada
documentos de diseño de software.
Problemas del enfoque incremental

La estructura del sistema tiende a degradarse


El proceso no es visible. Los administradores
conforme se tienen nuevos incrementos. A menos
necesitan entregas regulares para medir el
que se gaste tiempo y dinero en la refactorización
avance. Si los sistemas se desarrollan
para mejorar el software, el cambio regular tiende
rápidamente, resulta poco efectivo en términos
a corromper su estructura. La incorporación de
de costos producir documentos que reflejen cada
más cambios de software se vuelve cada vez más
versión del sistema.
difícil y costoso
Metodologías
de Desarrollo
Ágil
Las metodologías ágiles de desarrollo de
software
Nacieron como respuesta a
Proceso que permite al
la creciente necesidad de la
equipo dar respuestas
industria por entregar
rápidas e impredecibles a
productos de calidad en el
las valoraciones que reciben
menor tiempo y costo
sobre su proyecto.
posible.
Desarrollo de Metodologías Ágiles

La filosofía pone el énfasis


La ingeniería de software
en: la satisfacción del Los equipos pequeños y
ágil combina una filosofía
cliente y en la entrega muy motivados para
con un conjunto de
rápida de software efectuar el proyecto
lineamientos de desarrollo.
incremental

Los lineamientos de
Los métodos informales, los
desarrollo enfatizan la
productos del trabajo con
entrega sobre el análisis y el
mínima ingeniería de
diseño y la comunicación
software y la sencillez
activa y continua entre
general en el desarrollo.
desarrolladores y clientes
Principios de Agilidad
Son bienvenidos los
requerimientos cambiantes, aun
La prioridad más alta es Entregar con frecuencia software
en una etapa avanzada del
satisfacer al cliente a través de la que funcione, de dos semanas a
desarrollo. Los procesos ágiles
entrega pronta y continua de un par de meses, de preferencia
dominan el cambio para
software valioso. lo más pronto que se pueda.
provecho de la ventaja
competitiva del cliente.

Hay que desarrollar los


El método más eficiente y eficaz
Las personas de negocios y los proyectos con individuos
para transmitir información a los
desarrolladores deben trabajar motivados. Debe darse a éstos el
integrantes de un equipo de
juntos, a diario y durante todo el ambiente y el apoyo que
desarrollo, y entre éstos, es la
proyecto. necesiten, y confiar en que harán
conversación cara a cara
el trabajo.
Principios de Agilidad
Los procesos ágiles promueven
el desarrollo sostenible. Los
La atención continua a la
La medida principal de avance es patrocinadores, desarrolladores
excelencia técnica y el buen
el software que funciona. y usuarios deben poder
diseño mejora la agilidad.
mantener un ritmo constante en
forma indefinida.

El equipo reflexiona a intervalos


Las mejores arquitecturas,
regulares sobre cómo ser más
requerimientos y diseños surgen
eficaz, para después afinar y
de los equipos con organización
ajustar su comportamiento en
propia.
consecuencia
Ventajas de las metodologías ágiles

Mejora de la motivación e
Mejoran la satisfacción del Permite ahorrar tiempo y
implicación del equipo de
cliente costes.
desarrollo.

Eliminar cualquier
Se trabaja con mayor velocidad
característica innecesaria del
y eficiencia.
producto.
Principales metodologías agiles
Extreme
Programming
Programación
Usa un enfoque orientado a objetos como
Extrema paradigma preferido de desarrollo, y engloba un
conjunto de reglas y prácticas
FASES
XP
• Se adapta al desarrollo de sistemas pequeños y
mediano tamaño.
• Se optimiza, agiliza y complementa
conocimientos haciendo la programación en
Ventajas parejas
• La XP brinda no solo ventajas en cuanto a
rapidez, sino que promueve habilidades sociales
como la comunicación, el trabajo en equipo y
disciplina.
Marco de trabajo Ágil que permite atender y resolver
problemas complejos, proponiendo soluciones
SCRUM creativas para entregar productos con el mayor valor
posible al negocio en el menor tiempo.
SCRUM

Se realizan reuniones
periódicamente, con un máximo
Se trabaja en ciclos cortos de de 15 minutos, y en ellas el
trabajo (de dos a cuatro propio cliente se involucra para
semanas) ver el trabajo desarrollado, y
proponer cambios o
modificaciones.
Pilares de SCRUM

Transparencia Inspección Adaptación

• Todos los • Los miembros del • El equipo se ajusta


implicados tienen equipo Scrum para conseguir el
conocimiento de frecuentemente objetivo
qué ocurre en el inspeccionan el
proyecto y cómo progreso para
ocurre. detectar posibles
problemas.
ROLES DE SCRUM
HITOS DE LA METODOLOGÍA SCRUM
HITOS DE LA METODOLOGÍA SCRUM
• En esta reunión todo el equipo Scrum define qué tareas se van
Sprint Planning a abordar y cuál será el objetivo del sprint.

• Es una reunión diaria dentro del sprint que tiene como máximo
Daily meeting 15 minutos de duración.

• Su duración es de 4 horas para sprints de un mes, y es la única


Sprint review reunión de Scrum a la que puede asistir el cliente.

Sprint • Tiene una duración de 3 horas para Sprints de un mes, y es la


reunión del equipo en la que se hace una evaluación de cómo
retrospective se ha implementado la metodología Scrum en el último sprint.
Herramientas para la
metodología Scrum

Product Backlog
• Es el listado de tareas que engloba todo un
proyecto
• La responsabilidad exclusiva de ordenar el product
backlog es del Product Owner, que se encuentra en
constante comunicación con el cliente para
asegurarse de que las prioridades están bien
establecidas.
Sprint backlog
• Es el grupo de tareas del product backlog que el
equipo de desarrollo elige en el sprint planning
junto con el plan para poder desarrollarlas.
Conocida como ‘Tarjeta Visual» muy útil para los responsables de
proyectos.

Es un marco de trabajo que requiere una comunicación en tiempo


real sobre la capacidad del equipo, utilizado para controlar el avance
de trabajo en una línea de producción, en la cual se clasifican las
KANBAN tareas en sub estatus, esto con la intención de determinar los niveles
de productividad en cada fase del proyecto.

Consiste en la elaboración de un cuadro o diagrama en el que se


reflejan tres columnas de tareas; pendientes, en proceso o
terminadas.
KANBAN
Para el desarrollo de software, gracias a su sencillez KANBAN,
simplifica la planificación y la asignación de
responsabilidades, en un tablero se representan los procesos
del flujo de trabajo, cómo mínimo deben existir tres columnas
(Pendiente, En Progreso, Terminado), la cantidad de tarjetas
en estatus pendiente forma parte de lo solicitado por el
cliente, aquellas colocadas en progreso dependerán de la
capacidad del equipo de trabajo.

El cuadro debe estar al alcance de todos los miembros del


equipo, evitando así la repetición de tareas o la posibilidad de
que se olvide alguna de ellas.
Planificación de tareas

Ventajas de Mejora en el rendimiento de trabajo del equipo

Kanban Los plazos de entregas son continuos

Tiempos de ciclos reducidos.

Menos cuellos de botella.

Entrega continua.
Objetivos
• Entender los conceptos de requerimientos del usuario y del sistema, así
como por qué tales requerimientos se deben escribir en diferentes formas;
• Comprender las diferencias entre requerimientos de software funcionales y
no funcionales;
• Reconocer cómo se organizan los requerimientos dentro de un documento
de requerimientos de software;
• Conocer las principales actividades de la ingeniería de requerimientos:
adquisición, análisis y validación, así como las relaciones entre dichas
actividades;
• Analizar por qué es necesaria la administración de requerimientos y cómo
ésta apoya otras actividades de la ingeniería de requerimientos.
Requerimientos

Los requerimientos para un sistema son descripciones de lo que


el sistema debe hacer: el servicio que ofrece y las restricciones
en su operación.

Al proceso de descubrir,
analizar, documentar y
Tales requerimientos
verificar estos servicios y
reflejan las necesidades de
restricciones se le llama
los clientes
Ingeniería de
Requerimientos (IR).
Requerimientos del Usuario & Requerimientos del
Sistema

Son enunciados, en un lenguaje natural junto


con diagramas, acerca de qué servicios
Requerimientos de Usuario
esperan los usuarios del sistema, y de las
restricciones con las cuales éste debe operar.
Clasificación

Son descripciones más detalladas de las


funciones, los servicios y las restricciones
operacionales del sistema de software.

El documento de requerimientos del sistema


(llamado en ocasiones especificación
funcional) tiene que definir con exactitud lo
Requerimientos del Sistema que se implementará.

Puede formar parte del contrato entre el


comprador del sistema y los desarrolladores
del software.
Requerimientos del
Usuario &
Requerimientos del
Sistema
Requerimientos funcionales

Son enunciados acerca de


servicios que el sistema debe
En algunos casos, los
proveer, de cómo debería
requerimientos funcionales
reaccionar el sistema a entradas
también explican lo que no debe
particulares y de cómo debería
hacer el sistema.
comportarse el sistema en
situaciones específicas.
Requerimientos funcionales

La especificación de los requerimientos funcionales de un


sistema debe ser completa y consistente.

Totalidad significa que Consistencia quiere decir


deben definirse todos los que los requerimientos
servicios requeridos por tienen que evitar
el usuario. definiciones contradictorias.
Ejemplos de Requerimientos Funcionales
Requerimientos no funcionales

Son requerimientos que no se relacionan directamente con los servicios


específicos que el sistema entrega a sus usuarios.

Los requerimientos no funcionales,


Pueden relacionarse con propiedades
como el rendimiento, la seguridad o la
emergentes del sistema, como
disponibilidad, especifican o restringen
fiabilidad, tiempo de respuesta y uso
por lo general características del
de almacenamiento.
sistema como un todo.
Tipos de Requerimientos no funcionales
Tipos de Requerimientos no funcionales

Requerimientos del producto


Estos requerimientos especifican o restringen el
comportamiento del software.

Los ejemplos incluyen requerimientos de rendimiento


sobre qué tan rápido se debe ejecutar el sistema y
cuánta memoria requiere, requerimientos de fiabilidad
que establecen la tasa aceptable de fallas,
requerimientos de seguridad y requerimientos de
usabilidad
Tipos de Requerimientos no funcionales

Requerimientos de la
organización Son requerimientos de sistemas amplios, derivados de políticas y procedimientos
en la organización del cliente y del desarrollador.

Los ejemplos incluyen requerimientos del proceso operacional que definen cómo
se usará el sistema, requerimientos del proceso de desarrollo que especifican el
lenguaje de programación, estándares del entorno o el proceso de desarrollo a
utilizar, y requerimientos ambientales que definen el entorno de operación del
sistema.
Tipos de Requerimientos no funcionales

Requerimientos externos
Este término cubre todos los requerimientos derivados de factores externos al
sistema y su proceso de desarrollo.

En ellos se incluyen requerimientos regulatorios que establecen lo que debe


hacer el sistema para ser aprobado en su uso por un regulador, como sería un
banco central; requerimientos legislativos que tienen que seguirse para
garantizar que el sistema opere conforme a la ley, y requerimientos éticos que
garanticen que el sistema será aceptable para sus usuarios y el público en
general.
Ejemplos
Métricas para especificar requerimientos no
funcionales
Ejemplos de Requerimientos No Funcionales
Ejemplos de Requerimientos No Funcionales

También podría gustarte