203036_propuesta_metodologica

30
UNAD. UNIVERSIDAD ABIERTA Y A DISTANCIA Escuela de ciencias básicas Asignatura : 203036_108 Software Ingeniería CONSTRUCCION DE LA SOLUCION Propuesta Metodológica Presenta : José Eusebio López Junco Código: 74338899 Docente: Nelson Humberto Zambrano

Upload: tibanaboyaca

Post on 01-Feb-2016

10 views

Category:

Documents


0 download

DESCRIPTION

Software de ingenieria unad.

TRANSCRIPT

Page 1: 203036_Propuesta_Metodologica

UNAD. UNIVERSIDAD ABIERTA Y A DISTANCIAEscuela de ciencias básicas

Asignatura :203036_108 Software Ingeniería

CONSTRUCCION DE LA SOLUCIONPropuesta Metodológica

Presenta :José Eusebio López Junco

Código: 74338899

Docente:Nelson Humberto Zambrano

Bogotá D.C Colombia Octubre 30 del 2015

Page 2: 203036_Propuesta_Metodologica

INTRODUCCIÓN

La siguiente propuesta metodológica esta fundamenta en la solución del problema

propuesto; para el desarrollo de esta actividad se valió de las etapas de los trabajos

colaborativos anteriores, como el diagrama de flujo, las lluvias ideas, las propuestas

personales que se subieron al foro colaborativo de los mismos. Para el desarrollo de la

propuesta se valió de videos en ☺You tube, libros pdf, Experiencia laboral en procesos

de automatización, Feria de automatización donde había una sala dedicada al manejo de

Matlab como herramienta en el análisis de procesos, donde ellos nos dieron una guía

básica en el control de variables. Siguiendo con lo anterior se comenzó armando un

diagrama de flujo donde se realizaron las fases a groso modo del proceso, para después

pasarlo de una manera detallada a un algoritmo, donde se detalla el proceso. Para por

ultimo pasarlo al código fuente donde se utilizó el lenguaje de Matlab más la interfaz

gráfica con el ánimo de darle un valor agregado para que la solución sea realmente lo

que el cliente necesita.

Page 3: 203036_Propuesta_Metodologica

1. PROBLEMA A RESOLVER SOFTWARE PARA INGENIERÌA

En una industria manufacturera, disponen de una máquina que realiza un proceso en tres fases,

cada una de ellas se desarrolla en un tiempo calculado por un instrumento anexo que devuelve

tres números binario cada uno de 13 bits, dichos números representan el intervalo de tiempo de

duración de cada fase (el tiempo mínimo de cada fase no era inferior a 5 segundos).

Adicionalmente la máquina dispone de un conjunto de leds dispuestos en forma de matriz de 10

por 5, a partir de ellos se identificaba la fase y a través de un código visual se daba una

aproximación del tiempo que restaba para finalizar el proceso (a través de juego de luces que se

actualizaba cada segundo). En este momento el código de programación que realizaba dicho

proceso sufrió un daño irreparable, por tanto es necesario generar un nuevo código a nivel de

prototipo, que responda a estas condiciones, esto para que sea estudiado y viabilizar su

aplicación… Los datos de entrada y salida se deben dar a partir de los recursos del PC, y usando

Matlab como lenguaje de programación

1.1. GUIÓN DE LA PROPUESTA.

a. Valernos del diagrama de flujo hecho como propuesta de grupo, para comenzar a

armar la hipótesis.

b. Buscar información acorde para solucionar el problema

c. Armar un algoritmo que pueda relacionar el problema con algún software.

d. Valernos del algoritmo para armar el código fuente

e. Realizar revisiones y pruebas de la solución

Page 4: 203036_Propuesta_Metodologica

1.2. ORDEN CRONOLÓGICO DE LA PROPUESTA.

Actividad Fecha Inicio Fecha Final ActividadExperimentación Individual

24 agosto 17 septiembre

Implementación propuesta individual, donde se describe bibliografía para la solución, con las ventajas desventajas

Construcción de la solución

27 Septiembre

15 noviembre Hipótesis, bibliografía para solucionar el problema, algoritmo, código fuente en Matlab o Scilab. Revisión de la solución.

