Sie sind auf Seite 1von 17

Diseo Optimo Fundamentos de diseo ptimo contemplando normas y estndares Las 2 ventajas que aporta este tipo de diseo

son: El diseo obtenido tras una iteracin nunca es peor Cuando se alcanza una solucin, puede garantizarse que esta es la mejor. Uno de los mtodos mas utilizados para mejorar en el diseo es el del elemento finito. El cual se basa en la capacidad de dividir un continuo en un numero finito de elementos, para posteriormente resolver un sistema de funciones continuas, considerando las iteraciones que pudieran ocurrir entre ellos. La secuencia de pasos para la solucin de un problema por este mtodo es: Discretizar la regin Especificar las funciones de interpolacin Desarrollar el sistema de ecuaciones Resolver el sistema de ecuaciones Este mtodo tiene 2 caractersticas : Utiliza elementos discretos para calcular los valores de los grados de libertad en los puntos de unin y con estos obtener valores derivados que resulten de inters en cada miembro de un sistema discreto Usa los elementos continuos para obtener soluciones aproximadas a sistemas continuos como transferencia de calor y mecnica de fluidos Tcnicas de optimizacin Las tcnicas de optimizacin conjuntamente con los sistemas informticos se han convertido en una poderosa herramienta para el diagnostico y solucin de mltiples problemas complejos, convirtindose en un elemento decisivo para la toma de decisiones. Para la utilizacin de esta herramienta es necesario conocer su metodologa, la cual se sustenta en los siguientes supuestos: Alternativa en las decisiones Posibilidades de crear una base informtica Posibilidades mnimas de poder aplicar los resultados En este proceso existe una secuencia de pasos para llegar a la obtencin de los objetivos propuestos: Observacin e identificacin del problema Formulacin general Construccin del modelo Generacin de una solucin Prueba y evaluacin de la...

Este artculo trata de manera muy bsica los aspectos fundamentales de la optimizacin del software. Es por ello que los programadores experimentados posiblemente conozcan ya todos estos conceptos. Aun as, nunca est de mas repasarlos ;-) 4.2 La optimizacin es un tema complejo, que tiene como objetivo maximizar la eficiencia temporal y espacial de los programas. Las tcnicas usuales se basan en:

Disear adecuadamente las aplicaciones.

Esto debera cumplirse para todo el software en general, pero es importante tener en cuenta que a mejor diseo, ms facilidad y menos necesidad de optimizacin posterior.

Elegir buenos algoritmos.

Hemos de estudiar qu algoritmos se adaptan mejor a las especificaciones del problema a resolver. No sirve de nada realizar una excelente implementacin de un algoritmo concreto si ste no es el ms adecuado para nuestra tarea.

Intentar exprimir todo el potencial del hardware utilizado.

Para ello es necesario un gran conocimiento del hardware y de las herramientas de programacin usadas. Debemos estudiar cmo organizar nuestro cdigo, para que a su vez el compilador pueda generar cdigo mquina de mayor calidad. En algunas ocasiones especiales merece la pena escribir nosotros mismos el cdigo ensamblador, normalmente cuando se trata de hardware especfico que el compilador no suele saber aprovechar.

Por ejemplo, las extensiones MMX de Intel o 3dnow! de AMD no sern totalmente aprovechadas si no las programamos nosotros mismos, ya que los compiladores no saben generar cdigo MMX/3D Now! automticamente.

Cmo elegir buenos algoritmos. Introduccin al anlisis de algoritmos.

La correcta eleccin del algoritmo que ha de resolver nuestro problema es fundamental. He aqu algunos conceptos bsicos sobre algoritmos.

Los dos recursos crticos que consumen los algoritmos son el espacio(memoria) y el tiempo(velocidad). Siempre es preferible maximizar la velocidad y disminuir el uso de memoria.

Coste temporal - tiempo de CPU utilizado

Coste espacial - cantidad de memoria utilizada

Al tamao de la entrada de datos del algoritmo se le llama complejidad del problema. Para poder comparar y/o medir la eficiencia de los algoritmos, necesitamos definir una medida vlida para todos ellos.

La unidad de medida que usaremos ser la notacin asinttica. Es una notacin que nos permite evaluar el ritmo de crecimiento de una funcin. No se pretende establecer el coste exacto de un algoritmo, sino evaluar esas magnitudes en funcin del volumen de datos de entrada.

