martes, 26 de julio de 2011

5. Explique con ejemplos que son las métricas de diseño de software.

Las métricas son un buen medio para entender, monitorizar, controlar, predecir y probar el desarrollo software y los proyectos de mantenimiento.

En general, la medición persigue tres objetivos fundamentales:

a)    Ayudarnos a entender qué ocurre durante el desarrollo y el mantenimiento
b)    Permitirnos controlar qué es lo que ocurre en nuestros proyectos
c)    Poder mejorar nuestros procesos y nuestros productos.

Las métricas del software es un término que se asigna a un amplio rango de actividades diversas, por ejemplo:

·         Medidas y modelos de estimación de coste y esfuerzo.
·         Modelos y medidas de productividad
·         Aseguramiento y control de calidad.
·         Recogida de datos.
·         Medidas y modelos de calidad.
·         Modelos de fiabilidad.
·         Modelos y evaluación de ejecució.
·         Complejidad computacional o algorítmica.

M2 Resource Standard Metrics

M2 Resource Standard Metrics, es una herramienta que analiza la calidad del código fuente y sus métricas. RSM proporciona un método estándar para el análisis de C, ANSI, C++, C# y código fuente Java. Ofrece a los usuarios de la herramienta la posibilidad de estandarizar la medición de la calidad del código fuente y el análisis de métricas a través de su organización. RSM proporciona métodos fáciles, rápidos y flexibles para ayudar en la medición de la calidad del código y el cálculo de métricas.

RSM puede funcionar como herramienta independiente, pero también puede estar integradaen varios entornos de desarrollo como son Eclipse, Visual Studio 6, Visual Studio .NET, jBuilder, UltraEdit/Studio y Return. Puesto que se analiza la versión independiente de RSM, no se especifica como sería la instalación y manejo de la herramienta en los diferentes IDE’s en los que puede funcionar. La información necesaria para proceder a la integración de la herramienta en los diferentes entornos mencionados anteriormente se podrá encontrar en la dirección http://msquaredtechnologies.com/m2rsm/docs/ide_menu.htm.

Como ya se ha dicho en la presentación de la herramienta, RSM analiza código fuente escrito en C, C++, C# y Java. No admite la comparación de distintas versiones de código ya que no es posible realizar un análisis comparativo entre dos o más versiones de un mismo trabajo. En cuanto a su representación interna, no se ha encontrado información sobre la herramienta que especifique cómo se lleva a cabo, aunque según la estructura de la herramienta y su modo de trabajar es posible pensar que se trate de un object model.

