Resumen (Teoria) 1
Resumen (Teoria) 1
Resumen (Teoria) 1
Brevemente indique qué diferencia existe entre el Modelo del Análisis y el Modelo del Diseño.
- El modelo de análisis debe lograr tres objetivos:
Describir lo que requiere el cliente
Establecer la base para la creación de un diseño de software
Definir un conjunto de requisitos que se puedan validar al final del desarrollo.
- El Modelo de diseño, pone énfasis en las descripciones detalladas y de alto nivel de la solución lógica, y como
estas satisfacen los requerimientos y restricciones. comienza con el modelo de los requisitos (que surge del
Modelo de Análisis), luego se obtienen los modelos detallados para las 4 áreas o niveles
Para entender y administrar la complejidad de un sistema se debe dividir el mismo en partes o fragmentos que se pueden
representar como modelos que describan y abstraigan sus aspectos esenciales.
Modelo estático: describe las propiedades estructurales del sistema. Comprende el modelo conceptual, diagrama
de clases del sistema y los contratos.
Modelo dinámico: describe las propiedades de comportamiento de un sistema. Comprende el diagrama de
secuencia del sistema, diagramas de colaboración y diagramas de actividades.
¿Con qué modelos está constituido el modelo global de un sistema y con qué se relacionan cada uno de ellos?
El modelo global de un sistema se constituye por:
a. Modelo de análisis: se relaciona con la investigación del dominio y del ámbito del problema, pero no con la
solución.
b. Modelo de diseño: se relaciona con la solución lógica del problema.
¿Qué pauta o pautas que considera para el rediseño de un sistema existente y qué implica esto?
En la medida de que un sistema tenga en la producción un gran mantenimiento, esto no cumple con la performance que
debería tener. Si el índice de mantenimiento de un sistema es alto, entonces el sistema debería ser rediseñado y esto
implica volver a pasar por todas las etapas del ciclo de vida del sistema.
¿Qué significa ‘meta del sistema’ y cuál es la diferencia con las funciones del sistema?
Las metas son los objetivos propuestos para el sistema. Se deben especificar las ventajas y/o facilidades que brindará el
mismo (rapidez, controles).
Las funciones son lo que el sistema tendrá que hacer: registrar, calcular, capturar, autorizar.
Indique qué diferencia existe entre los conceptos “funciones del sistema” y “atributos del sistema”. Dé 4
ejemplos del último.
Las “funciones del sistema” son lo que este habrá de hacer (ej: autorizar pagos) y los “atributos del sistema” son las
cualidades no funcionales que a menudo se confunden con aquellas (ej: facilidad de uso, tolerancia a fallas, tiempo de
respuesta, plataforma del sistema).
¿Qué es granularidad?
La granularidad es el grado en que un sistema se descompone en partes, los componentes de grano grueso tienden a
tener un comportamiento más fino que los componentes de grano fino, ya que los componentes de grano grueso hacen
más cosas, tienden a ser más grandes. En general podemos decir: “Los componentes de grano grueso son más fáciles
de usar, y los componentes de grano fino son más reutilizables”.
¿Cuáles son los objetivos del diseño de la entrada de un sistema? Dé una breve explicación de los mismos.
Control de la cantidad de la entrada: se debe disminuir la cantidad de entrada
Evitar los retrasos: se debe evitar los cuellos de botellas
Evitar los errores en los datos: disminuir el volumen de datos a ingresar o detectar los errores lo más rápido
posible
Evitar los pasos adicionales: reducir los pasos a seguir
Mantener la sencillez del proceso: alcanzar todos los objetivos ya mencionados en la forma más sencilla posible
En el Proceso de Diseño no deberá utilizarse “orejeras”. Hay que tener en cuenta enfoques alternativos basados
en: requisitos del problema, recursos disponibles y los conceptos de diseño existentes.
El diseño deberá poderse rastrear hasta el modelo de análisis. Debe poderse rastrear cómo se han satisfecho
los requisitos por el modelo de diseño.
El diseño no deberá inventar nada que ya esté inventado. Se debe utilizar patrones ya existentes o adaptar estos
al problema.
El diseño deberá minimizar la distancia intelectual entre el SW y el problema como si de la misma vida real se
tratara. La estructura del diseño del SW imita la estructura del dominio del problema.
El diseño deberá presentar uniformidad e integración. Las reglas de estilo y formato deben definirse antes de
encarar un trabajo. Las interfaces entre componentes deben definirse cuidadosamente.
El diseño deberá estructurarse para admitir cambios. Debe ser flexible.
El diseño deberá estructurarse para degradarse poco a poco, incluso cuando se enfrenta con datos, sucesos
o condiciones de operación aberrantes. Deberá ser adaptable para recibir cambios y terminar su CVU en forma
suave.
El diseño no es escribir código y escribir código no es diseñar.
El diseño deberá evaluarse en función de la calidad mientras se va creando, no después de terminarlo. Para
evaluar esto se dispone de conceptos y medidas de diseño que se verá más adelante.
El diseño deberá revisarse para minimizar los errores conceptuales (semánticos). Deberá asegurarse de haber
afrontado los elementos conceptuales principales antes de preocuparse por la sintaxis del modelo de diseño.
Modelo Cliente-Servidor
El sistema se organiza como un conjunto de servicios y servicios asociados, más unos clientes que acceden y usan los
servicios. Los principales componentes de este modelo son:
- Un conjunto de servidores que ofrecen servicios a otros subsistemas..
- Un conjunto de clientes que llaman a los servicios ofrecidos por los servidores.
- Una red que permite a los clientes acceder a los servicios.
La ventaja más importante del modelo cliente-servidor es que es una arquitectura distribuida. Es fácil añadir un nuevo
servidor e integrarlo con el resto del sistema o actualizar los servidores de forma transparente sin afectar al resto del
sistema.
Puede no haber un modelo de datos compartidos entre los servidores, y los subsistemas pueden organizar sus datos de
formas diferentes. Esto significa que los modelos de datos específicos pueden establecerse para cada servidor con el fin
de optimizar su rendimiento.
Tipos:
Bicapa: En el diseño de arquitectura de 2 capas, colocamos la lógica de aplicaciones junto con las definiciones de
las ventanas; que leen y escriben directamente en la base de datos. En el esquema de 2 capas no existe una
intermedia que separe la lógica.
Desventajas de la arquitectura de 2 capas:
Imposibilidad de representar la lógica en componentes aislados; lo cual dificulta reutilizar el sw.
Es difícil distribuir la lógica de las aplicaciones en un equipo diferente.
Tricapa: abarca una interfaz para el usuario y el almacenamiento persistente de datos, las mismas se reseñan así:
A) Capa de presentación: ventanas, reportes, etc.
B) Capa de lógica de aplicaciones: tareas y reglas que rigen el proceso.
C) Capa de almacenamiento: mecanismos de almacenamiento persistentes de los datos.
La ventaja reside en que la misma aísla la Capa de Lógica de la Aplicación y la convierte en una capa intermedia bien
definida, reservada únicamente para la lógica del software. Actualmente es la arquitectura más común utilizada en los
sistemas informáticos.
Cabe destacar, que la capa intermedia de lógica de aplicaciones, puede dividirse en:
a. Entidades del Dominio: integrada por las clases que representan los objetos del dominio.
b. Servicios de Aplicación: que incluye las clases que contienen funciones que no pertenecen a ninguna entidad
del dominio. Por ejemplo, podemos incluir la generación de reportes, los servicios de seguridad, interaccion
con la BD y comunicaciones con sistemas externos, y los coordinadores de casos de uso.
Multicapas: Se caracterizan por estar compuestas de estratos y particiones. Los estratos representan las capas
verticales. Las particiones representan las divisiones horizontales de subsistemas relativamente paralelos en una
capa. Esta arquitectura se obtiene al dividir las responsabilidades de la arquitectura de 3 capas. Por ejemplo, la capa
de servicios puede estar dividida en particiones tales como Seguridad y Persistencia
Motivos para su utilización:
- Aislamiento de la capa de Lógica de las Aplicaciones en componentes independientes, susceptibles a
reutilizarse.
- Distribución de las capas en varios nodos físicos de cómputo y en varios procesos, que mejora el
desempeño, la coordinación y el compartir la información en un sistema cliente-servidor.
- Asignación de los diseñadores que construyan determinadas capas.
Multicapa Laxa: permite que los componentes de una capa interactúen con cualquier componente de otra capa
de nivel inferior.
El uso de este diseño puede mejorar el rendimiento porque el sistema no tiene que realizar redundancia de llamadas
entre capas. Sin embargo no proporciona un buen nivel de aislamiento entre las capas por lo que se hace más difícil el
sustituir una capa de bajo nivel sin afectar a más capas de nivel superior.
Vista Lógica:
Patrón Capas
Una capa es un elemento de gran escala, a menudo compuesto de varios paquetes o subsistemas.
Este patrón se relaciona con la arquitectura lógica.
Capas típicas:
Presentación: ventanas de la GUI, informes.
Aplicación: gestiona las peticiones de la capa de presentación, flujo de trabajo, estado de la sesión, transiciones
a ventanas/páginas, concentración/transformación de diferentes datos para la presentación.
Dominio: gestiona las solicitudes de la capa de aplicación, implementación de las reglas de dominio.
Servicios Técnicos: servicios técnicos de (relativamente) alto nivel y frameworks, Persistencia, Seguridad.
Base: servicios técnicos de bajo nivel, utilidades y frameworks; estructuras de datos, hilos de ejecución, librerías
matemáticas, ficheros, base de datos, y E/S de redes.
Patrones
Patrones de arquitectura: relacionados con el diseño a gran escala y de grano grueso, se aplican típicamente
durante las primeras iteraciones cuando se establecen las estructuras y conexiones más importantes. Ejemplo,
los patrones capas.
Patrones de diseño: relacionados con el diseño de los objetos y frameworks de pequeña y mediana escala.
Conecta los elementos de gran escala que se definen mediante los patrones de arquitectura. Por ejemplo, el
patrón Fachada, que se puede utilizar para promocionar la interfaz de una capa a la siguiente
¿Bajo qué circunstancias se puede utilizar el concepto de “paquete” en UML y para qué sirve?
UML tiene un mecanismo (los paquetes), que permiten describir los grupos de elementos, o subsistemas. Un paquete es
un conjunto de cualquier tipo de elementos o modelo: clases, casos de uso, diagramas de colaboración u otros paquetes.
Un paquete se muestra gráficamente como una carpeta con etiquetas. Los paquetes subordinados se incluyen en su
interior.
Cuando el modelo de dominio crece puede llegar a ser tan amplio que quizás sea conveniente dividirlo en paquetes que
incluyen conceptos fuertemente relacionados, esto sirve de ayuda para mejorar la comprensión y para abordar trabajo de
análisis en paralelo
En la siguiente figura, vemos los agrupamientos lógicos de la Arquitectura Multicapas utilizando los Diagramas de
Paquetes de UML. A este diagrama le podemos llamar “Diagrama de Paquetes de la Arquitectura”.
Diagrama de Paquetes:
Mecanismos de UML para agrupar elementos del modelo y tratarlos como conjunto.
Representa la lógica del problema o del sistema.
Muestran información estática.
Se pueden utilizar líneas de dependencia para mostrar el acoplamiento entre los paquetes o los tipos de los paquetes.
Vista Fisica: Diagrama de despliegue utilizado para modelar el hardware mediante nodos, indicando las relaciones
entre ellos.
¿Qué es UML?
Son las siglas del lenguaje unificado para la construcción de modelos; es una notación con la cual se construyen
sistemas por medio de conceptos OO. Permite expresar un modelo de análisis utilizando una notación de modelado con
unas reglas sintácticas, semánticas y prácticas.
Reglas que lo definen:
- Sintaxis: nos dice cómo mostrar y combinar los símbolos.
- Semántica: nos dice lo que significa cada símbolo y cómo interpretarlo, solo o combinado con otros.
- Prácticas: definen el significado de los símbolos a través de los cuales se obtiene el modelo y se hace
comprensible para otras personas (construcción de frases claras y comprensibles).
Vistas en UML:
- Del usuario: representa el sistema (producto) desde la perspectiva de los usuarios (actores) -> Caso de Uso.
- Estructural: datos y funcionalidad se muestran desde dentro del sistema. -> Modelo del Dominio.
- Del Comportamiento: representa los aspectos dinámicos o comportamiento del sistema
- De Implementación: representa aspectos estructurales y de comportamiento tal y como van a ser
implementados.
- Del entorno: aspectos estructurales y de comportamiento en el que el sistema a implementar se representa.
¿Cuáles son algunas de las razones que explican por qué se dice que UML estandariza los artefactos y la
notación, pero no define un proceso oficial de desarrollo?
Las razones que explican esto son:
- aumentar las probabilidades de una aceptación generalizada de la notación estándar del modelado, sin
obligación de adoptar un proceso oficial.
- la esencia de un proceso apropiado admite mucha variación y depende de las habilidades del personal, de la
razón de investigación, del desarrollo de la naturaleza del problema, de las herramientas y de muchos otros
factores.
DFD.
A medida que la información se mueve a través del software es modificada por una serie de transformaciones. El
diagrama de flujo de datos (DFD) es una técnica que representa el flujo de información y las transformaciones que se
aplican a los datos al moverse desde la entrada hasta la salida. El DFD es también conocido como grafo de flujo de datos
o como diagrama de burbujas.
Se puede usar el diagrama de flujo de datos para representar un sistema o un software a cualquier nivel de abstracción.
En el nivel 0 se llama Modelo Fundamental del Sistema o Modelo de Contexto, representando el software completo como una sola
burbuja de datos de entradas y salidas.
¿Qué es un tipo?
En el lenguaje UML, un tipo es una descripción de un conjunto de atributos similares con atributos y operaciones, pero
que no incluyan métodos. De ello se deduce que un tipo es una especificación de una entidad de software y no una
implementación.
Indique qué entiende por valores puros de datos y con qué otro nombre se los conoce. De 5 ejemplos.
Se entiende por valores puros de datos a los conocidos como atributos, en los cuales la identidad única no es
significativa (no se puede distinguir entre instancias aisladas del número 5). Por ejemplo, entero, reales, caracter,
cadena, booleano. También se los conoce como tipo de dato.
Agregación
La agregación es un tipo de asociación que se utiliza para modelar las relaciones todo-parte entre las cosas. El todo se
denomina compuesto.
Se representa en UML mediante un rombo hueco o relleno en el extremo del compuesto de una asociación todo-parte.
La agregación es una propiedad de un rol de asociación.
Considere mostrar una agregación cuando:
El tiempo de vida de la parte está ligado al tiempo de vida del compuesto
Existe un ensamblaje obvio todo-parte físico o lógico.
Alguna propiedad del compuesto se propaga a las partes, como la ubicación.
Papeles o roles.
Son los extremos de una asociación. Estos pueden tener nombre, expresión de multiplicidad, navegabilidad.
¿A qué se denomina multiplicidad y porque pone en manifiesto una restricción de diseño que será reflejada en el
software.
La multiplicidad define cuantas instancias de un tipo “a” pueden asociarse a una instancia del tipo “b” en un determinado
momento.
Objeto:
Un objeto es una entidad que tiene un estado y un conjunto de operaciones definidas que operan sobre ese estado. El
estado se representa como un conjunto de atributos del objeto. Las operaciones asociadas proveen servicios a otros
objetos. Se crean conforme a una definición de clases de objetos.
Clase
Descripción de un conjunto de objetos, comparten los mismos atributos, operaciones, métodos, relaciones y semántica
En la notación de UML, ¿cómo se grafican una clase, una instancia y una instancia con nombre? ¿Para qué
sirven estas últimas?
- Clase: es una construcción que se utiliza como un modelo para crear objetos de ese tipo. El modelo describe los
datos y el comportamiento que todos los objetos de la clase comparten (atributos y métodos).
- Instancia: es un objeto de una determinada clase. La clase que se utilizó para crear esa instancia se puede
considerar como del tipo de ese objeto. Por ejemplo, el objeto “:Persona” sería del tipo “Persona”.
- Instancia con nombre: es un objeto particular identificable por su nombre, por ejemplo “p:Persona”.
¿Qué describe el diagrama de clases del diseño en uml y cuáles son sus componentes?
Describe gráficamente las especificaciones de las clases de sw y de las interfaces. A diferencia del MC, este diagrama
contiene las definiciones de las entidades del software en vez de conceptos del mundo real.
Contiene: clases, asociaciones y atributos; interfaces con sus operaciones y constantes; métodos, información sobre los
tipos de los atributos; navegabilidad; dependencias.
Pasos para su creación:
1. Identificación y representación de las clases software a partir de los diagrama de colaboración
2. Dibujar diagramas de clases
3. Añadir los nombres de los métodos y atributos
4. Añadir más información sobre los tipos en atributos y métodos
5. Añadir asociaciones y navegabilidad
6. Añadir las relaciones de dependencias.
¿Cuándo debería un paso importante o una actividad ramificada de un Caso de Uso escribirse como una parte
de una subsección y no como un caso de uso aparte?
Escriba los pasos principales o las actividades ramificadas de un Caso de Uso como caso independiente cuando:
Se duplican en otros casos
Son complejos y largos, y su separación facilita colocarlos en unidades manejables y comprensibles
DSS
Da una descripción gráfica de las interacciones del actor y de las operaciones a que da origen.
Es una parte de lo que se conoce como Comportamiento del Sistema
Muestra, en determinado escenario de un caso de uso, los eventos generados por actores externos, su orden y los
eventos internos del sistema.
¿Qué es un contrato?
Es un documento que describe el comportamiento detallado del sistema en función de los cambios de estado de los
objetos del modelo del dominio después de la ejecución de una operación del sistema (evento del DSS). Enfatizando lo
que sucederá y no cómo se conseguirá.
Las secciones que presenta un contrato son:
● Operación: Nombre de la operación con sus respectivos parámetros.
● Referencias cruzadas: (Opcional) Casos de uso en los que puede tener lugar esta operación.
● Precondiciones: Suposiciones sobre el estado del sistema o de los objetos del modelo del dominio antes de la
ejecución de la operación. Se asumen que son verdad por lo que no se comprobará en la lógica de la operación.
● Postcondiciones: Describe los cambios en el estado de los objetos del Modelo del dominio. Comprende la
creación y eliminación de instancias, formación o rotura de asociaciones y cambio en los atributos de un objeto.
No son acciones, sino, declaraciones que son verdad cuando la operación ha terminado.
Para expresar las postcondiciones se debe hacerlo en forma pasiva declarativa, en pretérito (Fue creada..., Se asoció...,
Se estableció..., etc.) para destacar la declaración de un cambio de estado.
Así como los casos de uso nos indican los procesos del dominio y el mc cuáles son los conceptos, términos,
etc., ¿Qué interrogantes nos contestan los artefactos denominados diagramas de secuencia y contratos?
Los DSS nos indican cuáles son los eventos, ósea las acciones de los actores externos y las operaciones internas del
sistema. Los contratos, nos indican que hacen cada una de estas operaciones.
¿Qué entiende como comportamiento de un sistema? Indique qué artefactos de UML sirven para representarlos.
El comportamiento de un sistema es una descripción de lo que hace el sistema, sin explicar en qué lo hace ni cómo lo
hace. Para representarlo, se utilizan los diagramas de secuencia y los contratos.
Las postcondiciones tiene una relación muy estrecha con otro artefacto de UML, ¿cuál es, por qué y qué puede
ocurrir con el diseño de este?
Las postcondiciones de los contratos se relacionan estrechamente con el modelo del dominio ya que con él podremos
responder a las preguntas de qué instancias crear o qué asociaciones formar.
Además de los contratos puede surgir la necesidad de mejorar el modelo del dominio, agregando conceptos, atributos o
asociaciones.
En UML, ¿qué son los diagramas de interacción y cuando se realizan? ¿Cuáles son los artefactos en UML que
deben estar previamente construidos y cuál es su importancia para elaborar diagramas de interacción?
Un diagrama de interacción es un gráfico que explica el modo en que los objetos interactúan por medio de mensajes para
realizar las tareas. Éstos se realizan en la fase de diseño de un Ciclo de Desarrollo. Para su elaboración, previo deben
estar hechos:
- Modelo de Casos de Uso: representa los requerimientos funcionales del sistema desde el punto de vista del
usuario. La documentación de los casos de uso y los contratos nos dan una idea aproximada de lo que el
sistema deberá hacer.
- Diagrama de Secuencia del Sistema: muestra los escenarios del caso de uso mediante eventos del sistema.
- Modelo del Dominio: se utiliza para inspirar la presencia y nombre de algunas clases software. El modelo del
dominio es útil porque nos ayuda a crear un modelo de diseño con un salto en la representación más bajo entre
el diseño y el mundo real.
- Contratos: para describir los efectos de los eventos del sistema en término de cambios de los objetos del
dominio.
¿Cuál es el nombre de los diagramas utilizados en UML para representar interacciones de mensajes, en qué se
diferencian y cuál es la ventaja de uno sobre otro?
Los Diagramas de secuencia (formato con el aspecto de una valla) y los diagramas de colaboración (formato de grafo o
red). La ventaja de este último es que es de menores dimensiones, es mejor para ilustrar bifurcaciones complejas,
iteraciones y comportamiento concurrente.
Diagramas de colaboración.
Ilustran las interacciones entre objetos en un formato de grafo o red. Su punto de partida es hacer cumplir las
postcondiciones de los contratos de una operación.
Al usar un * en UML, se está indicando una operación importante. Diga cómo se llama ésta, en qué artefacto y
explique cómo se utiliza la misma sobre una colección (“multiobjeto”).
El “*” se usa para denotar la operación llamada iteración. Se la utiliza en los Diagramas de Colaboración, e indica que se
manda un mensaje a cada uno de los miembros de la colección asociada al multiobjeto, indicando también el “*” del
marcador de multiplicidad al final del enlace.
¿Qué son los valores de retorno, en qué diagramas de utilizan y cuál es su notación en UML?
A veces los mensajes pueden devolver valores. A estos se les llama valores de retorno. El nombre de la variable a la cual
se le asigna dicho valor se antepone al mensaje en los Diagramas de Colaboración, junto con un operador de asignación
(“:=”);
Diagrama de estados.
Describe visualmente los estados y eventos más interesantes de un objeto; así como su comportamiento frente a un
evento, se representan con flechas, etiquetadas. Los estados se representan en rectángulos de esquinas redondeadas.
Es habitual incluir un pseudo-estado inicial, que pasa automáticamente a otro estado cuando se crea la instancia.
Muestra el ciclo de vida de un objeto: qué eventos experimenta, sus transiciones y los estados en los que se encuentra
entre estos eventos.
Durante las Fases de Diseño e Implementación, hay que preparar e implementar un Diseño que garantice que no ocurran
eventos fuera de la secuencia, para evitar cualquier condición de error.
Por ejemplo, no debe permitirse que CAJA reciba un pago si no ha concluído aún la Venta. Este recaudo deberá tenerse
en cuenta al programar.
Diagrama de estado del sistema global: Es la unión de todos los Diagramas de Estado; y resulta útil mientras el
número total de eventos sistémicos sea lo suficientemente pequeño que lo tornen manejable.
Diga si considera falso o verdadero el siguiente concepto, en qué contexto y por qué. “No hace falta asociar las
instancias de la clase venta a la descripción de los items que la componen”.
En general es falso, porque siempre hace falta reconstruir la venta, imprimir un recibo, recalcular el total, etc. Solo sería
verdadero en aquel contexto donde la venta es de un solo producto.
4) Ciclos de vida
Sistema: Conjunto de elementos que interactúan entre sí para lograr un objetivo determinado
Sistema de Información: Conjunto de recursos que almacenan, procesan, controlar y producen la información de toda
una empresa u organización.
Ventajas:
útil en sistemas grandes.
cuando requerimientos no cambian: debido a costosas iteraciones.
cuando los programadores están dispersos.
cuando piden documentación formal: producida en cada fase.
Se usa cuando los cambios en el futuro son inexistentes o improbables
Desventajas:
Los cambios generan confusión conforme el equipo del proyecto avance
hay que llegar a etapa final para mostrar el sistema.
excesiva documentación.
se tarda en detectar errores.
Secuencialidad
En un proceso iterativo e incremental se debe analizar el impacto de cada nuevo cambio para no destruir lo anterior, sino
modificarlo.
Tipos:
a. Entrega Incremental: la especificación, el diseño y la implementación del software se dividen en una serie de
incrementos, los cuales se desarrollan por turnos.
b. Desarrollo en espiral: el desarrollo gira en espiral hacia fuera, empezando con un esbozo inicial y terminando con
el desarrollo final del mismo.
Ventajas:
Los clientes no tienen que esperar hasta que el sistema este completo. El primer incremento satisface los
requerimientos
Los clientes pueden utilizar los incrementos iniciales como prototipos y obtener experiencia sobre los
requerimientos de los incrementos posteriores.
Existe bajo riesgo de un fallo total del proyecto.
Problemas:
Problemas de administración: estos sistemas cambian tan rápido que no es rentable producir una gran cantidad
de documentación (mayor gasto)
Problemas contractuales: (requerimientos inciertos => costos inciertos).
Problemas de validación: al no existir una especificación del sistema, no hay pruebas con anticipación y son al
azar.
Problemas de mantenimiento: aparte de los desarrolladores, se puede tener problemas para entender el
software, ya que los cambios continuos corrompen la estructura de cualquier sistema.
Además requiere de un cliente involucrado durante todo el curso del proyecto, y sufre fuertes penalizaciones en
proyectos cuyos requerimientos están previamente definidos.
Ventajas:
permite actividades concurrentes.
permite entregas parciales.
programación extrema.
Satisface las necesidades inmediatas de los usuarios.
La especificación se puede desarrollar en forma creciente.
Desventajas:
el proceso no es visible: no es rentable documentar versiones si los sistemas se desarrollan rápidamente.
a menudo los sistemas tienen estructura deficiente.
Los cambios a introducir son cada vez más difíciles y costosos.
Según Sommerville, ¿qué entiende por Ingeniería del Software basada en componentes? Mencione por lo menos
2 ventajas que considere para su uso.
Se basa en la reutilización informal de componentes de software y de algunos marcos de trabajo de integración para
éstos, dando a los ingenieros varios beneficios en cuanto a la mensurabilidad. Si la reutilización se vuelve parte de la
cultura, el equipo de ing tiene la posibilidad tanto de reducir el ciclo de tiempo de desarrollo, como el costo del proyecto.
Etapas:
Se investiga y evalúa para el tipo de aplicación a tratar, productos disponibles basados en componentes
Se considera los aspectos de integración de los componentes
Se diseña una arquitectura de sw para que reciba los componentes
Se integran los componentes en la arq.
Se efectúan pruebas, para asegurar la funcionalidad apropiada.
Ventajas:
reduce la cantidad de software a desarrollar.
disminuye los costos.
minimiza los riesgos.
permite una entrega rápida del software.
Desventajas
El Proceso a veces no cumple acabadamente con los requerimientos del usuario
Se pierde parte del control sobre la evolución del sistema
Fases:
- Inicio: se establece un caso de negocio para el sistema, se identifican entidades externas que interactuaran con el sist.
- Elaboración: se comprende el dominio del problema, se establece un marco de trabajo arquitectónico, se desarrolla el
plan de proyectos, y se identifican los riesgos claves.
- Construcción: el diseño, programación y pruebas del sistema.
- Transición: el sistema pasa de un entorno de desarrollo a la comunidad del usuario trabajando en un entorno real
Ventajas:
permite empezar sin tener todos los requerimientos.
fácil de cambiar durante realización.
en transición, no versiones beta sino ejecutables.
Desventajas:
necesitan experimentados.
¿Qué entiende por métodos ágiles de desarrollo de software? ¿Cuál es la principal característica y en qué
ámbitos los utilizaría?
Las metodologías ágiles se caracterizan porque permite centrarse en el software mismo en vez de su diseño y
documentación.
Dependen de un enfoque iterativo para la especificación, desarrollo y entrega del software. Fueron diseñados para
apoyar el desarrollo de aplicaciones de negocio donde los requerimientos del sistema cambian rápidamente durante el
proceso de desarrollo.
Pensados para entregar software funcional a los clientes de forma rápida, Idóneos para el desarrollo de sistemas de
negocio pequeños y de tamaño medio y para el desarrollo de productos para ordenadores personales.
Se valora:
a los individuos y las interacciones sobre los procesos y las herramientas.
al software operativo sobre la documentación exhaustiva.
la colaboración con el cliente sobre la negociación del contrato.
la respuesta al cambio sobre el seguimiento de un plan.
Ejemplos: programación extrema (XP), Desarrollo Rápido de Aplicaciones (RAD), Desarrollo de prototipo, SCRUM.
(RAD: Las Técnicas de desarrollo rápido de aplicaciones (RAD) evolucionaron de los llamados lenguajes de cuarta
generación de los años 80 y se utilizan para desarrollar aplicaciones con un uso intensivo de datos
Usan un conjunto de herramientas que permiten crear datos, buscarlos, visualizarlos y presentarlos en informes.)
Motivos
Los sistemas operan en un entorno cambiante.
Responden a nuevas oportunidades en mercado y a condiciones económicas cambiantes.
Al ser parte de casi todas las operaciones de negocio, el sistema se tiene que desarrollar rápidamente.
Características
Los procesos de especificación, diseño e implementación son concurrentes.
La documentación se minimiza.
Se desarrolla de forma incremental.
Los incrementos son evaluados por todos los interesados en el sistema (administradores, ingenieros en
sistemas, probadores, usuarios, etc).
Las interfaces del usuario se desarrollan utilizando un sistema de desarrollo iterativo.
¿Cuál es la diferencia entre lo que se denomina ciclo de vida iterativo y ciclo de vida en cascada? ¿Cuál se utiliza
en UML y por qué?
- El ciclo de vida iterativo se basa en el agrandamiento y perfeccionamiento secuencial de un sistema en diversos ciclos
de desarrollo de análisis, diseño, implementación y prueba.
- Un ciclo de vida en cascada se basa en actividades (análisis, diseño, entre otras) que se llevan a cabo una vez que se
cuenta con todos los requerimientos que el sistema debe cumplir.
UML usa un ciclo de vida iterativo porque otorga las siguientes ventajas:
la complejidad nunca resulta abrumadora.
se produce retroalimentación en una etapa temprana porque la implementación se efectúa rápidamente con una
pequeña parte del sistema.
Software: “Es la suma total de los programas de ordenador, procedimientos, reglas, la documentación asociada y los
datos que pertenecen a un sistema de cómputo" y "un producto de software es un producto diseñado para un usuario".
Una responsabilidad no es lo mismo que un método, pero los métodos se implementan para llevar a cabo
responsabilidades.
¿Qué significan las siglas GRASP? ¿Cuál es su función más importante y cuáles son los 5 más importantes?
Patrones GRASP (patrones generales de software para asignar responsabilidades): describen los principios
fundamentales de la asignación de responsabilidades a objetos, expresados en forma de patrones. Se aplica durante la
elaboración de los diagramas de interacción. Los patrones sirven para mejorar la calidad del diseño.
Ventajas de su uso:
- apoya la identificación e incorporación de ese concepto en nuestro conocimiento y memoria.
- facilita la comunicación entre los desarrolladores.
Los cinco patrones básicos (GRASP) comunes y que se refieren a aspectos fundamentales del diseño y la asignación de
responsabilidad son:
● Experto en información.
Solución: asignar una responsabilidad al experto en información (la clase que tiene la información necesaria
para realizar la responsabilidad).
Problema: ¿Cuál es el principio general para asignar responsabilidades a los objetos?
El cumplimiento de la responsabilidad a menudo requiere información que se encuentra dispersa por diferentes clases de
objetos. Esto implica que hay muchos expertos en información “parcial” que colaborarán en la tarea.
En algunas ocasiones, la solución que sugiere el Experto no es deseable, normalmente debido a problemas de
acoplamiento y cohesión.
Beneficios:
mantiene el encapsulamiento de la información, esto conlleva un bajo acoplamiento, lo que da lugar a sistemas
más robustos y más fáciles de mantener.
Distribuye el comportamiento entre las clases que contienen la información requerida, estimula las definiciones
de clases más cohesivas y “ligeras” siendo más fáciles de entender y mantener.
● Creador.
Solución: Asigna a la clase “b” la responsabilidad de crear una instancia de la clase “a” en uno de lo siguientes
casos:
“b” agrega los objetos “a”.
“b” contiene los objetos “a”.
“b” registra las instancias de los objetos “a”.
“b” utiliza específicamente los objetos “a”.
“b” tiene los datos de inicialización que serán transmitidos a “a” cuando este objeto sea creado (así que
“b” es un experto respecto a la creación de “a”).
Problema: ¿Quién debería ser el responsable de la creación de una nueva instancia de alguna clase?
El patrón Creador guía la asignación de responsabilidades relacionadas con la creación de objetos.
La intención básica del patrón Creador es encontrar un creador que necesite conectarse al objeto creado en
alguna situación.
Beneficios:
Se soporta bajo acoplamiento, lo que implica menos dependencias de mantenimiento y mayores
oportunidades para reutilizar
● Bajo acoplamiento.
Solución: Asignar una responsabilidad de manera que el acoplamiento permanezca bajo.
Problema: ¿Cómo soportar bajas dependencias, bajo impacto del cambio e incremento de la reutilización?
Impulsa la asignación de responsabilidades de manera que su localización no incremente el acoplamiento hasta un nivel
que nos lleve a los resultados negativos que puede producir un acoplamiento alto. Una clase con alto acoplamiento es
difícil de entender de manera aislada y difícil de reutilizar por las dependencias que posee.
Beneficios:
No afectan los cambios en otros componentes.
Fácil de entender de manera aislada.
Conveniente para reutilizar.
● Alta cohesión.
Solución: asignar una responsabilidad de manera que la cohesión permanezca alta.
Problema: ¿Cómo mantener la complejidad dentro de límites manejables?
Una clase con baja cohesión es difícil de entender, de reutilizar, de mantener y son delicadas, porque son afectadas por
los cambios.
Una clase con alta cohesión tiene un número relativamente pequeño de métodos,
Beneficios:
Se incrementa la claridad y facilita la comprensión del diseño.
Se soporta a menudo bajo acoplamiento.
Se simplifica el mantenimiento y las mejoras en funcionalidad
● Controlador.
Solución: asignar la responsabilidad de recibir o manejar un mensaje de evento del sistema a una clase que
representa una de las siguientes opciones:
representa el sistema global, dispositivo o subsistema (controlador de fachada).
representa un escenario de caso de uso en el que tiene lugar el evento del sistema, a menudo
denominado <NombreDelCasoDeUso>Manejador.
Problema: ¿Quién debe ser el responsable de gestionar un evento de entrada al sistema?
Un evento del sistema de entrada es un evento generado por un actor externo. Se asocian con
operaciones del sistema.
Beneficios
Aumenta el potencial para reutilizar y las interfaces conectables. Asegurando que la lógica de la aplicación no se
maneja en la capa de interfaz.
Razonamiento sobre el estado de los casos de uso
Según el patrón controlador ¿quién debería encargarse de atender un evento del sistema?
Asignar la responsabilidad del manejo de un mensaje de los eventos de un sistema a una clase que represente una de
las siguientes opciones:
A- El “sistema global” (controlador de fachada) ej: tpdv
B- La empresa u organización global (controlador de fachada) ej: tienda.
C- Algo en el mundo real que es activo (ej: el rol de una persona-cajero-) y que pueda participar en la tarea
(controlador de tareas).
D- Un manejador artificial de todos los eventos del sistema de un caso de uso. (controlador de caso de uso).
¿Qué entiende por “cohesión funcional” en el diseño orientado a objetos? ¿Cuándo hay alta cohesión?
Es una medida de cuan relacionadas y enfocadas están las responsabilidades de una clase. Una alta cohesión
caracteriza a las clases con responsabilidades estrechamente relacionadas que no realicen un trabajo enorme. Ejemplo:
Si una persona tiene demasiadas responsabilidades no relacionadas, entonces la persona no es efectiva.
Fabricación Pura
Problema
¿Qué objetos deberían tener la responsabilidad cuando no quiere violar los objetivos de Alta Cohesión y Bajo
Acoplamiento, u otros, pero las soluciones ofrecidas por otros patrones no son adecuadas?
Solución
Asigne un conjunto de responsabilidades altamente cohesivo a una clase artificial o de conveniencia que no representa
un concepto del dominio del problema. La asignación de responsabilidades a esta fabricación soportan alta cohesión y
bajo acoplamiento, de manera que el diseño de la fabricación es muy limpio o puro.
Por ejemplo: almacenamiento persistente.
Beneficios
Soporta Alta Cohesión.
El potencial para reutilizar podría aumentar
Indirección
Problema
¿Dónde asignar una responsabilidad para evitar el acoplamiento directo entre dos (o más) cosas? ¿Cómo desacoplar los
objetos de manera que se soporte el bajo acoplamiento y el potencial para reutilizar permanezca más alto?
Solución
Asigne la responsabilidad a un objeto intermedio que medie entre dos componentes o servicios de manera que no se
acoplen directamente.
Por ejemplo: AdaptadorCalculadorDeImpuestos. Protege el diseño interno frente a las variaciones de las interfaces
externas.
Beneficios
Disminuir el acoplamiento entre los componentes.
6) Prototipos
¿Qué entiende por prototipos? Indique por lo menos dos beneficios - Desventajas
Es una versión inicial de un sistema software utilizado para demostrar conceptos, probar opciones de diseño y, en
general, informarse más del problema y sus posibles soluciones.
Se puede utilizar de varias maneras en un proceso de desarrollo de software:
- En ingeniería de requerimientos, ayuda con la obtención y validación de los requerimientos.
- En el diseño del sistema, explora soluciones software particulares y apoya el diseño de las interfaces de usuario.
- En las pruebas, ejecuta pruebas back-to-back con el sistema a entregar al cliente.
Beneficios del prototipado del software:
- Mejora la usabilidad del sistema.
- Una mejor concordancia entre el sistema y las necesidades del usuario.
- Mejora en la calidad del diseño.
- Mejora en el mantenimiento.
- Reducción en el esfuerzo de desarrollo.
- Existen oportunidades para detener el desarrollo de un sistema que no es funcional.
Desventajas del prototipo:
- No es bueno para la calidad del soft.
- No tiene en cuenta el mantenimiento posterior.
- No considera aspectos globales del sistema.
- Los usuarios y analista pueden adoptar a un prototipo como un sistema terminado cuando es inadecuado.
Desventajas de usar el prototipo como sistema final:
- Difícil ajustar el prototipo a los requerimientos no funcionales (rendimiento, protección, robustez y fiabilidad).
- el cambio rápido implica documentación insuficiente lo que no conveniente para el mantenimiento a largo plazo.
- los cambios realizados durante el desarrollo degradan la estructura del sistema.
Mencione y describa los tipos de prototipos.
o Prototipado de interfaz de usuario: modelos de pantallas.
o Prototipado funcional (operacional): implementa algunas funciones, y a medida que se comprueba que son las
apropiadas, se corrigen, refinan y se añaden cosas.
o Modelo de rendimiento: evalúan el rendimiento de una aplicación crítica.
o Rápidos o desechables:
Comienza con las partes menos entendidas del sistema
Sirven al análisis y validación de los requisitos
Se redacta la especificación del sistema y se lo desecha
La aplicación se desarrolla siguiendo un paradigma diferente
Si no se desecha es un problema
o Evolutivos:
Comienza con un sistema relativamente simple que implementa los requisitos más importantes o más
conocidos.
El prototipo se aumenta o cambia en cuanto se descubren nuevos requisitos.
Finalmente se convierte en el sistema requerido
Actualmente se usa en el desarrollo de sitios webs y en aplicaciones de comercio electrónico
o Horizontal: modela muchas características de un sistema pero con poco detalle. Desarrolla completamente
algunas funciones.
o Vertical: modela pocas características de un sistema pero con mucho detalle. Desarrolla parcialmente todas las
funciones.
Enuncie y describa brevemente los principios de diseño de interfaces de usuario que enseña Sommerville.
a. Familiaridad del usuario: utilizar términos y conceptos obtenidos de la experiencia de las personas que más
utilizan el sistema.
b. Uniformidad: las operaciones comparables se activen de la misma forma.
c. Mínima sorpresa: El comportamiento del sistema no debe provocar sorpresas a los usuarios.
d. Recuperabilidad: incluir mecanismos para permitir a los usuarios recuperarse de los errores.
e. Guía de usuario: proporcionar retroalimentación significativa y características de ayuda sensible al contexto,
cuando ocurran errores.
f. Diversidad de usuario: características de interacción apropiadas para los diferentes tipos de usuarios.
¿Qué entiende por “uniformidad” como un principio de diseño para una interfaz?
Significa que los comandos y menús del sistema deben tener el mismo formato, los parámetros deben pasarse a todos
los comandos de la misma forma y la puntuación de los comandos debe ser similar. De esta forma, se reduce el tiempo
de aprendizaje del usuario.
Esta uniformidad es importante, ya que evita errores cuando, por ejemplo, un mismo comando del teclado significa
situaciones diferentes según las aplicaciones. Es por esto que, en lo posible, los comandos con significados similares en
aplicaciones diferentes se deben expresar de la misma forma.
¿Cuáles son las reglas de oro para el diseño de la interfaz? Explique (Pressman).
1. Dar control al usuario:
No obligar a hacer acciones innecesarias
Interacción flexible
Ocultar detalles técnicos
Interacción directa con los objetos que aparecen en la ventana
2. Reducir la carga de memoria del usuario:
Establecer valores por defecto
Reducir la memoria a corto plazo
Basar el diseño en metáforas del mundo real
Desglosar la información en forma progresiva
3. Construir una interfaz consecuente:
Toda la información visual está organizada de acuerdo con el diseño estándar que se mantiene en todas las
presentaciones de pantalla.
Todos los mecanismos de entrada se limiten a un conjunto limitado y se utilicen consecuentemente
Los mecanismos para ir de tarea a tarea se hayan definido e implementado consecuente-mente.
Principios para construir una interfaz consecuente:
1- Permitir que el usuario realice una tarea en el contexto adecuado.
2- Mantener la consistencia en toda la familia de aplicaciones.
3- Los modelos interactivos anteriores han esperanzado al usuario, no realicemos cambios a menos que exista
alguna razón convincente para hacerlo.
¿Qué entiende por “facilidad de uso de la UI” en el proceso de diseño de una interfaz?
Es una medida de la manera en que un sistema facilita el aprendizaje, reduce la posibilidad de errores, les permite ser
eficientes y los deja satisfechos con el sistema. Algunas preguntas que ayudan a verificar la facilidad de uso son:
- ¿es posible usar el sistema sin ayuda ni enseñanza continua?
- ¿el sistema se ha adecuado al entorno físico y social en el que será usado?
- ¿El usuario sabe dónde se encuentra en cada momento?
- ¿la interfaz tolera los errores que se cometen? ¿la interacción es simple?
¿Cuál es el proceso de diseño de la UI (interfaz de usuario) según Sommerville? Indique las tres actividades.
Es un proceso iterativo donde los usuarios interactúan con los diseñadores y prototipos de la interfaz para decidir las
características, organización, apariencia y funcionamiento de la UI del sistema.
Existen tres actividades esenciales en este proceso:
Análisis del usuario: Se desarrolla una comprensión de las tareas que este realiza, su entorno de trabajo, junto
con otros sistemas que utiliza, y las personas con las que interactúa. se realizan entrevistas, estudios
etnográficos, etc.
Prototipo del sistema: Es el diseño y el desarrollo de la Interfaz en un proceso iterativo con el usuario, siendo
representada en forma tangible, para poder ser evaluado eficazmente.
- prototipos en papel: se muestran a usuarios finales.
- prototipos automatizados: a disposición de usuarios para pruebas y simulación de actividades.
Se debe trabajar con los usuarios para simular la utilización del sistema.
Evaluación de la UI: Permanentemente debe ser sometido a evaluación para proceder a nuevos ciclos de
desarrollo iterativo en función de las experiencias reales. Consiste en evaluar la forma en que se utiliza una
interfaz y verificar que cumple los requerimientos del usuario.
Forma parte del proceso de Verificación y validación.
Atributo Descripción
Aprendizaje ¿Cuánto tiempo tarda un usuario nuevo en ser productivo con el nuevo sistema?
Existen varias técnicas menos costosas y sencillas en la evaluación de interfaces que pueden identificar deficiencias
específicas en el diseño de interfaces:
● Cuestionarios: recopilan información de lo que opinan los usuarios de la interfaz. Es una técnica económica.
● La observación de los usuarios cuando trabajan con el sistema teniendo en cuenta los recursos que utilizan, los
errores cometidos, etc.
● Instantáneas de videos del uso típico del sistema. El análisis completo por medio de video es caro aunque
permite descubrir demasiados movimientos de las manos o movimientos forzados del ojo.
● La inclusión de código en el software que recopila información de los recursos más utilizados y de los errores
más comunes.
Características:
• Un alto grado de iteración.
• Un muy alto grado de participación del usuario.
• Un uso extensivo de prototipos.
• Normalmente pocos días de desarrollo (10% del proyecto).
• Funcionalidad limitada.
• Poca fiabilidad.
Validación y verificación.
La verificación y la validación tienen lugar en cada etapa del proceso del software. V&V comienza con revisiones de los
requerimientos y continúa con revisiones del diseño e inspecciones del código hasta la prueba del producto.
● Validación: ¿Estamos construyendo el producto correcto? El objetivo de la validación es asegurar que el sistema software
satisface las expectativas.
● Verificación: ¿Estamos construyendo el producto correctamente? La verificación implica comprobar que el software está de
acuerdo con su especificación. Debería comprobarse que satisface sus requerimientos funcionales y no funcionales.
Actividades:
Dentro del proceso V&V, existen dos aproximaciones complementarias para el análisis y comprobación de los sistemas:
1. Las inspecciones de software analizan y comprueban las representaciones del sistema tales como el documento de
requerimientos, los diagramas de diseño y el código fuente del programa. Pueden usarse las inspecciones en todas las
etapas del proceso. Las inspecciones de software y los análisis automáticos son técnicas de V&V estáticas, ya que no se
necesita ejecutar el software en una computadora.
2. Las pruebas de software implican ejecutar una implementación del software con datos de prueba. Se examinan las salidas
del software y su entorno operaciones para comprobar que funciona tal y como se requiere. Las pruebas son una técnica
dinámica de verificación y validación.
Existen dos tipos de pruebas que pueden utilizarse en diferentes etapas del proceso del software:
- Las pruebas de validación intentan demostrar que el software satisface los requerimientos del cliente.
- Las pruebas de defectos intentan revelar defectos en el sistema en lugar de simular su uso operacional. El objetivo es hallar
inconsistencias entre un programa y su especificación.
Normalmente los procesos de V&V y depuración se intercalan. Los procesos de V&V intentan establecer la existencia de defectos en
el sistema software, mientras que la depuración es un proceso que localiza y corrige estos defectos.
V&V en los modelos de proceso
Modelo Lineal Secuencial: fase de prueba.
PRUEBAS
Las dos actividades fundamentales de pruebas son la prueba de componentes (probar las partes del sistema) y la prueba del sistema
(probar el sistema como un todo).
El objetivo de la etapa de la prueba de componentes es descubrir defectos probando componentes de programas individuales.
Durante las pruebas del sistema, estos componentes se integran para formar subsistemas o el sistema completo. En esta etapa, la
prueba del sistema debería centrarse en establecer que el sistema satisface sus requerimientos funcionales y no funcionales, y que
no se comporta de forma inesperada.
Objetivos:
1. Demostrar al desarrollador y al cliente que el software satisface sus requerimientos.
2. Descubrir defectos en el software en que el comportamiento de éste es incorrecto, no deseable o no cumple su
especificación.
El primer objetivo conduce a las pruebas de validación, mientras que el segundo conduce a la prueba de defectos, en los que los
casos de prueba se diseñan para exponer los defectos.
Pruebas de Componentes
Las pruebas de componentes son el proceso de probar los componentes individuales en el sistema.
Existen diferentes tipos de componentes que pueden probarse en esta etapa:
funciones individuales o métodos dentro de un objeto.
clases de objetos que tienen varios atributos y métodos.
componentes compuestos formados por diferentes objetos o funciones.
Las pruebas de clases de objetos deberían incluir:
pruebas aisladas a todas las operaciones.
la asignación y consulta de todos los atributos del objeto
ejecutar el objeto en todos sus posibles estados.
Pruebas de interfaces
Muchos componentes en un sistema no son simples funciones u objetos, sino que son componentes compuestos formados por
varios objetos que interactúan. Se accede a las funcionalidades de estos componentes a través de sus interfaces definidas. Las
pruebas de estos componentes se ocupan principalmente de probar que la interfaz del componente se comporta de acuerdo con su
especificación.
Pruebas de rendimiento
Se ocupan tanto de demostrar que el sistema satisface sus requerimientos como de descubrir problemas y defectos en el
sistema.
Implican estresar el sistema realizando demandas que están fuera de los límites del diseño del software. Tiene como
objetivo:
probar el comportamiento de fallo de ejecución del sistema, el cual no debe provocar la corrupción de los datos o
pérdidas inesperadas de servicios.
sobrecargar el sistema y provocar que se manifiesten defectos que normalmente no serían descubiertos. Ejemplo: que se
tilde.
Caja Negra: Aquel elemento que es estudiado desde el punto de vista de las entradas que recibe y las salidas o respuestas que
produce, sin tener en cuenta su funcionamiento interno. Se interesa en la forma de interactuar con el medio que le rodea
entendiendo qué es lo que hace, pero sin dar importancia a cómo lo hace.
Caja Blanca: se realiza sobre las funciones internas de un módulo. Así como las pruebas de caja negra ejercitan los requisitos
funcionales desde el exterior del módulo, las de caja blanca están dirigidas a las funciones internas, entiendo como lo hace, a través
de códigos fuentes.
Según Sommerville, ¿qué diferencia hay entre lo que se conoce como un plan de prueba y un procesamiento de prueba?
Un procedimiento de prueba define los casos de prueba específicos en un intento para descubrir errores de acuerdo con los
requisitos.
Cuando hablamos de pruebas de software, ¿qué entiende usted por “prueba de humo”? Explique 2 beneficios de su aplicación.
Es una prueba de integración, comúnmente utilizada cuando se desarrolla un producto software empaquetado. Es una prueba que
ejercita el sistema entero de principio a fin, no ha de ser exhaustiva, pero será capaz de descubrir importantes problemas.
1. Los componentes software que han sido traducidos a código se integran en una “construcción”. Una construcción incluye
ficheros de datos, librerías, módulos reutilizables y componentes de ingeniería que se requieran.
2. Se diseña una serie de pruebas para exponer los errores que evitarán a la construcción realizar adecuadamente
su función. La intención debe ser descubrir errores “paralizantes” que tengan la mayor probabilidad de retrasar el
proyecto.
3. La construcción se integra con otras construcciones, y todo el producto se somete a prueba de humo
diariamente.
Beneficios:
Se minimiza el riesgo de integración. Puesto que las pruebas de humo se realizan diariamente, las
incompatibilidades y otros errores paralizantes pueden descubrirse tempranamente, reduciendo la probabilidad
de impacto en la planificación por errores sin descubrir.
Se perfecciona la calidad del producto final: por estar orientada a la construcción, esta prueba también
descubrirá errores funcionales, además de los defectos de diseño a nivel de componente y de arquitectura.
Se simplifican el diagnóstico y la corrección de errores: es probable que los errores sin descubrir durante la
prueba de humo se asocien a “nuevos incrementos de software”; es decir, el software que se acaba de añadir a
la construcción es causa probable de un error recientemente descubierto
El progreso es más fácil de valorar. Con cada día que transcurre, más software se integra y se demuestra que
funciona. Esto incrementa la moral del equipo y brinda a los gerentes un buen indicio de que se está
progresando.
Pruebas de Regresión
Las pruebas de regresión pueden realizarse para asegurar que no se introdujeron nuevos errores (bugs). Ayudan a garantizar que los
cambios (debidos a pruebas o por otras razones) no introducen comportamiento no planeado, errores adicionales o carencias de
funcionalidad.
Por lo tanto, se considera una buena práctica que cuando se localiza y corrige un bug, se grabe una prueba que exponga el bug y se
vuelvan a probar regularmente después de los cambios subsiguientes que experimente el programa.
La suite de prueba de regresión (el subconjunto de pruebas que se va a ejecutar) contiene tres clases diferentes de casos de prueba:
• Una muestra representativa de pruebas que ejercitará todas las funciones de software.
• Pruebas adicionales que se enfocan en las funciones del software que probablemente resulten afectadas por el cambio.
• Pruebas que se enfocan en los componentes del software que cambiaron.
AUDITORIAS
Auditar es examinar la gestión económica de una entidad a fin de comprobar si se ajusta a lo definido por la ley.
La auditoría de desarrollo: trata de verificar la existencia y aplicación de procedimientos de control permitan
garantizar que el desarrollo de sistemas de información se ha llevado a cabo según los principios de ingeniería, o
determinar las deficiencias existentes en este sentido.
La Auditoría de Sistemas: comprueba la existencia de procedimientos de control, su correcta definición y
aplicación. Determina las deficiencias que existan al respecto y los riesgos asociados a la falta de control.
interna: dentro de la misma organización hay un grupo de personas o empleados que realizan pruebas.
externa: cuando se contrata a un grupo de auditores, se les entrega la información del sistema y ellos controlan. Siendo
este mejor, ya que no se pasan por alto errores y se verifican más procedimientos.
Auditoría de Diseño
¿Cuáles son las 3 condiciones que debe cumplir la información obtenida por el sistema para que la misma sea
valiosa para la operación?
- Oportuna.
- Precisa.
- Concisa (no debe ser redundante).
- Comprensiva (debe ser de fácil lectura y comprensión).
Propiedades características de la Información.
.
Integridad asegura que su contenido permanezca invariable a menos que sea modificado por personas y/o
procesos debidamente autorizados.
Operatividad o disponibilidad tenerla accesible para ser procesada y/o consultada.
Confidencialidad o privacidad sea sólo conocida por personas y/o procesos debidamente autorizados. El
objetivo, prevenir la divulgación no autorizada de la información.
Autenticidad propiedad de poder reconocer y certificar el origen y/o destino de la información.
¿Qué son los métodos de acceso? En una estructura simple, ¿cuántos existen?
Los métodos de acceso son aquellos que recuperan (método accesor) o establecen (método mutador) el valor de los
atributos. Una estructura común consiste en contar con un accesor y un mutador por cada atributo y declarar privados
todos los atributos (para obligar al encapsulamiento). Estos no se incluyen en la descripción del diagrama de clases
DER
Modelo Entidad - Relación (DER): Percepción del mundo real, identificando entidades (con sus atributos) y las relaciones
entre ellos. Presenta:
Entidades que pueden ser:
Fuertes: Su existencia no depende de otra.
Débiles: No pueden existir sin otra. Su clave es la misma que la de la cual depende.
Y atributos. Las entidades se representan mediante un rectángulo, y los atributos mediante una elipse.
En la organización de datos que almacena el sistema, el analista debe alcanzar la optimización y eficiencia de los
mismos. ¿A través de qué procesos se consigue esto? ¿En qué consisten? Mencione dos de las causas para
llegar al mismo.
El proceso para alcanzar la optimización y eficiencia de los datos es el de normalización. Este proceso se realiza para
evitar las duplicaciones de datos en diferentes archivos y para evitar inconsistencia y anomalías en los mismos. Por
medio de la normalización, un conjunto de datos en un registro se reemplaza por varios registros que son más simples y
predecibles y manejables. Se lleva a cabo por 4 razones:
- estructurar los datos de forma que se puedan representar las relaciones pertinentes entre los datos.
- permitir la recuperación de los datos en respuesta a las solicitudes de consultas y reportes.
- simplificar el mantenimiento de los datos actualizándolos, insertándolos y borrándolos.
- reducir la necesidad de reestructurar y reorganizar los datos cuando surjan nuevas aplicaciones.
¿Cuál es la condición para que un atributo o campo puede ser definido como clave primaria o índice primario de
un archivo?
- No se puede dar valor indefinido o desconocido a la clave.
- Debe ser de uno natural para los usuarios.
- Identificar unívocamente al dueño del atributo.
- La cantidad de atributos que la componen debe ser la menor cantidad posible.
- La cantidad de caracteres que la componen debe ser la menor posible.
¿Cuál es la diferencia existente con respecto a los archivos lógicos en una estructura de Base de Datos y en un
ambiente de archivos convencionales?
En las BD, los registros son parte del mismo archivo lógico o BD que serán utilizados por todas las aplicaciones; sin
embargo en los archivos convencionales cada aplicación está separada de las demás y los datos para cada una se
localizan en diferentes archivos lógicos.
● Portabilidad: los archivos tienen la ventaja de ser portables con respecto a la BD. La portabilidad en la BD es
más traumática, aunque con las nuevas tecnologías se amplificó mucho.
● Herramientas: las BD han generado herramientas consistentes por lo que los desarrolladores de AC realizaron
mejoras para acercarse a las BD.
Indique cómo se clasifican los archivos según la utilización que se les dé?
Archivo maestro: utilizado para guardar información permanente.
Archivos de transacciones, novedades o movimientos.
Archivos de trabajo: archivos que me sirven para la ejecución del programa o del trabajo, y luego se destruyen.
Archivos de unión: unir dos procesos, una vez que finaliza la comunicación entre los procesos los archivos se
destruyen.
Archivo de tabla: archivos pequeños, que guardan generalmente códigos.
¿Cómo se relacionan en UML 2 objetos que tienen datos estrechamente vinculados y como se los hace en una
BD relacional. De un ejemplo de este último.
En UML, para relacionar tipos u objetos se debe recurrir a la asociación. En una BD relacional, esto se hace a través de
un tipo de atributo de clave foránea (por ejemplo, número de factura).
SALIDA EN LÍNEA
Características:
La respuesta inmediata a las solicitudes del usuario;
La demanda poco predecible;
Contacto directo entre la computadora y el usuario.
Interface: es la frontera entre el usuario y la aplicación del sistema de cómputo (el punto donde la computadora y el
usuario interactúan).
Objetivos:
Decir al sistema las acciones a realizar;
Facilitar el uso del sistema y;
Evitar los errores del usuario.
Características:
a) Los dispositivos utilizados para introducir y recibir datos (teclado, mouse, scanner, touch screen, la voz, etc.),
b) El diálogo que conduce la interacción entre el sistema y el usuario y
c) Los métodos y patrones que se siguen al mostrar la información (cómo se muestra u organiza la información).
Diseño del diálogo: el diálogo es la forma en la que el usuario interactúa con el sistema de cómputo y con la aplicación.
Determina la “amigabilidad” del sistema e influye en la decisión del usuario al usar el sistema.
Diagramas de diálogo: son los conocidos como “interrelación de pantallas”, “secuencia o concatenación de pantallas”,
etc.
¿Cuántas estrategias de diálogo conoce para una conversación en línea? Explique brevemente cada uno de
ellos.
● Estrategia general del diálogo: conducción por menú, teclado.
● Diálogo de entrada de datos: forma o bosquejo que muestra la información a introducir.
● Paginación y scrolling
● Mensajes y comentarios: tiene como finalidad: indicar el estado del proceso, indicar que se ha detectado un
error, solicitar al usuario que elija una acción y verificar que una acción elegida sea la correcta;
● Asignación de teclas: aunque se use el mouse, teclado, etc. se debe usar o programar teclas de propósito
especial como alternativas del diálogo;
● Sistemas de ayuda: sirven para informar a los usuarios del sistema.
Acciones de procesamiento: al diseñar se debe cumplir cómo realizar las siguientes acciones:
Edición de datos: cambiar el valor de un campo capturado previamente;
Almacenamiento de datos: la transferencia de los datos desde la captura a un medio;
Recuperación de datos: traerlos desde el almacenamiento para mostrarlos, editarlos o producir una salida).
Captura de datos: descripción de los campos y su posición en la pantalla;
¿Cómo se relacionan en UML 2 objetos que tienen datos estrechamente vinculados y cómo se lo hace en una BD
relacional?. Dé un ejemplo de este último.
En UML para relacionar tipos u objetos se debe recurrir a la asociación. En una BD relacional esto se hace a través de un
tipo de atributo de llave foránea (Ej. N° de factura).
Según Pressman, para una solución modular se pueden exponer muchos niveles de abstracción, ¿qué significa
este concepto?
Significa que se debe concentrar en el problema a algún nivel de generalización sin tener en consideración los datos
irrelevantes de bajo nivel. En el nivel más alto, se utilizará el lenguaje del entorno del problema y en el más bajo se
establece la solución para implementarlo (generar código fuente).
9) Entrada de Datos
Entrada de Datos.
Mencione por lo menos 2 objetivos que se persigue en el diseño de la entrada de un sistema de información y de
una breve explicación de los mismos.
El diseño de la entrada es lo que une al mundo y sus usuarios con el sistema de información.
Objetivos del diseño de la entrada:
- control de la cantidad de entrada. Se apunta a disminuir los requerimientos de datos de manera que se reduzcan
los costos y a acelerar los procesos de carga de información.
- evitar los retrasos: evitar los cuellos de botella, utilizando técnicas disponibles para hacerlo evitar los errores en
los datos: disminuyendo el volumen de datos que deben ingresarse por cada transacción o detectándose los
errores lo más rápido posible.
- evitar los pasos adicionales: se debe asegurar que el proceso sea lo más eficiente posible reduciendo los pasos
a seguir.
- mantener la sencillez del proceso: alcanzar todos los objetivos mencionados en la forma más sencilla posible.
En los lineamientos para la captura de datos es importante considerar algunos aspectos para no proporcionar
como entrada algunos requerimientos innecesarios? ¿Cuáles son?
Existen dos tipos de datos que deben proporcionarse como entradas cuando se procesan transacciones:
1. Datos variables: son aquellos datos que cambian para cada transacción o toma de decisiones
2. Datos de identificación: es el dato que identifica en forma única al registro que será procesado
No se deben requerir:
a. Datos constantes: aquellos idénticos para cualquier transacción.
b. Detalles que el sistema puede recuperar: datos almacenados que el sistema puede recuperar con rapidez de sus
archivos
c. Detalles que el sistema puede calcular: recursos que se pueden producir al pedir que el sistema utilice
combinaciones de datos almacenados y proporcionados.
Validación de la entrada: en principio el analista debe suponer que se presentarán errores en la entrada de los datos,
para ello debe validarlos y evitarlos durante la entrada. Los que más ocurren son:
1. Pruebas de existencia: o sea que el campo contenga datos;
2. Pruebas de límites y rangos: o sea que los valores ingresados estén dentro de los extremos predefinidos
posibles;
3. Pruebas de combinación: validan el hecho de que varios datos tengan al mismo tiempo valores aceptables
(p.ej: si la operación es con tarj.de crédito debe estar especificado el n° de la misma);
4. Procesamiento duplicado: en áreas importantes se deben procesar los datos más de una vez, en el mismo o
en diferentes equipos (p.ej: programa espacial);
5. Modificación de los datos de la transacción: se realiza ya sea mediante corrección automática (completando
el dato automáticamente), uso de dígitos de verificación, etc.).
Salida de Datos.
La salida es la información que se entrega a los usuarios por medio del sistema de información, ya sea impresa o por
pantalla.. Algunos datos requieren un procesamiento externo antes de que se conviertan en salida adecuada; y otros
datos son guardados y considerados salida cuando se les recupera con poco o ningún procesamiento.
La salida impresa se especifica cuando se necesita:
enviar por correo un documento ya sea a un cliente o proveedor.
imprimir un registro de datos.
notificar cierta información.
hacer llegar al mismo tiempo un gran volumen de información a varias personas.
Las fuentes de información para el diseño de la salida impresa son:
requerimientos de datos.
diccionario de datos, en el cual se incluyen los nombres de los elementos de datos y la longitud requerida.
requerimientos funcionales.
Objetivos de la salida.
- Expresar información relacionada con actividades pasadas, estado actual o proyecciones para el futuro.
- Señalar eventos importantes, oportunidades, problemas o advertencias.
- Iniciar una acción.
- Confirmar una acción.
Tipos de Salida:
Documentos:
Son salidas externas por que se dirigen a clientes, proveedores, accionistas, etc. Generalmente tiene una forma pre-impresa. Un
documento puede ser recibos de servicios públicos, facturas, cheques, resúmenes de cuenta, tickets de pago.
Reportes:
Los reportes son salidas externas, es decir que permanecen dentro de la organización. Pueden ser resúmenes, reportes,
históricos, o excepciones.
Mesajes:
Pueden ser tanto internos como externos
¿Bajo qué condiciones se deben implementar las formas pre impresas en el diseño?
Entre las situaciones más representativas donde debe considerarse el uso de formas pre impresas se encuentran las
siguientes:
- reglamento o requerimientos legales que obliguen el uso de formas pre impresas.
- destinatarios que esperan en formato estándar.
- la inclusión de un prototipo de la organización. Una marca registrada o símbolo que deben estar incluidos en la
forma.
- trabajo artístico o gráfica que tendrán mejor apariencia si se pre imprimen.