CAPITULO IV. Diseño de la solución
4.7 Modelo de Análisis
4.7.1 Diagrama de Clases
Sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia y de uso, describe la estructura de un sistema mostrando sus clases, atributos y las relaciones entre ellos.
Los diagramas de clases nos ayudan durante el proceso de análisis y diseño de los sistemas, donde se crea el diseño conceptual de la información que se manejará en el sistema, y los componentes que se encargaran del funcionamiento y la relación entre uno y otro.
Cliente Nombre RPU Aparatos Nombre Consumo RPU Facturación Facturación RPU Equipo Aparato RPU
4.7.2 Diagrama de Paquetes
Muestra cómo un sistema está dividido en agrupaciones lógicas mostrando las dependencias entre esas agrupaciones, suministran una descomposición de la jerarquía lógica de un sistema.
El diagrama de paquetes nos ayudará a que cada paquete puede asignarse a un individuo o, a un equipo, y las dependencias entre ellos pueden indicar el orden de desarrollo requerido.
Módulo de datos generales Módulo de condiciones de la
instalación eléctrica
Módulo de pruebas de medidor
Módulo de censo de aparatos
Módulo de propuesta Módulo de diagramas
4.7.3 Modelo de Diseño Captura de levantamiento de aparatos conectados a la red eléctrica. Condiciones de la instalación. Prueba de medidores. Observaciones. Input
Introducir tipos de aparato y
costumbre de usos.
Revisión física de la calidad
de los componentes eléctricos.
Cálculo para prueba de
medidores.
Descripción detallada de las
observaciones y recomendaciones propuestas al cliente. Procesos Reporte detallado con las observaciones, recomendaciones y especificaciones. Output
4.7.4 Diagrama de Secuencias
Describe las interacciones entre un grupo de objetos mostrando de forma secuencial los envíos de mensajes entre objetos, muestra los flujos de datos intercambiados durante el envío de mensajes.
Cliente Analista Solicita levantamiento de diagnóstico Entrega resultado Realiza levantamiento Elabora reporte Captura y analiza levantamiento
Los diagramas de secuencia nos ayudan a identificar cómo los objetos se comunican con otros objetos y qué mensajes disparan esas comunicaciones.
4.7.5 Diagrama de Estado
Muestra la secuencia de estados por los que pasa un caso de uso, un objeto a lo largo de su vida, o bien todo el sistema. En él se indican qué eventos hacen que
se pase de un estado a otro y cuáles son las respuestas y acciones que genera.
Este diagrama nos ayudará a identificar cada uno de los estados por los cuales pasa un objeto durante su vida en una aplicación en respuesta a eventos, junto con sus respuestas y acciones, así como qué eventos pueden cambiar el estado de los objetos de la clase.
Inicio
Captura de los datos del censo Levantamiento del diagnóstico Análisis y recomendaciones Fin Entrega de reporte
4.7.6 Diagrama de Colaboración
Los diagramas de colaboración explican gráficamente las interacciones entre los objetos, constituyen una de las herramientas más importantes para el análisis y diseño orientado a objetos.
El diagrama de colaboradores nos mostrará explícitamente las relaciones de los roles de los objetos.
Datos referidos por el cliente Levantamiento de diagnóstico Sistema SIID Inspección visual
4.7.7 Diagrama de Actividades
Representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema.
El diagrama de actividades nos mostrará la serie de actividades que deben ser realizadas en un uso-caso, así como las distintas rutas que pueden irse desencadenando en el mismo. Acudir al domicilio del cliente Realizar el levantamiento Preguntar costumbres de uso
Capturar los datos en el SIID
Entregar reporte detallado Elaborar diagnóstico y
4.8 Modelo de Desarrollo
4.8.1 Diagrama de Componentes
Se utilizan para modelar la vista estática de un sistema. Muestra la organización y
las dependencias entre un conjunto de componentes.
Al diseñar el diagrama nos mostrará cómo un sistema de software es dividido en componentes y muestra las dependencias entre estos, identificando a sus componentes físicos tales como: archivos, cabeceras, bibliotecas compartidas, módulos, ejecutables, o paquetes.
4.9 Modelo de Implantación
4.9.1 Diagrama de Implementación
Los diagramas de implementación muestran los aspectos físicos del sistema, incluyen la estructura del código fuente y la implementación.
FrmDiagnóstico.exe
Para ésta tesis, se omite la estructura total del código fuente por tratarse de información confidencial, ya que dicho sistema se encuentra en vías de registro ante el Instituto Mexicano de Propiedad Intelectual y sólo se muestra una pequeña parte del código fuente para fines ilustrativos.
IF !EMPTY(this.Value) rpuprin = this.Value SELECT datdiags
LOCATE FOR rpu = thisform.pageframe1.page1.text3.Value IF FOUND()
nu = RECNO()
thisform.label1.Caption = "REVISO: ING. " + ALLTRIM(DATDIAGS.REVISO)
thisform.pageframe1.page2.Enabled = .t.
thisform.pageframe1.page3.Enabled = .t.
thisform.pageframe1.page4.Enabled = .t.
thisform.pageframe1.page5.Enabled = .t.
thisform.pageframe1.page6.Enabled = .t.
thisform.pageframe1.page7.Enabled = .t.
thisform.pageframe1.page1.text1.value = nombre
thisform.pageframe1.page1.text2.value = domicilio
thisform.pageframe1.page1.text4.value = cta
thisform.pageframe1.page1.text5.value = medidor1
thisform.pageframe1.page1.text45.value = lec11
thisform.pageframe1.page1.text51.value = fec11
thisform.pageframe1.page1.text48.value = lec12
thisform.pageframe1.page1.text54.value = fec12
thisform.pageframe1.page1.text65.Value = multip1
thisform.pageframe1.page1.text66.Value = multip2
thisform.pageframe1.page1.text67.Value = multip3 reslec1 = 0
resfec1 = 0 feclec130 = 0 feclec160 = 0
IF lec11 <> 0 AND lec12 <> 0
IF lec11 < lec12
reslec1 = lec12 - lec11
ENDIF IF lec11 > lec12
reslec1 = lec12 + 10000 - lec11
ENDIF ENDIF
IF EMPTY(fec11) = .f. AND EMPTY(fec12) = .f.
IF DATETIME(VAL("20" +
left(fec11,2)),VAL(SUBSTR(fec11,3,2)),VAL(RIGHT(fec11,2))) < DATETIME(VAL("20" +
left(fec12,2)),VAL(SUBSTR(fec12,3,2)),VAL(RIGHT(fec12,2))) resfec1 = (DATETIME(VAL("20" +
left(fec12,2)),VAL(SUBSTR(fec12,3,2)),VAL(RIGHT(fec12,2))) - DATETIME(VAL("20" +
left(fec11,2)),VAL(SUBSTR(fec11,3,2)),VAL(RIGHT(fec11,2))))/86400
ENDIF ENDIF
IF reslec1 <> 0 AND resfec1 <> 0
feclec130 = reslec1 / resfec1 * 30.4
ENDIF
IF reslec1 <> 0 AND resfec1 <> 0
feclec160 = reslec1 / resfec1 * 60.8
thisform.pageframe1.page1.text57.value = feclec130
thisform.pageframe1.page1.text60.value = feclec160
thisform.pageframe1.page1.text6.value = medidor2
thisform.pageframe1.page1.text46.value = lec21
thisform.pageframe1.page1.text52.value = fec21
thisform.pageframe1.page1.text49.value = lec22
thisform.pageframe1.page1.text55.value = fec22 reslec2 = 0
resfec2 = 0 feclec230 = 0 feclec260 = 0
IF lec21 <> 0 AND lec22 <> 0
IF lec21 < lec22
reslec2 = lec22 - lec21
ENDIF IF lec21 > lec22
reslec2 = lec22 + 10000 - lec21
ENDIF ENDIF
IF EMPTY(fec21) = .f. AND EMPTY(fec22) = .f.
IF DATETIME(VAL("20" +
left(fec21,2)),VAL(SUBSTR(fec21,3,2)),VAL(RIGHT(fec21,2))) < DATETIME(VAL("20" +
left(fec22,2)),VAL(SUBSTR(fec22,3,2)),VAL(RIGHT(fec22,2))) resfec2 = (DATETIME(VAL("20" +
left(fec22,2)),VAL(SUBSTR(fec22,3,2)),VAL(RIGHT(fec22,2))) - DATETIME(VAL("20" +
left(fec21,2)),VAL(SUBSTR(fec21,3,2)),VAL(RIGHT(fec21,2))))/86400
ENDIF ENDIF
IF reslec2 <> 0 AND resfec2 <> 0
feclec230 = reslec2 / resfec2 * 30.4
ENDIF
IF reslec2 <> 0 AND resfec2 <> 0
feclec260 = reslec2 / resfec2 * 60.8
ENDIF
thisform.pageframe1.page1.text58.value = feclec230
thisform.pageframe1.page1.text61.value = feclec260
thisform.pageframe1.page1.text7.value = medidor3
thisform.pageframe1.page1.text47.value = lec31
thisform.pageframe1.page1.text53.value = fec31
thisform.pageframe1.page1.text50.value = lec32
thisform.pageframe1.page1.text56.value = fec32 reslec3 = 0
resfec3 = 0 feclec330 = 0 feclec360 = 0
IF lec31 <> 0 AND lec32 <> 0
IF lec31 < lec32
reslec3 = lec32 - lec31
ENDIF IF lec31 > lec32
reslec3 = lec32 + 10000 - lec31
ENDIF ENDIF
IF EMPTY(fec31) = .f. AND EMPTY(fec32) = .f.
IF DATETIME(VAL("20" +
left(fec31,2)),VAL(SUBSTR(fec31,3,2)),VAL(RIGHT(fec31,2))) < DATETIME(VAL("20" +
left(fec32,2)),VAL(SUBSTR(fec32,3,2)),VAL(RIGHT(fec32,2))) resfec3 = (DATETIME(VAL("20" +
ENDIF
IF reslec3 <> 0 AND resfec3 <> 0
feclec330 = reslec3 / resfec3 * 30.4
ENDIF
IF reslec3 <> 0 AND resfec3 <> 0
feclec360 = reslec3 / resfec3 * 60.8
ENDIF
thisform.pageframe1.page1.text59.value = feclec330
thisform.pageframe1.page1.text62.value = feclec360
thisform.pageframe1.page1.text63.value = feclec130 + feclec230 + feclec330
thisform.pageframe1.page1.text64.value = feclec160 + feclec260 + feclec360
thisform.pageframe1.page1.text8.value = voltaje
thisform.pageframe1.page1.combo1.value = tarifa
IF thisform.pageframe1.page1.combo1.value = "3" OR thisform.pageframe1.page1.combo1.value
= "OM"
thisform.pageframe1.page1.text65.Visible = .t.
thisform.pageframe1.page1.text66.Visible = .t.
thisform.pageframe1.page1.text67.Visible = .t.
ELSE
thisform.pageframe1.page1.text65.Visible = .f.
thisform.pageframe1.page1.text66.Visible = .f.
thisform.pageframe1.page1.text67.Visible = .f.
ENDIF
thisform.pageframe1.page1.text43.Value = telefono
thisform.pageframe1.page1.text44.Value = correo
SELECT datdiags IF nu <> 0 GOTO nu ENDIF IF EMPTY(bim61) = .t. bimes = 5 ENDIF IF EMPTY(bim51) = .t. bimes = 4 ENDIF IF EMPTY(bim41) = .t. bimes = 3 ENDIF IF EMPTY(bim31) = .t. bimes = 2 ENDIF IF EMPTY(bim21) = .t. bimes = 1 ENDIF IF EMPTY(bim11) = .t. bimes = 0 ENDIF IF EMPTY(bim61) = .f. bimes = 6 ENDIF
thisform.pageframe1.page1.text42.Value = (bim12 + bim22 + bim32 + bim42 + bim52 + bim62) / bimes
thisform.pageframe1.page3.label41.Caption =
ALLTRIM(STR(thisform.pageframe1.page1.text42.Value,10,2)) + " KWH"
thisform.pageframe1.page3.label39.Caption =
ALLTRIM(STR(datdiags.clima+datdiags.bomb+datdiags.refrige+datdiags.audvid+datdiags.comp
+datdiags.ilumininc+datdiags.electrodom+datdiags.iluminflu+datdiags.constb,10,2)) + " KWH"
thisform.pageframe1.page3.label52.Caption =
ALLTRIM(STR(ABS(VAL(thisform.pageframe1.page3.label39.Caption) -
thisform.pageframe1.page3.label54.Caption =
ALLTRIM(STR(VAL(thisform.pageframe1.page3.label41.Caption) * 0.625)) + " Kilos CO2"
thisform.pageframe1.page1.command4.Visible = .t.
DO chart.prg
thisform.pageframe1.page1.text9.SetFocus
promcar = thisform.pageframe1.page1.text42.Value thisform.pageframe1.page1.text12.Visible = .t.
thisform.pageframe1.page1.text13.Visible = .t.
thisform.pageframe1.page1.text14.Visible = .t.
thisform.pageframe1.page1.text15.Visible = .t.
thisform.pageframe1.page1.text16.Visible = .t.
thisform.pageframe1.page1.text17.Visible = .t.
thisform.pageframe1.page1.text18.Visible = .t.
thisform.pageframe1.page1.text19.Visible = .t.
thisform.pageframe1.page1.text20.Visible = .t.
thisform.pageframe1.page1.text21.Visible = .t.
thisform.pageframe1.page1.text22.Visible = .t.
thisform.pageframe1.page1.text23.Visible = .t.
thisform.pageframe1.page1.text24.Visible = .t.
thisform.pageframe1.page1.text25.Visible = .t.
thisform.pageframe1.page1.text26.Visible = .t.
thisform.pageframe1.page1.text27.Visible = .t.
thisform.pageframe1.page1.text28.Visible = .t.
thisform.pageframe1.page1.text29.Visible = .t.
thisform.pageframe1.page1.text30.Visible = .t.
thisform.pageframe1.page1.text31.Visible = .t.
thisform.pageframe1.page1.text32.Visible = .t.
thisform.pageframe1.page1.text33.Visible = .t.
thisform.pageframe1.page1.text34.Visible = .t.
thisform.pageframe1.page1.text35.Visible = .t.
thisform.pageframe1.page1.text36.Visible = .t.
thisform.pageframe1.page1.text37.Visible = .t.
thisform.pageframe1.page1.text38.Visible = .t.
thisform.pageframe1.page1.text39.Visible = .t.
thisform.pageframe1.page1.text40.Visible = .t.
thisform.pageframe1.page1.text41.Visible = .t.
thisform.pageframe1.page1.text42.Visible = .T. esta = 1
ELSE
esta = 0
thisform.pageframe1.page1.text1.Value = ""
thisform.pageframe1.page1.combo1.Value = ""
thisform.pageframe1.page1.text2.Value = ""
thisform.pageframe1.page1.text4.Value = ""
thisform.pageframe1.page1.text8.Value = ""
thisform.pageframe1.page1.text43.Value = ""
thisform.pageframe1.page1.text44.Value = ""
thisform.pageframe1.page1.text5.Value = ""
thisform.pageframe1.page1.text6.Value = ""
thisform.pageframe1.page1.text7.Value = ""
thisform.pageframe1.page1.text45.Value = 0
thisform.pageframe1.page1.text46.Value = 0
thisform.pageframe1.page1.text47.Value = 0
thisform.pageframe1.page1.text51.Value = ""
thisform.pageframe1.page1.text52.Value = ""
thisform.pageframe1.page1.text53.Value = ""
thisform.pageframe1.page1.text48.Value = 0
thisform.pageframe1.page1.text49.Value = 0
thisform.pageframe1.page1.text56.Value = ""
thisform.pageframe1.page1.text57.Value = 0
thisform.pageframe1.page1.text58.Value = 0
thisform.pageframe1.page1.text59.Value = 0
thisform.pageframe1.page1.text63.Value = 0
thisform.pageframe1.page1.text60.Value = 0
thisform.pageframe1.page1.text61.Value = 0
thisform.pageframe1.page1.text62.Value = 0
thisform.pageframe1.page1.text64.Value = 0
thisform.pageframe1.page2.Enabled = .f.
thisform.pageframe1.page3.Enabled = .f.
thisform.pageframe1.page4.Enabled = .f.
thisform.pageframe1.page5.Enabled = .f.
thisform.pageframe1.page6.Enabled = .f.
thisform.pageframe1.page7.Enabled = .f.
thisform.pageframe1.page1.text12.Visible = .f.
thisform.pageframe1.page1.text13.Visible = .f.
thisform.pageframe1.page1.text14.Visible = .f.
thisform.pageframe1.page1.text15.Visible = .f.
thisform.pageframe1.page1.text16.Visible = .f.
thisform.pageframe1.page1.text17.Visible = .f.
thisform.pageframe1.page1.text18.Visible = .f.
thisform.pageframe1.page1.text19.Visible = .f.
thisform.pageframe1.page1.text20.Visible = .f.
thisform.pageframe1.page1.text21.Visible = .f.
thisform.pageframe1.page1.text22.Visible = .f.
thisform.pageframe1.page1.text23.Visible = .f.
thisform.pageframe1.page1.text24.Visible = .f.
thisform.pageframe1.page1.text25.Visible = .f.
thisform.pageframe1.page1.text26.Visible = .f.
thisform.pageframe1.page1.text27.Visible = .f.
thisform.pageframe1.page1.text28.Visible = .f.
thisform.pageframe1.page1.text29.Visible = .f.
thisform.pageframe1.page1.text30.Visible = .f.
thisform.pageframe1.page1.text31.Visible = .f.
thisform.pageframe1.page1.text32.Visible = .f.
thisform.pageframe1.page1.text33.Visible = .f.
thisform.pageframe1.page1.text34.Visible = .f.
thisform.pageframe1.page1.text35.Visible = .f.
thisform.pageframe1.page1.text36.Visible = .f.
thisform.pageframe1.page1.text37.Visible = .f.
thisform.pageframe1.page1.text38.Visible = .f.
thisform.pageframe1.page1.text39.Visible = .f.
thisform.pageframe1.page1.text40.Visible = .f.
thisform.pageframe1.page1.text41.Visible = .f.
thisform.pageframe1.page1.text42.Visible = .f.
ENDIF ENDIF
thisform.Refresh
El diagrama nos mostrará la configuración de los elementos de procesamiento en tiempo de ejecución y los componentes software, procesos y objetos que se ejecutan en ellos.