Ejemplo

 Report Banner - Edit rsm.cfg File

             Resource Standard Metrics™ for C, C++, C# and Java
                   Version 7.75 - mSquaredTechnologies.com

  License Type: Shareware Evaluation License
  Licensed To : Shareware End User - Distribute Freely
  License No. : SW1380                          License Date: Dec 05, 1998
  Build Date  : Sep  2 2009                         Run Date: Jul 19, 2011
  ©1996-2009 M Squared Technologies LLC™ 
  ________________________________________________________________________

  License File: C:\Archivos de programa\MSquared\M2 RSM\rsm.lic
  Config. File: C:\Archivos de programa\MSquared\M2 RSM\rsm.cfg
  Command Line: -H -OC:\Documents and Settings\fprado\M2 RSM Wizard\output
                \output.htm -STotal All Metrics -Ta -Tl -TN -FC:\Documents
                 and Settings\fprado\M2 RSM Wizard\input\rsm_file_list.lst
  UDQN File   : C:\Archivos de programa\MSquared\M2 RSM\rsm_udqn.cfg

                              Total All Metrics


  ------------------------------------------------------------------------

                     ~~ Total Metrics For 20 Files ~~

  ------------------------------------------------------------------------

                      ~~ Project Functional Metrics ~~

  Total: Functions 
  LOC 2516     eLOC 2159     lLOC 1584     InCmp 483      CycloCmp     401

  Function Points         FP(LOC) 47.5    FP(eLOC) 40.7   FP(lLOC)    29.9

  ------------------------------------------------------------------------

                      ~~ Project Functional Analysis ~~

  Total Functions .......:        249  Total Physical Lines ..:       3301
  Total LOC .............:       2516  Total Function Pts LOC :       47.5
  Total eLOC ............:       2159  Total Function Pts eLOC:       40.7
  Total lLOC.............:       1584  Total Function Pts lLOC:       29.9
  Total Cyclomatic Comp. :        401  Total Interface Comp. .:        483
  Total Parameters ......:        163  Total Return Points ...:        320
  Total Comment Lines ...:       1335  Total Blank Lines .....:        173
         ------     -----     -----     ------     ------     -----      
  Avg Physical Lines ....:      13.26
  Avg LOC ...............:      10.10  Avg eLOC ..............:       8.67
  Avg lLOC ..............:       6.36  Avg Cyclomatic Comp. ..:       1.61
  Avg Interface Comp. ...:       1.94  Avg Parameters ........:       0.65
  Avg Return Points .....:       1.29  Avg Comment Lines .....:       5.36
         ------     -----     -----     ------     ------     -----      
  Max LOC ...............:        170
  Max eLOC ..............:        159  Max lLOC ..............:        139
  Max Cyclomatic Comp. ..:          8  Max Interface Comp. ...:          7
  Max Parameters ........:          6  Max Return Points .....:          5
  Max Comment Lines .....:         19  Max Total Lines .......:        211
         ------     -----     -----     ------     ------     -----      
  Min LOC ...............:          2
  Min eLOC ..............:          1  Min lLOC ..............:          0
  Min Cyclomatic Comp. ..:          1  Min Interface Comp. ...:          1
  Min Parameters ........:          0  Min Return Points .....:          1
  Min Comment Lines .....:          0  Min Total Lines .......:          3

  ------------------------------------------------------------------------

                     ~~ Project Class/Struct Metrics ~~
                Parent LOC Metrics Include Nested LOC Metrics

  Total: All Parent Classes/Structs
  Attributes   Publ 90       Prot 0        Private 277      Total      367
  Methods      Publ 379      Prot 0        Private 114      Total      493
  Complexity   Param 163     Return 320    Cyclo Vg 401     Total      884
  LOC 3913     eLOC 3452     lLOC 2351     Comment 1561     Lines     5674

  ------------------------------------------------------------------------

                     ~~ Project Class/Struct Analysis ~~

  Total Classes/Structs .:         14
  Total Nested Classes ..:          2  Total Methods .........:        493
  Total Public Methods ..:        379  Total Public Attributes:         90
  Total Protected Methods:          0  Total Protected Attrib.:          0
  Total Private Methods .:        114  Total Private Attrib. .:        277
  Total Physical Lines ..:       5674  Total LOC .............:       3913
  Total eLOC ............:       3452  Total lLOC ............:       2351
  Total Cyclomatic Comp. :        401  Total Interface Comp. .:        483
  Total Parameters ......:        163  Total Return Points ...:        320
  Total Comment Lines ...:       1561  Total Blank Lines .....:        439
         ------     -----     -----     ------     ------     -----      
  Avg Physical Lines ....:     405.29  Avg Methods ...........:      35.21
  Avg Public Methods ....:      27.07  Avg Public Attributes .:       6.43
  Avg Protected Methods .:       0.00  Avg Protected Attrib. .:       0.00
  Avg Private Methods ...:       8.14  Avg Private Attributes :      19.79
  Avg LOC ...............:     279.50  Avg eLOC ..............:     246.57
  Avg lLOC ..............:     167.93  Avg Cyclomatic Comp. ..:      28.64
  Avg Interface Comp. ...:      34.50  Avg Parameters ........:      11.64
  Avg Return Points .....:      22.86  Avg Comment Lines .....:     111.50
         ------     -----     -----     ------     ------     -----      
  Max Physical Lines ....:       1260  Max Methods ...........:        162
  Max Public Methods ....:        122  Max Public Attributes .:         36
  Max Protected Methods .:          0  Max Protected Attrib. .:          0
  Max Private Methods ...:         40  Max Private Attributes :         84
  Max LOC ...............:        838  Max eLOC ..............:        752
  Max lLOC ..............:        500  Max Cyclomatic Comp. ..:        118
  Max Interface Comp. ...:        190  Max Parameters ........:         46
  Max Return Points .....:        144  Max Comment Lines .....:        398
         ------     -----     -----     ------     ------     -----      
  Min Physical Lines ....:          2  Min Methods ...........:          0
  Min Public Methods ....:          0  Min Public Attributes .:          0
  Min Protected Methods .:          0  Min Protected Attrib. .:          0
  Min Private Methods ...:          0  Min Private Attributes :          0
  Min LOC ...............:          2  Min eLOC ..............:          1
  Min lLOC ..............:          0  Min Cyclomatic Comp. ..:          0
  Min Interface Comp. ...:          0  Min Parameters ........:          0
  Min Return Points .....:          0  Min Comment Lines .....:          4

  ------------------------------------------------------------------------

                        ~~ Class Inheritance Tree ~~

  D - Depth where base class depth = 0
  C - Number of direct child classes
  P - Number of direct parents, Multiple Inheritance > 1

  + PlainDocument [D0.C1]
    - sgpoe.limitNumbers [
D1.C0.P1]

  + javax.swing.JFrame [D0.C1]
    - sgpoe.frmMain [
D1.C0.P1]

  + javax.swing.JInternalFrame [D0.C3]
    - sgpoe.frmCargos [
D1.C0.P1]
    - sgpoe.frmConfigurar [
D1.C0.P1]
    - sgpoe.frmDepartamentos [
D1.C0.P1]

  + sgpoe.errors [D0.C0]

  + sgpoe.forms [D0.C0]

  + sgpoe.jado [D0.C0]

  + sgpoe.messBox [D0.C0]

  + sgpoe.tables [D0.C0]

  + sgpoe.vars [D0.C0]

  + sgpoe.vars.defCargos [D0.C0]

  + sgpoe.vars.defDeptos [D0.C0]

  + sgpoe.where [D0.C0]

  Total Classes        : 17
  Total Base Classes   : 12
  Total Derived Classes: 5
  Derived/Based Ratio  : 0.42 

  Maximum Depth of Inheritance: 1
  Average Depth of Inheritance: 0.29 

  Maximum Number of Direct Child Classes: 3
  Average Number of Direct Child Classes: 0.29 

  ------------------------------------------------------------------------

                   ~~ Project Namespace/Package Metrics ~~

  Total: All Namespaces/Packages
  Total Classses 14          Total Functions 493     Avg Func/Class  35.21
  Attributes   Publ 90       Prot 0        Private 277      Total      367
  Methods      Publ 379      Prot 0        Private 114      Total      493
  Complexity   Param 163     Return 320    Cyclo Vg 401     Total      884
  LOC 3913     eLOC 3452     lLOC 2351     Comment 1561     Lines     5674

  ------------------------------------------------------------------------

                  ~~ Project Namespace/Package Analysis ~~

  Total Namespace/Package:          1
  Total Classes/Structs .:         14  Total Methods .........:        493
  Total Public Methods ..:        379  Total Public Attributes:         90
  Total Protected Methods:          0  Total Protected Attrib.:          0
  Total Private Methods .:        114  Total Private Attrib. .:        277
  Total Physical Lines ..:       5674  Total LOC .............:       3913
  Total eLOC ............:       3452  Total lLOC ............:       2351
  Total Cyclomatic Comp. :        401  Total Interface Comp. .:        483
  Total Parameters ......:        163  Total Return Points ...:        320
  Total Comment Lines ...:       1561  Total Blank Lines .....:        439
         ------     -----     -----     ------     ------     -----      
  Avg Classes/Structs ...:      14.00  Avg Methods ...........:     493.00
  Avg Public Methods ....:     379.00  Avg Public Attributes .:      90.00
  Avg Protected Methods .:       0.00  Avg Protected Attrib. .:       0.00
  Avg Private Methods ...:     114.00  Avg Private Attributes :     277.00
  Avg LOC ...............:    3913.00  Avg eLOC ..............:    3452.00
  Avg lLOC ..............:    2351.00  Avg Cyclomatic Comp. ..:     401.00
  Avg Interface Comp. ...:     483.00  Avg Parameters ........:     163.00
  Avg Return Points .....:     320.00  Avg Comment Lines .....:    1561.00
         ------     -----     -----     ------     ------     -----      
  Max Classes/Struct ....:         14  Max Methods ...........:        493
  Max Public Methods ....:        379  Max Public Attributes .:         90
  Max Protected Methods .:          0  Max Protected Attrib. .:          0
  Max Private Methods ...:        114  Max Private Attributes :        277
  Max LOC ...............:       3913  Max eLOC ..............:       3452
  Max lLOC ..............:       2351  Max Cyclomatic Comp. ..:        401
  Max Interface Comp. ...:        483  Max Parameters ........:        163
  Max Return Points .....:        320  Max Comment Lines .....:       1561
         ------     -----     -----     ------     ------     -----      
  Min Classes/Structs ...:         14  Min Methods ...........:        493
  Min Public Methods ....:        379  Min Public Attributes .:         90
  Min Protected Methods .:          0  Min Protected Attrib. .:          0
  Min Private Methods ...:        114  Min Private Attributes :        277
  Min LOC ...............:       3913  Min eLOC ..............:       3452
  Min lLOC ..............:       2351  Min Cyclomatic Comp. ..:        401
  Min Interface Comp. ...:        483  Min Parameters ........:        163
  Min Return Points .....:        320  Min Comment Lines .....:       1561

  ------------------------------------------------------------------------

                        ~~ Project Quality Profile ~~

  Type  Count Percent  Quality Notice
  ________________________________________________________________________

  1       458   41.86  Physical line length > 80 characters
  13       12    1.10  "switch" statement does not have a "default"
  14        4    0.37  "case" conditions do not equal "break"
  17        4    0.37  Function comment content less than 10.0%
  22       60    5.48  if, else, for or while not bound by scope
  27       37    3.38  Number of function return points > 1
  35       94    8.59  Class specification contains public data
  38       46    4.20  Exception Handling "try"- "catch" has been identified
  46      132   12.07  Function/Class Blank Line content less < 10.0%
  47        8    0.73  File Blank Line content < 10.0%
  48        3    0.27  Function lLOC <= 0, non-operational function
  49      116   10.60  Function appears to have null or blank parameters
  50       19    1.74  Variable assignment to a literal number
  51       79    7.22  No comment preceding a function block
  121      22    2.01  class name not proper cased
  ________________________________________________________________________

         1094  100.00  Total Quality Notices

                        ~~ Quality Notice Density ~~

  Basis: 1000 (K)

  Quality Notices/K LOC   =      275.8 ( 27.58%)
  Quality Notices/K eLOC  =      312.1 ( 31.21%)
  Quality Notices/K lLOC  =      455.1 ( 45.51%)

  ------------------------------------------------------------------------

                        ~~ Total Language Profile ~~

  Language   LOC %    eLOC %    lLOC %    Comments %   Blanks %    Lines %
  *.java     100.0     100.0     100.0         100.0      100.0      100.0

  ------------------------------------------------------------------------

                           ~~ Language Summary ~~

  Java Source File *.jav*
  LOC 3966     eLOC 3505     lLOC 2404     Comment 1681     Lines     5990
  Average per File, metric/20 files
  LOC 198      eLOC 175      lLOC 120      Comment 84       Lines      299
  ------------------------------------------------------------------------

                         ~~ Total Project Summary ~~

  LOC 3966     eLOC 3505     lLOC 2404     Comment 1681     Lines     5990
  Average per File, metric/20 files
  LOC 198      eLOC 175      lLOC 120      Comment 84       Lines      299

  ------------------------------------------------------------------------

                             ~~ File Summary ~~

  C Source Files *.c ....:          0  C/C++ Include Files *.h:          0
  C++ Source Files *.c* .:          0  C++ Include Files *.h* :          0
  C# Source Files *.cs ..:          0  Java Source File *.jav*:         20
  Other Source Files ....:          0
  Total File Count ......:         20


          Shareware evaluation licenses process only 20 files.
          Paid licenses enable processing for an unlimited number of files.

  ________________________________________________________________________

      Report Banner - Edit rsm.cfg File

