Porta Folio
Porta Folio
Porta Folio
ASIGNATURA:
INGENIERIA DE SOFTWARE I
PROFESOR:
HERNAN MAURICIO SANCHEZ
MENDIETA
ESTUIDANTE:
FREDDY JEFFERSON CEDILLO RIVERA
CICLO:
QUINTO
PARALELO:
‘‘A’’
SECCIÓN:
VESPERTINA
AÑO:
2023-2
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Contenido
CLASE 1: FUNDAMENTOS DE LA INGENIERIA DE SOFTWARE ......................................3
CLASE 2: PROCESO DEL SOFTWARE - MODELO PROCESO SOFTWARE .......................7
CLASE 3: COSTOS Y METODOS INGENIERIA DE SOFTWARE ........................................14
CLASE 4: HERRAMIENTAS CASE ........................................................................................25
CLASE 5: ATRIBUTOS DE UN BUEN SOFTWARE ..............................................................33
CLASE 6: RETOS FUNDAMENTALES INGENIERIA SOFTWARE .....................................41
TALLER CLASE 1 FUNDAMENTOS INGENIERÍA SOFTWARE ........................................83
TALLER CLASE 2 PROCESO DEL SOFTWARE - MODELO PROCESO SOFTWARE .......86
TALLER CLASE 3: COSTOS Y METODOS INGENIERIA DE SOFTWARE ........................95
TALLER CLASE 4: HERRAMIENTAS CASE ......................................................................104
TALLER CLASE 5: ATRIBUTOS DE UN BUEN SOFTWARE ............................................110
TALLER CLASE 6: RETOS FUNDAMENTALES INGENIERÍA SOFTWARE ...................117
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CLASE 1: FUNDAMENTOS DE LA INGENIERIA DE
SOFTWARE
✓ Utilizar las herramientas y técnicas apropiadas para resolver el problema planteado, de acuerdo
a las restricciones de desarrollo y a los recursos disponibles.
¿QUÉ ES SOFTWARE?
Incluye el análisis previo de la situación, la redacción del proyecto, la creación del software y las
pruebas necesarias para garantizar su correcto funcionamiento antes de que el sistema esté
operativo. Esta ingeniería aborda todas las fases del ciclo de vida de desarrollo de cualquier tipo
de sistema de información y es aplicable a una amplia gama de ámbitos de la informática y la
ciencia de los ordenadores.
Analista de requerimientos
Su objetivo es recopilar, analizar y verificar las necesidades del cliente para un sistema, se encarga
de la documentación de los requerimientos para así el resto del equipo lo pueda consultar en
cualquier momento
Arquitecto de software
Se encarga de estudiar y determinar las estructuras de la aplicación y las tecnologías con las que
se construirá el software, además se encarga del aseguramiento de la calidad, mejorando
continuamente la arquitectura del software y actualizando la misma.
El enfoque en cascada.
Considera las actividades anteriores y las representa como fases de procesos separados, tales
como la especificación de requerimientos, el diseño del software, la implementación, las pruebas,
etcétera. Después de que cada etapa queda definida «se firma» y el desarrollo continúa con la
siguiente etapa.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
VENTAJAS DESVENTAJAS
Fácil de entender Es difícil regresar a una fase previa.
Fácil de manejar: cada fase tiene El software es entregado al final del
entregables específicos ciclo de vida del proyecto.
Refuerza buenos hábitos: No es apropiado para proyectos muy
Definir requerimientos antes de complejos o aquellos en los que los
diseñar; diseñar antes de codificar. requerimientos tienen alta
Dirigido en base a documentos, no probabilidad de cambio.
dependiente de las personas.
Desarrollo iterativo.
Este enfoque entrelaza las actividades de especificación, desarrollo y validación. Un
sistema inicial se desarrolla rápidamente a partir de especificaciones muy abstractas.
Este se refina basándose en las peticiones del cliente para producir un sistema que
satisfaga las necesidades de dicho cliente.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
El sistema puede entonces ser entregado.
Modelos iterativos:
Desarrollo incremental (iterativo + incrementos)
Desarrollo Ágil
Espiral
Rational Unified Process (RUP)
Etc.
VENTAJAS DESVENTAJAS
No hay que esperar hasta el final para Para los usuarios es difícil esperar
tener un sistema en producción. hasta que su funcionalidad esté lista
Las funcionalidades más importantes (reemplazo de sistema)
se desarrollan primero (se prueban A veces se complica identificar
más). servicios comunes a todos los
Se van descubriendo cambios en incrementos (el enfoque es por
requerimientos de los incrementos no incremento).
desarrollados (fácil incorporar Impacto en el proceso de contratación
cambios). (los requerimientos pueden cambiar a
Es más fácil acostumbrarse al nuevo medida que se desarrollan los
sistema. incrementos).
VENTAJAS DESVENTAJAS
Reduce la cantidad de software que Se pierde el control sobre la evolución
debe ser del software si las nuevas versiones
desarrollado lo que reduce costos y de los componentes reusables no
riesgos. están bajo el control de la
Usualmente se disminuyen los organización.
tiempos de entrega del software. El ajuste de requerimientos podría
producir un sistema que no satisface
las necesidades reales del usuario.
Desarrollo Incremental
El sistema es entregado en partes (incrementos / módulos).
El cliente debe de clasificar las partes de acuerdo a su importancia (prioridad alta, media,
baja).
El incremento de más alta prioridad se entrega primero.
Cada incremento se pone en producción
Requerimientos: Esta fase se refiere a todos los objetivos del proyecto, tanto el general o
central como los específicos.
Se precisan las tareas e iteraciones: definir las tareas y las iteraciones con que las que los
concretaremos.
Diseño de los incrementos: Se define cuál será la evolución del proyecto en las
iteraciones.
Desarrollo del incremento: Las tareas definidas son llevadas a cabo y así los incrementos
previstos son desarrollados.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Validación de los incrementos: Los responsables de la gestión de proyecto han de verificar
que cada iteración culminada de los resultados esperados.
Integración de los incrementos: integra todos los incrementos aprobados o validados por
la gestión de proyectos. Así se da la evolución global del proyecto, lo que también se
conoce como línea incremental.
Entrega del producto: Una vez hecha la integración y se constante que el producto cumple
con los objetivos planteados, se realiza la entrega.
VENTAJAS DESVENTAJAS
No hay que esperar hasta el final para Para los usuarios es difícil esperar
tener un sistema en producción. hasta que su funcionalidad esté lista –
Las funcionalidades más importantes (reemplazo de sistema)
se desarrollan primero (se prueban A veces se complica identificar
más). servicios comunes a todos los
Se van descubriendo cambios en incrementos (el enfoque es por
requerimientos de los incrementos no incremento).
desarrollados (fácil incorporar Impacto en el proceso de contratación
cambios). (los requerimientos pueden cambiar a
Es más fácil acostumbrarse al nuevo medida que se desarrollan los
sistema. incrementos).
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CLASE 3: COSTOS Y METODOS INGENIERIA DE
SOFTWARE
Definiciones:
1. Ficheros lógicos internos (ILF): Grupos de datos relacionados, visibles para el usuario,
relativos a datos o información de control de la aplicación, se mantienen adentro del
ámbito de la aplicación.
2. Ficheros lógicos externos (EIF): Grupos de datos relacionados, visibles para el usuario,
relativos a datos o información de control de la aplicación, se mantienen fuera del ámbito
de la aplicación.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
3. Tipo de Datos Elemental (DET): Campo único e irrepetible, visible al usuario.
4. Tipo Registro Elemental (RET): Grupo de datos relacionados dentro de un fichero lógico
externo o interno.
5. Tipo Fichero Referenciado (FTR): Archivo lógico interno o externo. Puede tener varios
RET. Un grupo de datos se considera RET si es opcional o independiente de los demás.
6. Salidas Externas (EO): Proceso elemental que genera datos que se envían más allá de la
frontera de la aplicación. Dicho proceso elemental debe realizar algún cálculo, generar
datos derivados, modificar algún ILF o el estado de la aplicación.
7. Consultas Externas (EQ): Proceso elemental de la aplicación siendo medida que envía
datos o información de control más allá de la frontera de la aplicación. Sólo muestra
información tal como está contenida en el sistema, sin realizar ningún tipo de
procesamiento extra más allá de la simple recuperación de datos.
¿Cuáles son los costos de la ingeniería de software?
Usualmente el profesional informático se vincula en los proyectos de software hasta la estimación
de horas-hombre requeridas. Otras decisiones como períodos de actualización tecnológica,
herramientas en las que invertir, proyectos a abordar, productos a discontinuar, contratar personal
o hacer outsourcing usualmente son ajenas al personal informático.
Para sistemas software de larga vida, tales como sistemas de orden y de control que
pueden ser usados durante 10 años o más, estos costos exceden a los de desarrollo por un
factor de 3 o 4, como se muestra en la Figura. Sin embargo, los sistemas de negocio más
pequeños tienen una vida mucho más corta y, correspondientemente, costos de evolución
más reducidos.
COCOMO.
El Modelo Constructivo de Costos (COnstructive COst Model) es una jerarquía de modelos de
estimación para el software. Esta jerarquía está constituida por los siguientes modelos:
Básico: modelo univariable estático que calcula el esfuerzo (y el costo) del desarrollo de
software en función del tamaño del programa expresando en líneas de código (LDC)
estimadas.
Intermedia: calcula el esfuerzo del desarrollo de software en función del tamaño del
programa y de un conjunto de “conductores de costo”, que incluyen la evaluación
subjetiva del producto, del hardware, del personal y de los atributos del proyecto.
Avanzada: incorpora todas las características de la versión intermedia y lleva a cabo una
evaluación de impacto de los conductores de costo en cada fase (análisis, diseño, etc.) del
proceso de ingeniería de software.
Las ecuaciones del modelo COCOMO básico tienen la siguiente forma:
líneas
Puntos
Puntos de
de
objeto código
función
fuente
Para diferentes niveles de experiencia del desarrollador y de madurez del entorno de desarrollo.
Una vez determinada la tasa de productividad se calcula una estimación del esfuerzo del proyecto
usando.
Establece el orden en el que la mayoría de las actividades tienen que realizarse y los
enlaces entre ellas.
Indica cómo tienen que realizarse algunas tareas proporcionando las herramientas
concretas e intelectuales
Con una metodología se intentan cubrir las siguientes necesidades
Mejores aplicaciones
Mejor proceso de desarrollo
Establecer un proceso estándar en una organización
DEFINICIÓN
“Un proceso para producir software de forma organizada, empleando una colección de técnicas
y convenciones de notación predefinidas” (Rumbaugh et al., 1991)
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CARACTERÍSTICAS DESEABLES EN UNA METODOLOGÍA
Un proceso de ciclo de vida completo, que comprenda aspectos tanto del negocio como
técnicos
Un conjunto completo de conceptos y modelos que sean internamente consistentes
Una colección de reglas y guías
Una descripción completa de artefactos a desarrollar
Una notación con la que trabajar, idealmente soportada por diversas herramientas CASE
y diseñada para una usabilidad óptima
Un conjunto de técnicas probadas
Un conjunto de métricas, junto con asesoramiento sobre calidad, estándares y
estrategias de prueba
Identificación de los roles organizacionales
Guías para la gestión de proyectos y aseguramiento de la calidad
Asesoramiento para la gestión de bibliotecas y reutilización
METODOLOGÍAS ESTRUCTURADAS
Proponen la creación de modelos del sistema que representan los procesos, los flujos y
la estructura de los datos de una manera descendente.
Se pasa de una visión general del problema, nivel de abstracción alto, a un nivel de
abstracción sencillo
Esta visión se puede enfocar
o Hacia un punto de vista funcional del sistema
Metodologías orientadas a procesos
o Hacia la estructura de datos
Metodologías orientadas a datos
METODOLOGÍAS ESTRUCTURADAS ORIENTADAS A PROCESOS
METODOLOGÍAS ÁGILES
Esto choca frontalmente con los modelos de procesos tradicionales que son monolíticos
y lentos, centrados en una única iteración o ciclo de larga duración
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
La agilidad significa respuesta efectiva al cambio, pero incluye. Estructuras de equipo y actitudes
para facilitar la comunicación entre los miembros
Énfasis en la entrega rápida de software funcional, para lo que resta importancia a los
productos intermedios (lo cual siempre no es bueno)
Adopción del cliente como parte del equipo de desarrollo
Planificación incierta y, por tanto, flexible
EXTREME PROGRAMMING
El juego de la planificación
Versiones pequeñas
Metáfora
Diseño sencillo
Hacer pruebas
Refactorización
Programación en parejas
Propiedad colectiva
Integración continua
Cliente in-situ
Estándares de codificación
SCRUM
Define un ciclo de vida iterativo e incremental, que mejora la gestión del riesgo y aumenta la
comunicación
Propuesto por Jeff Sutherland y desarrollado por Shwaber y Beedle (Schwaber, 1995). El
conjunto de buenas prácticas de Scrum se aplica esencialmente a la gestión de proyecto
Es un framework, por lo que es necesaria su adaptación en cada organización o incluso
en cada equipo
El objetivo es obtener resultados rápidos con adaptación a los cambios de las
necesidades de los clientes.
Las principales características de Scrum
Transparencia
o Todos los aspectos del proceso que afectan al resultado son visibles para todos
aquellos que administran dicho resultado
Inspección
o Se debe controlar con la suficiente frecuencia los diversos aspectos del proceso
para que puedan detectarse variaciones inaceptables en el mismo
Revisión
o El producto debe estar dentro de los límites aceptables
o En caso de desviación se procederá a una adaptación del proceso y del material
procesado
o Mecanismo de mejora continua, esto es, de control, para adaptarse y mejorar
Roles
Scrum Master. Es el responsable de asegurar que el equipo Scrum siga las prácticas de Scrum.
Autogestionado. El mismo equipo supervisa su trabajo (no existe el rol clásico de jefe de
proyecto)
Multifuncional. Cada integrante del equipo debe ser capaz de realizar cualquier función
No distribuidos. Es conveniente que el equipo se encuentre en el mismo lugar físico
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Tamaño óptimo. Al menos tres personas, máximo nueve, sin contar al scrum master ni
al producto Owner.
Acciones de los patrones de proceso
¿QUÉ ES CASE?
CASE (Computer Aided Software Engineering) es un conjunto de herramientas que contiene
programas y aplicaciones informáticas diseñados con la finalidad de generar mayor
productividad, brindar facilidades de uso que ahorran tiempo y dinero en el desarrollo de
softwares o nuevas aplicaciones.
Terminología de la estructura CASE
CASE de alto nivel: son aquellas herramientas que automatizan o apoyan las fases finales
o superiores del ciclo de vida del desarrollo de sistemas. Ejemplo: La planificación de
sistemas, el análisis de sistemas y el diseño de sistemas.
CASE de bajo nivel: son aquellas herramientas que automatizan o apoyan las fases finales
o inferiores del ciclo de vida. Ejemplo: El diseño detallado de sistemas, la implantación
de sistemas y el soporte de sistemas.
CASE cruzado: de ciclo de vida se aplica a aquellas herramientas que apoyan actividades
que tienen lugar a lo largo de todo el ciclo de vida. Ejemplo: La gestión de proyectos y la
estimación.
HERRAMIENTAS CASE
Las herramientas CASE son un conjunto de aplicaciones informáticas, usadas para automatizar
actividades del ciclo de vida de desarrollo de sistemas (SDLC).
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Las herramientas CASE son usadas por los directores de proyectos de software, analistas e
Ingenieros para desarrollar sistemas de software.
Finalidad de las herramientas CASE
Herramientas Upper CASE - Las Herramientas Upper CASE se usan en las etapas de
planificación, análisis y diseño del SDLC.
Herramientas Lower CASE - Las Herramientas Lower CASE se usan en la
implementación, las pruebas y en el mantenimiento.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
La Herramientas CASE se pueden agrupar todas juntas si tienen una funcionalidad similar, y
procesa actividades y la capacidad de integrarse con otras Herramientas.
Herramienta Descripción
CASE
NetBeans Herramienta muy buena con características buenas como desarrollo
intuitivo gratis y open source drag-and-drop para mayor rapidez
Principalmente para desarrollo de escritorio Web Mobile y enterprise con
compatibilidad con java C/C++ Ruby PHP javascript tiene algunas mejoras
con UML aunque no es el más óptimo tiene algo muy interesante creador
de juegos para celulares
Microsoft Visio Herramienta de diagramación avanzada con gran variedad de plantillas que
permiten simplificar las tareas complejas con elementos visuales dinámicos
basados en datos, UML Bases de Datos Arquitectura ect con SharePoint con
más facilidad sin generar código Pero bastante atractiva para hacer distintos
diagramas
Eclipse/Omondo Eclipse dispone de un Editor de texto. La compilación es en tiempo real.
Tiene pruebas unitarias con JUnit, control de versiones con CVS, Como ya
sabemos código abierto Sobre el cual se pueden montar herramientas de
desarrollo para cualquier lenguaje mediante la implementación de los
plugins adecuados como omondo para la realización de diagramas UML
generando código.
OmniGraffle Es una herramienta de diagramación disponible para OS, muy práctica y
fácil de usar, con muchos elementos que facilitan la creación de DFD. Esta
herramienta brinda la posibilidad de exportar en varios formatos, es
accesible y se puede adquirir directamente en el Appstore
Serena Esta herramienta ayuda en el diseño de la interfaz gráfica y las definiciones
Composer iniciales del sistema, el producto final de este software es un reporte no
funcional que detalla el funcionamiento del sistema y una visión no
funcional del sistema (prototipo) que no puede ser reutilizado para la etapa
de desarrollo.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Erwin Esta herramienta es de las más eficientes y completas, para la tarea de
realizar ingeniería inversa esta herramienta es sumamente sencilla, basta
con darle la orden, no hubo mucho que explicar pues es realmente sencilla.
GUI Design Es una herramienta enfocada solamente en el diseño de interfaces gráficas
Studio para aplicaciones, es muy sencillo de usar y contiene muchos elementos
para modelar pantallas de aplicaciones botones, cajas de texto, contraseñas,
tablas, iconos y es capaz de simular el paso de ventanas.
Eclipse Indigo Para la generación de diagramas de clases en Eclipse se necesita un plug-
*Plug-in "UML in, este tiene una facilidad de uso muy buena y es fácil de realizar diagramas
2 Tools" de Clases con todos los atributos necesarios.
Expression Esta herramienta de Microsoft permite hacer páginas web muy fácil ya que
Web 4 no es necesario meterse al código HTML, si no permite seleccionar los
elementos de una paleta y solo arrastrarlos para crear nuestra página.
Permite el uso de código PHP para hacer aplicaciones Web poderosas.
Edraw Es un programa muy completo para realizar diferentes tipos de diagramas
de varias metodologías, Es muy sencillo de usar ya que tiene una interfaz
muy parecida a la de Microsoft Visio.
ERwin Esta herramienta es muy eficaz cuando se busca hacer el diseño de una Base
de Datos ya que permite crear paralelamente el modelo físico y lógico de la
BD. Así mismo permite crear Triggers, Indices Stored Procedures, en
bastantes Manejadores de Base de Datos tanto para hacer una ingeniería
inversa o pasar el diseño a un manejador.
MOCKFLOW Herramienta CASE enfocada a la etapa de diseño ya sea web, móvil o
desktop. Tiene servicio en la nube.
yUML Herramienta CASE enfocada a diagramación de UML, servicio de la nube,
con diagramas de clase, actividad y casos de uso.
Oracle SQL Herramienta CASE especializada en Base de Datos, tiene varios módulos
Developer de modelado de datos entre otras y tiene compatibilidad con distintos
manejadores de Base de Datos.
DIA Es una herramienta CASE (proyecto de GNOME) tanto enfocada para
UML como para Base de Datos.
CASE Studio 2 es una herramienta case que es principalmente orientada al diseño y
modelado de diagramas de entidad relación.
SQL server herramienta para realizar ingeniería inversa
Requerimientos no funcionales.
Características de arquitectura.
Propiedades de calidad.
Compatibilidad
Capacidad de dos o más
sistemas o componentes
para intercambiar
Interoperabilidad:
información y/o llevar a Coexistencia: Estar en un
Facilidad de
cabo sus funciones contexto con otros
comunicación con
requeridas cuando sistemas.
componentes externos.
comparten el mismo
entorno hardware o
software.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Usabilidad
Capacidad del Protección
Reconocimiento Estética de la
producto contra errores Accesibilidad:
de idoneidad: Capacidad de Capacidad para interfaz de
software para de usuario: Capacidad del
Capacidad del aprendizaje: ser usado: usuario:
ser entendido, Capacidad del producto que
producto que Capacidad del Capacidad del Capacidad de la
aprendido, sistema para permite que sea
permite al producto que producto que interfaz de
usado y resultar proteger a los utilizado por
usuario permite al permite al usuario de
atractivo para el usuarios de usuarios con
entender si el usuario usuario operarlo agradar y
usuario, cuando hacer errores y determinadas
software es aprender su y controlarlo con satisfacer la
se usa bajo de darle características y
adecuado para aplicación. facilidad interacción con
determinadas FeedBack sobre discapacidades.
sus necesidades. el usuario.
condiciones. los mismos.
Fiabilidad / Confiabilidad
Capacidad de
recuperación:
Capacidad de un
Tolerancia a fallos: Capacidad del
sistema o Madurez: Disponibilidad:
Capacidad del producto software
componente para Capacidad del Capacidad del
sistema o para recuperar los
desempeñar las sistema para sistema o
componente para datos
funciones satisfacer las componente de
operar según lo directamente
especificadas, necesidades de estar operativo y
previsto en afectados y
cuando se usa bajo fiabilidad en accesible para su
presencia de fallos reestablecer el
unas condiciones y condiciones uso cuando se
hardware o estado deseado
periodo de tiempo normales. requiere.
software. del sistema en caso
determinados.
de interrupción o
fallo.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Adecuación Funcional
Representa la
capacidad del
producto software Pertinencia funcional:
Completitud Corrección funcional:
para proporcionar Capacidad del
funcional: Grado en Capacidad del
funciones que producto software
el cual el conjunto de producto o sistema
satisfacen las para proporcionar un
funcionalidades cubre para proveer
necesidades conjunto apropiado
todas las tareas y los resultados correctos
declaradas e de funciones para
objetivos del usuario con el nivel de
implícitas, cuando el tareas y objetivos de
especificados. precisión requerido.
producto se usa en las usuario especificados.
condiciones
especificadas.
Eficiencia de desempeño
Comportamiento
temporal: Los tiempos
de respuesta y
Esta característica Utilización de recursos:
procesamiento y los Capacidad: Grado en
representa el Las cantidades y tipos
ratios de throughput de que los límites máximos
desempeño relativo a la de recursos utilizados
un sistema cuando lleva de un parámetro de un
cantidad de recursos cuando el software lleva
a cabo sus funciones producto o sistema
utilizados bajo a cabo su función bajo
bajo condiciones software cumplen con
determinadas condiciones
determinadas en los requisitos.
condiciones. determinadas.
relación con un banco
de pruebas (benchmark)
establecido.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Seguridad
No repudio:
Integridad: Capacidad de
Capacidad de Confidencialidad:
Capacidad del demostrar las
protección de la Capacidad de
sistema o acciones o Responsabilidad: Autenticidad:
información y los protección contra
componente para eventos que han Capacidad de Capacidad de
datos de manera el acceso de
prevenir accesos tenido lugar, de rastrear de forma demostrar la
que personas o datos e
o modificaciones manera que inequívoca las identidad de un
sistemas no información no
no autorizados a dichas acciones o acciones de una sujeto o un
autorizados no autorizados, ya
datos o eventos no entidad. recurso.
puedan leerlos o sea accidental o
programas de puedan ser
modificarlos. deliberadamente.
ordenador. repudiados
posteriormente.
Mantenibilidad
Analizabilidad: Capacidad para ser
Esta característica Modularidad:
Facilidad con la que Capacidad para ser probado: Facilidad
representa la Capacidad de un
se puede evaluar el modificado: con la que se
capacidad del sistema o programa Reusabilidad:
impacto de un Capacidad del pueden establecer
producto software de ordenador Capacidad de un
determinado producto que criterios de prueba
para ser modificado (compuesto de activo que permite
cambio sobre el permite que sea para un sistema o
efectiva y componentes que sea utilizado en
resto del software, modificado de componente y con
eficientemente, discretos) que más de un sistema
diagnosticar las forma efectiva y la que se pueden
debido a permite que un software o en la
deficiencias o eficiente sin llevar a cabo las
necesidades cambio en un construcción de
causas de fallos en introducir defectos pruebas para
evolutivas, componente tenga otros activos.
el software, o o degradar el determinar si se
correctivas o un impacto mínimo
identificar las desempeño. cumplen dichos
perfectivas. en los demás.
partes a modificar. criterios.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Portabilidad
Adaptabilidad:
Capacidad para ser
Capacidad del
Capacidad para ser reemplazado:
Facultad del producto producto que le
instalado: Facilidad Capacidad del
o componente de ser permite ser adaptado
con la que el producto para ser
transferido de forma de forma efectiva y
producto se puede utilizado en lugar de
efectiva y eficiente de eficiente a diferentes
instalar y/o otro producto
un entorno hardware, entornos
desinstalar de forma software
software, operacional determinados de
exitosa en un determinado con el
o de utilización a otro. hardware, software,
determinado entorno. mismo propósito y en
operacionales o de
el mismo entorno.
uso.
PREGUNTAS DE RETROALIMENTACIÓN
1. ¿Cómo influyó el trabajo de Takeuchi y Nonaka, especialmente su introducción de
conceptos como agilidad, flexibilidad y colaboración multidisciplinaria, en la evolución
de la gestión de proyectos y áreas empresariales?
3. ¿Qué objetivo tiene la revisión del Backlog durante la fase de Sprint cero en el proceso
de preparación del proyecto?
Seleccionar de la lista Backlog del producto las funcionalidades sobre las que se va a
trabajar.
Debatir temas relacionados con el Sprint recientemente finalizado y los cambios que se
podrían hacer para mejorar el próximo Spring y que sea más productivo.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CLASE 6: RETOS FUNDAMENTALES INGENIERIA
SOFTWARE
¿CUÁLES SON LOS RETOS FUNDAMENTALES A LOS
QUE SE ENFRENTA LA INGENIERÍA DE SOFTWARE?
Un proceso tan laberintico como el desarrollo de un producto de software conlleva su propio
conjunto de retos, retos que puedes encontrar cada día.
Actualmente solo un 12% de los proyectos de software se terminan a tiempo previsto con el coste
estimado. Frente al 78% de los proyectos realizados en el seno de la ingeniería tradicional que lo
hicieron en tiempo y presupuesto. Curiosamente 90% de los proyectos de software que acabaron
en tiempo y presupuesto usaron métodos y herramientas de Ingeniera del software.
El reto de la confianza: Desarrollar técnicas que demuestren que los usuarios pueden
confiar en el software, es esencial que podamos confiar en el software desarrollado o
adquirido.
El reto de la Formalidad: Existe una gran deprecación de que exista formalidad en el
proceso de desarrollo de software.
RETOS A LOS QUE SE ENFRENTA TODO
DESARROLLADOR DE PRODUCTOS DE SOFTWARE
1. Infraestructura del proyecto: Si el entorno no está disponible, no hay forma de seguir
adelante con el proyecto a tiempo y bajo presupuesto. Para garantizar un desarrollo
eficiente del proyecto, los entornos de prueba y preproducción deben estar disponibles
durante las fases de desarrollo, pruebas y pruebas de aceptación del usuario (UAT).
3. Garantía de calidad: No revisar el código, o suprimir los errores, es un medio que utilizan
los desarrolladores para ahorrar tiempo y cumplir los plazos. Es imprescindible seguir un
proceso formal de garantía de calidad.
5. Adaptar las últimas tendencias del mercado: Adaptarse a los últimos requisitos
tecnológicos, como mobile-first o mobile-only o desktop-first, suele ser un reto.
Asegúrate estar al día de las tendencias del mercado y explorar las nuevas tecnologías y
tendencias que existen.
6. Influencias en el diseño: Los diseños de los productos están bajo la influencia constante
de las partes interesadas, la organización de desarrollo y otros factores internos y
externos. Refuerza la racionalización de tu diseño, ofrece una experiencia coherente en
todos los dispositivos, sistemas operativos y factores de forma.
8. Gestión de proyectos: Muy a menudo la multitarea puede dar más problemas de los
previstos. Los recursos no pueden centrarse en una sola tarea o módulo si su jefe les
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
bombardea con tareas. Aprovechar las herramientas de gestión de proyectos y mantener
los proyectos, los recursos y los equipos organizados y encaminados es una manera de
ser un excelente planificar.
Para ser exitosos hoy en día con el desarrollo de software es importante tener
conocimientos sobre gestión de proyectos. Saber realizar un contrato, manejar pagos,
clientes, expectativas, equipos y más es parte del trabajo que va de la mano con el
desarrollo de software.
El desarrollo de software es algo que requiere del cuidado de muchísimos detalles para
que todo fluya y no ocurran errores. Es por ello que se deben hacer muchísimas pruebas
y correcciones a fin de satisfacer al cliente. Además, esto debe ocurrir a medida que se va
creando el software para estar seguros de que todo va por buen camino y de que no hay
que comenzar desde cero ya muy avanzado en el camino.
10. Infraestructura de seguridad: Los fallos de seguridad van en aumento; un estudio reciente
estima que el 96% de todas las aplicaciones web contienen al menos una vulnerabilidad
grave. La seguridad no es sólo responsabilidad del ingeniero de software, sino también
de todas las partes implicadas.
OTROS RETOS:
1. Mayor competencia en el sector: La creciente globalización ha hecho que la competencia
sea mayor. Una idea que tenga un desarrollador de software pudiese estarla teniendo
también otra persona, equipo o empresa en otro lugar del mundo. Quizás hasta ya tienen
un prototipo en marcha.
2. Sistemas SaaS: “un sistema SaaS o Software as a Service, es un modelo de distribución
de software en el que tanto el software como los datos manejados son centralizados y
alojados en un único servidor externo a la empresa. Esto implica que el software utilizado
por la empresa no se encuentra en la misma, sino que un proveedor se ocupa del hosting
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
de dicho software en la nube, así como del mantenimiento y el soporte” según sitio web
IEB School.
PREGUNTAS DE EXPOSICIÓN
1. ¿En qué principios clave se basa la programación extrema?
3. ¿Cuántos pasos tiene el ciclo recomendado por TDD (Desarrollo dirigido por prueba)?
Programación efectiva.
DESARROLLO ÁGIL
Es la identificación de oportunidades comerciales en cada proyecto potencial, estimación del
tiempo y el trabajo que se requerirá para completar el proyecto.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
El software está sujeto a cambios, el cambio tiene un costo de tiempo de trabajo debido
al talento humano expuesto en estos cambios y también un costo monetario.
Cuando existe un cambio grande, el equipo debe replantear el diseño del software, esto
constituye mucho tiempo y esfuerzo, haciendo cambios de manera tardía reduce
significativamente el incremento del costo.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
El proceso ágil es también conocido como metodología liviana, esto es debido a que con este tipo
de metodologías se intenta que el grupo de desarrolladores se libre de actividades consideradas
como tortuosas, de modo que se intensifiquen las actividades más importantes enfocándose en el
cliente, el equipo de trabajo y los resultados del sistema.
ANÁLISIS,DISEÑO Y
CONSTRUCCIÓN: REQUERIMENTOS:
Estas 3 actividades a Los requeriminetos y
pesar de que se prioridades del
realicen de manera cliente siempre
correcta no siempre cambian.
son predecibles.
DISEÑO Y CONSTRUCCIÓN:
Existe el problema de no
saber a ciencia ciertacuanto
se debe diseñar el software
antes de su construcción.
Principios de desarrollo
Políticas de desarrollo
Factor humano
PRINCIPIOS
1. La prioridad es satisfacer al cliente.
2. Los cambios son bien vistos en etapas avanzadas.
3. Se hace entrega de un software que funcione cada vez mejor.
4. Todo el equipo y el cliente trabajaban conjuntamente.
5. Deber haber motivación.
6. El mejor método para el entendimiento es la comunicación cara a cara.
7. Un avance es un software que funcione.
8. Los procesos ágiles promueven el desarrollo.
9. La excelencia tecnica y el buen diseño mejora la agilidad.
10. Es esencial la simplicidad.
11. Se necesita organización de equipo para que haya mejoras.
12. Se reflexiona sobre cómo ser eficaz.
POLÍTICAS DE DESARROLLO
Por su puesto que ser ágil, nunca es una desventaja, pero ¿ser ágil conlleva también ser
organizado? , la respuesta es: NO, se necesitan ideas y políticas que deben asumir los
desarrolladores para crear un software que sea llevado a la perfección y entregado en el momento
adecuado.
FACTOR HUMANO
El factor humano se fija mucho en las características de cada uno de los personajes que intervienen
en el desarrollo de software y estas se explican a continuación:
Competencia: Es el conocimiento o lo que sabe hacer cada uno de los miembros del
equipo de desarrollo.
Enfoque común: La meta que tienen en común es la satisfacción del cliente, para esto se
debe adaptar el software continuamente.
Colaboración: Todos los participantes deben colaborar en el entendimiento de los
requerimientos y todos deben proporcionar información.
Capacidad para resolver problemas difusos: El equipo debe poder resolver un problema
de la manera más pronta posible.
Habilidad para tomar decisiones: Las decisiones son tomadas en conjunto.
Confianza y respeto mutuos: Debe existir confianza y respeto entre todos los miembros
del grupo de trabajo.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Organización propia: El equipo debe adaptarse al ambiente, los cambios, los
requerimientos, entre otros aspectos.
Scrum
Se trata de un método indicado para solventar problemas complejos y se basa en procesos
empíricos de control.
Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para
trabajar colaborativamente, en equipo, y así obtener el mejor resultado posible de un proyecto. Se
realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan
al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos
complejos, en los que se necesita obtener resultados inmediatos y en los que los requisitos son
cambiantes o poco definidos. En definitiva, donde la innovación, competitividad, flexibilidad y
productividad son fundamentales.
Cuenta con dos tipos de enfoque:
Iterativo: en cada sprint se genera una nueva versión del producto que mejora la versión
del sprint anterior. Se trata de ir refinando y mejorando las propiedades del producto
conforme avanza el proyecto.
Incremental: en cada periodo de tiempo corto se van añadiendo nuevas características al
producto.
Por otra parte, en un proyecto ágil bajo metodología Scrum se distinguen tres roles:
Product Owner,
Scrum Master
equipo de desarrollo
XP
Es una metodología ágil exclusiva para el desarrollo de software. Sus siglas provienen de Extreme
Programming y, al igual que Scrum, contempla cambios frecuentes e iteraciones relativas a cortos
periodos de tiempo.
La metodología XP define cuatro variables para cualquier proyecto de software. Estas son las
siguientes:
Coste
Tiempo
Calidad
Alcance
Según el método, de estas cuatro variables, tres pueden ser fijadas por actores externos al equipo
de desarrollo. Es decir, por los clientes o por los responsables de proyectos. El restante debe ser
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
establecida por el mismo departamento, que fija su valor en función de las otras. El objetivo de
esto es intentar alcanzar un equilibrio entre las cuatro variables.
Kanban
Esta metodología consiste en la organización del trabajo diario en base a un panel de tareas. No
propone cambios en las prácticas de ingeniería ni una nueva definición de proceso o estilo de
trabajo. En cambio, se diseña para evitar la sobreproducción y para asegurarse de que los
componentes pasan de un subproceso al siguiente en el orden adecuado.
Uno de las principales ventajas de Kanban es la transparencia sobre el proceso. Esto se consigue
con el tablero Kanban, el cual muestra en un vistazo el estado del trabajo actual según las etapas
del ciclo de trabajo que se definan.
“Imagina que cada una de estas etapas representa un carril y son 3: Por hacer, haciendo y
finalizado. Es decir que el trabajo por hacer entra por la izquierda y una vez es terminado, sale
por la derecha.”
Adivina qué va en cada carril según su estado actual, exacto, ¡las tarjetas! Cada tarjeta representa
un elemento de trabajo y nos brindará tanta información como nosotros definamos. De ahí que
sea necesario que diseñemos nuestra pizarra Kanban.
Lean
Es considerada tanto una metodología de trabajo como una filosofía centrada en maximizar el
valor del cliente y minimizar el desperdicio. Esto traducido a los procesos de fabricación “pull”
radica en producir solo lo necesario y en el momento adecuado.
En este contexto, podemos decir que el Lean Start Up consiste en extender la metodología al
lanzamiento de nuevas empresas al mercado.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CLASE 10: INTRODUCCIÓN SOBRE ASPECTOS HUMANOS
EN LA INGENIERÍA DEL SOFTWARE EQUIPOS DE
TRABAJO
Aspectos Humanos en la Ingeniería del Software
La Ingeniería del Software posee una abundante cantidad de técnicas y herramientas para mejorar
el proceso de desarrollo del software.
Leyes.
Hay muchas “leyes”, que expresan de forma popular, intuitiva y en ocasiones sarcástica
(Parkinson, Peter, Murphy) grandes verdades sobre el ser humano puesto en determinadas
circunstancias. A continuación, se recogen, para comentarlas en clase, algunas que tienen mucho
que ver con el manageware y que ponen un contrapunto sabio a muchas de las sofisticadas técnicas
que para dirigir o gestionar proyectos se proponen en tantos y tantos libros muy sofisticados.
Ley de Parkinson: El trabajo tiende a ocupar todo el tiempo disponible para él (Ley del mínimo
esfuerzo, o de la voluptuosidad de los trabajos).
Ley de Brooks: Añadir gente a un proyecto retrasado lo atrasará aún más (Ley estadística de los
proyectos).
Principio de Peter: Toda persona tiende a ascender hasta su nivel de incompetencia (Ley de las
organizaciones humanas, aplicable por tanto a jefes de proyecto).
Ley de Murphy: Las cosas pueden empeorar más allá de todo límite (Ley del pesimismo integral
o de la negrura generalizada).
Principio de Clausewitz: El movimiento de un grupo de personas se rige por la velocidad de la
más lenta.
Delegar
Es conveniente dirigir al equipo hasta cierto punto, pero luego, se debe dar a los miembros la
oportunidad de llevar a cabo acciones por ellos mismos para que adquieran experiencia y
desarrollen sus habilidades eficazmente.
Fomentar el feedback
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Hay que ofrecer retroinformación a los miembros del equipo de manera rápida y precisa sobre su
desempeño, oportunidades de mejora y logros. Por otro lado, ellos deben estar abiertos a recibir
este tipo de observaciones y aportar en cualquier aspecto que consideren necesario.
Apostar por la flexibilidad
Es más productivo centrarse en los resultados finales, en la calidad del trabajo y en el
cumplimiento de metas que en lugar de exigir horarios estrictos o jornadas largas de trabajo sin
resultado alguno. [5]
Apoyo, apoyo y más apoyo
Es el aspecto más importante a la hora de formar un equipo de trabajo. Si no hay apoyo, no hay
soporte, comunicación y mucho menos productividad. Hay que brindarles todo el apoyo posible
para que ellos puedan realizar sus actividades. Incluso, si hay posibilidades de brindar
capacitación para adquirir nuevas técnicas, aún mejor.
Dar reconocimiento
Reconocer los grandes y pequeños logros es vital para mantener al equipo de trabajo motivado y
con un buen ambiente laboral. Este tipo de acciones ayuda a construir y fortalecer el espíritu de
equipo y fomenta un clima laboral más productivo.
El objetivo de este tema es introducir la verificación y validación del software con énfasis en las
técnicas de verificación estática y en la prueba dinámica de código.
Verificación:
Validación:
¿Estamos construyendo el
¿Estamos construyendo el
producto correctamente?
producto correcto?
Se comprueba que el software
Comprueba que el software
cumple los requisitos funcionales
cumple las expectativas que el
y no funcionales de su
cliente espera.
especificación.
Verificación y validación
INSPECCIONES DEL SOFTWARE:
Proceso de depuración
INSPECCIONES DEL SOFTWARE
LISTA DE FALLOS
FALLOS DE DATOS:
FALLOS DE CONTROL:
Análisis de flujo de control: Identifica y señala los bucles con múltiples puntos de salida
y las secciones de código no alcanzable.
Análisis de utilización de datos: Señala como se utilizan las variables del programa:
Variables sin utilización previa, que se declaran dos veces, declaradas y nunca utilizadas.
Condiciones lógicas con valor invariante, etc.
Análisis de interfaces: Verifica la declaración de las operaciones y su invocación. Esto es
inútil en lenguajes con tipado fuerte (Java, Ada) pero si en los restantes (C no comprueba
los parámetros de una operación).
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Análisis de la trayectoria: Identifica todas las posibles trayectorias del programa y
presenta las sentencias ejecutadas en cada trayectoria.
Las pruebas se realizan en cuatro etapas:
Prueba de unidades (prueba de métodos y clases): se prueba cada método y clase de forma
independiente
Prueba de integración o de subsistemas: se prueban agrupaciones de clases relacionadas
Prueba de sistema: se prueba el sistema como un todo
Prueba de validación (o de aceptación): prueba del sistema en el entorno real de trabajo
con intervención del usuario final.
En las pruebas estructurales las pruebas se seleccionan en función del conocimiento que
se tiene de la implementación del módulo.
Se suelen aplicar a módulos pequeños.
El probador analiza el código y deduce cuántos y qué conjuntos de valores de entrada han
de probarse para que al menos se ejecute una vez cada sentencia del código.
PRUEBAS DE INTEGRACIÓN
Para corregir errores (código innecesario, duplicado, listas extensas de parámetros…) [5]
En escenarios de código espagueti: código erosionado, confuso y de difícil lectura que
está poniendo freno a su funcionalidad. Este tipo de códigos suele contener elementos
que complican su estructura (órdenes de salto, bucles for/while, comandos if…) que
pueden derivar de los conocidos como code smells al code rot (literalmente, “putrefacción
del código”), que puede terminar por complicar el código hasta el punto en que no es
posible aplicar actualizaciones. ¨
Frente a esto, la refactorización mejora el código y lo vuelve más efectivo, pudiendo integrar
nuevos elementos de forma más sencilla, también por programadores que accedan por primera
vez al código.
VENTAJAS DESVENTAJAS
Una mejor comprensión facilita el Una refactorización imprecisa podría
mantenimiento y la ampliación del generar nuevos bugs y errores en el código.
software.
La reestructuración del código fuente puedeNo existe una definición clara de qué es un
realizarse sin cambiar la funcionalidad. código limpio o bien estructurado.
La mejora en la legibilidad del código Los clientes no suelen percatarse de las
facilita que otros programadores lo mejoras en el código, ya que la
comprendan. funcionalidad no varía, de forma que la
utilidad de la refactorización no es siempre
obvia.
La eliminación de las redundancias aumenta Cuando la refactorización es realizada por
la eficiencia del código. equipos grandes, llegar a acuerdos podría
suponer más trabajo del esperado.
Los métodos cerrados en sí mismos impiden
que los cambios locales afecten a otras
partes del código.
Un código bien estructurado, con métodos y
clases más cortas y cerradas en sí mismos,
puede ponerse a prueba más fácilmente.
LAS VENTAJAS Y DESVENTAJAS
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CLASE 12: ¿QUÉ ES USABILIDAD?
Más allá del concepto antes referido, si buscamos la palabra “usabilidad” en Google veremos, no
solo que no está contemplada por la RAE (al tratarse de un neologismo, del inglés, “usability”),
sino que, desde las primeras entradas, su definición hace referencia al entorno digital. Se entiende
usabilidad como “la facilidad con que un usuario puede utilizar una herramienta fabricada por
otras personas con el fin de alcanzar un cierto objetivo”. Se dice que una página web o una
aplicación es usable cuándo es sencilla de utilizar porque facilita la lectura de los textos,
descarga rápidamente la información y presenta funciones y menús sencillos e intuitivos de
manera que resulta cómoda de usar.
• Definición coloquial: Facilidad de uso, ya sea de una página web, una aplicación
informática o cualquier otro sistema que interactúe con un usuario.
• ISO 9126: “La usabilidad se refiere a la capacidad de un software de ser comprendido,
aprendido, usado y ser atractivo para el usuario, en condiciones específicas de uso”.
¿Qué es Usabilidad?
Un sistema usable es:
• Funcionalmente correcto (efectividad)
• Eficiente de usar (eficiencia)
• Fácil de aprender
• Fácil de recordar
• Tolerante a los errores
• Subjetivamente agradable (satisfacción).
OBJETIVOS DE LA USABILIDAD
La accesibilidad de cualquier sistema debe constituir un objetivo primordial que no puede
descuidarse ni dejarse de la mano de la improvisación.
Igual que en el caso de la definición de los objetivos de usabilidad en este apartado no vamos a
enumerar ninguna lista de objetivos a definir, pues se trata de un tema particular de cada
aplicación. El aspecto realmente importante es definir los objetivos de manera clara y precisa
acorde con las discapacidades que pretendamos cubrir, para lo cual nos basaremos en los
estándares y en las normativas vigentes.
De todas formas, en esta definición de objetivos, debemos ser conscientes de que nunca seremos
capaces de ofrecer total funcionalidad para todos los tipos de discapacidades, como tampoco
podremos solucionar todos los problemas relativos a una misma tipología. Por tanto, seamos
ambiciosos, pero no nos marquemos objetivos imposibles.
Tiempo aprendizaje o de tarea: Usar el sitio por primera vez, encontrar un tema por primera vez
en menos de 2 minutos. Usuarios Expertos (5 visitas) menos de 30 segundos.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Facilidad de aprendizaje: Medible por el tiempo que se tarda en la consecución de las tareas
habituales y recordarlas en futuros usos.
Numero de errores
• No visitar más de tres páginas erróneas para visitar una página.
• No hacer errores fatales menos del 99% del tiempo.
Impresión subjetiva: En una escala de 1 a 10 en cuanto a que el sitio sea atractivo como mínimo
de 7 (medible con una encuesta).
Tareas realizadas: Como mínimo un 75% de los usuarios serán capaces de realizar una consulta.
(en el caso de una web de compra Online).
OTROS OBJETIVOS DE LA USABILIDAD:
1. Optimizar resultados y la experiencia de los usuarios de un sitio web o app.
2. Definir, planificar y ejecutar mejoras continuas para los usuarios.
3. Optimizar la conversión y la experiencia de usuario (UX).
4. Utilizar la analítica web para impulsar el cambio en los negocios online.
5. Elaborar factores clave KPIs.
6. Implementar y explotar un sistema de analítica web de forma eficiente.
7. Poseer elementos contribuyen con los resultados del sitio o marca.
8. Dominar herramientas que optimizarán la experiencia y satisfacción de los usuarios
9. Desarrollar las ventajas competitivas que beneficiarán tu posición ante la clientela.
10. Enriquecer las experiencias de los usuarios que se desempeñan en los distintos ámbitos
productivos.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CLASE 13: PRINCIPIOS DE LA USABILIDAD
Principios de usabilidad de Jakob Nielsen
En 1990, Jakob Nielsen y Rolf Molich propusieron diez directrices para ayudar en el desarrollo
de interfaces de usuario (UI).
Las heurísticas de Nielsen son principios generales, lo que significa que no establecen reglas
específicas de usabilidad. En lugar de eso, las heurísticas son pautas básicas que puedes seguir
para ayudar a crear productos digitales más accesibles, fáciles de usar e intuitivos. [2]
Estas heurísticas se crearon a partir de observaciones y de la experiencia adquirida durante sus
años de trabajo en el campo.
Desde la amplia experiencia de Dazzet, con dos décadas en el ámbito del marketing digital y
habiendo analizado múltiples tendencias internacionales, se destaca la importancia de ofrecer una
experiencia de usuario óptima en cualquier plataforma digital. Estos son algunos consejos
fundamentales.
Estos son los diez principios de usabilidad confeccionados por Jakob Nielsen:
1. Visibilidad del estado del sistema El sistema (web, app o cualquier otro producto digital)
debe siempre mantener informado al usuario de lo que está ocurriendo. Ejemplo: al subir
un archivo a Google Drive, el sistema nos indica que se está cargando y el tiempo restante.
Este principio de usabilidad web nos indica que siempre tenemos que tener informado al
usuario de lo que está pasando en nuestra web y ofrecerle una respuesta en el menor
tiempo posible.
2. Relación entre el sistema y el mundo real El sitio web o aplicación tiene que utilizar el
lenguaje del usuario, con expresiones y palabras que le resulten familiares. Además, la
información debe aparecer en un orden lógico y natural.
La información tiene que mostrarse con un orden lógico y las imágenes o iconos usados
tienen que ser claros, sin darle la posibilidad al usuario de equivocarse. Con esto,
conseguimos que la interacción con el lector sea natural y no le cueste moverse por la
web.
3. Control y libertad del usuario En caso de elegir alguna opción del sitio web por error, el
usuario agradecerá disponer de una “salida de emergencia” para abandonar el estado no
deseado en que se halla. Debe poder deshacer o repetir una acción previamente realizada.
Otro punto que tenemos que tener en cuenta es seguir los convenios establecidos para
ciertos iconos. Con el auge de los dispositivos móviles han aparecido nuevos gestos e
iconos que ya hemos asumido como normales.
Tenemos, en todo lo posible, que prevenir cualquier error que pueda cometer el usuario.
Y dado el caso de que este cometa uno, tenemos que poner a su alcance todas las opciones
posibles para poder corregirlo.
6. Reconocimiento antes que recuerdo Debemos hacer visibles acciones y opciones para
que el usuario no tenga que recordar información entre distintas secciones o partes del
sitio web o aplicación.
Siempre es mejor reconocer que obligar al usuario a memorizar acciones u objetos para
que pueda cumplir su objetivo. Hacernos una idea de cómo es si nos muestra una pre
visualización de la fuente es más fácil que acordarnos del nombre de cada una de las
fuentes que se han instalado.
7. Flexibilidad y eficiencia de uso Los aceleradores o atajos de teclado, por ejemplo, pueden
hacer más rápida la interacción para usuarios expertos, de tal forma que el sitio web o
aplicación sea útil tanto para usuarios básicos como avanzados.
Tenemos que tener un sitio web preparado para todo tipo de usuario, desde los más
novatos hasta los más experimentados. Si conseguimos que cualquiera pueda navegar por
nuestra web logramos flexibilidad.
No recargues el diseño de tu página web. El usuario busca sites limpios y que carguen
rápido. Elimina todo lo que consideres innecesario y que no aporta nada a lo que quieres
decir. La mejor forma de recordar este principio básico de usabilidad web es con el
acrónimo KISS, Keep It Simple Stupid.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
9. Ayudar a los usuarios a reconocer, diagnosticar y recuperarse de errores Los mensajes
de error se deben entregar en un lenguaje claro y simple, indicando en forma precisa el
problema y sugerir una solución constructiva al problema.
La mayoría conocemos qué es un error 404, pero hay gente que no sabe lo que es.
Es por esto, por lo que tenemos que cambiarlo para que en vez de que aparezca error 404,
diga algo más amigable como: Lo siento, página no encontrada y darle una posible salida
añadiendo páginas relacionadas o un buscador interno para que pueda buscar y no se vaya
de la web.
10. Ayuda y documentación, Aunque es mejor que el sitio web o aplicación pueda ser usado
sin ayuda, puede ser necesario proveer cierto tipo de ayuda.
Facilidad de aprendizaje: Es decir que señala que tan fácil es aprender la funcionalidad
básica del sistema, con la idea de que sea capaz de efectuar las tareas que desee en usuario.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
La facilidad de aprender la funcionalidad y comportamiento del sistema. define en cuánto
tiempo un usuario, que nunca ha visto una interfaz, puede aprender a usarla bien y realizar
operaciones básicas. ¿Cuánto le toma al usuario típico de una comunidad aprender la
manera en cómo se usan los comandos relevantes a un conjunto de tareas?
Eficiencia: Esta se determina por el número de transacciones por unidad de tiempo que
el usuario es capaz de realizar mediante el sistema.
La capacidad del sistema para ofrecer una tasa baja de errores, apoyar a los usuarios a
cometer pocos errores durante el uso del sistema, y en caso de que cometan errores
ayudarles a recuperarse fácilmente. ¿Cuántos y qué errores hace la gente al ejecutar un
grupo de tareas específicas?
Se refiere a la impresión subjetiva del usuario respecto al sistema. ¿Qué tanto les gustaron
a los usuarios los distintos atributos del sistema?
Nivel de Seguridad: Es bueno destacar que la calidad no es posible que exista sin
seguridad y constituye un factor importante en la usabilidad de una aplicación, por cuanto
genera mayor confianza a los usuarios.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
CLASE 14: CICLO DE VIDA DE LA INGENIERÍA DE LA USABILIDAD
ASPECTOS AFECTIVOS DE LA INTERACCIÓN HUMANO SOFTWARE
Ciclo de vida de la ingeniería de la usabilidad:
• Análisis del perfil del usuario.
• Análisis de tareas.
• Definición de los objetivos de la usabilidad.
• Diseño del sistema.
• Implementación de prototipos.
• Realización del test.
Distinción de usuario: Esta se efectúa con la finalidad de conocer tanto a los usuarios
como a las tareas que desempeñan y cómo las ejecutan.
• Es preciso hacer un análisis de mercado, en caso de que se trate de un producto
software comercial.
• Es necesario utilizar los métodos de indagación, entre los que están la
observación de campo, encuestas, entrevistas y cuestionarios, a fin de identificar
los requerimientos del usuario y, por ende, los del producto.
2. El Diseño
Luego de la identificación de las tareas, se da comienzo a las etapas que contemplan el
diseño.
Para ello se comienza con el diseño de la interacción con el sistema, el cual se irá
evaluando y mejorando en forma interactiva.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
En la mencionada etapa se utilizarán técnicas de prototipado, así como se considerarán
principios de diseño que relacionan al usuario en diferente grado.
Diseño de la interacción: El citado esquema es posible que sea dividido en dos fases:
diseño visual de la interacción y diseño conceptual del sistema.
Participación del usuario: La participación del usuario puede variar en esta etapa del
proceso, de acuerdo con el grado de involucramiento, lo cual constituye un Diseño
Centrado en el Usuario o Diseño Participativo.
3. LA EVALUACIÓN
La evaluación es una parte del proceso mediante la cual se precisa el nivel de usabilidad
que alcanza el prototipo actual del sistema, con el fin de identificar sus defectos de
usabilidad.
“La creación de una cultura de propósito en torno a la tecnología no solo alienta a los
líderes a ser más intencionales en la gestión de sus empresas, sino que también aprovecha
los beneficios que ofrece la tecnología. Tener una cultura tecnológica propositiva
fomenta y multiplica las competencias. Eso significa menos riesgo, mayor flexibilidad y
agilidad, junto con mayor velocidad y menores costos”, mencionan nuestros líderes Hays
en Brasil, Chile, Colombia y México.
Las nuevas tecnologías son una herramienta, se incorporan a nuestra vida diaria
Las emociones deben ser incluidas en el diseño de las nuevas tecnologías.
INTELIGENCIA ARTIFICIAL
La inteligencia artificial (IA) está ganando cada vez más espacio en nuestras rutinas personales y
profesionales dado su amplio abanico de posibilidades de aplicación, como la creación de
contenidos e imágenes, la organización de datos e incluso el desarrollo de sistemas completos.
Esta tecnología continúa revolucionando varios sectores con diferentes tipos de uso, lo que llevará
a una tasa de crecimiento promedio anual esperada del 37,3% entre los años 2023 a 2030, según
datos presentados por Grand View Research en un análisis de mercado. Su amplia adhesión se
explica por la constante actualización de sus bases de conocimiento.
Es un campo excitante donde:
Durante años nos hemos preguntado, que caracteriza al homo sapiens, nuestras
capacidades mentales son importantes para nosotros.
Tratamos de comprender como pensamos, esto es, como percibimos, entendemos y
predecimos, cómo somos capaces de manipular el entorno en el que nos movemos (es tan
complejo).
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
EL ESTUDIO DE LAS EMOCIONES Y EL COMPORTAMIENTO
Toma de decisiones.
Percepción.
Interacción humana.
Inteligencia.
Este hecho combinado con las computadoras hábiles en el reconocimiento de expresiones y
emociones abren nuevas áreas para la investigación como: computación afectiva y diseño
emocional.
¿QUÉ SON LAS EMOCIONES?
Las emociones son estados de ánimo caracterizados por sentimientos, sensaciones,
pensamientos... Son universales, es decir, todo el mundo sabe que cuando una persona está riendo
y pasándoselo bien, muestra la emoción de la alegría; cuando una persona llora, la emoción que
muestra es la tristeza, por ejemplo. Las emociones nos sirven para comunicarnos con los demás,
ya que a través de los gestos expresamos muchos de nuestros pensamientos.
A continuación, se presenta un video titulado "¿Para qué sirven las emociones?", donde unos
personajes nos enseñan qué sienten y qué le pasa a su cuerpo cuando realizan diferentes acciones.
También expresan mediante gestos en sus caras las emociones de la felicidad, miedo,
tristeza, tranquilidad y enojo. ¿Serás capaz de identificar las emociones de estos personajes?
Por qué cuando te piden o dan información con amabilidad te sientes mejor…
Por qué muchas veces prefieres saber que hay alguien del otro lado…
Por qué te agrada pensar que alguien te acompaña en tu tarea ...
Las Interfaces inteligentes son una necesidad de nuestro tiempo, en que los sistemas de
software son más y más poderosos y están en todos lados, como los bancos o internet.
EMOCIONES
El sentimiento puede clasificarse como:
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
Estado sentimental: un sentimiento duradero y estable.
Emoción: sentimiento breve, de aparición normalmente abrupta, que provoca alteraciones
físicas perceptibles: agitación, palidez, palpitaciones, rubor, etc.
Pasión: sentimiento intenso, vehemente, que ejerce un influjo poderoso sobre el
comportamiento.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
TALLER CLASE 1 FUNDAMENTOS INGENIERÍA
SOFTWARE
Quinto
Nombres y Apellidos: Freddy Jefferson Cedillo Rivera Curso:
“A”
Fecha: 13/11/2023 Calificación
A. Una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan
en el desarrollo de los programas informáticos.
B. Se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo
determinado y con el presupuesto previsto.
C. Es el conjunto de instrucciones o programas que le dicen a una computadora qué hacer.
El ingeniero de software:
A. Una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan
en el desarrollo de los programas informáticos.
B. Se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo
determinado y con el presupuesto previsto.
C. Es el conjunto de instrucciones o programas que le dicen a una computadora qué hacer.
El software:
A. Una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan
en el desarrollo de los programas informáticos.
B. Se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo
determinado y con el presupuesto previsto.
C. Es el conjunto de instrucciones o programas que le dicen a una computadora qué hacer.
Software integrado.
A. VERDADERO
B. FALSO
A. Incluye el análisis previo de la situación la redacción del proyecto, la creación del software.
B. borda solo fases específicas del ciclo de vida del software.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
C. Incluye el desarrollo previo de la situación la redacción del proyecto, la creación del
software.
D. Aborda todas las fases del ciclo de vida del software.
Etapas de la ingeniería de software:
A. Concepción.
B. Freeware.
C. Elaboración.
D. De pago.
E. Construcción.
Etapas de la ingeniería de software:
A. Adware.
B. Transición.
C. Shareware.
D. Mantenimiento.
E. Software libre.
Tipos de software dependiendo de la distribución
A. Concepción.
B. Freeware.
C. Elaboración.
D. De pago.
E. Construcción.
Tipos de software dependiendo de la distribución
A. Adware.
B. Transición.
C. Shareware.
D. Mantenimiento.
E. Software libre.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información
TALLER CLASE 2 PROCESO DEL SOFTWARE - MODELO
PROCESO SOFTWARE
Quinto
Nombres y Apellidos: Freddy Jefferson Cedillo Rivera Curso:
“A”
Actividades del proceso de software que son fundamentales: Especificación del software
A. Tienen que definirse tanto la funcionalidad del software como las restricciones de su
operación.
B. Debe desarrollarse el software para cumplir con las especificaciones.
C. Hay que validar el software para asegurarse de que cumple lo que el cliente quiere.
D. El software tiene que evolucionar para satisfacer las necesidades cambiantes del
cliente.
Actividades del proceso de software que son fundamentales: Diseño e implementación del
software
A. Tienen que definirse tanto la funcionalidad del software como las restricciones de su
operación.
B. Debe desarrollarse el software para cumplir con las especificaciones.
C. Hay que validar el software para asegurarse de que cumple lo que el cliente quiere.
D. El software tiene que evolucionar para satisfacer las necesidades cambiantes del
cliente.
Actividades del proceso de software que son fundamentales: Validación del software
A. Tienen que definirse tanto la funcionalidad del software como las restricciones de su
operación.
B. Debe desarrollarse el software para cumplir con las especificaciones.
C. Hay que validar el software para asegurarse de que cumple lo que el cliente quiere.
D. El software tiene que evolucionar para satisfacer las necesidades cambiantes del
cliente.
Actividades del proceso de software que son fundamentales: Evolución del software
A. Tienen que definirse tanto la funcionalidad del software como las restricciones de su
operación.
B. Debe desarrollarse el software para cumplir con las especificaciones.
C. Hay que validar el software para asegurarse de que cumple lo que el cliente quiere.
D. El software tiene que evolucionar para satisfacer las necesidades cambiantes del
cliente.
UNIVERSIDAD TÉCNICA DE MACHALA
D. L. No. 69-04 DE 14 DE ABRIL DE 1969
Calidad, Pertinencia y Calidez
UNIDAD ACADÉMICA DE INGENIERÍA CIVIL
Sección / Carrera: Tecnologías de la Información