SlideShare una empresa de Scribd logo
1 de 20
UNIVERSIDAD NACIONAL DE
CHIMBORAZO
ESCUELA:
INGENIERÍA INDUSTRIAL
NOMBRE:
OMAR GAIBOR
DOCENTE:
ING. PATRICIO VILLACRÉS
TEMA:
HERRAMIENTAS DEL
SOFTWARE LIBRE PARA
INGENIERÍA
MARZO 2013 – JULIO 2013
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.
En el 2004, en los Estados Unidos, la Oficina de Estadísticas del
Trabajo (U. S. Bureau of Labor Statistics) contó 760.840
ingenieros de software de computadora. El término "ingeniero de
software", sin embargo, se utiliza en forma genérica en el
ambiente empresarial, y no todos los ingenieros de software
poseen realmente títulos de ingeniería de universidades
reconocidas.
Algunos autores consideran que "desarrollo de software" es un
término más apropiado que "ingeniería de software" para el
proceso de crear software. Personas como Pete McBreen (autor de
"Software Craftmanship") cree que el término IS implica niveles
de rigor y prueba de procesos que no son apropiados para todo
tipo de desarrollo de software.
Indistintamente se utilizan los términos "ingeniería de software"
o "ingeniería del software". En Hispanoamérica el término usado
normalmente es el primero de ellos.
La creación del software es un proceso intrínsecamente creativo
y la ingeniería del software trata de sistematizar este proceso
con el fin de acotar el riesgo del fracaso en la consecución del
objetivo creativo por medio de diversas técnicas que se han
demostrado adecuadas en base a la experiencia previa.
La IS se puede considerar como la ingeniería aplicada al
software, esto es, por medios sistematizados y con herramientas
preestablecidas, la aplicación de ellos de la forma más eficiente
para la obtención de resultados óptimos; objetivos que siempre
busca la ingeniería. No es sólo de la resolución de problemas,
sino más bien teniendo en cuenta las diferentes soluciones,
elegir la más apropiada.
Índice
• 1 Implicaciones socioeconómicas
• 1.1 Económicamente
• 1.2 Socialmente
• 2 Metodología
• 2.1 Etapas del proceso
• 2.1.1 Análisis de requisitos
• 2.1.2 Especificación
• 2.1.3 Arquitectura
• 2.1.4 Programación
• 2.1.5 Prueba
• 2.1.6 Documentación
• 2.1.7 Mantenimiento
• 3 Modelos y filosofías de desarrollo de software
• 3.1 Naturaleza de la IS
• 3.1.1 Matemáticas
• 3.1.2 Creación
• 3.1.3 Gestión de Proyectos
• 3.1.4 Arte
• 4 Responsabilidad
• 5 Educación ética
• 5.1 Organizaciones
Implicaciones socioeconómicas
La ingeniería de software afecta a la economía y las sociedades
de variadas formas.
Económicamente
En los Estados Unidos, el software contribuyó a una octava parte
de todo el incremento del PIB durante la década de 1990
(alrededor de 90,000 millones de dólares por año), y un noveno
de todo el crecimiento de productividad durante los últimos años
de la década (alrededor de 33.000 millones de dólares
estadounidenses por año). La ingeniería de software contribuyó a
US$ 1 billón de crecimiento económico y productividad en esa
década. Alrededor del globo, el software contribuye al
crecimiento económico en formas similares, aunque es difícil de
encontrar estadísticas fiables. [cita requerida]
Además, con la industria del lenguaje está hallando cada vez más
campos de aplicación a escala global.
Socialmente
La ingeniería de software cambia la cultura del mundo debido al
extendido uso de la computadora. El correo electrónico (E-mail), la
WWW y la mensajería instantánea permiten a la gente interactuar en
nuevas formas. El software baja el costo y mejora la calidad de
los servicios de salud, los departamentos de bomberos, las
dependencias gubernamentales y otros servicios sociales. Los
proyectos exitosos donde se han usado métodos de ingeniería de
software incluyen a GNU/Linux, el software del transbordador espacial,
los cajeros automáticos y muchos otros.
Metodología
Un objetivo de décadas ha sido el encontrar procesos y
metodologías, que sean sistemáticas, predecibles y repetibles, a fin
de mejorar la productividad en el desarrollo y la calidad del
producto software.
Etapas del proceso
La ingeniería de software requiere llevar a cabo numerosas
tareas agrupadas en etapas, al conjunto de estas etapas se le
denomina ciclo de vida. Las etapas comunes a casi todos los
modelos de ciclo de vida son las siguientes:
Análisis de requisitos
Extraer los requisitos 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 habilidad y
experiencia para reconocer requisitos incompletos, ambiguos o
contradictorios. El resultado del análisis de requisitos con el
cliente se plasma en el documento ERS, Especificación de
Requisitos 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 requisitos (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 requisitos.
La IEEE Std. 830-1998 normaliza la creación de las
especificaciones de requisitos de software (Software
Requirements Specification).
No siempre en la etapa de "análisis de requisitos" las distintas
metodologías de desarrollo llevan asociado un estudio de
viabilidad y/o estimación de costes. El más conocido de los
modelos de estimación de coste del software es el modelo
COCOMO
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.
Modelos y filosofías de desarrollo de software
La ingeniería de software dispone de varios modelos, paradigmas y
filosofías de desarrollo, en los cuales se apoya para la construcción
del software, entre ellos se puede citar:
• Modelo en cascada o Clásico (modelo tradicional)
• Modelo de prototipos
• Modelo en espiral
• Desarrollo por etapas
• Desarrollo iterativo y creciente o Iterativo e Incremental
• RAD (Rapid Application Development)
• Desarrollo concurrente
• Proceso Unificado
• RUP (Proceso Unificado de Rational)
Naturaleza de la IS
La ingeniería de software tiene que ver con varios campos en
diferentes formas:
Matemáticas
Los programas tienen muchas propiedades matemáticas. Por
ejemplo la corrección y la complejidad de muchos algoritmos son
conceptos matemáticos que pueden ser rigurosamente probados.
El uso de matemáticas en la IS es llamado métodos formales.
Creación
Los programas son construidos en una secuencia de pasos. El
hecho de definir propiamente y llevar a cabo estos pasos, como
en una línea de ensamblaje, es necesario para mejorar la
productividad de los desarrolladores y la calidad final de los
programas. Este punto de vista inspira los diferentes procesos y
metodologías que se encuentran en la IS.
Gestión de Proyectos
El desarrollo de software de gran porte requiere una adecuada
gestión del proyecto. Hay presupuestos, establecimiento de
tiempos de entrega, un equipo de profesionales que liderar.
Recursos (espacio de oficina, insumos, equipamiento) por
adquirir. Para su administración se debe tener una clara visión y
capacitación en Gestión de Proyectos.
Arte
Los programas contienen muchos elementos artísticos. Las
interfaces de usuario, la codificación, etc. Incluso la decisión para
un nombre de una variable o una clase. Donald Knuth es famoso
por argumentar a la programación como un arte.
Responsabilidad
La responsabilidad en la ingeniería del software es un concepto
complejo, sobre todo porque al estar los sistemas informáticos
fuertemente caracterizados por su complejidad, es difícil apreciar
sus consecuencias.
En la ingeniería del software la responsabilidad será compartida
por un grupo grande de personas, que comprende desde el
ingeniero de requisitos, hasta el arquitecto software, y contando
con el diseñador, o el encargado de realizar las pruebas. Por
encima de todos ellos destaca el director del proyecto. El
software demanda una clara distribución de la responsabilidad
entre los diferentes roles que se dan en el proceso de
producción.
El ingeniero del software tiene una responsabilidad moral y legal
limitada a las consecuencias directas.
Educación ética
Organizaciones
• IEEE Computer Society
• Association for Computing Machinery (ACM)
• Software Engineering Institute (SEI)
• British Computer Society (BCS)
• RUSSOFT Association
• Society of Software Engineers
Lista de software
Creación de documentos e informes
OpenOffice.org
Es una suite de oficina inspirada en la de Microsoft. Si estás
totalmente acostumbrado a las herramientas de M$, ésta es
tu opción. Además trae el OpenOffice Draw, que es un
programa de dibujo vectorial similar al Corel Draw. Hay
muchos otros paquetes similares (KOffice, SIAG Office, GNOME
Office…) y también programas como Abiword y Gnumeric, todos
con sus pros y sus contras.
LaTeX
¿Realmente pensás hacer el informe de tu tesis en M$
Word…? LaTeX es un lenguaje para crear documentos. El
método es bastante similar a la creación de un programa.
Tenés que escribir el “código fuente” de tu documento (en
cualquier editor de texto plano), y después compilarlo. Tiene
una fuerte orientación a las matemáticas, permitiendo
escribir fórmulas y símbolos de todo tipo. Además, es
totalmente estable.
La curva de aprendizaje es inversa a la de programas como
M$ Word: al principio cuesta arrancar, pero una vez que te
sentís cómodo, podés hacer un informe técnico de calidad
profesional en poco tiempo.
El formato de los documentos creados en LaTeX es
generalmente Postscript (PS) o PDF, pero pueden ser
fácilmente convertidos a otros formatos como HTML o
incluso texto plano. Este documento fue creado en LaTeX.
Kile
Sirve para editar archivos fuente de LaTeX, con syntax
highlighting y macros para los comandos LaTeX más
utilizados. Ayuda muchísimo en el ciclo de
editar/compilar/ver resultado.
LyX
Es un front-end de LaTeX, casi WYSIWYG (What You See Is
What You Get), permitiendo crear documentos con la calidad
de LaTeX, pero con la facilidad de los procesadores de textos
usuales.
DocBook
Es otro lenguaje de creación de documentos similar a LaTeX,
pero basado en XML / SGML.
Edición de imágenes / bitmaps
The GIMP
Es el programa de edición de bitmaps. Le pisa los talones al
Photoshop.
Dia
Permite dibujar todo tipo de diagramas, grafos, cuadros
sinópticos, etc, que pueden ser exportados a Postscript
(para incluir, por ejemplo, en un documento LaTeX).
XFig
Es un programa para crear gráficos vectoriales (es decir,
para dibujo general). Las imágenes creadas pueden ser
convertidas a muchos formatos usando el programa transfig.
Permite incluir fórmulas de LaTeX en los dibujos, por lo que
es ideal para acompañar los documentos LaTeX con figuras.
Inkscape
Un programa de dibujo vectorial, similar al Corel Draw.
Gráfica de datos / funciones matemáticas
Gnuplot
Puede graficar datos numéricos o funciones matemáticas,
en 2D y 3D. Es muy flexible y totalmente configurable, pero
para usarlo bien hay que aprender el lenguaje, ya que es un
programa manejado mediante línea de comandos.
Kile
Ya fue mencionado, pero acá está de nuevo, porque trae un
front-end gráfico para gnuplot. Significa que podés usar
gnuplot sin aprender los comandos.
Sistemas de álgebra y cálculo simbólico
Maxima
Es un sistema de álgebra bastante completo.
YACAS
Otro sistema de álgebra, de propósito general, liviano y fácil
de usar.
Pari-GP
Es un paquete para teoría numérica asistida por
computadora.
Giac/XCas
Otro sistema de álgebra, disponible como un programa
independiente, o bien como una librería C++.
Mathomatic
Un sistema de álgebra de propósito general, altamente
portable.
Qalculate!
A primera vista parece una calculadora de escritorio sencilla,
pero bajo su interfaz simple e intuitiva se esconde un
paquete matemático muy completo y fácil de usar, que
permite hacer cálculo numérico y simbólico, conversión de
unidades, gráficos (usando gnuplot) y muchas cosas más.
Herramientas/Lenguajes de cálculo numérico
Octave
Un sistema de cálculo numérico muy completo con un
lenguaje casi compatible con Matlab. Utiliza a Gnuplot como
back-end para graficar.
Scilab
Otro paquete de cálculo numérico. Tal vez ofrece más
funcionalidades que Octave, pero su lenguaje es menos
compatible con Matlab.
Yorick
Es un lenguaje de programación interpretado, para cálculos
y simulaciones numéricas.
PDL
Perl Data Language añade al lenguaje Perl la habilidad de
almacenar y manipular grandes cantidade de datos en
arreglos n-dimensionales, que son el pan y la manteca de la
computación científica. La idea es transformar a Perl en un
lenguaje numérico similar a Matlab. Se incluye un entorno
interactivo de línea de comandos, además del módulo Perl
(PDL) para usar en scripts.
Euler
Es un laboratorio numérico y un lenguaje de programación.
El sistema puede manejar números, vectores y matrices
reales, complejos y en forma de intervalos. También existe
una versión con interfaz gráfica, Euler for GTK+.
Compiladores/Intérpretes
gcc
GNU Compiler Collection, (y no GNU C Compiler). Es el
compilador de GNU, que contiene front-ends para C, C++,
Objective-C, Fortran, Java, y Ada. Está incluido en cualquier
distribución de GNU/Linux (de hecho, casi todo el sistema
operativo se compila en gcc).
Free Pascal
Es un compilador Pascal semánticamente compatible con
TP 7.0, así como la mayoría de las versiones de Delphi.
GNU Pascal
El compilador Pascal de GNU, que utiliza a gcc como back-
end. Es compatible con Borland Pascal, y soporta muchas de
sus unidades (units).
Perl
Perl es un lenguaje interpretado de alto nivel, optimizado
para procesar archivos de texto arbitrarios, extraer datos de
ellos, e imprimir informes basados en esa información.
Python
Un lenguaje de programación interpretado, interactivo y
orientado a objetos, que combina una gran potencia con una
alta claridad en la sintaxis. Esta característica hace que
Python sea ideal, tanto para el que está dando sus primeros
pasos en programación, como para el programador
avanzado.
PHP
Lenguaje de programación interpretado, fuertemente
orientado a desarrollo web.
gprolog
Un intérprete/compilador Prolog, que cumple casi
completamente con el estándar ISO Prolog, añadiendo
algunas extensiones bastante útiles. Incluye resolución de
condiciones sobre dominios finitos (FD), y una potente
interfaz bidireccional entre Prolog y C.
SWI-Prolog
Otro intérprete/compilador Prolog con licencia libre. Incluye
recolector de basura (garbage collection) e interfaz C/C++,
y ofrece una buena performance general.
Entornos de programación (IDEs – Integrated Development
Environments)
Anjuta
Es un IDE para crear aplicaciones GNOME/Gtk+ con Glade, o
simplemente para crear aplicaciones genéricas, en C/C++, o
cualquier otro lenguaje.
KDevelop
Puede generar aplicaciones genéricas, o GUIs usando Qt,
KDE o GNOME, en C/C++.
Kylix
Kylix := Delphi in [Linux]. Es software propietario, pero el
Kylix Personal Edition es gratuito.
ViM / Emacs
Son dos editores de texto plano tan flexibles que pueden
utilizarse como entornos de programación para
prácticamente cualquier lenguaje.
Quanta Plus
Es un entorno de desarrollo para HTML con soporte PHP. Está
diseñado para el desarrollo rápido de sitios web.
Eclipse
Un entorno de desarrollo integrado, especialmente orientado
a proyectos en Java.
Mono
Entorno de desarrollo .NET.
Debugging
gdb
El debugger de GNU. Puede depurar cualquier programa
compilado en gcc con la opción -g. Se maneja mediante
línea de comandos.
DDD
Data Display Debugger es un front-end gráfico muy
completo para varios debuggers, incluyendo el gdb, y para
varios lenguajes (C/C++, Java, Pascal…).
insight
Es otro front-end gráfico para gdb.
Herramientas auxiliares para programación
Doxygen
Sistema para generar automáticamente la documentación
de programas escritos en C/C++.
Umbrello
Modelador UML.
RCS / CVS / Subversion / Darcs
Sistemas de control de versiones.
2.10 Redes
Ethereal
Sniffer y analizador de tráfico de red, gráfico.
tcpdump
Sniffer y analizador de tráfico de red, de consola.
Apache
Servidor web.
2.11 Electrónica
Spice
Es la versión original del programa de simulación creado en
la Universidad de California, Berkeley. Se maneja mediante
línea de comandos, así que no esperes ver un programa de
dibujo de esquemáticos con lucecitas y colores. El circuito a
simular debe ser ingresado en un archivo de texto, y el
Spice se limita a simularlo y entregarte los resultados. El
paquete viene con nutmeg, que es un programa que sirve
para interpretar y graficar los datos de la simulación, pero
no es demasiado flexible.
Debido a problemas de licenciamiento, el Spice no puede ser
distribuido en binarios, así que es necesario bajar el código
fuente y compilarlo. Si usás Debian, en:
http://www.eda.ei.tum.de/~mcp/spicedeb/
se explica cómo crear un paquete .deb a partir del código
fuente del spice3f5.
ngspice
Es un proyecto que tiene como objetivo crear una versión
mejorada del spice (con algunos bugs arreglados) y con
licencia GPL. El paquete viene con ngnutmeg, que es similar
al nutmeg del spice. Sirve para graficar los datos de salida
de las simulaciones.
Gnucap
GNU Circuit Analysis Package. Este simulador no está
basado en Spice, y su funcionamiento es algo diferente. La
principal ventaja de esto es que se trata de un software
enteramente libre. Se incluyen modelos para BJT, MOSFET y
diodos.
Oregano
Es un front-end gráfico para spice, ngspice o Gnucap.
Permite dibujar los circuitos con una interfaz amigable y
simularlos fácilmente. Richard Hult, el autor de Oregano,
abandonó el proyecto hace algún tiempo, y algunos
miembros del LUGFI decidieron continuarlo. Aun está en
desarrollo.
Kicad
Un grupo de programas para la creación de esquemáticos y
circuitos impresos. La interfaz es similar a la de Orcad.
Electric
Es un sistema de dibujo asistido, simulación y producción de
circuitos eléctricos, muy completo y sofisticado, pero
también bastante difícil de usar.
TkGate
Es un simulador de circuitos digitales, con una interfaz
amigable e intuitiva, y varias características interesantes,
como un compilador genérico de microcódigo/macrocódigo
para crear archivos de inicialización de memorias.
Xcircuit
Es un programa que permite dibujar circuitos eléctricos
(aunque puede ser utilizado también para dibujar otras
cosas). Es liviano, fácil de usar y produce resultados con
calidad profesional y en formato EPS, por lo que resulta ideal
para incluir circuitos en documentos LaTeX. También permite
generar archivos Spice para simular el circuito.
gEDA
GPL Electronic Design Automation. La buena noticia es que
GNU/Linux ya cuenta con un sistema integrado de diseño
electrónico, que contiene herramientas para creación de
esquemáticos, simulación y producción de circuitos,
distribuido íntegramente como software libre. La mala
noticia es que aun está en fase de desarrollo.
Programación de microcontroladores
Una lista (no completa) de los distintos ensambladores,
compiladores, simuladores, depuradores y programadores
de micros: sdcc, ASEM-51, uisp, avrp, …
HERRAMIENTAS DE SOFTWARE LIBRE APLICADAS EN LA
INGENIERIA
Objetivos:
Conocer los conceptos relativos a la ingeniería del software.
Diseñar un software orientado a objetos con el lenguaje UML.
Diseñar juegos de pruebas y métodos de control de calidad.
Construir programas en entorno GNU. Trabajar con las herramientas de control de versiones.
Gestionar el software y trabajar con los sistemas de empaquetamiento de programas.
Documentar el software.
Conocer y utilizar los recursos existentes y las comunidades virtuales.
Contenido Programático
Programa del curso Ingeniería del software en entornos del software libre:
Introducción a la ingeniería del software
Control de calidad y pruebas
Comprovación del software
Control de calidad
Black-box testing
White-box testing: GDB
Desarrollo de un plan de control de calidad
Sistemas de gestión de errores: Bugzilla
Construcción de software en entorno GNU
AutoMake
Libtool
Control de versions (CMS)
Empaquetamiento y distribución de software
Sistemas de creación de documentación
HTML, XML, DocBook
Doxygen
Comunidades virtuales y recursos existentes
Freshmeat
SourceForge
Librerías estándar de programación
Qué es Linux?
Linux es, en un sentido muy amplio, un sistema operativo. Sin embargo, más
purista y específicamente, Linux es un kernel. El kernel de un sistema
operativo, se refiere a su núcleo. El kernel de un sistema operativo se
encarga de gestionar los recursos de la memoria, habilitar el acceso a los
sistemas de archivos, administrar recursos de red, y muchas cosas más.
1. ¿Y qué es GNU/Linux?
GNU/Linux es todo el conjunto de herramientas que hacen a Linux un
sistema operativo. GNU significa GNU is Not Unix y es el proyecto
mundial, de software libre, iniciado en 1984 por Richard M. Stallman.
GNU es lo que hace a Linux ser libre y abierto.
2. ¿Linux es gratis?
No: Linux es libre. El tipo de licencia que Linux posee es denominada
GPL, que fue desarrollada por el proyecto GNU. La licencia GPL permite
cuatro libertades fundamentales:
• Libertad de uso.
• Libertad de aprendizaje.
• Libertad de modificación.
• Libertad de redistribución.
3. ¿Linux es software libre?
Así es. Precisamente por poseer la licencia GNU/GPL.
4. ¿Dónde consigo Linux?
Cuando una persona "quiere Linux", lo que generalmente busca (o
necesita) es una distribución (comúnmente llamada distro). Una
distribución es un conjunto de aplicaciones y herramientas que conviven
con el núcleo de Linux cumpliendo fundamentalmente tres funciones:
• Instalación del sistema operativo.
• Configuraciones del sistema operativo, principalmente de las
piezas de hardware.
• Manejo de software.
Para mayor información sobre las distribuciones de Linux, Linux en peru,
vea mas información en el Portal de SomoLibres.org ademas de la sección
de distribuciones.
5. ¿Quién es el dueño de Linux?
Nadie. Comúnmente se confunde a Linux como una empresa, y se cree
que como Microsoft.com pertenece a la empresa Microsoft, entonces
Linux.com será el sitio oficial de la empresa Linux, o algo similar. Nada
de ello. Linux no lo posee nadie, ni siquiera su creador, Linus Torvalds, es
dueño de Linux. Él únicamente posee el registro del nombre, pero el
proyecto como tal es 100% libre.
6. ¿Hay que saber programar para usar Linux?
No.
7. Linux gráficamente, ¿es como MS-DOS?
Lo que mucha gente cree es que Linux, gráficamente, es como MS-DOS,
es decir, con una interfaz de texto, de consola. No. Las diversas interfaces
gráficas de Linux y sus escritorios, como GNOME o KDE superan
enormemente a Windows®, tanto en desempeño, como en atractivo
visual.
8. ¿Tengo que ser un gurú de la computación para usar Linux?
No. Las versiones más recientes de distribuciones como RedHat y
Mandrake dotan al usuario de una enorme facilidad de instalación y
configuración de su sistema.
9. ¿Puedo tener Windows y Linux en la misma computadora?
Sí.
10.Instalando Linux, ¿podré hacer todo lo que hacía en Windows? Usar
Word, Excel; navegar por Internet; chatear, etc.
Desde luego. Para cualquier tarea de oficina se pueden usar
OpenOffice.org, KOffice, StarOffice, etc. Y puedes usar una gran cantidad
de navegadores, y mensajeros instantáneos, como aMSN o GAIM.
En el marco del Programa Iberoamericano de Ciencia y Tecnología para el
Desarrollo, se han llevado a cabo Talleres Anuales de Herramientas de Cálculo en
Ingeniería en Alimentos, teniendo sede en España y numerosos países de
Latinoamérica. El siguiente sitio web:
reúne más de 90 herramientas de cálculo y aplicaciones (software) de descarga
libre, desarrolladas a lo largo de más de 8 años en los principales centros de
investigación en ingeniería química de Iberoamérica.
Si bien concentrándose principalmente en ingeniería de alimentos, también
incluye programas de cálculo de equipos (evaporadores, secadores, extracción
líquido-líquido), cálculos de fenomenos de transporte de calor y masa, programas
de ajuste de datos, cálculo de sistemas coloidales y otros. Se incluye la
documentación para cada programa y los nombres y afiliación de los autores.
Visite la página web.
¿Qué es un GLUG?
GNU/Linux es un movimiento mundial sin una estructura central, burocratizada o
entidad para controlar, coordinar o dirigir sus objetivos. Mientras esta situación es
una parte poderosa del sentido y calidad técnica de GNU/Linux como un sistema
operativo de una computadora, puede jugar en contra para ubicar recursos
humanos capacitados o educar usuarios.
En gran medida un GLUG local provee las respuestas a esta clase de cuestiones.
Debido a que no hay una una corporación de GNU/Linux capaz de bindar
informacion o soporte especializado, el GLUG local cumple los mismos roles que
una oficina regional de una gran corporación multinacional.
Funciones de un GLUG:
Difusión
El GLUG local juega un indispensable rol en promover el uso de GNU/Linux. Si
una persona conoce acerca de GNU/Linux a través del esfuerzo de un GLUG
local, entonces esa persona, como un nuevo usuario GNU/Linux, tiene una gran
ventaja: ella ya esta conciente de la existencia de una organización que la ayudará
a instalar, configurar y mantener GNU/Linux. Por está razón, es importante que
los GLUGs locales promuevan GNU/Linux porque su difusión es efectiva, bien
soportada y libre.
Educación
Podemos elegir el objetivo de educación simplemente porque no hay otra entidad
local de la cual usuarios GNU/Linux puedan recibir educación con orientación
técnica. Por otro lado un GLUG puede compartir la capacitación laboral, ya que
cada trabajador que expande sus habilidades en computación participando en un
GLUG local, es un trabajador menos que la empresa tiene que entrenar. Aún
usando y administrando una PC GNU/Linux en casa, que no es lo mismo que
administrar un data warehouse corporativo o sistemas de gran envergadura, es
mucho más complejo, más reconfortante y más educativo que administrar una PC
con Windows 95 en casa. Este objetivo no solo puede servir para capacitar
laboralmente, sino que puede convertirse en un servicio a la comunidad, ya que
como la tecnología de Información se vuelve una parte vital de la economía
global, un GLUG local puede introducir GNU/Linux en escuelas, pequeños
negocios, organizaciones comunitarias y sociales, y otros entornos no
corporativos. Esta tarea de promoción también ayuda al entrenamiento del público
en general acerca de GNU/Linux como un sistema operativo estilo Unix libre,
gratuito, etc. Como más y más de estas clase de organizaciones buscan establecer
una presencia en Internet o proveer acceso remoto a sus trabajadores, estudiantes
o miembros, se originan oportunidades para los GLUGs locales de participar en la
vida de su comunidad educándolos acerca de un sistema operativo libre y
disponible gratuitamente. Esta clase de servicio a la comunidad permite al usuario
medio de GNU/Linux emular la clase de generosidad que ha caracterizado a
GNU/Linux y la comunidad de software libre desde un comienzo.
Soporte
La queja más frecuente de los nuevos usuarios de GNU/Linux, una vez que tienen
instalado el sistema, es la empinada curva de aprendizaje que no es única de los
GNU/Linux sino es una característica de todos los modernos Unix. Una vez que
esa curva es alcanzada, nos encontramos con el poder y flexibilidad de un sistema
operativo complejo. Un GLUG local es el único recurso que un nuevo usuario
tiene disponible para aplanar la curva de aprendizaje. Pero aún si un nuevo
usuario GNU/Linux no conoce esto todavía, el necesita más que soporte técnico,
el mundo de GNU/Linux y el software libre se mueven rápidamente. Los GLUGs
locales forman un invaluable conducto de información acerca de GNU/Linux. El
movimiento GNU/Linux tiene recursos como GNU/Linux Journal y GNU/Linux
Gazette www.ssc.com="" lg="", pero muchos usuarios desconocen estos recursos.
El GLUG local debe ser una fuente de información acerca de bugs reparados,
problemas de seguridad, parches, nuevos kernels, etc. Información vital para
usuarios nuevos y experimentados. Por otro lado los GLUGs tienen la oportunidad
de dar soporte a negocios y organizaciones locales. Este soporte tiene dos
aspectos. Primero, pueden soportar organizaciones y negocios que quieren usar
GNU/Linux como parte de su esfuerzo en Tecnología de Información y
computación. Segundo, pueden dar soporte a negocios y organizaciones locales
que desarrollen para GNU/Linux, soporten o instalen GNU/Linux. Si los GLUGs
locales pueden jugar un rol en ayudar a usuarios de negocios a evaluar soluciones
comerciales de GNU/Linux, entonces más vendedores de software se verán
estimulados para considerar GNU/Linux en sus desarrollos y planificaciones.
Socialización
Compartir experiencias, formando amistades y generando admiración y respeto
mutuo. La socialización en GNU/Linux, a diferencia del mundo real, puede
ocurrir a través de listas de correo,Foros o quizas Usenet, pero la mejor forma de
hacerlo es a través de seres humanos de carne y hueso y no por voces
incorporadas de una lista de correo, Forum o grupo de Usenet.
Actividades de un GLUG
Las dos maneras básicas que un GLUG puede realizar las funciones descriptas
anteriormente son: primero efectuar reuniones en un espacio físico y segundo
comunicarse a través del ciberespacio. Se pueden efectuar reuniones sociales,
presentaciones técnicas, Instalaciones y configuraciones de GNU/Linux, llevando
a cabo actividades como enseñar a miembros acerca de GNU/Linux, comparar
GNU/Linux con otros sistemas operativos, discutir las formas en que GNU/Linux
puede ser promovido, discutir el negocio de un grupo de usuarios, comer, beber y
ser felices.
Pero el ingrediente masimportante son las ganas, persistencia y sobre todo un
grupo Unido.
Que sea todo por el Software Libre y las comunidades van a funcionar a trabajar.
Pero es importante que los colegios y Universidades empieze esta aventura. No
solo tu ganaras sino tu Colegio, Universidad, Localidad, Región y sobre todo el
Pais.
Blog:
http://omarg5495.blogspot.com/

Más contenido relacionado

La actualidad más candente

Ingenieria del software
Ingenieria del software Ingenieria del software
Ingenieria del software Ana Pau Lara
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del softwareDaniel Merchan
 
Tema Ingenieria Del Software
Tema Ingenieria Del SoftwareTema Ingenieria Del Software
Tema Ingenieria Del Softwaregueste0af42
 
Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Yaskelly Yedra
 
Normas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de SoftwareNormas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de SoftwareEvelinBermeo
 
Ingeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemáticoIngeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemáticoSantiago Moha
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTECAMILO
 
U1T1 - Conceptos Básicos de Ingeniería del Software
U1T1 - Conceptos Básicos de Ingeniería del SoftwareU1T1 - Conceptos Básicos de Ingeniería del Software
U1T1 - Conceptos Básicos de Ingeniería del SoftwareLuis Eduardo Pelaez Valencia
 
Sistemas II- Ingeniería del software
Sistemas II- Ingeniería del software Sistemas II- Ingeniería del software
Sistemas II- Ingeniería del software llmdmyn14
 
Ingenieria de software -analizis literario
Ingenieria de software -analizis literarioIngenieria de software -analizis literario
Ingenieria de software -analizis literariodiegos08
 
Alfredo garcia ing.pdf
Alfredo garcia ing.pdfAlfredo garcia ing.pdf
Alfredo garcia ing.pdfAlfredo Garcia
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwareJORGE MONGUI
 
Evaluacion de la usabilidad
Evaluacion de la usabilidad Evaluacion de la usabilidad
Evaluacion de la usabilidad lissethr
 
Guia unidad ii fundamentacion de ingenieria del software
Guia unidad ii fundamentacion de ingenieria del softwareGuia unidad ii fundamentacion de ingenieria del software
Guia unidad ii fundamentacion de ingenieria del softwaresullinsan
 

La actualidad más candente (18)

Ingenieria del software
Ingenieria del software Ingenieria del software
Ingenieria del software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
ingenieriadesoftware1
ingenieriadesoftware1ingenieriadesoftware1
ingenieriadesoftware1
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del software
 
Tema Ingenieria Del Software
Tema Ingenieria Del SoftwareTema Ingenieria Del Software
Tema Ingenieria Del Software
 
Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)
 