Experimentación Grupal

2. BUSCAR INFORMACIÓN ACORDE PARA SOLUCIÓN DEL PROBLEMA.

2.1. DISEÑO DEL ALGORITMO:

http://www.omijal.org/pagina_c/algo.html

Importante información de como elaborar un algoritmo del cual se extrae su

importancia en la solución de cualquier problema aun sea cotidiano.

Elaborar un algoritmo es tiempo y dedicación requiere conocimiento y experiencia,

que se logra con mucho trabajo, cuando se tiene un problema y se tiene la idea de

cómo efectuarla se llama periodo de incubación , lo que sigue es plasmar por medio

de lenguaje normal compensado con alguna reglas de programación para así llegar

a presentar una solución ordenada y fácil de entender tanto por la persona como la

computadora.

Ejemplo: 2

Se requiere saber si un números son pares o impares.

Page 5: 203036_Propuesta_Metodologica

a. todo secuencia debe estar ordenada y ser finito.

Inicio

Escribir “Ingrese el primer valor”

Leer número

Si numero > 0 entonces

Numero mod 2

Si mod = 0

Escribir “Es un número impar”

Sino

Escribir “ Es un número impar”

Fin si

Sino

Escribir “entrada incorrecta”

Fin si

Fin

Si no hubiera hecho este algoritmo no tendría una forma clara de solucionar el

problema., porque podría haber comenzado haciendo el resto de la división, luego

decir que el número es incorrecto, en si podría decir que estaría hecho una cabuya

en un bolsillo.

Elaborar un algoritmo se logra estructurando el pensamiento para llegar una idea que

dé solución al problema planteado.

c. Elaboración del algoritmo.

Cuando se tiene un problema, cualquiera que sea porque los algoritmos se aplican a

todo hasta para realizar las labores diarias o cotidianas. Para poder resolver una

situación que implique pensar, a veces es bueno dividir esta situación en más pequeña

con el ánimos de detallar y poder resolverlo de más fácil.

Seudocódigo: Es un lenguaje para la programación de algoritmos, está conformada

por un semántica formal parecida como nos expresamos, mas sintaxis propia de la

Page 6: 203036_Propuesta_Metodologica

programación , no sirve para programar en un computador , este tiene palabras

reservadas parecidas al lenguaje de programación

Un algoritmo esta hecho de un lenguaje normal como el que hablamos a diario mas

un conjunto de instrucciones que combinadas se puede expresar la idea de una

solución en una forma ordenada. De ahí al programa final es un camino corto porque

ya teniendo una idea ordena muy parecida a la sintaxis propia del programa se puede

elaborar un respuesta más rápida, concreta, fácil,

2.2. Interface Guide.

http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/garcia_b_s/capitulo3.pdf

Mediante esta interface se puede utilizar el código de Matlab para hacer más fácil e

interactiva la información , ya que la información se puede ver fácil, todo está

presente en la pantalla, se puede manipular las variables de una manera más

asequible. Un ejemplo es Software DOS en sus principios donde se utilizaba con

comandos a , ahora cuando se accede por medio de ventanas y n o se necesita tener

muchos conocimientos de programación lo que se hace que se preocupe más el

proceso.

Page 7: 203036_Propuesta_Metodologica

2.3. HIPÓTESIS PARA LA SOLUCIÓN DEL PROBLEMA.

Según la propuesta por el grupo, donde se realiza una secuencia de las fases. Pienso

implementarla de la siguiente manera:

Estudiar de manera precisa el uso, manejo de las matrices en Matlab. Como una

manera de controlar la información, almacenamiento y manipulación del bit que nos

informan en el problema.

Según los ejercicios realizados en las prácticas se pueden utilizar para solucionar

el problema.

En la etapa de mostrar el tiempo de cada fase, me valdré de una matriz de 10*5 donde

mediante ciclos For iré transformándola en unos a medida que el tiempo transcurre.

En cada fase se controlara de manera independiente donde se podrá introducir el

tiempo. y otra función donde se pueda realizar la secuencia de las fases una a una

indicando el tiempo restante, e informando cuando el tiempo haya terminado. Esto lo

