jueves, 21 de mayo de 2009

MAPA MENTAL

jueves, 14 de mayo de 2009

Tópicos Avanzados en la Ingeniería de Software

REINGENIERÍA DE SOFTWARE

Reingeniería de Software es una forma de modernización para mejorar las capacidades y/o mantenibilidad de los sistemas de información heredados mediante la aplicación de tecnologías y practicas modernas. La Reingeniería de Software ofrece una disciplina de preparación para migrar un sistema de información heredado hacia un sistema evolucionable. El proceso aplica principios de ingeniería para un sistema existente para encontrar nuevos requerimientos.

"El Instituto de Ingeniería de software (SEI) desarrollo una definición de Reingeniería como: Reingeniería es la transformación sistemática de un sistema existente dentro de una nueva forma de realizar mejoramientos de calidad en unas operaciones, capacidad del sistema, funcionabilidad, rendimiento o evolucionabilidad a bajo costo, agendas o riesgos para el cliente." [Till 95]

El propósito de la reingeniería es que los sistemas existentes tomen ventajas de las nuevas tecnologías y habilitar el nuevo esfuerzo de desarrollo para que aproveche las ventajas de reutilizar sistemas existentes. La reingeniería tiene el potencial de mejorar la productividad y calidad del software a través de todo el ciclo de vida.La reingeniería casi siempre implica cambiar la forma de un programa y mejorar su documentación. En este caso, la funcionabilidad del programa no es cambiada; sólo su forma es modificada. En otros casos, la reingeniería va más allá de la forma e incluye rediseñar para cambiar la funcionabilidad del programa para buscar mejores requerimientos de usuario.

Los objetivos de la reingeniería son:
  • Proporcionar asistencia automatizada para el mantenimiento.
  • Reducir los errores y costos del mantenimiento.
  • Incrementar la intercambiabilidad del grupo de mantenimiento.
  • Hacer sistemas fáciles de entender, cambiar y probar.
  • Habilitar la conversión y migración de sistemas.
  • Reforzar el apego a estándares.
  • Mejorar la respuesta a peticiones de mantenimiento.
  • Mejorar el estado de ánimo del grupo de mantenimiento.
  • Proteger y extender la vida del sistema.
  • Usar CASE para apoyar sistemas existentes
  • Re-usar componentes de sistema existentes.
La reingeniería puede ayudar a entender sistemas existentes y descubrir los componentes de software que son comunes en todo el sistema. Estos componentes comunes pueden ser re-usados en el desarrollo (o redesarrollo) de sistemas y así reducir el tiempo y riesgos del desarrollo de sistemas.

La reingeniería requiere tiempo; implica un coste de dinero enorme y absorbe recursos que de otro modo se podrían emplear en preocupaciones más inmediatas. Por todo esto, la reingeniería no se lleva a cabo en unos pocos meses, ni siquiera en unos pocos años. La reingeniería de sistemas de información es una actividad que absorberá recursos de las tecnologías de la información durante muchos años.

2.3 LA IMPORTANCIA DE APLICAR REINGENIERÍA DE SOFTWARE

Las Viejas Aplicaciones

Mucha gente al ver las grandes y viejas mansiones queda asombrado de su belleza, pero no se preguntan que tan bien se puede vivir en ellas. Las personas que lo hacen dicen que es una pesadilla mantenerlas. Todas ellas fueron construidas con viejas tecnología estándar. Sus paredes externas no tienen aislamiento. El alambrado eléctrico tiene limitaciones y claramente es inadecuada para las necesidades de energía de hoy y su cableado decadente crea un severo peligro eléctrico.
Los viejos sistemas son muy similares a los grandes y viejos edificios. Ellos tienen los mismos problemas de mantenimiento, un hecho en gran parte irreconocible por parte de la comunidad corporativa. Muchos de esos edificios son demolidos por que no son mantenibles y ya no sirven para las necesidades de sus ocupantes.
Las viejas computadoras tal vez se puedan ver solamente en museos. Pero en muchos casos, software escrito para viejos modelos de computadora están ejecutándose hoy en día. Un caso extremo es el de un software escrito para una IBM 1401 Autocoder. Cuando la compañía remplazó la 1401 con una IBM 360/40, compraron un emulador de la 1401 para poder ejecutar el software. Esa aplicación hoy día corre en una PC – la compañía compro otro emulador.

Los clientes demandan que las nuevas capacidades sean agregadas al código escrito en sus viejos sistemas. Casi siempre, las empresas encuentran que no pueden modificar su código – el programador que lo mantenía murió recientemente o nadie sabe programar en el lenguaje en el que fue escrito. Por lo que la funcionalidad de ese programa quedará así para siempre.
La siguiente lista son las razones por las que es aplicable la reingeniería a los sistemas de información heredados:
  • Frecuentes fallas de producción (fiabilidad cuestionable).
  • Problemas de rendimiento.
  • Tecnología obsoleta.
  • Problemas de integración del sistema.
  • Código de calida pobre.
  • Dificultad (peligroso) al cambio.
  • Dificultad para probar.
  • Mantenimiento caro.
  • Incremento de problemas del sistema.
Estas razones pueden ser solucionadas al aplicar un proceso de mantenimiento de software, pero cuando dicho mantenimiento deja de ser viable, entonces se toma la decisión de aplicar reingeniería.


Nuevas Ideas, Nuevo Software

Aunque la reingeniería se usa principalmente durante el mantenimiento del software, va mas allá de una simple ayuda para el mantenimiento. La reingeniería es el puente desde viejas tecnologías hacía nuevas tecnologías que las organizaciones deben usar en la actualidad para responder al cambio de requerimientos del negocio.
Los viejos programas representan la tecnología del ayer. Ahora sabemos que los años tienen cuatro dígitos y no dos, que los datos pueden ser manejados mejor en bases de datos y que tenemos nuevos diseños de construcción y lenguajes de programación que permiten diseñar programas notablemente mantenibles.
Cuando el costo de mantener viejos edificios es altamente excesivo, se remplazan estos edificios. Nosotros deberíamos hacer lo mismo con los programas. Los programas no se hacen obsoletos al paso del tiempo ya que fueron escritos para hardware y sistemas operativos que ya no existen, muchos están llenos de características y parches no documentados.Sólo cuando hayamos aprendido a que es mejor invertir en nuevo hardware y nuevos edificios podremos reconocer el valor de remplazar los viejos sistemas raquíticos.


2.4 COSTES Y BENEFICIOS DE LA REINGENIERÍA.