Normas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de SoftwareNormas y Estándares de calidad para el desarrollo de Software
Normas y Estándares de calidad para el desarrollo de Software
 
Ingeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemáticoIngeniería de software es la aplicación de un enfoque sistemático
Ingeniería de software es la aplicación de un enfoque sistemático
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
 
U1T1 - Conceptos Básicos de Ingeniería del Software
U1T1 - Conceptos Básicos de Ingeniería del SoftwareU1T1 - Conceptos Básicos de Ingeniería del Software
U1T1 - Conceptos Básicos de Ingeniería del Software
 
Sistemas II- Ingeniería del software
Sistemas II- Ingeniería del software Sistemas II- Ingeniería del software
Sistemas II- Ingeniería del software
 
Ingenieria de software -analizis literario
Ingenieria de software -analizis literarioIngenieria de software -analizis literario
Ingenieria de software -analizis literario
 
conceptos de ingenieria de software
conceptos de ingenieria de softwareconceptos de ingenieria de software
conceptos de ingenieria de software
 
Alfredo garcia ing.pdf
Alfredo garcia ing.pdfAlfredo garcia ing.pdf
Alfredo garcia ing.pdf
 
Ingenieria de software Definiciones
Ingenieria de software DefinicionesIngenieria de software Definiciones
Ingenieria de software Definiciones
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Evaluacion de la usabilidad
Evaluacion de la usabilidad Evaluacion de la usabilidad
Evaluacion de la usabilidad
 