7. Explique ejemplificando los estándares de calidad en el desarrollo de software.

Cuando se habla de calidad del software se hace referencia la conjunto de cualidades que determinan su utilidad. Es el grado en que un software cumple con los requisitos especificados. (eficiencia, flexibilidad, corrección, mantenimiento, seguridad e integridad.)

La Calidad del software es medible y varia según el tipo de sistema y de programa, por ejemplo: no es lo mismo un software para control de viajes especiales el cual debe ser confiable a un nivel de cero errores, que un software elaborado para la implementación de un sistema de calidad (investigación).

Esta calidad puede ser inspeccionada al finalizar el producto, pero normalmente es mas costoso que realizarlo durante las diferentes etapas del ciclo de vida de producción del
producto.

Mostramos como ejemplo un modelo de calidad en el desarrollo del software basaso en ISO 9000

6. Explique ejemplificando las técnicas de reingeniería e Ingeniería de reverso.

Reingeniería del software se puede definir como: “modificación de un producto software, o de ciertos componentes, usando para el análisis del sistema existente técnicas de Ingeniería Inversa y, para la etapa de reconstrucción, herramientas de Ingeniería Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilización, comprensión o evaluación.”

Entre la tecnicas de Reingenieria tenemos:

Reestructuracion de Datos: Esto es reversar el modelo fisico al modelo logico para obtener el modelo de E-R de la base de datos, recuperando el diccionario de datos, atributos, entidades, dominios, cardinalidad etc, la mayoria de las herramientas CASE del mercado cumplen con esta funcion.