Antes de reconstruir un sistema en uso, es altamente recomendable analizar las diversas alternativas disponibles:
  • Dejar el producto como está.
  • Adquirir uno en el mercado que realice la misma función.
  • Reconstruirlo.
Evidentemente, elegiremos la opción que mejor relación coste/beneficio nos ofrezca. Para calcular los costes de un proyecto de reingeniería, Harry Sneed [Snee 95] propone un modelo basado en cuatro etapas:
  • Justificación del proyecto de reingeniería.
  • Análisis de la cartera de aplicaciones.
  • Estimación de costes.
  • Análisis de costes / beneficios.

2.4.1 Justificación Del Proyecto De Reingeniería.

Para justificar un proyecto de reingeniería se requiere de un análisis del software existente, de los procesos de mantenimiento actuales y del valor de negocio que tienen las aplicaciones; todo esto con el objeto de hacer una evaluación en posibles aumentos de valores sobre estos tres factores.La mayoría de las organizaciones sólo toman en consideración los procesos de reingeniería cuando el coste de un nuevo desarrollo es demasiado alto. En cualquier caso, y aunque a primera vista parezca la única o la mejor alternativa, es necesario confirmar la necesidad de reconstruir el sistema.
Existen cuatro operaciones que nos pueden dar una idea de los costes del proyecto y del valor del software actual dentro del negocio:

Introducción de un sistema de evaluación de los costes del mantenimiento. Es recomendable que esta tarea la lleve a cabo la organización anticipándose con suficiente anticipación al momento en que se percibe la necesidad de aplicar reingeniería.Análisis de la calidad del software actual, para lo cual pueden utilizarse auditores de código automáticos que proporcionan datos del tamaño, complejidad y métricas de calidad del código fuente. Estos valores son incorporados a una base de datos que es utilizada por otra herramienta para realizar comparaciones y obtener resultados.

Análisis de los costes de mantenimiento: Se proponen tres métricas para medir los procesos de mantenimiento: "Dominio del impacto" o proporción de instrucciones y elementos de datos afectados por una tarea de mantenimiento con respecto al total de instrucciones y elementos de datos del sistema; "Esfuerzo empleado", que es el número de horas dedicadas a tareas de mantenimiento, con lo que se puede obtener una media del número de horas por tarea de mantenimiento; y "Tasa de errores de segundo nivel", que es el número de errores causados por acciones de mantenimiento. Si se observa que estas tres medidas se incrementan, es muy probable que los costes de mantenimiento se incrementen con el tiempo.

Tópicos Avanzados en la Ingeniería de Software


Ingenieria Web

Roger Pressman[PRE98] moderó una mesa redonda virtual con representantes de la ingeniería software tradicional y del desarrollo software basado exclusivamente en Internet. El debate principalmente se centró en discutir si valía la pena aplicar un proceso de ingeniería a las aplicaciones con base en internet, o qué características tenían éstas que justificaran el no utilizarlo. La conclusión general fue que aplicar un proceso de ingeniería nunca es una mala idea pero que éste debería adaptarse alos requerimientos de cambio continuo y rapidez siempre presentes en el proceso de desarrollo Web. De iniciativas como ésta y de otras como la organización de congresos y talleres especializados en el desarrollo para la Web, surge el nacimiento de una nueva disciplina denominada Ingeniería Web.

Qué es la Ingeniería Web?
Murugesan et al. [MUR01],promotores iniciales del establecimiento, dan la siguiente definición:“Web Engineering is the establishment and use of sound scientific, engineering and managementprinciplesanddisciplinedandsystematic approaches to the successfuldevelopment,deploymentandmaintenance of high quality Web-basedsystems and applications.”Y que escuetamente podemos “traducir” como el proceso utilizado para crear, implantar y mantener aplicaciones y sistemas Web de alta calidad. Esta breve definición nos lleva a abordar un aspecto clave de cualquier proyecto como es determinar que tipo de proceso es más adecuado en función de las características del mismo.

 El Proceso de Ingeniería Web
Características como inmediatez y evolución y crecimiento continuos, nos llevan a un proceso incremental y evolutivo, que permite que el usuario se involucre activamente, facilitando el desarrollo de productos que se ajustan mucho lo que éste busca y necesita.Según Pressman [PRE00], las actividades que formarían parte del marco de trabajo incluirían las tareas abajo enumeradas. Dichas tareas serían aplicables a cualquier aplicación Web,independientemente del tamaño y complejidad de la misma.Las actividades que forman parte del proceso son:formulación,planificación análisis, modelización,generación de páginas, test y evaluacióndel cliente.
 La Formulación identifica objetivos y establece el alcance de la primera entrega. La Planificación generala estimación del coste general delproyecto, la evaluación de riesgos y elcalendario del desarrollo y fechas deentrega. 
El Análisis especifica los requerimientos e identifica el contenido.La Modelización se compone de dossecuencias paralelas de tareas. Una consiste en el diseño y producción del contenido que forma parte de la aplicación. La otra, en el diseño de la arquitectura, navegación e interfaz de usuario. Es importante destacar laimportancia del diseño de la interfaz.Independientemente del valor delcontenido y servicios prestados, unabuena interfaz mejora la percepción queel usuario tiene de éstos. En laGeneración de páginas se integra contenido, arquitectura, navegación e interfaz para crear estática o dinámicamente el aspecto más visible delas aplicación, las páginas. El Test busca errores a todos lo niveles: contenido,funcional, navegacional, rendimiento,etc. El hecho de que las aplicacionesresidan en la red, y que interoperen enplataformas muy distintas, hace que elproceso de test sea especialmente difícil. Finalmente, el resultado essometido a la evaluación del cliente.

2.2 Control y Garantía de la Calidad
Una de las tareas colaterales queforman parte del proceso es el Control y Garantía de la Calidad (CGC). Todas las actividades CGC de la ingeniería software tradicional como son:establecimiento y supervisión deestándares, revisiones técnicas formales,análisis, seguimiento y registro deinformes, etc, son igualmente aplicablesa la Ingeniería Web. Sin embargo, en la Web toman especial relevancia para valorar la calidad aspectos como:Usabilidad, Funcionabilidad, Fiabilidad,Seguridad, Eficiencia y Mantenibilidad[OLS01].