hare con funciones que se presentan en Matlab.

Page 8: 203036_Propuesta_Metodologica

Para hacer más amigable y fácil la visualización, se pondrán colores para informar en

qué fase va. Esto se realizara con la herramienta e interface que Guide con la cual me

valdré para hacer más interactivo el proceso

Page 9: 203036_Propuesta_Metodologica

3. ALGORITMO DE LA SOLUCION DEL PROBLEMA.

Algoritmo para solución propuesta de la matriz de led . Hecho en Matlab con la interfaz gráfica Guide. Hecho por José Eusebio López Junco Código 74338899 Grupo 203036_5

Inicio = FASESInicio = software propio de Guide. Leer Cuadro de texto 1Leer Cuadro de texto 2Leer Cuadro de texto 3

Función Botón Uno

Escribir “ Fase 1 en curso”Botón Uno = Amarilloa = Cuadro de texto 1M= matriz ceros[10,5]b = M

b(2, 1:3)=1b(2:8,3)=1b(8,:) = 1

Escribir “ b ”Escribir “ M ”retro = a; hacer para i = 1 : a; hacer para j= 1:5 si retro = 0 entonces Salir de ciclo Fin si retro = retro -1 M(i,j) = retro

Escribir = “ Cuadro de texto 5 = (M)” Esperar 1 segundo M(i,j) = 1; Escribir = “Cuadro de texto 5 =M” Esperar 1 segundo fin para Fin para

Fin botón Uno Función= Botón DosEscribir “ Fase 2 en curso”Botón dos = azul

c = Cuadro de texto 2M = matriz ceros(10,5)d= M;

Page 10: 203036_Propuesta_Metodologica

d(2,:) = (1)d(2:6,5) = (1);d(6,:) = (1);d(7:9,1) = (1);d(9,:) = (1)Escribir =” Cuadro de texto 5, d”Esperar 5 segundosretro2 = c; Hacer para i = 1 a c Hacer para j= 1 a 5 si retro2 = 0 entonces Salir del ciclo Fin si retro2 = retro2 -1; M(i,j) = retro2; Escribir “Cuadro de texto 5,M “ Esperar 1 segundo M(i,j) = 1 Escribir “Cuadro de texto 5, M ” Esperar 1 segundo fin parafin para fin Botón Dos Función Botón TresEscribir “ Fase 3 en curso”Boton Tres = Naranja

e = Cuadro de texto 3M = Matriz ceros (10,5)f = M; f(2,:) = 1f(6, :) = 1f(9 ,:) = 1f(2:9,5)= 1 Escribir “Cuadro de texto 5, f ”Esperar 5 segundosEscribir “Cuadro de texto 5 ,M “ retro3 = e; Hacer para i = 1 a e; Hacer para j= 1 a 5 si retro3 = 0 Entonces Salir del ciclo Fin si retro3 = retro3 -1 M(i,j) = retro3; Escribir “Cuadro de texto 5 , M “ Esperar 1 segundo M(i,j) = 1; Escribir “Cuadro de texto 5 ,M “

Page 11: 203036_Propuesta_Metodologica

Esperar 1 segundo Fin para Fin paraFin Botón Tres

Función Botón Cuatro

Hacer para t = 1 a 3 Elegir caso t ; Caso ‘ 1 Escribir “ Fase 1 en curso” Botón 1 = Amarilloa = Cuadro de texto 1 M= matriz ceros[10,5]b = M

b(2, 1:3)=1b(2:8,3)=1b(8,:) = 1

Escribir “Cuadro de texto 5 , b ”Escribir “Cuadro de texto 5 , M ”retro = a; hacer para i = 1 : a; hacer para j= 1:5 si retro = 0 entonces Salir de ciclo Fin si retro = retro -1 M(i,j) = retro

Escribir = “Cuadro de texto 5 = M ” Esperar 1 segundo M(i,j) = 1; Escribir = “Cuadro de texto 5 =M ” Esperar 1 segundo fin para Fin para Caso ‘ 2 ‘

Escribir “ Fase 2 en curso”Boton dos = azul

c = Cuadro de texto 3 M = matriz ceros(10,5)d= M; d(2,:) = (1)d(2:6,5) = (1);d(6,:) = (1);d(7:9,1) = (1);

Page 12: 203036_Propuesta_Metodologica

d(9,:) = (1)Escribir =” Cuadro de texto 5 , d”Esperar 5 segundosretro2 = c; Hacer para i = 1 a c Hacer para j= 1 a 5 si retro2 = 0 entonces Salir del ciclo Fin si retro2 = retro2 -1; M(i,j) = retro2; Escribir “Cuadro de texto 5 ,M “ Esperar 1 segundo M(i,j) = 1 Escribir “Cuadro de texto 5 , M ” Esperar 1 segundo fin parafin para

Caso ‘ 3 ‘Escribir “ Fase 3 en curso”Boton Tres = Naranja

e = Cuadro de texto 3 M = Matriz ceros (10,5)f = M; f(2,:) = 1f(6, :) = 1f(9 ,:) = 1f(2:9,5)= 1 Escribir “Cuadro de texto 5 , f ”Esperar 5 segundosEscribir “Cuadro de texto 5 ,M “ retro3 = e; Hacer para i = 1 a e; Hacer para j= 1 a 5 si retro3 = 0 Entonces Salir del ciclo Fin si retro3 = retro3 -1 M(i,j) = retro3; Escribir “Cuadro de texto 5 , M “ Esperar 1 segundo M(i,j) = 1; Escribir “Cuadro de texto 5 ,M “ Esperar 1 segundo Fin para

Fin para

Fin Botón Tres

Page 13: 203036_Propuesta_Metodologica

Fin elegir CasoFin hacer para Fin Botón CuatroFin Fase

4. CODIGO FUENTE EN MATLAB Y GUIDE.

function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % Cuadro de texto editable donde se coloca el tiempo para la segunda % Fase 2.************************************************************** function edit2_Callback(hObject, eventdata, handles) function edit2_CreateFcn(hObject, eventdata, handles) % Se cambia el color de fonde del cuadro de texto.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end % Cuadro de texto editable donde se coloca el tiempo para la tercera % Fase.************************************************************** function edit3_CreateFcn(hObject, eventdata, handles) % Se cambia el color de fonde del cuadro de texto.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end % ***********************************************************************% Función del boton de arranque de la primera fase.%************************************************************************function pushbutton1_Callback(hObject, eventdata, handles)% Se al pulsar se cambia de color a amarillo cambia de nombre el % el botonset(handles. pushbutton1,'String','Fase 1 en curso ')set(handles.edit5,'BackGroundColor','yellow') % se transforma el dato texto en número Double ejemplo = 5.2 a = str2double(get(handles.edit2,'String'));

Page 14: 203036_Propuesta_Metodologica

% Se realiza la validación de los datos para que esten entre 5 % 50 if a <=5 set(handles. text3,'String','Ingrese un numero mayor 5 ') return esperar 2 segundos;end if a > 50 set(handles. text3,'String','Ingrese un numero mayor 5 ') return esperar 2 segundos;end % Se crea una matriz de vacia de 10*5M = zeros(10,5);b = M; % Se cambian los valores en las filas o columnas por unos en la matriz b(2, 1:3)=(1);b(2:8,3)=(1);b(8,:) = (1) % Se da salidad por medio del cuadro de texto edit 5 se transforma % la variable numerica double a tipo String. set(handles.edit5,'String',num2str(b));pause (5)% Se espera 5 segundos set(handles.edit5,'String',num2str(M)); retro = a; % Se comienza los ciclos for donde se realiza la cuenta regresiva % del tiempo tomado en edit 1. y se muestra en edit 5 por medio de la % matriz vacia cambiando la posición por el tiempo restante, luego lo % pasa a " 1" asi hasta cumplir el tiempo. for i = 1 : a; for j= 1:5 if retro == 0 return end retro = retro -1 M(i,j) = retro; set(handles.edit5,'String',num2str(M)); pause(1) M(i,j) = 1; set(handles.edit5,'String',num2str(M)); pause(1) end

Page 15: 203036_Propuesta_Metodologica

