miércoles, 26 de septiembre de 2012

Ingeniería de Software




Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software.



Es la aplicación de la ingeniería al software, ya que integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería.



Se pueden citar otras definiciones enunciadas por prestigiosos autores:
Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)

Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).

Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).


Etapas del proceso

La ingeniería de software requiere llevar a cabo numerosas tareas, dentro de etapas como las siguientes:

Análisis de requerimientos

Extraer los requisitos y requerimientos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocer requerimientos incompletos, ambiguos o contradictorios. El resultado del análisis de requerimientos con el cliente se plasma en el documento ERS,Especificación de Requerimientos del Sistema, cuya estructura puede venir definida por varios estándares, tales como CMMI. Asimismo, se define un diagrama de Entidad/Relación, en el que se plasman las principales entidades que participarán en el desarrollo del software.

La captura, análisis y especificación de requerimientos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se han ideado modelos y diversos procesos de trabajo para estos fines. Aunque aún no está formalizada, ya se habla de la Ingeniería de requerimientos, por ejemplo en dos capítulos del libro de Sommerville "Ingeniería del software" titulados "Requerimientos del software" y "Procesos de la Ingeniería de Requerimientos".

La IEEE Std. 830-1998 normaliza la creación de las especificaciones de requerimientos de software (Software Requirements Specification).

Especificación

La especificación de requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requisitos del software.
Entre las técnicas utilizadas para la especificación de requisitos se encuentran:

Caso de uso,
Historias de usuario,

Siendo los primeros más rigurosas y formales, los segundas más ágiles e informales.


Arquitectura

La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy.

El rol en el cual se delegan todas estas actividades es el del Arquitecto.

El arquitecto de software es la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas.

La arquitectura de sistemas en general, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o de software.

La arquitectura de software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validado, por ejemplo por medio de diagramas de secuencia. Un diseño arquitectónico describe en general el cómo se construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo:

Diagramas de clases
Diagramas de base de datos
Diagrama de despliegue
Diagrama de secuencia

Siendo los dos primeros los mínimos necesarios para describir la arquitectura de un proyecto que iniciará a ser codificado. Depende del alcance del proyecto, complejidad y necesidades, el arquitecto elige qué diagramas elaborar.
Las herramientas para el diseño y modelado de software se denominan CASE, (Computer Aided Software Engineering) entre las cuales se encuentran:

Enterprise Architect
Microsoft Visio for Enterprise Architects

Programación

Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.

Prueba

Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo. 

Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. En general hay dos grandes formas de organizar un área de pruebas, la primera es que esté compuesta por personal inexperto y que desconozca el tema de pruebas, de esta forma se evalúa que la documentación entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede entenderlos y el software hace las cosas tal y como están descritas.

El segundo enfoque es tener un área de pruebas conformada por programadores con experiencia, personas que saben sin mayores indicaciones en qué condiciones puede fallar una aplicación y que pueden poner atención en detalles que personal inexperto no consideraría.

Documentación

Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML),diagramas de casos de uso, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.

Mantenimiento

Fase dedicada a mantener y mejorar el software para corregir errores descubiertos e incorporar nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo del software inicial. Alrededor de 2/3 del tiempo de ciclo de vida de un proyecto4 está dedicado a su mantenimiento. Una pequeña parte de este trabajo consiste eliminar errores (bugs); siendo que la mayor parte reside en extender el sistema para incorporarle nuevas funcionalidades y hacer frente a su evolución.

lunes, 24 de septiembre de 2012

Dimensiones de los Sistemas de Informacion


Un sistema de información (SI) 


Es un conjunto de elementos orientados al tratamiento y administración de datos e información, organizados y listos para su uso posterior, generados para cubrir una necesidad u objetivo. Dichos elementos formarán parte de alguna de las siguientes categorías:

  • personas
  • datos
  • actividades o técnicas de trabajo
  • Recursos materiales en general (generalmente recursos informáticos y de comunicación, aunque no necesariamente).

DIMENSIONES DE LOS SISTEMAS DE INFORMACION

  • DIRECCIONALIDAD


Direccional es algo que puede orientarse o dirigirse hacia una dirección. Esta cualidad se conoce como direccionalidad, un concepto que está asociado a la idea de dirección (el trayecto que realiza un cuerpo al moverse, la tendencia hacia una cierta meta o la guía que permite dirigir a alguien o algo).

En este sentido podemos exponer que, aunque existen multitud de elementos que se caracterizan por dicha cualidad, una de las formas de direccionalidad más estudiada es la que se produce en la escritura. Y es que es importante que ya desde pequeños se enseñe a las personas a realizar una correcta dirección de las grafías.


  •  LOCALIZACION

La localización define la capacidad del individuo de determinar la ubicación de una fuente sonora en el espacio.
La localización sólo es posible a partir de la audición biaural. Con un solo oído no es posible localizar fuentes sonoras.
El sistema auditivo utiliza un conjunto de pistas para determinar la ubicación de la fuente sonora en el espacio.
Por lo general se establecen tres planos característicos en los experimentos destinados a estudiar la localización por parte del ser humano.



  • PROPIEDAD
Derecho o poder que tiene una persona de poseer una cosa y poder disponer de ella dentro de los límites legales: propiedad privada.



Cosa que pertenece a una persona, especialmente si es un bien inmueble, como por ejemplo un terreno o un edificio: tiene innumerables propiedades.


Cualidad esencial y característica de una persona o de una cosa: la tila tiene propiedades calmantes; las propiedades físicas de una sustancia.


— asociativa Propiedad de una operación matemática, como la suma, por la cual se verifica que a + (b + c) = (a + b) + c, donde a, b y c son tres números cualesquiera.



— conmutativa Propiedad de una operación matemática, como la suma, por la cual se verifica que a + b = b + a, donde a y b son dos números cualesquiera.



— distributiva Propiedad de la suma con respecto de la multiplicación, por la cual se verifica que a · (b + c) = a · b + a · c, donde a, b y c son tres números reales cualesquiera.

  • ENCONTRABILIDAD
La encontrabilidad es algo así como hermana de la usabilidad y de la accesibilidad. Todas ellas variables que cada vez cobran más fuerza entre quienes se dedican al desarrollo de webs. 

La gracia de la encontrabilidad es que hace que los contenidos digitales sean fácilmente localizados por los buscadores. Es sin duda un elemento más a considerar si queremos nuestro sitio sea visitado y todo un campo laboral para quienes trabajamos con palabras.

Está claro que no es lo mismo que un sitio web aparezca en el primer lugar entre los resultados de Google, que en la página 10.

  • SIGNIFICACION

Representación o sentido de un fenómeno o hecho determinado: la significación es un proceso que asocia un ser, una idea o un hecho a un signo que la representa.

Sentido de una palabra u oración.

Objeto significado o representado.

Importancia, influencia o valor que tiene un hecho: los cambios políticos han tenido gran significación en la sociedad española.

  • TEMPORALIDAD

Es la referencia del tiempo en que sucede el acontecimiento histórico, en relación con con eventos anteriores o posteriores, ya que siempre se da una referencia o fecha que establezce un punto determinado en el registro del tiempo; también se refiere a la transitoriedad de las cosas , como cuando se menciona "la temporalidad de las culturas antiguas".




  • TRANSPORTABILIDAD
Capacidad de un programa de poder transportarse o instalarse en cualquier sistema operativo.

Son programas que por ser tan pequeños y por no tener muchos requisitos para instalarlos en drives removibles los puedes poner en tu Flash Drive USB; así cuando necesites de ellos y te encuentres utilizando una computadora ajena, simplemente conectas tu Flash-Drive al puerto USB y tendrás un ambiente de trabajo personalizado con tus programas favoritos. Otra cosa digna de señalar es que los programas que se mencionan, aparte de ser pequeños y útiles, también son freeware, no requieren pago alguno de licencia.



  • VISUALIZACIÓN
Visualización es la generación de una imagen mental o una imagen real de algo abstracto o invisible. Hay varias formas de visualización:



La visualización científica se dedica a la transformación de datos científicos pero abstractos en imágenes. Ejemplos son el dibujo de diagramas para visualizar funciones matemáticas o gráficos 3D para visualizar el interior de un hombre.



La visualización creativa es una técnica psicológica para alcanzar una condición emocional deseada a través de imaginar una imagen concreta. Por ejemplo, algunos deportistas se estimulan imaginando la ejecución perfecta de sus movimientos, y empleados estresados se relajan imaginando una escena tranquilizadora.




  • RENOVABILIDAD


La renovabilidad ecológica es la capacidad de renovación que poseen los sistemas para auto renovarse o para asimilar factores externos a el como por ejemplo contaminantes:

ejemplo el océano puede recibir aguas residuales de muchas partes y lugares del mundo pero al estar en constante movimiento y al ser una masa de agua tan grande, esta se renueva y el contaminante es prácticamente diluido.