Guia unidad ii fundamentacion de ingenieria del software
Guia unidad ii fundamentacion de ingenieria del softwareGuia unidad ii fundamentacion de ingenieria del software
Guia unidad ii fundamentacion de ingenieria del software
 

Similar a Examen omar

Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobarEdwin Alexander
 
Actividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranActividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranMarijoalbarranb
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareT.I.C
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwareIngryd Cobain
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1Jose Garcia
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.Andrés Sorto
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.Andrés Sorto
 
FGFases en el desarrollo de un programa
FGFases en el desarrollo de un programaFGFases en el desarrollo de un programa
FGFases en el desarrollo de un programaJaneth Mtz
 
6. is construcción del software
6. is construcción del software6. is construcción del software
6. is construcción del softwareNagut
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwarejuankexmisiodj
 

Similar a Examen omar (20)

Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Actividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranActividad remedial_Maria_Albarran
Actividad remedial_Maria_Albarran
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del Software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
JavierPerez_Ing
JavierPerez_IngJavierPerez_Ing
JavierPerez_Ing
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.
 
Ingenieria de software final.
Ingenieria de software final.Ingenieria de software final.
Ingenieria de software final.
 
Proceso desarrollo software
Proceso desarrollo softwareProceso desarrollo software
Proceso desarrollo software
 
UNIDAD_I.ppt
UNIDAD_I.pptUNIDAD_I.ppt
UNIDAD_I.ppt
 
FGFases en el desarrollo de un programa
FGFases en el desarrollo de un programaFGFases en el desarrollo de un programa
FGFases en el desarrollo de un programa
 
Metodologiasde desarrollo de software
Metodologiasde desarrollo de softwareMetodologiasde desarrollo de software
Metodologiasde desarrollo de software
 
6. is construcción del software
6. is construcción del software6. is construcción del software
6. is construcción del software
 
Análisis de requisitos
Análisis de requisitosAnálisis de requisitos
Análisis de requisitos
 
Análisis de requisitos
Análisis de requisitosAnálisis de requisitos
Análisis de requisitos
 
Plan
PlanPlan
Plan
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.software
 

Examen omar

  • 1. UNIVERSIDAD NACIONAL DE CHIMBORAZO ESCUELA: INGENIERÍA INDUSTRIAL NOMBRE: OMAR GAIBOR DOCENTE: ING. PATRICIO VILLACRÉS TEMA: HERRAMIENTAS DEL SOFTWARE LIBRE PARA INGENIERÍA
  • 2. MARZO 2013 – JULIO 2013 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. En el 2004, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau of Labor Statistics) contó 760.840 ingenieros de software de computadora. El término "ingeniero de software", sin embargo, se utiliza en forma genérica en el ambiente empresarial, y no todos los ingenieros de software poseen realmente títulos de ingeniería de universidades reconocidas. Algunos autores consideran que "desarrollo de software" es un término más apropiado que "ingeniería de software" para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software. Indistintamente se utilizan los términos "ingeniería de software" o "ingeniería del software". En Hispanoamérica el término usado normalmente es el primero de ellos. La creación del software es un proceso intrínsecamente creativo y la ingeniería del software trata de sistematizar este proceso
  • 3. con el fin de acotar el riesgo del fracaso en la consecución del objetivo creativo por medio de diversas técnicas que se han demostrado adecuadas en base a la experiencia previa. La IS se puede considerar como la ingeniería aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicación de ellos de la forma más eficiente para la obtención de resultados óptimos; objetivos que siempre busca la ingeniería. No es sólo de la resolución de problemas, sino más bien teniendo en cuenta las diferentes soluciones, elegir la más apropiada. Índice • 1 Implicaciones socioeconómicas • 1.1 Económicamente • 1.2 Socialmente • 2 Metodología • 2.1 Etapas del proceso • 2.1.1 Análisis de requisitos • 2.1.2 Especificación • 2.1.3 Arquitectura • 2.1.4 Programación • 2.1.5 Prueba • 2.1.6 Documentación • 2.1.7 Mantenimiento • 3 Modelos y filosofías de desarrollo de software • 3.1 Naturaleza de la IS • 3.1.1 Matemáticas • 3.1.2 Creación • 3.1.3 Gestión de Proyectos • 3.1.4 Arte • 4 Responsabilidad • 5 Educación ética • 5.1 Organizaciones Implicaciones socioeconómicas La ingeniería de software afecta a la economía y las sociedades de variadas formas. Económicamente En los Estados Unidos, el software contribuyó a una octava parte de todo el incremento del PIB durante la década de 1990 (alrededor de 90,000 millones de dólares por año), y un noveno de todo el crecimiento de productividad durante los últimos años de la década (alrededor de 33.000 millones de dólares
  • 4. estadounidenses por año). La ingeniería de software contribuyó a US$ 1 billón de crecimiento económico y productividad en esa década. Alrededor del globo, el software contribuye al crecimiento económico en formas similares, aunque es difícil de encontrar estadísticas fiables. [cita requerida] Además, con la industria del lenguaje está hallando cada vez más campos de aplicación a escala global. Socialmente La ingeniería de software cambia la cultura del mundo debido al extendido uso de la computadora. El correo electrónico (E-mail), la WWW y la mensajería instantánea permiten a la gente interactuar en nuevas formas. El software baja el costo y mejora la calidad de los servicios de salud, los departamentos de bomberos, las dependencias gubernamentales y otros servicios sociales. Los proyectos exitosos donde se han usado métodos de ingeniería de software incluyen a GNU/Linux, el software del transbordador espacial, los cajeros automáticos y muchos otros. Metodología Un objetivo de décadas ha sido el encontrar procesos y metodologías, que sean sistemáticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software. Etapas del proceso La ingeniería de software requiere llevar a cabo numerosas tareas agrupadas en etapas, al conjunto de estas etapas se le denomina ciclo de vida. Las etapas comunes a casi todos los modelos de ciclo de vida son las siguientes: Análisis de requisitos Extraer los requisitos 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 habilidad y experiencia para reconocer requisitos incompletos, ambiguos o contradictorios. El resultado del análisis de requisitos con el cliente se plasma en el documento ERS, Especificación de Requisitos 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 requisitos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en
  • 5. 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 requisitos. La IEEE Std. 830-1998 normaliza la creación de las especificaciones de requisitos de software (Software Requirements Specification). No siempre en la etapa de "análisis de requisitos" las distintas metodologías de desarrollo llevan asociado un estudio de viabilidad y/o estimación de costes. El más conocido de los modelos de estimación de coste del software es el modelo COCOMO 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),
  • 6. 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
  • 7. á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. Modelos y filosofías de desarrollo de software La ingeniería de software dispone de varios modelos, paradigmas y filosofías de desarrollo, en los cuales se apoya para la construcción del software, entre ellos se puede citar: • Modelo en cascada o Clásico (modelo tradicional) • Modelo de prototipos • Modelo en espiral • Desarrollo por etapas • Desarrollo iterativo y creciente o Iterativo e Incremental • RAD (Rapid Application Development) • Desarrollo concurrente • Proceso Unificado • RUP (Proceso Unificado de Rational) Naturaleza de la IS La ingeniería de software tiene que ver con varios campos en diferentes formas: Matemáticas Los programas tienen muchas propiedades matemáticas. Por
  • 8. ejemplo la corrección y la complejidad de muchos algoritmos son conceptos matemáticos que pueden ser rigurosamente probados. El uso de matemáticas en la IS es llamado métodos formales. Creación Los programas son construidos en una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos pasos, como en una línea de ensamblaje, es necesario para mejorar la productividad de los desarrolladores y la calidad final de los programas. Este punto de vista inspira los diferentes procesos y metodologías que se encuentran en la IS. Gestión de Proyectos El desarrollo de software de gran porte requiere una adecuada gestión del proyecto. Hay presupuestos, establecimiento de tiempos de entrega, un equipo de profesionales que liderar. Recursos (espacio de oficina, insumos, equipamiento) por adquirir. Para su administración se debe tener una clara visión y capacitación en Gestión de Proyectos. Arte Los programas contienen muchos elementos artísticos. Las interfaces de usuario, la codificación, etc. Incluso la decisión para un nombre de una variable o una clase. Donald Knuth es famoso por argumentar a la programación como un arte. Responsabilidad La responsabilidad en la ingeniería del software es un concepto complejo, sobre todo porque al estar los sistemas informáticos fuertemente caracterizados por su complejidad, es difícil apreciar sus consecuencias. En la ingeniería del software la responsabilidad será compartida por un grupo grande de personas, que comprende desde el ingeniero de requisitos, hasta el arquitecto software, y contando con el diseñador, o el encargado de realizar las pruebas. Por encima de todos ellos destaca el director del proyecto. El software demanda una clara distribución de la responsabilidad entre los diferentes roles que se dan en el proceso de producción. El ingeniero del software tiene una responsabilidad moral y legal limitada a las consecuencias directas.
  • 9. Educación ética Organizaciones • IEEE Computer Society • Association for Computing Machinery (ACM) • Software Engineering Institute (SEI) • British Computer Society (BCS) • RUSSOFT Association • Society of Software Engineers Lista de software Creación de documentos e informes OpenOffice.org Es una suite de oficina inspirada en la de Microsoft. Si estás totalmente acostumbrado a las herramientas de M$, ésta es tu opción. Además trae el OpenOffice Draw, que es un programa de dibujo vectorial similar al Corel Draw. Hay muchos otros paquetes similares (KOffice, SIAG Office, GNOME Office…) y también programas como Abiword y Gnumeric, todos con sus pros y sus contras. LaTeX ¿Realmente pensás hacer el informe de tu tesis en M$ Word…? LaTeX es un lenguaje para crear documentos. El método es bastante similar a la creación de un programa. Tenés que escribir el “código fuente” de tu documento (en cualquier editor de texto plano), y después compilarlo. Tiene una fuerte orientación a las matemáticas, permitiendo escribir fórmulas y símbolos de todo tipo. Además, es totalmente estable. La curva de aprendizaje es inversa a la de programas como M$ Word: al principio cuesta arrancar, pero una vez que te sentís cómodo, podés hacer un informe técnico de calidad profesional en poco tiempo. El formato de los documentos creados en LaTeX es generalmente Postscript (PS) o PDF, pero pueden ser fácilmente convertidos a otros formatos como HTML o incluso texto plano. Este documento fue creado en LaTeX.
  • 10. Kile Sirve para editar archivos fuente de LaTeX, con syntax highlighting y macros para los comandos LaTeX más utilizados. Ayuda muchísimo en el ciclo de editar/compilar/ver resultado. LyX Es un front-end de LaTeX, casi WYSIWYG (What You See Is What You Get), permitiendo crear documentos con la calidad de LaTeX, pero con la facilidad de los procesadores de textos usuales. DocBook Es otro lenguaje de creación de documentos similar a LaTeX, pero basado en XML / SGML. Edición de imágenes / bitmaps The GIMP Es el programa de edición de bitmaps. Le pisa los talones al Photoshop. Dia Permite dibujar todo tipo de diagramas, grafos, cuadros sinópticos, etc, que pueden ser exportados a Postscript (para incluir, por ejemplo, en un documento LaTeX). XFig Es un programa para crear gráficos vectoriales (es decir, para dibujo general). Las imágenes creadas pueden ser convertidas a muchos formatos usando el programa transfig. Permite incluir fórmulas de LaTeX en los dibujos, por lo que es ideal para acompañar los documentos LaTeX con figuras. Inkscape Un programa de dibujo vectorial, similar al Corel Draw. Gráfica de datos / funciones matemáticas Gnuplot Puede graficar datos numéricos o funciones matemáticas, en 2D y 3D. Es muy flexible y totalmente configurable, pero para usarlo bien hay que aprender el lenguaje, ya que es un programa manejado mediante línea de comandos. Kile Ya fue mencionado, pero acá está de nuevo, porque trae un front-end gráfico para gnuplot. Significa que podés usar gnuplot sin aprender los comandos. Sistemas de álgebra y cálculo simbólico Maxima
  • 11. Es un sistema de álgebra bastante completo. YACAS Otro sistema de álgebra, de propósito general, liviano y fácil de usar. Pari-GP Es un paquete para teoría numérica asistida por computadora. Giac/XCas Otro sistema de álgebra, disponible como un programa independiente, o bien como una librería C++. Mathomatic Un sistema de álgebra de propósito general, altamente portable. Qalculate! A primera vista parece una calculadora de escritorio sencilla, pero bajo su interfaz simple e intuitiva se esconde un paquete matemático muy completo y fácil de usar, que permite hacer cálculo numérico y simbólico, conversión de unidades, gráficos (usando gnuplot) y muchas cosas más. Herramientas/Lenguajes de cálculo numérico Octave Un sistema de cálculo numérico muy completo con un lenguaje casi compatible con Matlab. Utiliza a Gnuplot como back-end para graficar. Scilab Otro paquete de cálculo numérico. Tal vez ofrece más funcionalidades que Octave, pero su lenguaje es menos compatible con Matlab. Yorick Es un lenguaje de programación interpretado, para cálculos y simulaciones numéricas. PDL Perl Data Language añade al lenguaje Perl la habilidad de almacenar y manipular grandes cantidade de datos en arreglos n-dimensionales, que son el pan y la manteca de la computación científica. La idea es transformar a Perl en un lenguaje numérico similar a Matlab. Se incluye un entorno interactivo de línea de comandos, además del módulo Perl (PDL) para usar en scripts. Euler Es un laboratorio numérico y un lenguaje de programación. El sistema puede manejar números, vectores y matrices reales, complejos y en forma de intervalos. También existe una versión con interfaz gráfica, Euler for GTK+.
  • 12. Compiladores/Intérpretes gcc GNU Compiler Collection, (y no GNU C Compiler). Es el compilador de GNU, que contiene front-ends para C, C++, Objective-C, Fortran, Java, y Ada. Está incluido en cualquier distribución de GNU/Linux (de hecho, casi todo el sistema operativo se compila en gcc). Free Pascal Es un compilador Pascal semánticamente compatible con TP 7.0, así como la mayoría de las versiones de Delphi. GNU Pascal El compilador Pascal de GNU, que utiliza a gcc como back- end. Es compatible con Borland Pascal, y soporta muchas de sus unidades (units). Perl Perl es un lenguaje interpretado de alto nivel, optimizado para procesar archivos de texto arbitrarios, extraer datos de ellos, e imprimir informes basados en esa información. Python Un lenguaje de programación interpretado, interactivo y orientado a objetos, que combina una gran potencia con una alta claridad en la sintaxis. Esta característica hace que Python sea ideal, tanto para el que está dando sus primeros pasos en programación, como para el programador avanzado. PHP Lenguaje de programación interpretado, fuertemente orientado a desarrollo web. gprolog Un intérprete/compilador Prolog, que cumple casi completamente con el estándar ISO Prolog, añadiendo algunas extensiones bastante útiles. Incluye resolución de condiciones sobre dominios finitos (FD), y una potente interfaz bidireccional entre Prolog y C. SWI-Prolog Otro intérprete/compilador Prolog con licencia libre. Incluye recolector de basura (garbage collection) e interfaz C/C++, y ofrece una buena performance general. Entornos de programación (IDEs – Integrated Development Environments) Anjuta Es un IDE para crear aplicaciones GNOME/Gtk+ con Glade, o simplemente para crear aplicaciones genéricas, en C/C++, o cualquier otro lenguaje.
  • 13. KDevelop Puede generar aplicaciones genéricas, o GUIs usando Qt, KDE o GNOME, en C/C++. Kylix Kylix := Delphi in [Linux]. Es software propietario, pero el Kylix Personal Edition es gratuito. ViM / Emacs Son dos editores de texto plano tan flexibles que pueden utilizarse como entornos de programación para prácticamente cualquier lenguaje. Quanta Plus Es un entorno de desarrollo para HTML con soporte PHP. Está diseñado para el desarrollo rápido de sitios web. Eclipse Un entorno de desarrollo integrado, especialmente orientado a proyectos en Java. Mono Entorno de desarrollo .NET. Debugging gdb El debugger de GNU. Puede depurar cualquier programa compilado en gcc con la opción -g. Se maneja mediante línea de comandos. DDD Data Display Debugger es un front-end gráfico muy completo para varios debuggers, incluyendo el gdb, y para varios lenguajes (C/C++, Java, Pascal…). insight Es otro front-end gráfico para gdb. Herramientas auxiliares para programación Doxygen Sistema para generar automáticamente la documentación de programas escritos en C/C++. Umbrello Modelador UML. RCS / CVS / Subversion / Darcs Sistemas de control de versiones. 2.10 Redes Ethereal Sniffer y analizador de tráfico de red, gráfico. tcpdump
  • 14. Sniffer y analizador de tráfico de red, de consola. Apache Servidor web. 2.11 Electrónica Spice Es la versión original del programa de simulación creado en la Universidad de California, Berkeley. Se maneja mediante línea de comandos, así que no esperes ver un programa de dibujo de esquemáticos con lucecitas y colores. El circuito a simular debe ser ingresado en un archivo de texto, y el Spice se limita a simularlo y entregarte los resultados. El paquete viene con nutmeg, que es un programa que sirve para interpretar y graficar los datos de la simulación, pero no es demasiado flexible. Debido a problemas de licenciamiento, el Spice no puede ser distribuido en binarios, así que es necesario bajar el código fuente y compilarlo. Si usás Debian, en: http://www.eda.ei.tum.de/~mcp/spicedeb/ se explica cómo crear un paquete .deb a partir del código fuente del spice3f5. ngspice Es un proyecto que tiene como objetivo crear una versión mejorada del spice (con algunos bugs arreglados) y con licencia GPL. El paquete viene con ngnutmeg, que es similar al nutmeg del spice. Sirve para graficar los datos de salida de las simulaciones. Gnucap GNU Circuit Analysis Package. Este simulador no está basado en Spice, y su funcionamiento es algo diferente. La principal ventaja de esto es que se trata de un software enteramente libre. Se incluyen modelos para BJT, MOSFET y diodos. Oregano Es un front-end gráfico para spice, ngspice o Gnucap. Permite dibujar los circuitos con una interfaz amigable y simularlos fácilmente. Richard Hult, el autor de Oregano, abandonó el proyecto hace algún tiempo, y algunos miembros del LUGFI decidieron continuarlo. Aun está en desarrollo. Kicad
  • 15. Un grupo de programas para la creación de esquemáticos y circuitos impresos. La interfaz es similar a la de Orcad. Electric Es un sistema de dibujo asistido, simulación y producción de circuitos eléctricos, muy completo y sofisticado, pero también bastante difícil de usar. TkGate Es un simulador de circuitos digitales, con una interfaz amigable e intuitiva, y varias características interesantes, como un compilador genérico de microcódigo/macrocódigo para crear archivos de inicialización de memorias. Xcircuit Es un programa que permite dibujar circuitos eléctricos (aunque puede ser utilizado también para dibujar otras cosas). Es liviano, fácil de usar y produce resultados con calidad profesional y en formato EPS, por lo que resulta ideal para incluir circuitos en documentos LaTeX. También permite generar archivos Spice para simular el circuito. gEDA GPL Electronic Design Automation. La buena noticia es que GNU/Linux ya cuenta con un sistema integrado de diseño electrónico, que contiene herramientas para creación de esquemáticos, simulación y producción de circuitos, distribuido íntegramente como software libre. La mala noticia es que aun está en fase de desarrollo. Programación de microcontroladores Una lista (no completa) de los distintos ensambladores, compiladores, simuladores, depuradores y programadores de micros: sdcc, ASEM-51, uisp, avrp, … HERRAMIENTAS DE SOFTWARE LIBRE APLICADAS EN LA INGENIERIA Objetivos: Conocer los conceptos relativos a la ingeniería del software. Diseñar un software orientado a objetos con el lenguaje UML. Diseñar juegos de pruebas y métodos de control de calidad. Construir programas en entorno GNU. Trabajar con las herramientas de control de versiones. Gestionar el software y trabajar con los sistemas de empaquetamiento de programas. Documentar el software. Conocer y utilizar los recursos existentes y las comunidades virtuales. Contenido Programático
  • 16. Programa del curso Ingeniería del software en entornos del software libre: Introducción a la ingeniería del software Control de calidad y pruebas Comprovación del software Control de calidad Black-box testing White-box testing: GDB Desarrollo de un plan de control de calidad Sistemas de gestión de errores: Bugzilla Construcción de software en entorno GNU AutoMake Libtool Control de versions (CMS) Empaquetamiento y distribución de software Sistemas de creación de documentación HTML, XML, DocBook Doxygen Comunidades virtuales y recursos existentes Freshmeat SourceForge Librerías estándar de programación Qué es Linux? Linux es, en un sentido muy amplio, un sistema operativo. Sin embargo, más purista y específicamente, Linux es un kernel. El kernel de un sistema operativo, se refiere a su núcleo. El kernel de un sistema operativo se encarga de gestionar los recursos de la memoria, habilitar el acceso a los sistemas de archivos, administrar recursos de red, y muchas cosas más. 1. ¿Y qué es GNU/Linux? GNU/Linux es todo el conjunto de herramientas que hacen a Linux un sistema operativo. GNU significa GNU is Not Unix y es el proyecto mundial, de software libre, iniciado en 1984 por Richard M. Stallman. GNU es lo que hace a Linux ser libre y abierto. 2. ¿Linux es gratis? No: Linux es libre. El tipo de licencia que Linux posee es denominada GPL, que fue desarrollada por el proyecto GNU. La licencia GPL permite cuatro libertades fundamentales: • Libertad de uso. • Libertad de aprendizaje. • Libertad de modificación. • Libertad de redistribución. 3. ¿Linux es software libre?
  • 17. Así es. Precisamente por poseer la licencia GNU/GPL. 4. ¿Dónde consigo Linux? Cuando una persona "quiere Linux", lo que generalmente busca (o necesita) es una distribución (comúnmente llamada distro). Una distribución es un conjunto de aplicaciones y herramientas que conviven con el núcleo de Linux cumpliendo fundamentalmente tres funciones: • Instalación del sistema operativo. • Configuraciones del sistema operativo, principalmente de las piezas de hardware. • Manejo de software. Para mayor información sobre las distribuciones de Linux, Linux en peru, vea mas información en el Portal de SomoLibres.org ademas de la sección de distribuciones. 5. ¿Quién es el dueño de Linux? Nadie. Comúnmente se confunde a Linux como una empresa, y se cree que como Microsoft.com pertenece a la empresa Microsoft, entonces Linux.com será el sitio oficial de la empresa Linux, o algo similar. Nada de ello. Linux no lo posee nadie, ni siquiera su creador, Linus Torvalds, es dueño de Linux. Él únicamente posee el registro del nombre, pero el proyecto como tal es 100% libre. 6. ¿Hay que saber programar para usar Linux? No. 7. Linux gráficamente, ¿es como MS-DOS? Lo que mucha gente cree es que Linux, gráficamente, es como MS-DOS, es decir, con una interfaz de texto, de consola. No. Las diversas interfaces gráficas de Linux y sus escritorios, como GNOME o KDE superan enormemente a Windows®, tanto en desempeño, como en atractivo visual. 8. ¿Tengo que ser un gurú de la computación para usar Linux? No. Las versiones más recientes de distribuciones como RedHat y Mandrake dotan al usuario de una enorme facilidad de instalación y configuración de su sistema. 9. ¿Puedo tener Windows y Linux en la misma computadora? Sí. 10.Instalando Linux, ¿podré hacer todo lo que hacía en Windows? Usar Word, Excel; navegar por Internet; chatear, etc. Desde luego. Para cualquier tarea de oficina se pueden usar OpenOffice.org, KOffice, StarOffice, etc. Y puedes usar una gran cantidad de navegadores, y mensajeros instantáneos, como aMSN o GAIM.
  • 18. En el marco del Programa Iberoamericano de Ciencia y Tecnología para el Desarrollo, se han llevado a cabo Talleres Anuales de Herramientas de Cálculo en Ingeniería en Alimentos, teniendo sede en España y numerosos países de Latinoamérica. El siguiente sitio web: reúne más de 90 herramientas de cálculo y aplicaciones (software) de descarga libre, desarrolladas a lo largo de más de 8 años en los principales centros de investigación en ingeniería química de Iberoamérica. Si bien concentrándose principalmente en ingeniería de alimentos, también incluye programas de cálculo de equipos (evaporadores, secadores, extracción líquido-líquido), cálculos de fenomenos de transporte de calor y masa, programas de ajuste de datos, cálculo de sistemas coloidales y otros. Se incluye la documentación para cada programa y los nombres y afiliación de los autores. Visite la página web. ¿Qué es un GLUG? GNU/Linux es un movimiento mundial sin una estructura central, burocratizada o entidad para controlar, coordinar o dirigir sus objetivos. Mientras esta situación es una parte poderosa del sentido y calidad técnica de GNU/Linux como un sistema operativo de una computadora, puede jugar en contra para ubicar recursos humanos capacitados o educar usuarios. En gran medida un GLUG local provee las respuestas a esta clase de cuestiones. Debido a que no hay una una corporación de GNU/Linux capaz de bindar informacion o soporte especializado, el GLUG local cumple los mismos roles que una oficina regional de una gran corporación multinacional. Funciones de un GLUG: Difusión El GLUG local juega un indispensable rol en promover el uso de GNU/Linux. Si una persona conoce acerca de GNU/Linux a través del esfuerzo de un GLUG local, entonces esa persona, como un nuevo usuario GNU/Linux, tiene una gran ventaja: ella ya esta conciente de la existencia de una organización que la ayudará a instalar, configurar y mantener GNU/Linux. Por está razón, es importante que
  • 19. los GLUGs locales promuevan GNU/Linux porque su difusión es efectiva, bien soportada y libre. Educación Podemos elegir el objetivo de educación simplemente porque no hay otra entidad local de la cual usuarios GNU/Linux puedan recibir educación con orientación técnica. Por otro lado un GLUG puede compartir la capacitación laboral, ya que cada trabajador que expande sus habilidades en computación participando en un GLUG local, es un trabajador menos que la empresa tiene que entrenar. Aún usando y administrando una PC GNU/Linux en casa, que no es lo mismo que administrar un data warehouse corporativo o sistemas de gran envergadura, es mucho más complejo, más reconfortante y más educativo que administrar una PC con Windows 95 en casa. Este objetivo no solo puede servir para capacitar laboralmente, sino que puede convertirse en un servicio a la comunidad, ya que como la tecnología de Información se vuelve una parte vital de la economía global, un GLUG local puede introducir GNU/Linux en escuelas, pequeños negocios, organizaciones comunitarias y sociales, y otros entornos no corporativos. Esta tarea de promoción también ayuda al entrenamiento del público en general acerca de GNU/Linux como un sistema operativo estilo Unix libre, gratuito, etc. Como más y más de estas clase de organizaciones buscan establecer una presencia en Internet o proveer acceso remoto a sus trabajadores, estudiantes o miembros, se originan oportunidades para los GLUGs locales de participar en la vida de su comunidad educándolos acerca de un sistema operativo libre y disponible gratuitamente. Esta clase de servicio a la comunidad permite al usuario medio de GNU/Linux emular la clase de generosidad que ha caracterizado a GNU/Linux y la comunidad de software libre desde un comienzo. Soporte La queja más frecuente de los nuevos usuarios de GNU/Linux, una vez que tienen instalado el sistema, es la empinada curva de aprendizaje que no es única de los GNU/Linux sino es una característica de todos los modernos Unix. Una vez que esa curva es alcanzada, nos encontramos con el poder y flexibilidad de un sistema operativo complejo. Un GLUG local es el único recurso que un nuevo usuario tiene disponible para aplanar la curva de aprendizaje. Pero aún si un nuevo usuario GNU/Linux no conoce esto todavía, el necesita más que soporte técnico, el mundo de GNU/Linux y el software libre se mueven rápidamente. Los GLUGs locales forman un invaluable conducto de información acerca de GNU/Linux. El movimiento GNU/Linux tiene recursos como GNU/Linux Journal y GNU/Linux Gazette www.ssc.com="" lg="", pero muchos usuarios desconocen estos recursos. El GLUG local debe ser una fuente de información acerca de bugs reparados, problemas de seguridad, parches, nuevos kernels, etc. Información vital para usuarios nuevos y experimentados. Por otro lado los GLUGs tienen la oportunidad de dar soporte a negocios y organizaciones locales. Este soporte tiene dos aspectos. Primero, pueden soportar organizaciones y negocios que quieren usar GNU/Linux como parte de su esfuerzo en Tecnología de Información y computación. Segundo, pueden dar soporte a negocios y organizaciones locales que desarrollen para GNU/Linux, soporten o instalen GNU/Linux. Si los GLUGs locales pueden jugar un rol en ayudar a usuarios de negocios a evaluar soluciones comerciales de GNU/Linux, entonces más vendedores de software se verán
  • 20. estimulados para considerar GNU/Linux en sus desarrollos y planificaciones. Socialización Compartir experiencias, formando amistades y generando admiración y respeto mutuo. La socialización en GNU/Linux, a diferencia del mundo real, puede ocurrir a través de listas de correo,Foros o quizas Usenet, pero la mejor forma de hacerlo es a través de seres humanos de carne y hueso y no por voces incorporadas de una lista de correo, Forum o grupo de Usenet. Actividades de un GLUG Las dos maneras básicas que un GLUG puede realizar las funciones descriptas anteriormente son: primero efectuar reuniones en un espacio físico y segundo comunicarse a través del ciberespacio. Se pueden efectuar reuniones sociales, presentaciones técnicas, Instalaciones y configuraciones de GNU/Linux, llevando a cabo actividades como enseñar a miembros acerca de GNU/Linux, comparar GNU/Linux con otros sistemas operativos, discutir las formas en que GNU/Linux puede ser promovido, discutir el negocio de un grupo de usuarios, comer, beber y ser felices. Pero el ingrediente masimportante son las ganas, persistencia y sobre todo un grupo Unido. Que sea todo por el Software Libre y las comunidades van a funcionar a trabajar. Pero es importante que los colegios y Universidades empieze esta aventura. No solo tu ganaras sino tu Colegio, Universidad, Localidad, Región y sobre todo el Pais. Blog: http://omarg5495.blogspot.com/