Reestructuracion de Codigo: Llevar a cabo esta actividad requiere analizar el código fuente empleando una herramienta de reestructuración, de no tener el codigo fuente disponible puede aplicarse ingenieria inversa sobre el compilado para obtener el codigo fuente original siempre y cuando la licencia del software lo permita, inmediatamente se indican las violaciones de las estructuras de programación estructurada u orientada a objetos, y entonces se reestructura el código (esto se puede hacer automáticamente). El código reestructurado resultante se revisa y se comprueba para asegurar que no se hayan introducido anomalías. Se actualiza la documentación interna del código.

8. Explique ejemplificando las herramientas case.

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el coste de las mismas en términos de tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costes, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras.
Sistema de software que intenta proporcionar ayuda automatizada a las actividades del proceso de software. Los sistemas CASE a menudo se utilizan como apoyo al método.
Objetivos
1.    Mejorar la productividad en el desarrollo y mantenimiento del software.
2.    Aumentar la calidad del software.
3.    Reducir el tiempo y coste de desarrollo y mantenimiento de los sistemas informáticos.
4.    Mejorar la planificación de un proyecto
5.    Aumentar la biblioteca de conocimiento informático de una empresa ayudando a la búsqueda de soluciones para los requisitos.
6.    Automatizar el desarrollo del software, la documentación, la generación de código, las pruebas de errores y la gestión del proyecto.
7.    Ayuda a la reutilización del software, portabilidad y estandarización de la documentación
8.    Gestión global en todas las fases de desarrollo de software con una misma herramienta.
9.    Facilitar el uso de las distintas metodologías propias de la ingeniería del software.