2.3 Control de la Configuración
Establecer mecanismos adecuados de control de la configuración para la Ingeniería Web es uno de los mayores desafíos a los que esta nueva disciplina se enfrenta. La Web tiene características únicas que demandan estrategias y herramientas nuevas. Hay cuatro aspectos importantes a tener en cuenta en el desarrollo de tácticas de control de la configuración para la Web [DAR99]:
Contenido:Considerando la dinamicidad con la que el contenido segenera, es tarea compleja organizarracionalmente los objetos que forman laconfiguración y establecer mecanismosde control. 
Personal: Cualquiera realizacambios. Hay mucho personal no especializado que no reconoce laimportancia que tiene el control delcambio.
Escalabilidad: Es comúnen contrar aplicaciones que de un día para otro crecen considerablemente. Sin embargo, las técnicas de control no escalan de forma adecuada. Política:¿Quién posee la información? ¿Quién asume la responsabilidad y coste de mantenerla?

2.4 La Gestión del Proceso
En un proceso tan rápido como es el proceso de Ingeniería Web, donde los tiempos de desarrollo y los ciclos de vida de los productos son tan cortos,¿merece la pena el esfuerzo requerido por la gestión? La respuesta es que dada su complejidad es imprescindible. Entre los aspectos que añaden dificultad a la gestión destacamos: - alto porcentaje de contratación a terceros, - el desarrollo incluye una gran variedad de personal técnico y no técnico trabajando en paralelo, - el equipo de desarrollo debe dominar aspectos tan variopintos como,software basado en componentes, redes,diseño de arquitectura y navegación,diseño gráfico y de interfaces, lenguajesy estándares en Internet, test deaplicaciones Web, etc, lo que hace que elproceso de búsqueda y contratación depersonal sea arduo.

3. ¿Qué marca la diferencia?A modo de breve resumen enumeramos las siguientes diferencias: -Confluencia de disciplinas: Sistemas de Información, Ingeniería Software y Diseño Gráfico que requiere equiposmultidisciplinares y polivalentes. –Ciclos de vida y tiempo de desarrollo muy cortos - Cambio continuo:Necesidad de soluciones que permitan flexibilidad y adaptación conforme el proyecto cambia. – Requisitos fuertes deSeguridad, Rendimiento y Usabilidad.

4. ¿Por qué es necesaria?La Web evoluciona y crece sin diseño alguno. Prácticas tan pobres de calidad pueden introducir defectos que dejen al efecto 2000 como un juego de niños. Es deber de todos proporcionar cimientos firmes a una tecnología que“mágicamente” nos permite acceder acualquier hora a cualquier punto del planeta para obtener bienes tan valiosos como son los Servicios y la Información.

para más información ver: 

miércoles, 13 de mayo de 2009

Tópicos Avanzados en la Ingeniería de Software

Ingenieria Web
¿Qué es?Los sistemas y aplicaciones(WebApps) basados en Web hacen posibleque una población extensa de usuariosfinales dispongan de una granvariedad de contenido y funcionalidadLa ingeniería Web no es un clónico perfectode la ingeniería del software, perotoma prestado muchos de los conceptosy principios básicos de la ingenieríadel software, dando importancia alas mismas actividades técnicas y degestión. Existen diferencias sutiles enla forma en que se llevan a cabo estasactividades, pero la filosofía primordiales idéntica dado que dicta un enfoquedisciplinado para el desarrollo de unsistema basado en computadora.

¿Quiénlo hace? Los ingenieros Web ylos desarrolladores de contenido notécnicos crean las WebApps.

¿Por qué es importante? A medidaque las WebApps se integran cada vezmás en grandes y pequeñas compañías(por ejemplo, comercio electrónico),y cada vez es más importante lanecesidad de construir sistemas fiables,utilizables y adaptables. Esta esla razón por la que es necesario unenfoque disciplinado para el desarrollode WebApps.

¿Cuáles son los pasos a seguir? Aligual que cualquier disciplina de ingeniería,la ingeniería Web aplica. unenfoque genérico que se suaviza conestrategias, tácticas y métodos especializados.El proceso de ingenieríaWeb comienza con una formulación delproblema que pasa a resolverse conlas WebApps. Se planifica el proyecto y se analizan los requisitos de l aWebApp, entonces se lleva a cabo eldiseño de interfaces arquitectónico y del navegador. El sistema se implementautilizando lenguajes y herramientasespecializados asociados conla Web, y entonces comienzan las prues.Dado que las WebApps están ennte evolución, deben de estaelos mecanismos para el controlde configuraciones, garantía decalidad y soporte continuado.

¿Cuál es el producto obtenido? La elaboración de una gran variedad deproductos de trabajo de ingenierfa Web(por ejemplo, modelos de análisis.modelos de diseño, procedimientos depruebas). Y como producto final laWebApp operativa.

¿Cómo puedo estar seguro de quelo he hecho correctamente? Aplicandolas mismas prácticas SQA que seaplican en todos los procesos de ingenieríadel software -las revisiones técnicasformales valoran los modelos deanálisis y diseño-; las revisiones especializadas tienen en consideración la usabilidad y la comprobación se aplicapara descubrir errores en el contenido,funcionalidad y compatibilidad.

Tópicos Avanzados en la Ingeniería de Software

Ingeniería asistida por computadora

Ingeniería asistida por computadora o por ordenador (CAE, del inglés Computer Aided Engineering) es el conjunto de programas informáticos que permiten analizar y simular los diseños de ingeniería realizados con el ordenador, o creados de otro modo e introducidos en el ordenador, para valorar sus características, propiedades, viabilidad y rentabilidad. Su finalidad es optimizar su desarrollo y consecuentes costos de fabricación y reducir al máximo las pruebas para la obtención del producto deseado.

La mayoría de ellas se presentan como módulos o extensiones de aplicaciones CAD, que incorporan:

·         Análisis cinemático.

·         Análisis por el método de elementos finitos (FEM, Finite Elements Method).

·         Maquinado por control numérico CNC (Computered Numeric Control).

·         De exportación de ficheros "Stl" (Estereolitografía) para máquinas de prototipado rápido.

 

 Herramientas Case

De acuerdo con Kendall y Kendall la ingeniería de sistemas asistida por ordenador es la aplicación de tecnología informática a las actividades, lastécnicas y las metodologías propias de desarrollo, su objetivo es acelerar el proceso para el que han sido diseñadas, en el caso de CASE para automatizar o apoyar una o mas fases del ciclo de vida del desarrollo de sistemas.

Cuando se hace la planificación de la base de datos, la primera etapa del ciclo de vida de las aplicaciones de bases de datos, también se puede escoger una herramienta CASE (Computer-Aided Software Engineering) que permita llevar a cabo el resto de tareas del modo más eficiente y efectivo posible. Una herramienta CASE suele incluir:

Un diccionario de datos para almacenar información sobre los datos de la aplicación de bases de datos.

Herramientas de diseño para dar apoyo al análisis de datos.

Herramientas que permitan desarrollar el modelo de datos corporativo, así como los esquemas concep

tual y lógico.

Herramientas para desarrollar los prototipos de las aplicaciones.

El uso de las herramientas CASE puede mejorar la productividad en el desarrollo de una aplicación de bases de datos.

 Historia

En la década de los setenta el proyecto ISDOS desarrolló un lenguaje llamado "Problem Statement Language" (PSL) para la descripción de losproblemas de usuarios y las necesidades de solución de un sistema de información en un diccionario computarizado. Problem Statement Analyzer (PSA) era un producto asociado que analizaba la relación de problemas y necesidades.

Pero la primera herramienta CASE como hoy la conocemos fue "Excelerator" en 1984, era para PC. Actualmente la oferta de herramientas CASE es muy amplia y tenemos por ejemplo el EASYCASE o WINPROJECT. (Monografías.com)

 Tecnología Case

La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo desistemas de información y se plantean los siguientes objetivos:

Permitir la aplicación práctica de metodologías estructuradas, las cuales al ser realizadas con una herramienta se consigue agilizar el trabajo.

Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.

Simplificar el mantenimiento de los programas.

Mejorar y estandarizar la documentación.

Aumentar la portabilidad de las aplicaciones.

Facilitar la reutilización de componentes software.

Permitir un desarrollo y un refinamiento visual de las aplicaciones, mediante la utilización de gráficos.

Automatizar:

Ø El desarrollo del software

Ø La documentación

Ø La generación del código

Ø El chequeo de errores

Ø La gestión del proyecto

Permitir:

Ø La reutilización del software

Ø La portabilidad del software

Ø La estandarización de la documentación

Componentes de una herramienta case

De una forma esquemática podemos decir que una herramienta CASE se compone de los siguientes elementos:

Repositorio (diccionario) donde se almacenan los elementos definidos o creados por la herramienta, y cuya gestión se realiza mediante el apoyo de un Sistema de Gestión de Base de Datos (SGBD) o de un sistema de gestión de ficheros.

Meta modelo (no siempre visible), que constituye el marco para la definición de las técnicas y metodologías soportadas por la herramienta.

Carga o descarga de datos, son facilidades que permiten cargar el repertorio de la herramienta CASE con datos provenientes de otros sistemas, o bien generar a partir de la propia herramienta esquemas de base de datos, programas, etc. que pueden, a su vez, alimentar otros sistemas. Este elemento proporciona así un medio de comunicación con otras herramientas.

Comprobación de errores, facilidades que permiten llevar a cabo un análisis de la exactitud, integridad y consistencia de los esquemas generados por la herramienta.

Interfaz de usuario, que constará de editores de texto y herramientas de diseño gráfico que permitan, mediante la utilización de un sistema de ventanas, iconos y menús, con la ayuda del ratón, definir los diagramas, matrices, etc. que incluyen las distintas metodologías.

Estructura general de una herramienta case

La estructura CASE se basa en la siguiente terminología:

CASE de alto nivel son aquellas herramientas que automatizan o apoyan las fases finales o superiores del ciclo de vida del desarrollo de sistemas como la planificación de sistemas, el análisis de sistemas y el diseño de sistemas.

CASE de bajo nivel son aquellas herramientas que automatizan o apoyan las fases finales o inferiores del ciclo de vida como el diseño detallado de sistemas, la implantación de sistemas y el soporte de sistemas.

CASE cruzado de ciclo de vida se aplica a aquellas herramientas que apoyan actividades que tienen lugar a lo largo de todo el ciclo de vida, se incluyen actividades como la gestión de proyectos y la estimación.

 Estado Actual

En las últimas décadas se ha trabajado en el área de desarrollo de sistemas para encontrar técnicas que permitan incrementar la productividad y elcontrol de calidad en cualquier proceso de elaboración de software, y hoy en día la tecnología CASE (Computer Aided Software Engineering) reemplaza al papel y al lápiz por el ordenador para transformar la actividad de desarrollar software en un proceso automatizado.

La tecnología CASE supone la –informatización de la informática—es decir –la automatización del desarrollo del software--, contribuyendo así a elevar la productividad y la calidad de en el desarrollo de los sistemas de información de forma análoga a lo que suponen las técnicas CAD/CAM en el área de fabricación.

En este nuevo enfoque que persigue mejorar la calidad del software e incrementar la productividad en el proceso de desarrollo del mismo, se plantean los siguientes objetivos:

<<> Permitir la aplicación práctica de metodologías, lo que resulta muy difícil sin emplear herramientas.

<<> Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.

<<> Simplificar el mantenimiento del software.

Mejorar y estandarizar la documentación.

Aumentar la portabilidad de las aplicaciones.

Facilitar la reutilización de componentes de software

Permitir un desarrollo y un refinamiento (visual) de las aplicaciones, mediante la utilización de controles gráficos (piezas de código reutilizables).

 

 Integración de las herramientas case en el futuro

Las herramientas CASE evolucionan hacia tres tipos de integración:

La integración de datos permite disponer de herramientas CASE con diferentes estructuras de diccionarios locales para el intercambio de datos.

La integración de presentación confiere a todas las herramientas CASE el mismo aspecto.

La integración de herramientas permite disponer de herramientas CASE capaces de invocar a otras CASE de forma automática.

 Clasificación de las herramientas case

No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:

- Las plataformas que soportan.

- Las fases del ciclo de vida del desarrollo de sistemas que cubren.

- La arquitectura de las aplicaciones que producen.

- Su funcionalidad.

CASE es una combinación de herramientas software (aplicaciones) y de metodologías de desarrollo :

1. Las herramientas permiten automatizar el proceso de desarrollo del software.

2. Las metodologías definen los procesos automatizar.

Una primera clasificación del CASE es considerando su amplitud :

TOOLKIT: es una colección de herramientas integradas que permiten automatizar un conjunto de tareas de algunas de las fases del ciclo de vida del sistema informático: Planificación estratégica, Análisis, Diseño, Generación de programas.

WORKBENCH: Son conjuntos integrados de herramientas que dan soporte a la automatización del proceso completo de desarrollo del sistema informático. Permiten cubrir el ciclo de vida completo. El producto final aportado por ellas es un sistema en código ejecutable y su documentación.