Estudiaremos el rendimiento de los algoritmos para entradas de datos muy grandes(ya que es ste el caso en que la ineficiencia de un programa puede ser crtica). Siempre expresaremos la eficiencia en funcin del volumen de datos (complejidad).

Notaciones asintticas ms utilizadas:

O(f) conjunto de funciones que crecen como mximo con la misma rapidez que f (define una cota superior del algoritmo) (f) conjunto de funciones que crecen con mayor o igual rapidez que f (define una cota inferior del algoritmo) (f) conjunto de funciones que crecen exactamente al mismo ritmo que f

Ordenes de magnitud ms frecuentes

(1) Constante Son las funciones independientes del volumen de datos. Ideal (log n) Logartmico Propio de algoritmos que descartan muchos valores(generalmente la mitad) en un nico paso. Aparece en estructuras de tipo rbol. Eficientes (n log n) Casi lineal Aparece en bucles en los que cada paso implica un coste logartmico. Eficientes (n) Lineal Algoritmos que actuan sobre todos los elementos. Ej: bsqueda de un elemento en un vector no ordenado. "Eficientes" (nk) Polinmico Caracterstico de estructuras de datos lineales, como los vectores, y en los bucles. Tratables (kn) (n!) Exponencial Es el peor caso. Aparece en algoritmos que se basan en el ensayo reiterado de soluciones, como los programas de descifrado de contraseas. Intratables

Son deseables los algoritmos con un ritmo de crecimiento bajo. El anlisis de complejidad de los algoritmos puede ser trivial en algunos casos, y extraordinariamente complicado en otros casos.

Tras este rollo terico, calcularemos la complejidad temporal(por ser la que mayor importancia suele tener) de un algoritmo muy sencillo, para poder aplicar los conceptos presentados hasta ahora:

Bsqueda de un elemento en un vector ordenado.

Primer algorimo: fuerza bruta.

Este algoritmo no necesita de explicacin, ahi va el cdigo en C++:

bool encontrado = false; const int busco; const int KMAX; int vector[KMAX]; // elemento buscado // longitud del vector

for(i=0;vector[i]!=busco && i < KMAX ; i++);

if(i!=KMAX) encontrado=true;

Anlisis. Nmero de iteraciones del bucle:

Mejor caso: 1 Peor caso: KMAX

Caso medio: (KMAX+1)/2

En el peor caso(el elemento buscado est al final del vector), tendremos que hacer un total de n comparaciones(donde n es la longitud del vector). Tenemos pues que el tiempo que tarda el algoritmo en completarse crece linealmente en funcion del tamao de la entrada de datos. El orden de complejidad de este algoritmo es O(KMAX).

Nota: si tenemos la certeza de que el elemento buscado est en el vector, nos podemos ahorrar la comprobacin del lmite superior del vector(nos ahorramos la mitad de las comparaciones y un and). Es un ejemplo de optimizacin peligrosa e innecesaria, ya que existen algoritmos mejores.

Segundo algoritmo: bsqueda dicotmica o binaria

Este algoritmo es exclusivo para vectores ordenados. Es fcil de entender: comenzamos la bsqueda por el elemento situado en la mitad del vector. Si este elemento es mayor que el que buscamos, entonces descartamos todos los elementos superiores(y que son mayores) del vector. Lo mismo si el elemento es menor, pero descartando la mitad inferior del vector. Si reiteramos este proceso, llegaremos al elemento buscado o a un punto en que no podamos descartar mas valores(el elemento buscado no se encontraba en el vector). Aqui est el cdigo:

bool encontrado = false; int izquierda = 0; // lmite izquierdo del conjunto acotado

int derecha = KMAX; // lmite derecho del conjunto acotado

while (! encontrado && izquierda <= derecha) { centro = (izquierda + derecha) / 2; if (x < vector[centro]) derecha = centro - 1; else if (x > vector[centro]) izquierda = centro + 1; else encontrado = true; }

Anlisis. Nmero de iteraciones.

Mejor caso: 1 Peor caso: log 2 KMAX

El mejor caso sera aquel en el que el elemento buscado est en la mitad del vector. En cada iteracin del bucle descartamos la mitad de los elementos del vector, as que el orden de complejidad del es logartmico(base 2). En notacin asinttica O(log2 n). Este orden es preferible al orden lineal del algoritmo de fuerza bruta.

Esto ha sido un ejemplo muy bsico, cuando se estudian algoritmos ms complejos el anlisis es ms difcil.

Cuando y cmo optimizar