Clasificacion

Aunque no es fácil y no existe una forma única de clasificarlas, las herramientas CASE se pueden clasificar teniendo en cuenta los siguientes parámetros:

1.    Las plataformas que soportan.
2.    Las fases del ciclo de vida del desarrollo de sistemas que cubren.
3.    La arquitectura de las aplicaciones que producen.
4.    Su funcionalidad.

La siguiente clasificación es la más habitual basada en las fases del ciclo de desarrollo que cubren:

·         Upper CASE (U-CASE), herramientas que ayudan en las fases de planificación, análisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas UML.
·         Middle CASE (M-CASE), herramientas para automatizar tareas en el análisis y diseño de la aplicación.
·         Lower CASE (L-CASE), herramientas que semi-automatizan la generación de código, crean programas de detección de errores, soportan la depuración de programas y pruebas.

Además automatizan la documentación completa de la aplicación. Aquí pueden incluirse las herramientas de Desarrollo rápido de aplicaciones.

Existen otros nombres que se le dan a este tipo de herramientas, y que no es una clasificación excluyente entre sí, ni con la anterior:

·         Integrated CASE (I-CASE), herramientas que engloban todo el proceso de desarrollo software, desde análisis hasta implementación.
·         MetaCASE, herramientas que permiten la definición de nuestra propia técnica de modelado, los elementos permitidos del metamodelo generado se guardan en un repositorio y pueden ser usados por otros analistas, es decir, es como si definiéramos nuestro propio UML, con nuestros elementos, restricciones y relaciones posibles.
·         CAST (Computer-Aided Software Testing), herramientas de soporte a la prueba de software.
·         IPSE (Integrated Programming Support Environment), herramientas que soportan todo el ciclo de vida, incluyen componentes para la gestión de proyectos y gestión de la configuración.

Por funcionalidad podríamos diferenciar algunas como:

·         Herramientas de generación semiautomática de código.
·         Editores UML.
·         Herramientas de Refactorización de código.
·         Herramientas de mantenimiento como los sistemas de control de versiones·

Ejemplos:



lunes, 25 de julio de 2011

Unidad Curricular: INGENIERÍA DEL SOFTWARE II Módulo: FUNDAMENTOS DEL DISEÑO DE SOFTWARE

1.    Explique con  ejemplos que son los patrones de diseño y su uso en el desarrollo de software. ( 4 Ptos)

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

Los patrones de diseño son independientes del lenguaje que se utilice (siempre y cuando el lenguaje sea orientado a objetos)

Los patrones de diseño pretenden:

·         Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
·         Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
·         Formalizar un vocabulario común entre diseñadores.
·         Estandarizar el modo en que se realiza el diseño.
·         Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.

No es obligatorio utilizar los patrones, solo es aconsejable en el caso de tener el mismo problema o similar que soluciona el patrón, siempre teniendo en cuenta que en un caso particular puede no ser aplicable. "Abusar o forzar el uso de los patrones puede ser un error".