Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Debates
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Despues de toda esta explicacion de los maestros, me gustaria dar una opinion autodidacta.
No todo esta inventado.
No creo que exista la funcion perfecta o ideal para todos los programas (Standard).
De acerdo a esto:
Cita:
¿Cuál sería la relación Modularidad/Complejidad
Para mi dependeria de la experiencia y del proyecto en si, no creo que se pueda generalizar.
Estoy de acuerdo con seoane en partir el problema para entenderlo mejor, pero mi poca experiencia dice que si no conoces la base no puedes partir nada, entonces partiriamos del conocimiento.
Para mi sencillamente se reduciria a lo dicho, Experiencia y deficinicion del proyecto.
Saludos
Responder Con Cita
  #2  
Antiguo 23-03-2007
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 21
xander Va por buen camino
A como yo veo el asunto, esta muy bien ser organizado y partir los problemas en pedazos que puedan ser reutilizables.

Un problema es el que comenta Mamcx, todo crece en cuanto lo partes... yo veo librerias como la de "interfazGH" de Al Gonzalez y me parece de lo mejor... pequeñas funciones bien separadas en contexto y todo...

Donde yo veo el problema en tener tantas cosas tan chiquitas es que luego no te acuerdas que es lo que tienes y que es lo que no... y si te acuerdas que ya lo tienes, ahora ¿donde quedó al final?... es como tener una caja de herramientas como el dice pero tener cientos de ellas en la caja... cuando tienes muchas encontrar una en específico es bien dificil, y luego a lo mejor resulta que si tenías hecha la funcion pero le pusiste un nombre que en el momento no recordaste y la pasaste por alto y la volviste a hacer... tal como le paso a Lepe con la funcion esa del BDS2006...

La cuestión tambien no es solo partir sino como es que se documenta o se le hace para encontrar lo que se ocupa rápidamente. tampoco es la idea de leerse los encabezados de todas las funciones de la unidad para encontrar la que busco, ahi pierdo el tiempo que pude haberme ahorrado.
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #3  
Antiguo 24-03-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Bueno... esto lo que yo entiendo...

Cita:
Empezado por PabloTech
Cuanto mayor sea la complejidad del problema, mayor será la modularidad aplicada. De tal forma, que el cociente entre ambas, tienda a uno (1).
Yo empleo medidas como esas... me gustan los números y veo de que manera me pueden ayudar.

Cita:
Empezado por roman
Antes que nada, aclaro que yo en ningún momento me enojé, ¿por qué había de hacerlo? Solo dije que no entendía la pregunta y expresé mi opinión.
Mi intención es a futuro: que no te enojaras... a futuro.
Vale. Entendido... es que ya me ha pasado en otras ocasiones en que nadie me termina entendiendo y puede que en alguna de éstas le "salten los tapones" (espero que nunca suceda) por hacerme sentar cabeza.

Cita:
Empezado por roman
Yo opiné que eran dos cosas distintas, nunca dije que no estuvieran relacionadas.
Entendido. Vale. Mejor leo bien las cosas..

Cita:
Empezado por roman
¿Tu duda va en ese sentido?
Casi: a los efectos inmediatos de esto. Tu bien lo resumes: "sólo algo que debe revisarse y evitarse".

Cita:
Empezado por egostar
yo estoy convencido de que la modularización va de la mano con la experiencia y de las nuevas funciones que te permiten reducir código hasta lograr la optimización.
Pues si. El arte de detectar la modularización y optimización se desarrolla con la experiencia.

Cita:
Empezado por AzidRain
Código Delphi [-]
  Procedure TMiVentana.EjecutaTarea;
Begin
  AbreTablas;
  PreparaGrillas;
  If ShowModal=mrOK Then
    GuardaDatos;
  CierraTablas;
end;
Si. Se entiende... ahora ¿Cuál es la ganancia que obtuviste?O mejor ¿Cual es el costo asignado para llegar a eso? O ¿La relación entre entendimiento/costo? Ojo... este costo no es simplemente el valor subjetivo del esfuerzo... lleva implícito el valor monetario. Que de última es el precio de nuestro esfuerzo.