Una segunda clasificación es teniendo en cuenta las fases (y/o tareas) del ciclo de vida que automatizan:

UPPER CASE: Planificación estratégica, Requerimientos de Desarrollo Funcional de Planes Corporativos.

MIDDLE CASE: Análisis y Diseño.

LOWER CASE: Generación de código, test e implantación


para más información visitar:http://prof.usb.ve/lmendoza/Documentos/PS-6117%20(Laboratorio)/Transparencias%20PS6117%20(Lab)%20HC.pdfhttp://www.virtual.unal.edu.co/cursos/sedes/manizales/4100010/Lecciones/Cap5/HtasCASE.htm
http://www.monouml.org/docs/formal/spanish/x176.html


Tópicos Avanzados en la Ingeniería de Software

Ingenieria del software del comercio electronico
La computación cliente/servidor es un intento de equilibrar el proceso de una red hasta que se comparta la potencia de procesamiento entre computadoras que llevana cabo servicios especializados tales como accedera bases de datos (servidores), y aquellos que llevan a cabotareas tales como la visualización IGU que es más adecuadopara el punto final dentro de la red. Por ejemplo,permite que las computadoras se ajusten a tareas especializadastales como el procesamiento de bases de datosen donde se utilizan hardware y software de propósitoespecial para proporcionar un procesamiento rápido dela base de datos comparado con el hardware que se encuentra en las mainframes que tienen que enfrentarsecon una gran gama de aplicaciones.

Comercio Electrónico

Para ilustrar la apariencia de un sistema distribuido examinaremosun ejemplo tomado de un área de aplicaciónconocida como comercio electrónico. En un sentidoamplio, el término «comercio electrónico» (Ecommerce)se puede definir como la aplicación de la tecnologíade sistemas distribuidos que apoya las operaciones comerciales.A continuación, se detallan algunos de dichos sistemas:
Sistemas para vender algunos artículos o serviciosutilizando Internet, donde los clientes interactúancon el sistema que utiliza navegadores. Entre lossistemas típicos de comercio electrónico de estacategoría se incluyen los que venden libros, ropay CDs.

Sistemas para simular alguna actividad comercial entiempo real utilizando tecnología de red. Un buenejemplo de este tipo de sistemas es una subasta en lared.Un sistema de subasta típico solicitaría artículosa los usuarios de Internet, ubicaría los datos enuna página Web y entonces comenzaría la oferta para ese artículo. Normalmente la compañía de subastasespecificaría un período de oferta para así darla porfinalizada.

Sistemas que proporcionan algún servicio basado e nred para usuarios. Probablemente los más conocidos son los que ofrecen cuentas de correo gratis, donde los ingresos de dicha empresa probablemente procedan de la publicidad en las páginas Web que se utilizan para ese sitio Web. Estas son compañías quemediante un honorario monitorizan su sitio Web y leenvían un mensaje, normalmente por correo electrónicoo mediante un buscador si han detectado unproblema, como el mal funcionamiento del servidor que se utiliza para el sitio Web.

Sistemas que proporcionan servicios de asesoramiento.Los sistemas típicos de este tipo son los que procesan una descripción de artículos, como un CD,para los que establecerán el mejor precio, despuésde haber explorado un número de sistemas de ventaen la red.

Sistemas internos que el cliente no ve, pero que dansoporte a más actividades comerciales convencionales.Por ejemplo, un sistema que apoya el suministrode mercancías a un comerciante minorista de la calle.Muchos de los ingresos delcomercio electrónico proceden de la publicidad enlínea. Muchas páginas Web asociadas a las aplicaciones de comercio electrónico contendrán pequeñosespacios publicitarios conocidos como banners.Estos anuncios se pueden «pinchar», conduciendoasí al usuario del navegador a un sitio Web el cualnormalmente vende algún producto o servicio. 

Los sistemas de publicidad son una forma particular desistemas de comercio electrónico que llevan a cabofunciones tales como vender un banner (espaciopublicitario), monitorizando el éxito de estos anuncios y la administración del pago de los honorariosde publicidad.

Tópicos Avanzados en la Ingeniería de Software

Métodos Formales

¿Qué es? Estos métodos permiten al ingenierodel software crear una especificaciónsin ambigüedades que sea máscompleta y constante que las que seutilizan en los métodos convencionalesu orientados a objetos. La teoría deconjuntos y las notaciones lógicas seutilizan para crear una sentencia clarade hechos (o de requisitos). Esta especificación matemática entonces sepuede analizar para comprobar quesea correcta y constante. Como esta especificación se crea utilizando notaciones matemáticas. inherentementees menos ambigua que los ncdos informales de presentación.

¿Quién lo hace? Un ingeniero del softwareespecializado crea una especificación formal.

¿Por qué es imporiante? En sistemascríticos para la misión y para la seguridad,un fallo puede pagarse muycaro. Cuando la computadora falla sepueden perder vidas o incluso tenergraves consecuencias económicas. Endichas situaciones es esencial descubrirlos errores antes de poner en operaciónla computadora. Los métodosformales reducen drásticamente los errores de especificación, y consecuentemente son la base del softwareque tiene pocos errores una vez que elcliente comienza a utilizarlo.

¿Cuáles son los pasos? El primer paso en la aplicación de los métodos formaleses definir el invariante de datos, el estado y las operaciones para el funcionamiento de un sistema.El invariante de datos es una condición que se verifica mediante la ejecución de una función que contiene un conjunto de datos. Los datos almacenados forman el estado en donde una función puede acceder y alterar; y las operaciones son las acciones que tienenlugar en un sistema a medida quelee o escribe datos en un estado. Una operación se asocia a dos condiciones:una precondición y una postcondición.La notación y la heurística asociados con los conjuntos y especificaciones constructivas operadores de conjuntos, operadores lógicos y sucesiones- forman la base de losmétodos formales.

¿Cuál es el producto obtenido?Cuando se aplican métodos formalesse produce una especificación representadaen un lenguaje formal como Zo VDM.

¿Cómo puedo estar seguro de quelo he hecho corredamente? Debido a que los métodos formales utilizan la matemática discreta como mecanismo de especificación, para demostrar que una especificación es correcta,se pueden aplicar pruebas lógicas acada función del sistema

Tópicos Avanzados en la Ingeniería de Software

Métodos Formales

Los métodos formales que se utilizan para desarrollar sistemasde computadoras son técnicas de base matemática paradescribir las propiedades del sistema. Estos métodos formalesproporcionan marcos de referencia en el seno de los cuales laspersonas pueden especificar, desarrollar y verificar los sistemasde manera sistemática, en lugar de hacerlo ad hoc.Se dice que un método es formal si posee una base matemáticaestable, que normalmente vendrá dada por un lenguajeformal de especificación. Esta base proporciona una formade definir de manera precisa nociones tales como la consistenciay completitud, y, lo que es aun más relevante, la especificación,la implementación y la corrección.

La consistencia se asegura mediante una demostración matemática de que los hechos iniciales sepueden hacer corresponder formalmente (mediantereglas de inferencia) con sentencias posteriores existentesdentro de la especificación.
La completitud es difícil de lograr, aun cuando se utilicenmétodos formales. Cuando se está creando la especificaciónse pueden dejar sin definir algunos aspectosdel sistema; quizás otras características se omitan a propósitopara ofrecer a los diseñadores una cierta libertada la hora de seleccionar un enfoque de implementación;además es imposible considerar todos los escenariosoperacionales en un sistema grande y complejo.

Matemáticas en el desarrollo del software

Las matemáticas poseen muchas propiedades útiles paraquienes desarrollan grandes sistemas. Una de las propiedadesmás útiles es que pueden describir de formasucinta y exacta una situación física, un objeto o el resultadode una acción. La situación ideal sería que un ingenierodel software estuviera en la misma situación queun matemático dedicado a la matemática aplicada. Sedebería presentar una especificación matemática de unsistema, y elaborar la solución en base a una arquitecturade software que implemente la especificación.La propiedad fundamental de las
matemáticas es queadmite la abstracción y es un medio excelente para elmodelado. Dado que es un medio exacto, hay pocasprobabilidades de ambigüedad, y las especificacionesse pueden verificar matemáticamente para descubrircontradicciones e incompletitud; y, por último, la vaguedaddesaparece completamente. Además, las matemáticasse pueden utilizar para representar niveles deabstracción en la especificación de sistema de formaorganizada.
Las matemáticas constituyen una herramienta idealpara el modelado. Hacen posible exhibir el esquemafundamental de la especificación y ayudan al analista yespecificador del sistema a verificar una especificaciónpara su funcionalidad, sin problemas tales como el tiempode respuesta, las directrices de diseño, las directricesde implementación y las restricciones del proyectoque siempre estorban. También ayuda al diseñador, porquela especificación de diseño del sistema muestra laspropiedades del modelo, y ofrece tan sólo los detalles suficientes para hacer posible llevar a cabo la tarea quetengamos entre manos.

Para aplicar de forma eficiente los métodos formales,el ingeniero del software debe de tener un conocimientorazonable de la notación matemática asociada a losconjuntos y a las sucesiones, y a la notación lógica quese emplea en el cálculo de predicados.



Tópicos Avanzados en la Ingeniería de Software

Ingeniería del Software de Sala Limpia
La ingeniería del Software de sala limpia es un enfoque formal para el desarrollo del Software, que pueda dar lugar a un Software que posea una calidad notablemente alta. Emplea la especificación de estructura de cajas (o métodos formales) para el modelado de análisis y diseño, y hace hincapié en la verificación de la corrección, más que en la comprobación, como mecanismo fundamental para hallar y eliminar errores. Se aplica una comprobación estadística de utilización para desarrollar la información de tasa de fallos necesaria para certificar la fiabilidad del Software proporcionado.
La filosofía de sala limpia es un enfoque riguroso de la ingeniería del Software. Se trata de un modelo de proceso del Software que hace hincapié en la verificación matemática de la corrección, y en la certificación de la fiabilidad del Software. El resultado final son unas tasas de fallo extremadamente bajas, que sería difícil o imposible de conseguir empleando unos métodos menos formales.

 Tareas de Sala Limpia 
La sucesión de tareas de sala limpia para cada incremento, se manifiesta mediante unos requisitos globales del sistema o producto que se van desarrollando empleando los métodos de ingeniería de sistemas. Una vez que se han asignado una funcionalidad al elemento de Software del sistema el tubo de la sala limpia comienza sus incrementos y se producen las siguientes tareas.
- Planificación de Incrementos. La planificación incremental permite calidad temprana y continua interacción con el usuario. Facilita mejoras de proceso mientras el desarrollo progresa. El acercamiento incremental evita los riesgos inherentes integración tardía en el ciclo de desarrollo.
- Recolección de requisitos. El propósito del proceso del análisis de requisitos es 1) definir requisitos para el producto de software, incluyendo función, uso, ambiente, y funcionamiento, y 2) obtener un acuerdo con el cliente en los requisitos como la base para la función y especificación del uso.
- Especificación de la estructura de cajas. Tres tipos especiales de funciones matemáticas son importantes en el desarrollo a Sala limpia, debido a su correspondencia y correlación en el proceso de descomposición y verificación. Estas funciones son conocidas como la caja negra, la caja de estado y caja limpia. En la estructura de las cajas se pueden aplicar una variedad de estrategias de descomposición, además se puede incluir funcionabilidad y orientación a objeto.
- Diseño Formal. Mediante el uso del enfoque de estructura de cajas, el diseño de sala limpia es una extensión natural y sin discontinuidades de la especificación. Dan los objetivos, los participantes, los criterios de entrada, las tareas, la verificación, las medidas y los criterios comunes de la salida en los procesos, así como elementos de proceso común.
- Verificación de Corrección. El equipo de sala limpia lleva a cabo una serie de rigurosas actividades de verificación de corrección aplicadas primero al diseño y después al código. El propósito del proceso de la verificación de la corrección, es verificar la corrección del incremento del software usando técnicas matemáticas.
- Generación de Código, inspección y verificación. Las especificaciones de estructura de caja que se representan mediante un lenguaje especializado se traducen la lengua de programación mas adecuado. 
- Planificación de la comprobación estadística, Comprobación estadística de utilización y Certificación. El propósito del proceso estadístico de prueba y de certificación es demostrar la aptitud del software para el uso en un experimento estadístico formal. La "aptitud para el uso" se define con respecto a los modelos de uso y a las metas de la certificación empleados en el proceso de prueba. Las metas de certificación, primero establecidas en el plan de medida y refinadas en el plan de prueba de incremento, se pueden expresar en términos tales como índice de confiabilidad del software.

Cajas de Sala Limpia 
Una caja encapsula el sistema con un cierto grado de detalle. Mediante un proceso de refinamiento progresivo, se van refinando las cajas para formar una jerarquía en la cual cada caja tiene una transferencia. Para esto se utilizan tres tipos de cajas:
- Caja Negra. Especifica el comportamiento del sistema, o de una parte de un sistema.
- Caja de Estado. Esta caja encapsula los datos de estados y de servicios (operaciones) de forma análoga a los objetos. En esta vista de especificación, se representan las entradas de la caja de estados y sus salidas.
- Caja Transparente. Las funciones de transición que están implicadas en la caja de estados se definen en la caja transparente.

Verificación de diseño 
El diseño que se utiliza en la ingeniería del Software de sala limpia hace mucho uso de la filosofía de programación estructurada. Son realmente las funciones básicas de procesamiento, se refinan ahora utilizando una expansión progresiva de funciones matemáticas en estructuras de conectivas lógicas.

Comprobación de la sala limpia 
La técnica y estrategia de la comprobación de la sala limpia es algún fundamentalmente distinto de los enfoques convencionales de comprobación. Los métodos convencionales derivan de un conjunto de casos de prueba para descubrir errores de diseño y codificación.

Diferenciar de Sala Limpia 
Existen diversos métodos o paradigmas que nos reflejan la diferencia notoria de que sea sala limpia. 
- Hace uso explícito del control estadístico de calidad. 
- Verifica la especificación del diseño empleando una demostración de corrección basada en las matemáticas. 
- Hace mucho uso de la comprobación estadística de utilización para descubrir errores de especial incidencia.

martes, 12 de mayo de 2009

Métricas, Estimación y Planificación en Proyectos

Cuando se planifica un proyecto se tiene que obtener estimaciones del costo y esfuerzo humano requerido por medio de las mediciones de software que se utilizan para recolectar los datos cualitativos acerca del software y sus procesos para aumentar su calidad.

¿Qué es? El proceso del software y las métricas del producto son una medida cuantitativa que permite a la gente del software tener una visión profunda de la eficacia del proceso del software y de los proyectos que dirigen utilizando el proceso como un marco de trabajo. Se reúnen los datos básicos de calidad y productividad. Estos datos son entonces analizados, comparados con promedios anteriores, y evaluados para determinarlas mejoras en la calidad y productividad.Las métricas son también utilizadas para señalar áreas con problemas de manera que se puedan desarrollar los remedios y mejorar el proceso del software.

¿Quién lo hace? Las métricas del software son analizadas y evaluadas por los administradores del software. A menudo las medidas son reunidas por los ingenieros del software.

¿Por qué es importante? Si no mides, sólo podrás juzgar basándote en una evaluación subjetiva. Mediante la medición,se pueden señalar las tendencias(buenas o malas), realizar mejores estimaciones,llevar a cabo una verdadera mejora sobre el tiempo.

¿Cuáles son los pasos? Comenzar definiendo un conjunto limitado de medidas de procesos, proyectos y productos que sean fáciles de recoger. Estas medidas son a menudo normalizadas utilizando métricas orientadas al tamaño o la función.El resultado se analiza y se compara con promedios anteriores de proyectos similares realizados con la organización. Se evalúan las tendencias y se generan las conclusiones.

¿Cuál es el producto obtenido? Es un conjunto de métricas del software que proporcionan una visión profunda del proceso y de la comprensión del proyecto.

¿Cómo puedo estar seguro de que lo he hecho correctamente? Aplicando un plan de medición sencillo pero consistente, que nunca utilizaremos para evaluar, premiar o castigar el rendimiento individual.

lunes, 11 de mayo de 2009

Métricas, Estimación y Planificación en Proyectos

Métricas del proyecto
Las métricas del proceso de software se utilizan para propósitos estratégicos. Las medidas del proyecto de software son tácticas. Esto es, las métricas de proyectos y los indicadores derivados de ellos los utilizan un gestor de proyectos y un equipo de software para adaptar el flujo del trabajo del proyecto y las actividades técnicas.La primera aplicación de métricas de proyectos en
la mayoría de los proyectos de software ocurre durante la estimación. Las métricas recopiladas de proyectos anteriores se utilizan como una base desde la que se realizan las estimaciones del esfuerzo y del tiempo para el actual trabajo del software. A medida que avanza un proyecto, las medidas del esfuerzo y del tiempo consumido se comparan con las estimaciones originales (y laplanificación de proyectos). El gestor de proyectos utiliza estos datos para supervisar y controlar el avance.

Se miden los índices de producción representadosmediante páginas de documentación, las horas de revisión,los puntos de función y las líneas fuente entregadas.Además, se sigue la pista de los erroresdetectados durante todas las tareas de ingeniería del software. Cuando va evolucionando el software desde la especificación al diseño, se recopilan las métricas técnicas para evaluar la calidad del diseño y para proporcionar indicadores que influirán en el enfoque tomado para la generación y prueba del código.A medida que mejora la calidad, se minimizan los defectos, y al tiempo que disminuye el número de defectos,la cantidad de trabajo que ha de rehacerse también se reduce. Esto lleva a una reducción del coste global del proyecto.


Mediciones de Software
Las mediciones del mundo físico se pueden categorizar de dos maneras; medidas directas (por ejemplo: la longitud de un tomillo) y medidas indirectas (por ejemplo:la «calidad» de los tomillos producidos, medidos contando los artículos defectuosos). Las métricas del software se pueden categorizar de forma similar.Entre las medidas directas del proceso de la ingeniería del software se incluyen el coste y el esfuerzo aplicados. Entre las medidas directas del producto se incluyen las líneas de código (LDC) producidas, velocidadde ejecución, tamaño de memoria, y los defectos informados durante un período de tiempo establecido.Entre las medidas indirectas se incluyen la funcionalidad,calidad, complejidad, eficiencia, fiabilidad, facilidad de mantenimiento y muchas otras «capacidades» .E l coste y el esfuerzo requerido para construir el software,el número de líneas de código producidas, y otras medidas directas son relativamente fáciles de reunir,mientras que los convenios específicos para la medición se establecen más adelante. Sin embargo, la calidad y funcionalidad del software, o su eficiencia o mantenimientoson más difíciles de evaluar y sólo pueden ser medidas indirectamente.El dominio de las métricas del software se dividenen métricas de proceso, proyecto y producto.



domingo, 10 de mayo de 2009

Métricas, Estimación y Planificación en Proyectos

MÉTRICAS DEL SOFTWARE
Son las que están relacionadas con el desarrollo del software como funcionalidad, complejidad,eficiencia.

