Documentos de Académico
Documentos de Profesional
Documentos de Cultura
27-03-2019
1.Qué es diseño?
Específicamente hablamos de DISEÑO DE INGENIERÍA.
La definición rigurosa de este diseño la tiene la teoría general de sistemas.
La tgs define 5 aspectos de un sistema:
-Variables y su nivel de resolución
-Actividad en el tiempo
-Comportamiento
-Estructuras y acoplamientos
-Estados y transiciones
1.Problema de análisis
Se da:
Un sistema cuya estructura es accesible al investigador.
Se pide:
Describir los 5 aspectos del sistema.
Se da:
- 4 aspectos de un sistema
Variables y nivel de resolución
Actividad en el tiempo
Comportamiento
Estados y transiciones
En su conjunto, estos 4 aspectos se pueden llamar los requerimientos.
- Un conjunto de tipos de elementos con los cuales se puede construir el sistema. En
su conjunto, los podemos llamar los recursos.
Se pide:
La estructura del sistema solución, la cual debe cumplir los 4 aspectos dados y estar
construida solamente con los tipos de elementos dados.
Se da:
Un sistema del cual no se tiene acceso a su estructura.
Se pide:
Describir los 5 aspectos del sistema.
Modularidad
Libro : El discurso del método
Autor :. Renato descartes
“Divide y vencerás”
Al aplicar este método no debemos olvidar registrar todas las interconexiones entre las
diferentes partes del problema.
Aplicado a la ingeniería del software ,este concepto nos lleva a dividir el sistema de software
solución en partes. Como las partes son complejas , se aplica varias veces la división ,
obviamente teniendo un mapa de los acoplamientos entre partes.
Concretamente:
A) El sistema se divide en subsistemas.
B) El subsistema se divide en comportamientos.
C) El componente se divide en clases
Taxonomía del software
D) Si un componente es muy complejo se puede dividir en más componentes.
La clase es el “ladrillo” con el cual se construye todo el sistema
Abstracción
Según la Wikipedia “capacidad de observar una propiedad aislandola de las demás”.
“Capacidad de ver la totalidad sin tener en cuenta detalles superfluos”
Para la ingeniería de software
“Abstracción es la capacidad de ver el sistema con diferentes niveles de detalle”.
Las Interfaces Hombre Máquina se pueden considerar parte del diseño de componentes o
del diseño detallado. Depende de si la ventana se define como una clase o como un
componente.
Acoplamiento
Es una medida de que tanto depende un elemento de los demás , qué tan independientes
son los elementos de un sistema y como los elementos del sistema están interconectados .
Puede haber acoplamiento a todos los niveles (sistema , subsistema , componente, clase) .
A depende de B
B domina a A
01-04-2019
4. Cohesión
Es una medida de que tan relacionados están las partes internas del sistema
Para una CLASE la cohesión permite preguntar qué tan relacionadas están los métodos de
esa clase?
Los métodos realizan tareas diferenciales?
O todos colaboran para realizar una sola tarea?
Cohesión Funcional
Se da cuando todos los métodos de una clase colaboran para una sola tarea.Si los metodos
de una clase se dispersan entre varias tareas,diremos que esta clase tiene BAJA
COHESIÓN
5.Ocultamiento de información:
Para que TERCERAS PERSONAS tengan acceso a los datos no les permitiremos acceso
directo, debemos construir una API (Interfaz de programa de Aplicación)
Un conjunto de funciones que los terceros pueden acceder.Estas funciones deben cumplir
las reglas del negocio.
Aplicando estas ideas a una clase,todos los atributos de la clase seran declarados como
PRIVADOS.Se podra tener acceso a los atributos por medio de los métodos que
constituyen la API de la clase.Esta se denomina ENCAPSULAMIENTO.
-La interfaz de usuario para capturar y mostrar los datos, se denomina la VISTA
- El procesamiento de los datos, entre los cuales está la validación de los datos,se
denomina el CONTROLADOR.
- El almacenamiento de los datos se denomina MODELO que se refiere al modelo de datos.
El patrón MVC sugiere que estos tres procesos o subsistemas se realicen en máquinas
distintas, para garantizar la seguridad de los datos y evitar accesos no autorizados.
DISEÑO ARQUITECTÓNICO
Estudia la estructura gruesa del sistema, es decir como el sistema que se divide en
SUBSISTEMAS
Foto
EJEMPLO:
El problema:
Controlar un sistema robótico encargado de empacar productos.
Funcionamiento :
1. El producto a empacar esta en la cinta de entrada.Se enciende esta cinta para
acercar el producto al brazo robótico
2. La cámara toma vistas del producto. Se debe determinar el tipo de empaque
necesario para el producto
3. El brazo robótico toma el empaque adecuado y lo coloca en la estación de empaque
4. El brazo robótico transporta el producto y lo deposita dentro del empaque
5. La estación de empaque termina el empacado del producto
6. El brazo robótico toma el producto empacado y lo deposita en la cinta de salida
7. Se enciende el motor de la cinta de salida para que se lleve el producto empacado
Se solicita:
Un software empotrado que controle todas las partes eléctricas y mecánicas del sistemas,
interprete las imágenes de la cámara y pueda realizar el proceso de empaque como se
describe
03/04/2019
El diseño arquitectónico se puede visualizar con dos niveles de abstracción:
Las aplicaciones de un mismo sector económico comparten los mismos componentes del
área de problemas. Por eso esas aplicaciones se parecen entre sí y es válido partir de una
arquitectura de un software similar para desarrollar nuestra arquitectura.
Es factible que existan arquitecturas genéricas para los principales sectores económicos.
Ej:
● Sistemas de información
● Sistema de procesamiento de transacciones
● Sistema de procesamiento del lenguaje.
2.¿Cómo se distribuirá el sistema a través de varios núcleos o procesadores?
algunas aplicaciones son de naturaleza monoprocesadores, cómo los sistemas embebidos
(firmware quemado dentro de un microprocesador).
Sin embargo la tendencia es hacia sistemas distribuidos.
La forma de distribución del software entre un conjunto de procesadores interconectados es
crucial para:
● El rendimiento o desempeño del sistema.
● La seguridad del sistema.
● La confiabilidad.
05/04/2019
● Seguridad(security)
Capacidad de evitar accesos no autorizados.
Para esto podemos usar una estrategia de capas.
Las capas envuelven a lo más crítico del sistema: los datos para atravesar de una
capa a otra hay algún control de seguridad.
● Protección (safety)
Estrategia de reacción ante los riesgos .casi siempre riesgos naturales o
tecnológicos.
● Estrategia de diseño
Crear nodos especializados en las actividades propias de la protección
● Disponibilidad
(Tiempo disponible)/(Tiempo que se necesite el sistema)
Meta : 100%
La disponibilidad puede disminuir del 100% por :
● Mantenimiento
● Fallas
La estrategia para obtener mayor disponibilidad es: la redundancia
● Diseños espejos
● Servidores espejos
● Redes redundantes
● Suministro eléctrico redundante
● Mantenibilidad
Hay estrategias de mantenibilidad que no tienen que ver con el diseño
● Documentación
● Nombres adecuados en el software
● Autodocumentación
08/04/2019
- Vista lógica
- Vista de procesos
Modela los procesos de sistema repetitivos que se genera el sistema
Podemos observar la cantidad de procesos y conjeturar acerca del rendimiento, también se
puede observar si hay procesos de respaldo y conjeturar sobre la disponibilidad del sistema
- Vista de desarrollo
Modela como se ha distribuido el software a desarrollar entre los diferentes desarrolladores
ya sea individuales o por grupos.Sirve a los administradores para monitorear el avance del
trabajo
Se puede tener con una matriz de cruce:
- Vista Física
- La vista adicional
Puede ser los escenarios o casos de uso
Todas las vistas anteriores podrían ser organizadas también por escenario
Algunos autores usan una VISTA CONCEPTUAL en la cual relaciona los requerimientos
con los conceptos del problema
2. Notación a usar
La notación determina en gran medida qué personas podrán leer la documentación de la
arquitectura
- Notación completamente informal
El ejemplo de la estación de empaques usa notación informal (diagramas de
cajas).También se usa el lenguaje natural, que es muy ambiguo. tiene la ventaja de
ser entendida por todas las personas. Tiene las desventaja de su ambigüedad, falta
de precisión, y falta de claridad
- Notación Formal
Existe los lenguajes de descripción arquitectónicos(ADL)Estos lenguajes permiten expresar
matemáticamente los requerimientos
Lenguajes: Z, OCL, VDML. El ocl es el lenguaje que acompaña al UML.
* INDICA ESTADO ANTERIOR
Se desea describir el proceso de agregar un nuevo cliente C a los clientes del
sistema
Cliente=Cliente*U C
Estos lenguajes formales permiten una ESPECIFICACIÓN FORMAL del diseño.
En estas especificaciones se puede DEMOSTRAR aplicando la lógica, el cumplimiento de
cada requerimiento, esta verificación se convierte en una DEMOSTRACIÓN DE
PROBLEMAS. Aquí encontramos ayuda de software para demostración de teoremas(Eje.
Prolog). En sistemas Críticos que pueden originar pérdidas enormes o pérdidas de vidas
humanas se suele usar la formalidad.La desventaja es que la cantidad de personas capaces
de interpretar una definición formal de la arquitectura es muy pequeña
Documente si tiene algo importante que , de lo contrario puede hacerlo
Ejemplo:
La arquitectura de una aplicación web:
Cuando se usa?
Se usa cuando existen múltiples formas de ver e interactuar con los datos También se
utiliza los requerimientos futuras para la interacción y presentación
Ventajas:
Permite que los datos cambien de manera independiente de su presentación y visceversa.
Soporta la presentación de los mismos datos en diferentes formas y cambios en una
representación, se muestra en todas ellas.
Desventajas:
Puede implicar código adicional y complejidad de código cuando el modelo de datos y las
interacciones son simples
10/04/2019
El MVC contiene todo el mecanismo para manejar múltiples vistas de los mismos datos.
También puede manejar solicitudes de cambio (eventos de usuario) provenientes de las
vistas y gestionados por el controlador .
Cuando se usa:
Se usa cuando se construyen nuevos servicios encima de sistemas existentes; cuando el
desarrollo se dispersa en varios equipos de trabajo y cada uno es responsable de una capa
de funcionalidad ; cuando exista un requerimiento de seguridad multinivel.
Multics: 1964
Ventajas:
Permite la situación de capas completas en tanto se conserve la interface .Para aumentar la
confiabilidad del sistema en cada capa pueden incluirse facilidades redundantes (por
ejemplo autenticación)
Se puede implementar controles de seguridad entre capa y capa creando un sistema de
seguridad multinivel.
Desventajas:
En la práctica es difícil ofrecer una separación limpia entre capas y es posible que la capa
superior deba interactuar con la capa inferior directamente en vez de hacerlo por las capas
intermedias.(es una violación del modelo).
El rendimiento suele ser un problema debido a que una solicitud de servicio se debe
procesar en múltiples capas ( taladrando capas ).
Mientras más capas tiene un sistema más ineficiente es .
Sustitución de capas
La sustitución de capas ha hecho posible el software portable a varios entornos operativos.
Ej:El Java
12-04-2019
Nombre: Repositorio
Descripción:
Todos los datos en un sistema se gestionan en un Repositorio central, accesible a todos los
componentes del sistema. Los componentes no interactúan directamente, sólo a través del
repositorio.
Ejemplo:
Un IDE (Integrated Development Environment). El IDE tiene varias herramientas
(Componentes) pero los datos quedan almacenados en un repositorio central.
Cuando se usa:
Cuando se tiene un sistema que necesita almacenar grandes cantidades de datos durante
mucho tiempo. También se usa en sistemas administrados por datos en los cuales la
inclusión de datos en el sistema puede activar una o más herramientas o componentes.
Ventajas:
El repositorio es un punto de fallo único. Las fallas del repositorio afectan a todo el sistema.
Es posible que haya ineficiencia al organizar toda la comunicación a través del repositorio.
Quizás sea difícil distribuir el repositorio entre varias computadoras. (problema de
accesibilidad). La reutilización es difícil porque el elemento de software que se quiere
reutilizar debe manejar la estructura de datos del repositorio. Es muy difícil que haya dos
repositorios iguales.
La estructura de datos del repositorio podría estar optimizada para algunos elementos de
software y hacerle difícil la vida a otros elementos.
Nii (1986) propone una estructura llamada “blackboard” en la cual hay un flujo de datos y
cada dato puede activar un elemento de software:
Nombre: Cliente-Servidor
Descripción:
Los servidores y los clientes son procesos que se pueden ubicar en cualquier máquina de
una multicomputadora- el tercer elemento no mencionado es la red que una clientes y
servidores.
Ejemplo:
Un filmoteca y videoteca accesible desde la web:
Cuando se usa:
Cuando se necesita acceder a los datos de una base de datos compartida desde distintas
ubicaciones. Como los servidores se pueden replicar también se usa cuando la carga de
trabajo es variable.
Ventajas:
La principal ventaja es que los servidores puedan distribuirse a lo largo de una red y pueden
replicarse.
El sistema es escalable.
Puede compartir recursos y utilidades generales: impresoras, plotter, compiladores, etc.
Desventajas:
Cada servicio es un punto de falla (excepto si se replica) y es susceptible a ataques de
denegación del servicio (DOS) y a fallas del servidor.
El desempeño será impredecible porque el sistema está formado por muchos elementos de
software, hardware y red.
Para hacer crecer el sistema es muy sencillo, solo se agregan más servidores.
_________________________________________________________
22/04/2019
Entrada------------>transformación(Filtro)------->salida
datos-----------> tuberia------------->datos
No transforma los datos sino que los transporta
Ejemplo:
Un sistema de procesamiento de facturas organizado como tuberías y filtros:
Cuando se usa?
Se suele utilizar en aplicaciones de procesamiento de datos (tanto basados en toles como
en transacciones), donde las entradas se procesan en etapas separadas para generar
salidas relacionadas.
Ventajas:
Fácil de entender y soporta reutilización de transformaciones. El estilo de flujo de
trabajo(workflow) coincide con la forma de trabajar en muchas empresas. La evolución del
sw es directa, consiste en agregar más transformaciones. Se puede implementar como un
sistema secuencial o como una concurrente
Desventajas:
El formato para la transferencia de datos debe acordarse entre las transformaciones que se
comunican.
Cada transformación debe:
- Analizar y sintetizar sus salidas en el formato acordado
Esto aumenta la carga del sistema y puede significar que sea imposible reutilizar
transformaciones funcionales que usen estructuras de los datos incompatibles
Ejemplo:
tuberías y filtros en linux:
cat archivo: Lee el archivo y lo entrega a la salida
grep(“cadena”): Solo deja pasar los datos que contiene la cadena. Los datos son renglones
de texto
Ejemplo: A|B
La salida de A es la entrada de B
Suponga que existe el archivo
Ventas:
Pereira Nevera Gonzalez
Armenia Televisor cortez
Manizales Televisor henao
Pereira Televisor cortez
Armenia Estufa gonzalez
Manizales Estufa cortez
cat ventas|sort -k 3
Ej-2: Informe de ventas de televisor ordenadas por ciudad
cat ventas| grep “televisor”|sort
Hace procesamientos por lotes. En linux, se puede procesar programas concurrentes con el
símbolo &
cat ventas| sort - k 3| por vendedor & cat ventas|grep”televisor| sort>televisores
Es difícil usar tuberías y filtros para sistemas interactivos
Arquitecturas fundamentales
Capas, repositorio, cliente-servidor, tuberías y filtros
Control centralizado:
Hay un componente/subsistema encargado de activar o desactivar a los demás
Control distribuido:
Cada componente reacciona ante eventos externo
1.Control centralizado:
a. Control por Administrador: Sistema de control para multicomputadoras, en el cual
existe un proceso central denominado administrador/coordinador que se encarga de
activar o desactivar los demás elementos
Ejemplo: Un avión (motores, alerones, tren de aterrizaje, cola)
El software de la cabina controla al computador de cada elemento.
Edificios con sistema de seguridad, una consola central.
b. Control por “llamada-retorno”: Sistema de control para multiprocesador. Opera dentro
de una computadora. El sw comparte la memoria RAM. Tiene la pila o STACK dedicada al
control de los programas.
Para comenzar una aplicación ejecuta la función MAIN
Así la función main obtiene el control. Luego main puede delegar el control a otro elemento.
Al terminar este elemento ejecuta la orden return y así le regresa el control a quien se lo
había prestado
Este esquema de control tiene forma de árbol y la raíz del árbol es el main.
La PILA que es compartida por todos los programas contiene la dirección de retorno de
cada programa:
Pila: Login 100
menuprincipal 150
transacciones 300
ventas 500
2.Control distribuido
a. Control por flujo de eventos
Es un sistema de control para multicomputadoras. Existe un flujo de eventos
externos que podrían ir por la red o por otros medios.
Componente Evento
A 3
B 2
B 1
C 4
quiz 4 arquitecturas viernes 26
capas
repositorio
cliente-servidor
tuberías y filtros
24-04-2019
B. Control por interrupciones
Sistema de control:
Tiene como entradas:
● El estado del proceso físico
● El estado deseado y calcula la acción de los actuadores
Para estos sistemas de control se requiere un procesador dedicado.
Supondremos que el procesador es un microcontrolador
While (TRUE)
{
Instrucciones de
Trabajo
Rutinario
}
Este programa principal puede ser interrumpido para procesar un evento y luego continuará
en el lugar donde iba. Se hace por medio de la pila:
● Pila
Prog.principal , dirección de retorno
● Tabla de interrupción:
Esta tabla contiene una posición para cada puerto de entrada y su valor es la
dirección de memoria de programa a la cual se debe saltar en caso de un evento en
ese puerto.
La orden RETI hace que el control pasé a la dirección de retorno que está en la pila y
entonces el sistema continúa con el programa principal.
Arquitecturas de aplicación
Todas las empresas son muy parecidos es que se deben administrar los mismos recursos:
● Dinero ---->Área contable y financiera
● Personal. ---->Área de recursos humanos
● Clientes ---->Área de mercadeo y ventas
● Servicios ---->Área de servicio al cliente
● Fabrica ---->Área de producción
● Información ----> Área de informática
Pero las empresas del mismo sector económico se parecen mucho más.
Han surgido arquitecturas genéricas para ciertos sectores económicos.
Vamos a ver:
● Sistemas de procesamiento de transacciones
● Sistemas de información
● Sistemas de procesamiento del lenguaje
Transacción:
Un conjunto atómico de operaciones de bases de datos. Se realizan todas las operaciones
o no se realiza ninguna, pero la transacción no se puede ejecutar parcialmente.
Ejemplo:
Una reserva aérea de varios vuelos para llegar a un destino como Münich , si faltara uno de
los vuelos , no se podría llegar.
La transacción son todos los vuelos.
Casi siempre los TP son interactivos es decir interactúan con un usuario. El usuario origina
alguna solicitud que debe ser procesada. El sistema debe responder al usuario en el menor
tiempo posible. Son sistemas de tipo solicitud-respuesta .
Estos sistemas de pueden modelar con tuberías y filtros.
Ejemplo: Un cajero electrónico
Órdenes para manejo de transacciones:
BEGIN TRANSACTION
26-04-2019
Sistemas de información
Mientras en un TP la operación relevante es la modificación de la base de datos en un
sistema de información, la operación relevante es la consulta. En muchas ocasiones los
clientes solo consultan y hacen búsquedas de la información como en el caso del catálogo
de productos de una empresa, la información de vuelos de un aeropuerto, información de
vehículos o multas de tránsito.
Es muy normal que los sistemas de información se presenten conjuntamente con sistemas
de procesamiento de transacciones. Ej: consulta de catálogo + compra electrónica. Los SI
se modelan con una estructura de capas:
Ejemplo:
Sistema MHC-PMS que mantiene información sobre pacientes de enfermedad mental,
utilizando la web.
Actualmente todos los SI son orientados a la web. Cada capa tiene una o más máquinas.
El modelo de capas permite colocar varias máquinas en una capa para incrementar el
rendimiento del sistema.
Los lenguajes pueden ser humanos en cuyo caso se trata de un traductor o artificiales en
cuyo caso se trata de un interpretador o compilador.
Se ha modelado un compilador.
Es un enfoque de procesamiento por lotes.
29/04/2019
Reutilización de Software
Motivación: A la industria de software se le está exigiendo:
- Menores costos de desarrollo
- Menores costos de mantenimiento
- Menores plazos de desarrollo
Disponibilidad
Además de los repositorio empresariales de software el movimiento de fuente abierta y el
movimiento de software libre han creado mucho software que se puede reutilizar
Sitios importantes:
- sourceforge
- code.google.com
- wordpress
Componente
El componente es el tamaño ideal para la reutilización. Se han hecho esfuerzos para crear
un mercado de componentes. Ej: Wordpress
Hay empresas que suministran componentes a sus clientes
Ejem: Oracle, wowza, pasarelas de pago electrónico
Objetos y funciones:
La primera forma de reutilización fue las librerías de funciones
También existen librerías de objetos o clases que se llaman frameworks.Se reutlizan
elementos pequeños de software
Beneficios de la reutilización:
04-05-2019
Técnicas de reutilización
Patrones arquitectónicos
Se usan arquitecturas estándar de software que apoyan tipos comunes de aplicaciones.
No se reutiliza código sino la arquitectura.
Patrones de diseño
Los patrones arquitectónicos pertenecen a la categoría más general de patrones de diseño,
en la cual aparecen abstracciones, objetos y clases que se utilizan en la resolución de
problemas. Algunas categorías de patrones de diseño son:
● Arquitectónicos
● De comunicación
● Interfaces de usuarios
● Asignación de responsabilidades (GRASP)
Frameworks de Aplicaciones
Son colecciones de clases y objetos que se utilizan en las aplicaciones mediante la
herencia.
Sistemas ERP
Enterprise Resource Planning.
Son sistemas enormes que pretenden cubrir todas las necesidades de una empresa. Son
muy versátiles, tienen un lenguaje de reglas del negocio, con el cual se pueden crear las
reglas de cualquier empresa.
Ej: SAP
Librerías de funciones
Fueron la primera estrategia de reutilización.
Son funciones que se pueden llamar desde la aplicación y se enlazan durante la
compilación en un proceso llamado link.
Generador de programas
Se crean para diferentes dominios de problemas y tienen incrustado mucho conocimiento
del dominio.
El desarrollador aporta a la estructura del programa y en generador de encarga de crear
una aplicación.
1. Calendario de desarrollo de sw
Si el plazo para resolver el problema es muy corto, hay que adquirir aplicaciones
COTS.
Aunque habrá problemas con el ajuste a los requerimientos, el problema principal se
resuelve en un plazo mínimo.
5. El dominio de la aplicación
Para muchos dominios de problema existe gran cantidad de productos genéricos. En
estos dominios se debe considerar los COTS.
Ej: área contable y financiera, área médica.
Frameworks de Aplicación
Los entusiastas del desarrollo orientado a objetos prometían la reutilización de las clases.
Era necesario llevarse también todas las clases que dominan a la clase A.
El problema es que B, C, D también tiene dependencias.
En conclusión, para reutilizar clase hay que llevarse al otro proyecto una gran familia de
clases interdependientes.
Por este camino llegamos a la idea del framework.
En el 2004, Schmidt define el framework como:
“... Un conjunto integrado de artefactos de software (tales como objetos, clases y
componentes) que colaboran en la facilitación de una arquitectura de reutilización para una
familia de aplicaciones”.
Un framework debe ser muy genérico, sus características deben poder ser usadas por
muchísimas aplicaciones.
Si el framework fuese específico para un tipo de problema, pocas aplicaciones lo usarían.
Para utilizar un framework, el desarrollador crea sus propias clases pero las hace heredar
de clases del framework.
El mecanismo para usar un framework es la herencia. Los frameworks sólo existen para
lenguajes orientados a objetos.
Los frameworks dependen del lenguaje de programación, es decir, son específicos para un
lenguaje.
Son un conjunto de estándares y clases que permiten a los objetos remotos y a los
componentes comunicarse a través de una red e integrarse para formar aplicación
Ejemplo:
Microsoft.net
EJB enterprise Java beans
J2EE
Corba
4. WAF
Otros Ejemplos:
ASP.NE
JAVA EE
WEB OBJECTS
WEBZPY
OPEN ACS
LARAVEL
SAILS JS
DJANGO
1. Seguridad
Pueden proporcionar clases para definir usuarios y hacer el control de acceso
4. Gestión de la sesión
Clases para manejar l información de la sesión y el almacenamiento de información en
cookies
Control inverso
Cada framework tiene un ciclo de evento el cual se encarga de atrapar los eventos que le
interesan al framework (eventos de usuarios, eventos de red, eventos de base de datos) El
framework llama a la clase de la aplicación que hereda del framework
El usuario genera un evento (click en un botón) el cual cual es atrapado por el framework.
El framework llama a la clase aceptar de la aplicación, la cual hereda de la clase button del
framework.
La clase button tiene un método click() el cual es heredado por la clase aceptar
Los métodos como el click que pueda ser invocados por el framework, se denominan
callbacks.
Para aprender a usar un framework se requiere gran energía y tiempo (más de un mes)
Evaluar varios frameworks para elegir el más apropiado, es una labor que consume también
mucho tiempo y energía.
Línea de producto de software
Una línea de productos es una familia de aplicaciones la cual comparte gran parte del
código por cada aplicación ha sido adaptada a un cierto tipo de cliente
La línea de productos se diseña para maximizar el código común. La meta es que sea cerca
al 801 del código
Con el código común podemos crear una aplicación base y a partir de este momento, crear
una nueva aplicación consiste en hacer una copia de la aplicación base y adaptarla al nuevo
usuario.
Las líneas de producto surgen de aplicaciones existentes en las cuales se van repitiendo
ciertos patrones de software.
1. Especialización de plataforma
Se crean versiones de la aplicación para distintas plataformas:
Linux
Windows
iOS
Android
2. Especialización de entorno
3. Especialización funcional
Ejemplo: inventarios
V1: supermercados
V2: droguerías
V3: cuentadantes
V4: maquinaria
4. Especialización de proceso
Diferentes empresas realizan el mismo proceso de formas distintas
V1: pedidos centralizados. El cliente tiene que llamar a un único número telefónico
V2: la empresa tiene agentes viajeros que recorren el territorio visitando a los clientes y
haciendo pedidos.