Cita:
Empezado por AzidRain
Claro que tambien depende del estilo o "convenciones" que usemos en el código ya que si nombramos las funciones con nombres que no vienen al caso pues se pierde la utilidad de la atomización y se complica la cosa. En mis inicios en Pascal acostumbraba usar sintaxis en inglés para casi todo, posteriormente empece a revolver inglés con español y ahora solo uso español. A veces ponia nombres como "SeekFileNombres" o "BuscarFiles"...ahora me dan risa.
Lo de sintaxis en inglés, o en castellano, lo dejo a gusto de cada uno. Aunque yo me he acostumbrado a escribir en inglés (excepto al momento de ofrecerle resultados visuales al usuario: labels, edits, menues, etc).

Cita:
Empezado por PabloTech
¿Todo este debate es por los iniciados? o ¿me perdí de algo?
No pienses que le hecho culpa a los iniciados. Sólo me he limitado a exponer un ejemplo que es típico, usual, común... y por supuesto: mio.

Cita:
Empezado por PabloTech
Es parte del aprendizaje. Y cuanto más nos suceda, más conocimiento tendremos y más experiencia.
Es cierto... estoy de acuerdo.

Cita:
Empezado por PabloTech
Conviene llegar hasta el punto en que el problema sea legible. Con pocas líneas. Si el problema se torna engorroso hay que particionarlo en módulos que a su vez sean legibles.
Ya nos vamos acercando a lo que quiero tratar de discutir... ¿A que defines legible?¿Le podrías asginar un valor?

Cita:
Empezado por PabloTech
El debate si tiene sentido... Gracias Delphius
Gracias, uno más que considera que esto tiene sentido...

Cita:
Empezado por mamx
Deberia haber una forma obvia - y solo una - de resolver el problema
¡Eso es lo lindo de la ingeniería del software!Es una espada de doble filo... y hay que aprender a usarla. Tiene cosas buenas.. y malas...

Cita:
Empezado por mamx
- Si esta en el lenguaje o el framework basico, OK. A veces intento de escribir lineas mas largas - usando solo el lenguaje - que crear nuevas funciones, pero como alguien mas arriba, tambien caigo en tentaciones, como armar mi propio IIF
(...)
A tener en cuenta... por lo menos para mi.

[Neftali]
El problema para mí, es que no se cómo expresar eso en palabras.
Creo que más o menos todos tenemos en la cabeza las mismas ideas sobre Modularización, pero ¿cómo cuantificarlo?
[/Neftali]
¡Bingo!

Si bien todos lo han dicho... y yo también... no hay una única manera de responder. Por eso inicié este debate: yo quiero saber ¡hasta que punto le podrían asignar un valor!

Cita:
Empezado por Caral
Para mi dependeria de la experiencia y del proyecto en si, no creo que se pueda generalizar.
Sabía que tu podrías. Sabía que tu tendrías algo que aportar.

Se puede generalizar... hasta cierto punto. Hay técnicas de inferencia para determinarlo... y como ya se ha dicho... depende de la experiencia.
Veamos, una frase que decimos mucho:
Si se sabe que un producto realizado de una manera es similar a otro... pues... lo resolvemos de la misma manera.

¿Se me entiende a lo que quiero llegar?
Creo que este thead es el má largo que escribí... pero sigamos.
No se de que manera lo harán ustedes, yo por mi parte voy a compartir lo que mi pequeño, novato, e infantil cerebro me ha permitido elaborar:

Por cada función/procedimiento/método:
1. Calculo su complejidad ciclométrica
2. Calculo su complejidad computacional
3. Obtengo su ancho de banda: cantidad de parámetros de entrada y salida
4. Obtengo su ancho de operatividad: cantidad de variables y constantes
5. Obtengo las siguientes métricas:
5.1. Utilización de Banda: relación de banda de entrada respecto al ancho total.
5.2. Utilización procedimental: relación de uso de memoria (1- (Variables/Ancho de operatividad)). Cuanto más alto sea el valor se penaliza. En lo posible, tratar de que sea bajo.
5.3. Razonabilidad operacional: determina la relación de uso de memoria respecto al ancho de banda.