"La raz de todos los males es la optimizacin prematura." - D. Knuth

Esta frase es realmente cierta, ya que tendemos a intentar optimizar algoritmos que se encuentran incompletos, inacabados o que no son adecuados a nuestro problema.

Cuando implementemos un algoritmo, primero hemos de hacerlo de una forma sencilla y clara. En la mayoria de los casos tenemos que comprobar que funcionan, pues no siempre somos tan pacientes como para estudiarlos bien sobre el papel primero. Si intentamos ultra-optimizar un algoritmo que ni siquiera hemos probado antes, pronto nos encontraremos en un infierno de sesiones de depuracin y errores.

Es mucho mejor hacer una implementacin simple y clara(que no ineficiente) al principio, comprobar que el algoritmo se comporta como esperabamos, e intentar forzarlo un poco para encontrar posibles errores. Todo esto se resume en la famosa norma KISS (Keep It Simple, Stupid). Una vez tengamos nuestra rutina totalmente testada y a prueba de bombas, podremos ya pasar a la fase de optimizacin. Si el aumento de rendimiento despus de la optimizacin es apenas apreciable, puede incluso considerarse dejar el algoritmo original sin optimizar, y ganar en claridad de cdigo.

Tambien conviene discernir donde vale la pena optimizar. De nada servir mejorar una rutina si sta slo se ejecuta un par de veces durante todo el programa, pues ese probablemente no sea el cuello de botella de nuestro juego/aplicacin. Podemos decir que siempre hay un 20% del cdigo que se ejecuta el 80% del tiempo. sa es la parte del cdigo en la que debemos gastar nuestros esfuerzos. Las sesiones de profiling consisten en localizar ese cdigo, y para ello nos podemos valer de dos herramientas: una es el sentido comn, y la otra la forman todas las utilidades de profiling disponibles*.

*ver seccin de herramientas en este mismo artculo

El ciclo ideal de produccin de software es anlisis -> diseo -> implementacin -> optimizacin, pero incluso el mejor equipo de programadores tendr que volver atrs alguna vez en este ciclo. Al fin y al cabo, los coders somos humanos... o no? ;-)

Herramientas de optimizacin y depuracin

El uso de herramientas de optimizacin es muy recomendable y beneficioso desde el primer momento. Aqu se muestra una pequea recopilacin con el software ms popular.

Software comercial:

- Compuware DevPartner Studio, suite de depuracin y optimizacin para Microsoft Visual Studio 6.0 y .NET. Abarca todos los lenguajes de Visual Studio e incluye una herramienta para control y optimizacin de cdigo fuente bajo Visual Basic .NET y Visual C#. http://www.compuware.com/products/devpartner/studio.htm

- Rational Purify, producto de IBM muy similar al anterior. Tiene versiones para Windows(Visual Studio .NET), Linux y Unix. al contrario que DevPartner Studio, Purify no instrumenta el cdigo fuente(slo Windows y Unix), haciendo posible la depuracin de programas sin cdigo fuente disponible. No necesita una mquina tan potente como DevPartner studio. http://www.rational.com/products/pqc/index.jsp

- Intel VTune, suite de optimizacin con versiones Windows(Visual Studio .NET) y Linux. Recoge multitud de datos acerca de la ejecucin de nuestros programas, y permite usarlo tambien de forma remota. http://www.intel.com/software/products/vtune/ 4.3 ANLISIS Y OPTIMIZACIN DE PARTES
Otra forma en que Powersim permite la comunicacin con otros programas es gracias a la gran flexibilidad que este tiene y es que los parmetros geomtricos y datos necesarios para el diseo de ejes pueden ser colocados en una hoja de clculo (tabla de Excel) con la cual se puede realizar una geometra tridimensional del eje (Switek et al., 2002). Esto conel fin de poder someterlo a un anlisis en el Mtodo de los Elementos Finitos (MEF) (Belegundu,1991; Oate,1992) y determinar si los esfuerzos que se generan debido a los momentos torsores, las cargas y condiciones a los que est sometido son las ideales para este diseo o si es necesario hacer una optimizacin de ste. Este diseo puede ser modificado directamente mediante la variacin de los prametros delimitados y contemplados en la tabla creada en Excel, modificaciones que el programa es capaz de reconocer para luego actualizar la geometra del eje, y la tabla referida ser la interfase de datos entre el programa Powersim y la geometra del eje parametrizado. El procedimiento a seguir para la optimizacin y anlisis de partes sera la siguiente: Una vez que se tienen todos los parmetros geomtricos y datos necesarios para el diseo del eje como (longitudes, dimetros, cueros y radios) se procede a elaborar la geometra tridimensional del eje en el programa de CAD Solid Works. Se realiza la tabla de diseo, es decir se introducen todos estos parmetros en una hoja de clculo para realizar los cambios en cualquier momento sin la necesidad de redibujar el eje. Se importa la geometra al programa de los elementos finitos y se introducen las propiedades de los elementos tipo slido, el material y los elementos finitos de tipo tetradricos con nodos centrales, esto para tener un manejo y distribucin ms precisa. Una vez que se tienen ingresados estos pa-rmetros, se realiza un enmallado automtico del eje como se muestra en la Figura 6.

Fig. 6: Enmallado automtico Despus de haber sometido al eje a un primer proceso de enmallado, se observ que era necesario disponer de una mayor cantidad de puntos de control sobre las zonas de influencia de los concentradores, es decir, en las entalladuras y canales chaveteros, con el propsito de tener una transicin gradual del enmallado entre las zonas de mayor y menor densidad. Con tal fin se decidi descomponer el modelo en partes para as tener un mejor control y precisin de las densidades de elementos y nodos. En base al criterio expuesto se propuso la divisin de la geometra en diferentes partes, en la figura 7 se muestran las partes referidas a los canales chaveteros y entalladuras en donde se aprecia el slido en forma de anillo que servir para tener un mayor control del enmallado de la regin.

Fig. 7: Descomposicin del modelo. Para elaborar el modelo se recurri al uso de la simetra para el eje y para cada anillo. Los dos canales chaveteros, estos quedaron inscritos en un cubo como se muestra en las figuras anteriores y dichas partes servirn para realizar el ensamble de un eje conteniendo las zonas consideradas crticas como se muestra en la Fig. 8.

Fig. 8: Ensamble del eje. Una vez que se tiene el modelo descompuesto en partes se procedi al enmallado de los slidos que requieren mayor densidad y homogeneidad, como chaveteros y anillos, con el fin de poder tener el mejor control posible sobre estos elementos, es decir controlar al mximo la densidad y distribucin de los elementos con el fin de disminuir los problemas que se puedan generar por falta de homogeneidad. El ltimo elemento geomtrico a enmallar es el cuerpo principal del slido del eje, aqu se deben de controlar principalmente los bordes que van a coincidir con los slidos correspondientes a los canales chaveteros y los anillos con el fin de garantizar una buena fusin y una adecuada transicin entre los respectivos nodos.

Fig. 9: Enmallado controlado.

El siguiente paso es establecer las condiciones de frontera, entindase por condiciones de borde a las restricciones de movimiento o restricciones de los grados de libertad que se aplican a ciertos puntos del eje. Es importante que las condiciones de frontera definidas simulen lo mejor posible las restricciones del elemento estudiado.

Fig. 10: Distribucin de esfuerzos Von Mises en eje y chumacera. Las condiciones de frontera del eje simulan el apoyo de los rodamientos y la fuerza opositora del engranaje a travs de la chaveta. Cabe recalcar que para la realizacin una correcta simulacin algunas fuerzas de reaccin deben ser simuladas mediante restricciones, puesto que el modelo debe ser estticamente definido. - En el caso estudiado se ha tenido que simular el efecto que ejercen los rodamientos sobre el eje, debido a que los mismos (rodamientos de contacto angular de una hilera de bolas) restringen el desplazamiento axial y los giros. Para simular la interaccin de los rodamientos sobre el eje se ha usado como condicin de frontera un anillo de restricciones referenciado a un sistema de eje coordenado cilndrico, cuyo eje z es coaxial al eje mismo, que solo permite desplazamientos tangenciales y de esta forma deja libre el giro axial. - La otra condicin de frontera definida es la referida a la reaccin presente en el cuero de transmisin. Para simular el efecto del torque del engranaje transmitido mediante la chaveta, se aplic una restriccin en una de las caras del canal cuero, la cual restringe el desplazamiento de los elementos de forma tangencial.