% Aqui se aplica un reset para dejar todo como estaba set(handles. pushbutton1,'String','Star Fase 1 ') set(handles. text3,'String','Termino fase 1 ') pause(1) set(handles. text3,'String',' ') end % ***********************************************************************% Función del boton de arranque de la Segunda fase.%************************************************************************ function pushbutton2_Callback(hObject, eventdata, handles) % Se al pulsar se cambia de color a amarillo cambia de nombre el % el botonset(handles. pushbutton2,'String','Fase 2 en curso ')set(handles.edit5,'BackGroundColor','blue') c = str2double(get(handles.edit3,'String')); % Se realiza la validación de los datos para que esten entre 5 % 50 if c <=5 set(handles. text3,'String','Ingrese un numero mayor 5 ') return esperar 2 segundos;end if c > 50 set(handles. text3,'String','Ingrese un numero mayor 50 ') return esperar 2 segundos;end % Se crea una matriz de vacia de 10*5M = zeros(10,5);d= M; % Se cambian los valores en las filas o columnas por unos en la matrizd(2,:) = (1);d(2:6,5) = (1);d(6,:) = (1);d(7:9,1) = (1);d(9,:) = (1)set(handles.edit5,'String',num2str(d)) pause (5); set(handles.edit5,'String',num2str(d)); retro2 = c;

Page 16: 203036_Propuesta_Metodologica

% Se comienza los ciclos for donde se realiza la cuenta regresiva % del tiempo tomado en edit 1. y se muestra en edit 5 por medio de la % matriz vacia cambiando la posición por el tiempo restante, luego lo % pasa a " 1" asi hasta cumplir el tiempo. for i = 1 : c; for j= 1:5 if retro2 == 0 return end retro2 = retro2 -1; M(i,j) = retro2; set(handles.edit5,'String',num2str(M)); pause(1) M(i,j) = 1; set(handles.edit5,'String',num2str(M)); pause(1) home end % Aqui se aplica un reset para dejar todo como estaba % Fase 3 en curso a Star Fase 2 set(handles. pushbutton1,'String','Star Fase 2 ') set(handles. text3,'String','Termino fase 2 ') pause(1) set(handles. text3,'String',' ') end % ***********************************************************************% Función del boton de arranque de la Tercera fase.%************************************************************************ function pushbutton3_Callback(hObject, eventdata, handles) e = str2double(get(handles.edit4,'String')); % Se realiza la validación de los datos para que esten entre 5 % 50 if e <=5 set(handles. text3,'String','Ingrese un numero mayor 5 ') return esperar 2 segundos;end if e > 50 set(handles. text3,'String','Ingrese un numero mayor 5 ') return esperar 2 segundos;end % Se crea una matriz de vacia de 10*5 M = zeros(10,5);f = M;

Page 17: 203036_Propuesta_Metodologica

% Se cambian los valores en las filas o columnas por unos en la matrizf(2,:) = (1);f(6, :) = (1);f(9 ,:) = (1);f(2:9,5) = (1) set(handles.edit5,'String',num2str(f));pause (5)set(handles.edit5,'String',num2str(M)); retro3 = e; % Se comienza los ciclos for donde se realiza la cuenta regresiva % del tiempo tomado en edit 1. y se muestra en edit 5 por medio de la % matriz vacia cambiando la posición por el tiempo restante, luego lo % pasa a " 1" asi hasta cumplir el tiempo. for i = 1 : e; for j= 1:5 if retro3 == 0 return end retro3 = retro3 -1; M(i,j) = retro3; set(handles.edit5,'String',num2str(M)); pause(1) M(i,j) = 1; set(handles.edit5,'String',num2str(M)); pause(1) end % Aqui se aplica un reset para dejar todo como estaba % Fase 3 en curso a Star Fase 3 set(handles. pushbutton1,'String','Star Fase 3 ') set(handles. text3,'String','Termino fase 3 ') pause(1) set(handles. text3,'String',' ') end % ***********************************************************************% Función del boton de arranque de la primera fase hasta la fase tres%************************************************************************ function pushbutton4_Callback(~, ~, handles) % ******EL CODIGO ES EL MISMO QUE EN LAS FASES INDIVIDUALES*********** % Por medio de un ciclo for y mediante un selector de caso se % se realiza el proceso de las tres fases for t = 1 : 3 ; switch t ;