Ro = Ancho de Banda/Ancho de operatividad

Este valor lo utilizo para diagnosticar la cantidad de variables que podrían estar en exceso, o que podrían ser eliminadas. Claro está, que al final es un valor subjetivo... eliminar alguna variable intermedia tal vez dificulte el entendimiento del código. Y en ocasiones no se puede eliminar la/s variable/s.

6. Calculo la productividad:
6.1. Productividad de Banda: que determina el rendimiento de los parámetros con respecto a la complejidad ciclométrica.
6.2. Productividad Operacional: que determina el rendimiento de la memoria interna respecto a la complejidad ciclométrica.
6.3. Productividad General: el promedio entre las dos anteriores.

También se puede calcular la productividad en base a las líneas de código.

Cone esto trato de averiguar que "tanto se usa" los parámetros y las variables durante la ejecución del algoritmo. Trato en lo posible de que tener pocos parámetros y menos uso de memoria con el menor código posible.

7. analizo el diagrama de flujo de la función y determino los casos de prueba. Desarrollo los casos de prueba y determino los posibles errores y defectos que tiene la unidad.
8. Con estos datos, y la cantidad de líneas de código obtengo otras métricas.

9. Cuando finalizo con todas las funciones, saco un valor estimativo (media ponderada) para determinar el valor asociado al módulo. A nivel de módulos calculo un valor de la modularidad prediciendo el valor de cohesión. Una estimación que aplico es determinar la utilización que se da a los parámetros y variables que se "pasan" entre módulos. Aquel tipo que predomine... se le asigno al modulo a estos valores lo pondero entre todos los módulos.
Cuanto más bajo sea... es preferible.

También calculo la razón entre el ancho y largo de la carta de estructura. En lo posible trato de que el valor esté en el medio.

Yo me impongo que mi límite de esfuerzo sea del 80%, de modo que el otro 20% se lo dedicaré al posterior mantenimiento.

Con todos estos valores... los promedio (media ponderada y con pesos obtenidos de otros resultados anteriores) y lo normalizo con respecto al tiempo invertido. Por ejemplo si para toda la actividad me tomo 30 días y el valor ponderado es de 12, tengo que: 80% de 30 = 24. Por tanto: 12/24 = 0,5 o 50%. Este fué mi esfuerzo... podría haber mejorado.

A todos estos valores los voy registrando y haciendo cálculos estadísticos de tendencia y reajusto los pesos de las operaciones... y el ciclo comienza de nuevo.
Calculo otras métricas pero no viene al caso.

Si quieren saber quien tiene la culpa de que la locura por estos números: Roger S. Pressman, Yourdon, Craig Larman, y otros loquitos que andan sueltos. Y claro... yo... por hacerles caso.

Se que puede ser un poco extremo... no se... a veces me asusto a mi mismo por la obseción de saber que tan bien hago mi trabajo... Creo que me hace falta unas buenas vacaciones... bien lejos de una máquina.

Saludos, disculpen por el semejante rollo que me he escrito. Escucho comentarios, incluídos los del tipo: "estas loco man... "
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 24-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
[Lepero] Pa'mi que le dah muchah uuertah ar coco, en er tiempo de analizá to ezo, ya tendríah otro pograma echo[/Lepero]

__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 24-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Hola delphius, si que te aventaste un buen rollo y si, puedes estar tranquilo "si estas loco" .

No, ya en serio.

Despues de leer tu exposición, que cabe señalar es interesante, lo que entiendo es que con esas mediciones estas tratando de encontrar el valor de la productividad en base a la simplificación de código, es decir, encontrar la relación esfuerzo/productividad y llegar a la optimizacion de procesos de producción.

Pienso que estas haciendo lo que se llama ciclo de vida del software, todos en este foro lo hemos hecho de una u otra forma, en pequeña o en gran escala. Algunos trabajando en empresas fuertes, otros en pequeñas y otros como yo de forma independiente.