- El sistema de cargas definido fue de carcter esttico, estas fueron aplicadas a manera de una presin constante en una de las caras del cuero, se ha consider que toda la fuerza se transmite directamente sobre esa rea. Con todos los datos expuestos el eje se somete a anlisis, para este se ha utilizado la teora de falla de Von Mises debido a que el eje est sometido a esfuerzos combinados (esfuerzos normales y cortantes) y la teora del mximo esfuerzo cortante (Tresca), debido a que los esfuerzos son principalmente cortantes. Despus de haber sometido el eje a anlisis y comprobar los resultados obtenidos, se demuestra que los rangos de esfuerzos obtenidos por la simulacin estn dentro de los rangos admisibles y permiten afirmar que el modelo es racional y los resultados aceptables.

4.4 En que consiste el rediseo de procesos?


El rediseo de procesos o BPR (Business process reengineering) consiste en la revisin de los procesos crticos de la institucin y en el diseo e implementacin de propuestas de mejora. El principal criterio para identificar la criticidad de un proceso es el valor generado al usuario final. De esta forma, el rediseo mejorar el rendimiento actual de nuestros procesos administrativos en trminos de satisfaccin del cliente, reduccin de tiempos de atencin, automatizacin de procesos, minimizacin de fuentes de error, disponibilidad de la informacin y transparencia, reduccin de costos y mayor flexibilidad.

6. Cmo se implementa el rediseo de procesos?


Una vez identificados los procesos crticos se identifican los resultados deseados para estos procesos. Para esto se hace uso de la siguiente gua:

Ubicar clientes o usuarios: Por qu hacemos lo que hacemos?, Qu necesidades satisface? Reconocer la necesidad de cambiar: Por qu lo hacemos como lo hacemos?, Qu debera suceder para que el proceso funcione de manera ptima? Visualizacin del nuevo proceso: Delinear una imagen mental del resultado que se pretende alcanzar. Identificar las actividades crticas del proceso, aquellas que le generan valor.

Una forma complementaria de abordar el rediseo de procesos consiste en identificar un problema crtico, una oportunidad de cambio o una nueva manera de prestar un servicio que posea un gran impacto sobre la organizacin y nuestros usuarios.

7. Cmo afecta el ERP PeopleSoft al rediseo de procesos?


Adems de permitirnos incorporar las mejores prcticas en la gestin administrativa, la implementacin del ERP PeopleSoft nos permitir reducir la complejidad de nuestras operaciones, reduciendo tiempos de respuesta a partir de la automatizacin de las transacciones manuales, la estandarizacin de los procesos y la maximizacin de economas de escala.

La mayor parte del trabajo improductivo de una organizacin es debido a los lmites administrativos entre las unidades, verdaderas fronteras internas creadas dentro de la organizacin. En el da a da, se pretende liberar el tiempo que el trabajador dedica a coordinaciones, esperas, verificaciones, conciliaciones, controles, eliminando el trabajo que no agrega valor.

INTRODUCCION
Se denomina ingeniera inversa del software a la actividad que se ocupa de descubrir cmo funciona un programa, funcin o caracterstica de cuyo cdigo fuente no se dispone, hasta el punto de poder modificar ese cdigo. La ingeniera inversa se basa en quitar, remover, suspender uno o ms temas de proteccin de alguna aplicacin ya siendo comercial y otras. Muchos consideran esto como un arte. En este curso pienso ayudar a personas qun interesadas al respecto, y incluso a los mismos programadores. Se les ensear a no ser tan 'cuadrados' de mente pensando en intereses comerciales, se les ensear a crackear sus propios programas, e ir aumentando sus niveles de proteccin, en este primer curso aprenderemos algo mnimo en cuanto a reventar protecciones de programas, mas que nada, hablaremos de terico. Por hoy se aprender el uso de la ingeniera inversa bajo el sistema operativo en Windows 95 y/o 98. Empezaremos por cosas muy bsicas. Slo les pedir las siguientes cosas para que comienzen a crackear : - Un Computador -=(Mayor o igual a 16 Mb. de RAM, mayor de 486 a 33) - Un disco duro de 1 Gb. - UN CEREBRO - Instinto y perspicacia. - Las ganas. - Algo de conocimientos bsicos a medios (Como que es la RAM, programar, uso de Win95) - Si es posible, algo de conocimientos de ensamblador, si es que no es as, los ayudar en lo que pueda. Yo creo que tienes los dos primero tems, ya que ahora solo salen pentiums III y pocaso los II... Al mismo tiempo aprenderemos a crackear a conocer los aspectos de una PC, cmo funciona, qu hace, y como es que se ejecutan las cosas. Creo que debo explicarles otras cosas tambin pero las aprenderemos en el transcurso de estos laaargoos captulos.

Das könnte Ihnen auch gefallen