MÉTRICAS TÉCNICAS: Se centran en lasa características de software pro ejemplo: lacomplejidad lógica, el grado de modularidad. Mide la estructura del sistema, el cómo esta hecho.

MÉTRICAS DE CALIDAD: proporcionan una indicación de cómo se ajusta el software a losrequisitos implícitos y explícitos del cliente. Es decir cómo voy a medir para que mi sistema seadapte a los requisitos que me pide el cliente.

MÉTRICAS DE PRODUCTIVIDAD: Se centran en el rendimiento del proceso de la ingeniería delsoftware. Es decir que tan productivo va a ser el software que voy a diseñar.

MÉTRICAS ORIENTADAS A LA PERSONA: Proporcionan medidas e información sobre laforma que la gente desarrolla el software de computadoras y sobre todo el punto de vistahumano de la efectividad de las herramientas y métodos. Son las medidas que voy a hacer de mipersonal que va hará el sistema.

MÉTRICAS ORIENTADAS AL TAMAÑO: Es para saber en que tiempo voy a terminar elsoftware y cuantas personas voy a necesitar. Son medidas directas al software y el proceso porel cual se desarrolla, si una organización de software mantiene registros sencillos, se puedecrear una tabla de datos orientados al tamaño como se muestra en la siguiente figura:


La tabla lista cada proyecto del desarrollo del software de los últimos años correspondientes,datos orientados al tamaño de c/u. Refiriéndonos a la entrada de la tabla del proyecto 999-01 sedesarrollaron 12.1 KLDC (miles de líneas de código) con un esfuerzo de 24personas mes y uncosto de 168 mil dólares. Debe tenerse en cuenta que el esfuerzo y el costo registrados en latabla incluyen todas las actividades de la ingeniería de software como son análisis, diseño,codificación y prueba. Otra información del proyecto 222-01 indica que se desarrollaron 365 paginas mientras que se encontraron 29 errores tras entregárselo al cliente, dentro del primeraño de utilización también sabemos que trabajaron 3 personas en el desarrollo del proyecto.En los rendimientos del sistema y los rudimentarios datos contenidos en la tabla se puededesarrollar, para cada proyecto un conjunto de métricas sencillas de productividad y calidadorientadas al tamaño. Se obtienen las siguientes formulas:

Productividad = KLDC/persona-mes
Calidad = errores/KLDC
Documentación = pags. Doc/ KLDC
Costo = $/KLDC
· persona-mes es el esfuerzo

MÉTRICAS ORIENTADAS A LA FUNCIÓN:
Son medidas indirectas del software y del procesopor el cual se desarrolla. En lugar de calcularlas las LDC, las métricas orientadas a la función secentran en la funcionalidad o utilidad del programa.Las métricas orientadas a la función fueron el principio propuestas por Albercht quien sugirió un acercamiento a la medida de la productividad denominado método del punto de función. Lospuntos de función que obtienen utilizando una función empírica basando en medidascuantitativas del dominio de información del software y valoraciones subjetivos de la complejidaddel software.Los puntos de función se calculan rellenando la tabla como se muestra en la siguiente figura:Calculo de métricas de punto de función.



Se determinan 5 características del ámbito de la información y los cálculos aparecen en laposición apropiada de la tabla. Los valores del ámbito de información están definidos de la siguiente manera.
1. Números de entrada de usuario: se cuenta cada entrada del usuario que proporcione al
software diferentes datos orientados a la aplicación. Las entradas deben ser distinguidas
de las peticiones que se contabilizan por separado.
2. Numero de salida del usuario: se encuentra cada salida que proporciona la usuario
información orientada ala aplicación. En este contexto las salidas se refieren a informes,
pantalla, mensajes de error. Los elementos de datos individuales dentro de un informe
se encuentran por separado.
3. Números de peticiones al usuario: una petición esta definida como una entrada
interactiva que resulta de la generación de algún tipo de respuesta en forma de salida
interactiva. Se cuenta cada petición por separado.
4. Numero de archivos: se cuenta cada archivo maestro lógico, o sea una agrupación
lógica de datos que puede ser una parte en una gran base de datos o un archivo
independiente.
5. Numero de interfaces externas: se cuentan todas las interfaces legibles por la maquina
por ejemplo: archivos de datos, en cinta o discos que son utilizados para transmitir
información a otro sistema.

Cuando han sido recogidos los datos anteriores se asocian el valor de complejidad a cadacuenta. Las organizaciones que utilizan métodos de puntos de función desarrollan criterios paradeterminar si una entrada es denominada simple, media o compleja. No obstante ladeterminación de la complejidad es algo subjetivo.Para calcular los puntos de función se utiliza la siguiente relación.

PF = CUENTA_TOTAL * [0.65 + 0.01 * SUM(fi)]
Donde CUENTA_TOTAL es la suma de todas las entradas de PF obtenidas de la tabla anterior.
Fi donde i puede ser de uno hasta 14 los valores de ajuste de complejidad basados en las
respuestas a las cuestiones señaladas de la siguiente tabla.
Evaluar cada factor en escala 0 a 5.


Métricas ampliadas de punto de función
La medida de punto de función se diseñó originalmentepara aplicarse a aplicaciones de sistemas de informaciónde gestión. Para acomodar estas aplicaciones,se enfatizó la dimensión de datos (los valores de dominiosde información tratados anteriormente) para laexclusión de dimensiones (control) funcionales y decomportamiento. Por esta razón, la medida del punto defunción era inadecuada para muchos sistemas de ingenieríay sistemas empotrados (que enfatizan función ycontrol). Para remediar esta situación se ha propuestoun número de extensiones a la métrica del punto de funciónbásica.8%CLAVEla extensión de los puntos de función se utilizaen la ingeniería, en las aplicaciones de tiempo realy en las aplicaciones orientadas al control.Una extensión del punto de función es la llamadapuntos de características [JON9 11; es una ampliaciónde la medida del punto de función que se puede aplicara sistemas y aplicaciones de ingeniería del software. Lamedida de punto de característica acomoda a aplicacionesen donde la complejidad del algoritmo es alta.Las aplicaciones de software de tiempo real, de controlde procesos, y empotradas tienden a tener alta complejidadde algoritmos y por lo tanto son adecuadas parael punto de característica. Además,la métrica del punto de característica cuenta una característicanueva del software -los algoritmos-. Un algoritmo se define como un problema de cálculo limitado que se incluye dentro de un programa de computadoraespecífico. Invertir una matriz, decodificaruna cadena de bits o manejar una interrupción son ejemplos de algoritmos.

De Interés.!