Todos hemos llevado a cabo los pasos de este famoso ciclo de alguna forma
  1. Recoleccion de necesidades
  2. Analisis
  3. Diseño
  4. Implementación
  5. Pruebas
  6. Validación
  7. Mantenimiento
  8. Mejoramiento
Hasta aquí todo bien, ese es el ideal de cualquier desarrollador que se precie de ser digamos serio.

Ahora, que pasa en la vida real, aqui solo puedo hablar de mi poca experiencia en el desarrollo de sistemas. No se si tú ya has desarrollado algún sistema vendible, no quiero entrar en el terreno de privativo, digamos solo vendible.

En este momento estoy desarrollando un sistema hotelero, llevo 8 meses o un poco mas y ahora ya tengo una versión digamos BETA, el proceso de desarrollo lo he seguido de acuerdo al ciclo de vida que te menciono.

Sesiones de trabajo con la empresa que me solicitó el producto para ver factibilidad y segmento de mercado al cual se desea introducir el mismo.
Definición de las caracteristicas y alcances del producto
Diseño y desarrollo del producto
Pruebas del producto en su fase BETA

Hasta aquí he llegado, ahora estamos en la etapa de implementación donde hemos negociado con un "usuario final" la instalación del producto (GRATIS) bajo el esquema de retroalimentación con el fin de depurar y optimizar el producto.

Si entiendo bien tu conceptualización, hasta aqui podría comenzar a medir la relación esfuerzo/productividad, y que es lo que me va a dar esa medición, pues yo creo que ponerle precio a mi producto, o no?

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 24-03-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Egostar, tengo bien en claro lo del ciclo de vida, USDP, Espiral, Prototipado, etc...
A mi me gusta muchísimo la ingeniería de software. A pesar de que en el examen de esa materia fue bajo (7 por si quieren saber) a comparación con el resto... pero no me quejo.... me puse nervioso.

Trato en todo lo posible de hacer un buen software. Actualmente estoy trabajando sobre mi tesis. Y esto para mi es absoulta seriedad en lo que hago por varios motivos:
1. Tengo un sistema complejo.
2. Según me han notificado las principales autoridades de la facultad de Ingeniería e Informática de la universidad, hasta el momento es el único proyecto en el norte de mi pais que está tratando del tema(¡vaya presión!)
3. Tengo la intensión de venderlo (sin código fuente). Si... a más de uno tal vez no le guste la idea... pero de algo hay que vivir.
4. Es algo que vengo teniendo ganas de aplicar. Me he inspirado en un proyecto que vi en Discovery (creería que era mexicano) y fue llevado en Delphi.
5. Se trata de algo supuestamente "novedoso" en mi pais.

El máximo objetivo es aprender y compartir lo que yo entiendo sobre esto de la ingeniería del software. No se en que medida habrá gente que aplica estos conceptos pero para mi es muy importante.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 26-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Ahhh, que es para tu tesis... Ahora comprendo el por qué de tanta teoría [...] Pues quien sabe, quizás algún día, Delphi integre una opción en el menú Project -> "Detectar esfuerzo" gracias a tí.

No sería tan raro, Borland ya adoptó el VirtualTreeView por ser gratutio con fuentes .

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 27-03-2007
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Pues eso es lo que hace starteam y las demas herramientas de ciclo de vida...

Aunque una vez las probe,no me convencen (no me refiero a la herramienta,sino a la utilidad real de medir esas cosas....)
__________________
El malabarista.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Programas que calculan la complejidad operacional Delphius Varios 5 19-01-2007 10:34:34
cual seria el componente correcto? DM2005 Varios 0 04-07-2006 21:55:39
Cual seria lo ideal? Coco_jac Gráficos 1 10-06-2005 01:38:42
Cual seria el equivalente de AllTrim (clipper) Alfredo OOP 2 04-03-2005 15:58:44
cual seria la mas adecuado base de datos... ronimaxh Firebird e Interbase 8 23-04-2004 17:47:15


La franja horaria es GMT +2. Ahora son las 23:55:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi