Lecciones de Software Libre

Angel E. Mendoza

Mostrando entradas con la etiqueta Ingenieria del Software. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ingenieria del Software. Mostrar todas las entradas

¿Que es POO?

La programación Orientada a Objetos POO o también conocida como OOP, por sus siglas en inglés, es un habitual elemento en las aplicaciones de Software Libre.

La POO, es lo que se conoce como un paradigma o modelo de programación. Esto significa que no es un lenguaje específico, o una tecnología, sino una forma de programar, una manera de plantearse la programación. No es la única (o necesariamente mejor o peor que otras), pero se ha constituido en una de las formas de programar más populares e incluso muchos de los lenguajes que usamos hoy día lo soportan o están diseñados bajo ese modelo.

Lo que caracteriza a la POO es que intenta llevar al mundo del código lo mismo que encontramos en El Mundo Real. Cuando miramos a nuestro alrededor ¿qué vemos? pues, cosas, objetos, pero podemos reconocer estos objetos porque cada objeto pertenece a una clase, eso nos permite distinguir, por ejemplo, un perro de un auto (porque son de clases diferentes) y también un TV de otro (porque, aunque sean iguales, cada uno es un objeto distinto). Éste es el modelo que la POO intenta seguir para estructurar un sistema.

Para entender mejor lo que es la POO e introducir algunos de los conceptos relacionados a este paradigma, veamos los siguientes videos
:








En los post siguientes hablaremos más detalladamente de estos conceptos.

Software Libre y la Ingenieria de Software Libre. Extractos

Al respecto de la ingeniería de software y su aplicación en entornos de software libre, se han escrito cierta cantidad de publicaciones. Dos de ellas llamaron mi atención, por lo que les presento un extracto de cada una de ellas.

La Ingeniería de Software Libre y sus Herramientas Aplicadas a Proyectos Informáticos por Mauro Callejas Cuervo
La Ingeniería de Software Libre (ISL) permite que la metodología para el desarrollo de aplicaciones se lleve a cabo de manera amplia, ya sea utilizando un enfoque estructurado de análisis y diseño [Witten et al, 1996], [Yourdon, 1990], [Kendall & Kendall, 1998], un enfoque orientado por objetos [Meyer, 1998] o algún otro tipo de paradigma; además no limita a los analistas y diseñadores a utilizar una técnica de modelado y diagramación, como UML[Jacobson et al, 1999] o el modelado estructurado, ni ofrece recomendaciones que permitan evaluar el nivel de calidad de una organización, como lo promueve The Capability Maturity Model, CMM [Paulk et al, 1993]. Más bien se fundamenta en que se debe trabajar en equipo, con el fin de fomentar una mayor participación de elementos para el desarrollo óptimo de aplicaciones, sin dejar de lado la utilización de técnicas y herramientas que aquí se mencionan. Además, se debe tener en cuenta el tiempo y los recursos asignados para cumplir con las tareas involucradas, evitando la pérdida de tiempo o abandono de los proyectos.
Con la ISL se pretende promover el uso de sistemas operativos, lenguajes de programación, bases de datos y demás herramientas de software de carácter libre para la creación de aplicaciones.


Ingeniería del Software Libre. Abriendo una nueva rama de la Ingeniería del software por Gregorio Robles

En cierta medida, la ingeniería del software libre pretende desposeer de esa "magia" que parece que es intrínseca a los desarrollos de software libre y cuantificar unos parámetros que nos permitan predecir con exactitud costes, plazos y recursos humanos. Como consecuencia, aunque podemos considerar que en la actualidad el software libre adolece de estos métodos en contraposición a las formas de desarrollo tradicionales, también es cierto que, por los motivos que se están desarrollando en este artículo, no le falta precisamente potencial para que esta situación cambie en el futuro.
Igualmente pretende ser una forma de introducir las virtudes de la ingeniería del software en el desarrollo a veces demasiado anárquico de software libre. Será tarea de la ingeniería del software encontrar formas para que los desarrolladores de software libre produzcan software de gran calidad siguiendo paradigmas de creación, producción y mantenimiento que así lo certifiquen.

La ingeniería del software libre cuenta como objetivo a corto plazo poder realizar un análisis completo al desarrollo de software libre que permita indagar profundamente en los procesos que están involucrados, así como en las consecuencias que ciertas acciones tienen sobre el conjunto del desarrollo.

...Utilizando símiles históricos, la situación que se vive en la actualidad en la generación de software libre concuerda con la que describió de la economía Adam Smith hace casi tres siglos. Smith constató que existían unos parámetros económicos claros (oferta y demanda), unas formas de interaccionar (transacciones) y consecuencias económicas palpables. Sin embargo, no entendía el modelo general que hacía que todo tuviera sentido y funcionara conjuntamente. Lo que hacía que oferta y demanda cuadrasen era para él literalmente una "mano negra", que más tarde se dio a llamar mercado. Hoy en día todos los ciudadanos, aún sin comprenderlo completamente, tenemos más o menos una idea intuitiva de lo que es un mercado.
Gracias a la definición de mercado y a la investigación de los elementos que lo componen, las ciencias económicas han dado un paso de gigante que junto con la revolución industrial ha llevado a un bienestar en los países industrializados nunca imaginado.
En cierto sentido, esta situación se vive hoy en día en el software libre, donde nos encontramos con que existe una especie de "mano negra" que hace que mágicamente se genere software libre. Sin embargo, es necesario llegar a conocer con mayor profundidad las complejas interacciones para poder comprender lo que está sucediendo y llegar a predecir el futuro. También debe servir como punto de partida de acumulación de experiencia, ya que la ingeniería en realidad no es otra cosa que un conjunto de experiencias exitosas debidamente empaquetadas para poder ser reproducidas una y otra vez.


Efecto de la Ingenieria de Software

El siguiente video muestra el efecto de la ingeniería del software en el desarrollo de aplicaciones:


Ingenieria del Software

Ingeniería de software es la disciplina o área de la informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad.

Esta ingeniería trata con áreas muy diversas de la informática y de las ciencias de la computación, tales como construcción de compiladores, sistemas operativos, o desarrollos Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a infinidad de áreas: negocios, investigación científica, medicina, producción, logística, banca, control de tráfico, meteorología, derecho, Internet, Intranet, etc.

Una definición precisa aún no ha sido contemplada en los diccionarios, sin embargo se pueden citar las enunciadas por algunos de los más 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).
  • Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993)
Principales áreas de estudio y/o investigación
  • Métodos y Metodologías de Desarrollo de Software
  • Procesos de Desarrollo de Software
  • Gestión de Proyectos de Software
  • Medición y Estimación de Software
  • Ingeniería de Requisitos / Requerimientos
  • Ingeniería de Software Empírica
  • Gestión de Riesgos
  • Usabilidad de Software
  • Evaluación de Software
  • Métricas de Software
  • Calidad de Software
  • Métodos Formales
  • Ingeniería Web

Mapa Mental: Ingeniería de Software en entornos de Software Libre


Este mapa resume los principales elementos que relacionan al Software Libre y la Ingeniería de software
.

Translate

Seguidores