Page 18: 203036_Propuesta_Metodologica

case 1 % *****COMIENZA LA FASE 1 ******************** a = str2double(get(handles.edit2,'String'));M = zeros(10,5);b = M; b(2, 1:3)=(1);b(2:8,3)=(1);b(8,:) = (1) set(handles.edit5,'String',num2str(b));pause (5)set(handles.edit5,'String',num2str(M)); retro = a; for i = 1 : a; for j= 1:5 if retro == 0 break end retro = retro -1 M(i,j) = retro; set(handles.edit5,'String',num2str(M)); pause(1) M(i,j) = 1; set(handles.edit5,'String',num2str(M)); pause(1) home end end set(handles.edit5,'String',' hola 1'); pause (2) case 2 % *****COMIENZA LA FASE 2 ******************** c = str2double(get(handles.edit3,'String'));M = zeros(10,5);d= M; d(2,:) = (1);d(2:6,5) = (1);d(6,:) = (1);d(7:9,1) = (1);d(9,:) = (1)set(handles.edit5,'String',num2str(d)) pause (5); set(handles.edit5,'String',num2str(d)); retro = c;

Page 19: 203036_Propuesta_Metodologica

for i = 1 : c; for j= 1:5 if retro == 0 break end retro = retro -1 M(i,j) = retro; set(handles.edit5,'String',num2str(M)); pause(1) M(i,j) = 1; set(handles.edit5,'String',num2str(M)); pause(1) home end end set(handles.edit5,'String',' hola 22'); pause(2) case 3 % *****COMIENZA LA FASE 3 ******************** e = str2double(get(handles.edit4,'String'));M = zeros(10,5);f = M; f(2,:) = (1);f(6, :) = (1);f(9 ,:) = (1);f(2:9,5) = (1) set(handles.edit5,'String',num2str(f));pause (5)set(handles.edit5,'String',num2str(M)); retro = e; for i = 1 : e; for j= 1:5 if retro == 0 break end retro = retro -1 M(i,j) = retro; set(handles.edit5,'String',num2str(M)); pause(1) M(i,j) = 1; set(handles.edit5,'String',num2str(M)); pause(1) home end end

Page 20: 203036_Propuesta_Metodologica

set(handles.edit5,'String',' hola 33'); pause(2) end end % ******** TERMINA EL PROGRAMA ***********************************

CONCLUSION

1. Se puede decir que el proceso que se siguió, sirvió para llegar a una solución,

es decir que sin la ayuda del profesor , la guía de actividades, de tener la forma

como solucionar un problema hacen sacar a flote las ideas y sobretodo dar

solución a un problema que alguien puede tener. Como estudiantes de

ingeniería debemos estar en capacidad de dar solución a cualquier vicisitud.

2. Los pasos realizados como elaborar un diagrama de flujo, lluvias de ideas,

propuestas, algoritmos son fundamentales para llegar a dar una solución y

sobretodo sin esas técnicas no se podría armar un proyecto.

Page 21: 203036_Propuesta_Metodologica

BIBLIOGRAFIA

López, C. P. (2002). Matlab y sus aplicaciones en las ciencias y la Ingeniería. En C. P. López, Álgebra lineal numérica (págs. 179-192). Madrid: Pearson Educación S.A.

Page 22: 203036_Propuesta_Metodologica

López, C. P. (2002). Matlab y sus aplicaciones en las ciencias y la Ingeniería. En C. P. López, Programación y métodos de análisis numérico (págs. 301-330). Madrid: Pearson Educación S.A.

Omijal. (s.f.). Recuperado el 15 de 10 de 15, de Algoritmos: http://www.omijal.org/pagina_c/algo.html

Tutorial de Matlab. (s.f.). Recuperado el 20 de 10 de 15, de Usando Guide: http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/garcia_b_s/capitulo3.pdf

Page 23: 203036_Propuesta_Metodologica
Page 24: 203036_Propuesta_Metodologica