Sunteți pe pagina 1din 39

http://www.eqsoft.

net

La Ingeniería de
Software en el
modelo de
desarrollo del
Software Libre
Ernesto C. Quiñones Azcárate
Gerente Técnico
Algunas definiciones
Software : conjunto de programas y procedimientos
necesarios para hacer posible la realización de una tarea
específica, en contraposición a los componentes físicos del
sistema (hardware)
http://es.wikipedia.org/wiki/Software

Ingeniería : La ingeniería es la profesión en la que el


conocimiento de las matemáticas y ciencias naturales,
obtenido mediante estudio, experiencia y práctica, se aplica
con juicio para desarrollar formas de utilizar,
económicamente, los materiales y las fuerzas de la
naturaleza para beneficio de la humanidad y del ambiente.
http://es.wikipedia.org/wiki/Ingenieria

http://www.eqsoft.net
Pregunta fundamental

¿ Porqué hablamos
entonces de una
ingeniería de software ?

http://www.eqsoft.net
La ingeniería de software
La Ingeniería de software es la rama de
la ingeniería que crea y mantiene las
aplicaciones de software aplicando
tecnologías y prácticas de las ciencias
computacionales, manejo de
proyectos, ingeniería, el ámbito de la
aplicación, y otros campos.
Referencia :
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software

http://www.eqsoft.net
De forma práctica

Se busca aplicar los conocimientos previamente


estudiados y puestos en práctica en la ingeniería
convencional dentro de los proyectos de desarrollo de
software con el fin de :
●Desarrollar software mas rápido
●Desarrollar software a menores costos

●Desarrollar software de mayor calidad

●etc. etc. etc.

http://www.eqsoft.net
Áreas de conocimiento de
la Ingeniería de Software

http://www.eqsoft.net
Áreas de conocimiento de
la Ingeniería de Software

http://www.eqsoft.net
El Software Libre
Software libre (en inglés free
software) es la denominación del
software que, una vez obtenido,
puede ser usado, copiado,
estudiado, modificado y
redistribuido libremente.
Referencia :
http://es.wikipedia.org/wiki/Software_libre

http://www.eqsoft.net
El modelo de desarrollo del
Software Libre
El modelo de desarrollo del SL es atípico y
no convencional, se basa en un entorno
distribuido y colaborativo donde todos
pueden colaborar programando porciones
del software ó en diferentes tareas
específicas (traducción, arte, etc.), no busca
crear software en menor tiempo, a menores
costos y de una mayor calidad, surgio de
manera espontánea y natural.

http://www.eqsoft.net
Duda 1

¿El modelo de desarrollo del


Software Libre encaja
dentro de la ingeniería de
software?

http://www.eqsoft.net
Duda 2

¿Existe una ingeniería de


software ... libre?

http://www.eqsoft.net
Duda 3

¿Aporta el modelo de
desarrollo del Software
Libre algo a la ingeniería de
software?

http://www.eqsoft.net
La gran respuesta

Esto es muy complicado de


responder, vamos a
intentarlo ahora.

http://www.eqsoft.net
Conozcamos la evolución
del modelo de desarrollo
del Software Libre

http://www.eqsoft.net
Como va incorporando el
modelo las practicas de la IS
● Años 60-70

Necesidad no Implementación
Programación
atendida Voluntaria

● Necesidad de los mismos ● 1972 : TCP-IP (protocolo)


“informáticos”. ● 1974 : PDP-11 (Unix de

● Programación en ASM y C Berkley)


● El software se pone tal cual, si da ● 1975 : Emacs (entorno

problemas ellos mismos lo arreglan. completo)


● 1976 : Vi (editor de

texto)

http://www.eqsoft.net
Como va incorporando el
modelo las practicas de la IS
● Años 80 Reporte de Error o código
solucionándolo

Testing
Requerimiento Programación
permanente

Nuevas Ideas

● Requerimientos del movimiento, 1981 : BSD 4.1 (OS)


principalmente dev-tools y comm- 1984 : Latex (procesador de


apps. textos)
● Programación en C, C++ y
1986 : CVS (control de

versiones)
lenguajes de scripting, gestionada 1987 : Perl (lenguaje)

en repositorios de código. 1987 : GCC (compilador)


● Se establecen convenciones y

estándares para documentación.


http://www.eqsoft.net
Como va incorporando el
modelo las practicas de la IS
● Años 90
Documentación
Reporte de Error o código
solucionándolo

Diseño
Testing
Requerimiento Formal o Programación
permanente
informal

Nuevas Ideas

● Integración de muchos paquetes ● 1993 : Debian y Slackware


independientes y despliege. (distros de Linux)
● 1997 : Doxygen (automatización
● Aplicaciones afinadas y
de documentación a partir del
especializadas para laborar código fuente)
distribuidamente (Internet). ● 1998 : APT (administrador de

● Automatas de pruebas y
paquetes)
documentación

http://www.eqsoft.net
Como va incorporando el
modelo las practicas de la IS
Publicación y
● Actualmente Documentación Testing
Testing permanente
Interno y
Adm. Releases

Gestión de Diseño Programación Gestión de


Proyecto Formal errores y
Reporte de Error o código requerimientos
TO-DO solucionándolo

● Software para diseno de software. ● 1998 : Bugzilla (administración de


● Desarrollo basado en MVC. errores y requerimientos)
● 2002 : Umbrello (herramienta case)
● Herramientas de GESTION de
● 2000 : PhpGroupWare (gestión de
trabajo en grupo. proyectos)
● Herramientas de apoyo para
● 2004 : Ruby on Rails (framework de

GESTION de proyectos. desarrollo)

http://www.eqsoft.net
KA : Software Requirements
●Existen herramientas de apoyo para Gestión de
Requerimientos
●Open Source Requirements Management Tool
http://sourceforge.net/projects/osrmt/
●Los requerimientos son atendidos en base a los

siguientes criterios:
●Es de interés común

●Alguien se ofrece a implementarlo

●Ya esta echo

●Es de necesidad técnica

http://www.eqsoft.net
KA : Software Design
●Existen herramientas de apoyo para diseno de
software a varios niveles
●DIA http://www.gnome.org/projects/dia/

●Umbrello http://uml.sourceforge.net/index.php

●ArgoUML http://argouml.tigris.org/

●PgDesigner http://sourceforge.net/projects/pgdesigner/

●La mayoría de los proyectos ofrecen diagramas

de clases o diagrama ER, pocos ofrece casos de


uso, secuencia, etc.
●El 90% de los proyectos son bajo diseño

orientado a objetos

http://www.eqsoft.net
KA : Software Construction
El modelo de desarrollo del software libre se

parece a esta
metodología:

●Extreme Programming
http://www.extremeprogramming.org/
●Existe software para apoyo a proyectos de
estas características:
●Xplanner http://www.extremeprogramming.org/

http://www.eqsoft.net
KA : Software Testing
●Existen herramientas de apoyo para simulación
de testing, batería de pruebas, administración
de pruebas.
●Ejb3Unit http://sourceforge.net/projects/ejb3unit/

●Linux Test Project http://ltp.sourceforge.net/

●QaTraq http://sourceforge.net/projects/qatraq/

●Los proyectos mas grandes tienen sus propias

herramientas de testing y diseño de pruebas.


●La mayoria de pruebas es de caja blanca y caja

negra.

http://www.eqsoft.net
KA : Software Maintenance

●Los proyectos de SL están en constante cambio,


todos los días podrá ver una gran cantidad de
software que tiene actualizaciones.
●Es difícil saber el costo del mantenimiento, existe

mucho aporte fuera del proyecto.


●Como saber los tipos de cambios que sufre un
software, por ejemplo :

Firefox X.Y.Z
X = Cambio de versión, nueva tecnología aplicada al producto.
Y = correcciones mayores o nuevas funcionalidades que se
incorporan.
Z = parche por errores

http://www.eqsoft.net
KA : Software Maintenance

Existe
● software para el despliegue de
actualizaciones de software.
● APT http://www.debian.org/doc/manuals/apt-howto/
● Portage

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=3

http://www.eqsoft.net
KA : Software Configuration Managment

●La buena gestión de la configuración es una


necesidad imperiosa en los proyectos de SL.
●Los procesos involucrados dentro de la SCM se han

automatizado al máximo, existe mucho software de


apoyo con todas las características deseables
(registro, orden, trazabilidad, prioridades, gestión,
cargas de trabajo, etc.) :
● Subversion http://subversion.tigris.org/
● TRAC http://trac.edgewall.org/

● CVS http://ximbiot.com/cvs/

● Bugzilla http://www.bugzilla.org/about/

http://www.eqsoft.net
KA : Software Engineering Management

1. La definición parte del proyecto mismo, no existe negociación inicial, el


modelo de desarrollo indica que no existen limites bajo los cuales
parametrizarce.

2. En los proyectos nuevos la planificación es insipiente, no existe fechas


de entregables, los proyectos mas grandes si ofrecen una planificación
con entregables en fecha propuestas, mas no rígidas, en estos se
empieza a llevar una gestión de riesgos relativa a los eventos externos.
3. El plan de implantación toma en cuenta siempre la disponibilidad
simultanea del producto, se procura dar al usuario toda la
documentación y soporte posible tomando en cuenta que el uso que
hace del producto es voluntario.
4. Se implementan canales directos entre el usuario y el proyecto para
recibir el “feedback” de ellos e iniciar la siguiente iteraccion en el
proyecto o aplicar soluciones inmediatas.

5. No existe cierre de actividades en un proyecto de software libre.

6. No se llevan métricas al respecto.

http://www.eqsoft.net
KA : Software Engineering Process
●Los procesos en los proyectos de SL no suelen
estar documentados, son pasados de
“generación en generación” entre los
involucrados.
●Los proyectos de SL no involucran una
Software Factory, por lo tanto son muy
flexibles en el tema de seguimiento y métricas,
algunos proyectos implementan las buenas
practicas del ISO15504 y CMMI.
●Los proyectos mas grandes si tienen procesos

definidos y documentados que deben ser


conocidos por aquellos que deseen formar
parte oficial de ellos.
http://www.eqsoft.net
http://www.eqsoft.net
KA : Software Engineering Process

Existe software para el apoyo a la definición y


métricas de los procesos :


● PMLite http://sourceforge.net/projects/pm-lite/
KA : Software Engineering Tools and Methods
● Software Requirements Tools
● Requirements modeling tools, Requirement traceability tools.
● Software Design Tools
● Software Construction Tools

● Program editors, Compilers and code generators, Interpreters, Debuggers, Frameworks.


● Software Testing Tools
● Test generators, Test execution frameworks, Test evaluation tools, Test management tools,
Performance analysis tools.
● Software Maintenance Tools
● Comprehension tools, Reengineering tools.
● Software Configuration Management Tools
● Defect, enhancement, issue, and problem-tracking tools; Version management tools, Release
and build tools.
● Software Engineering Management Tools
● Project planning and tracking tools, Risk management tools, Measurement tools.
● Software Engineering Process Tools
● Process modeling tools, Process management tools, Integrated CASE, Process-centered
software engineering environments.
● Software Quality Tools
● Review and audit tool, Static analysis tools.
● Miscellaneous Tool Issues
Tool integration techniques, Meta-tools, Tool evaluation.
http://www.eqsoft.net
KA : Software Engineering Tools and Methods

Sobre los métodos Heuristicos son mas populares


en uso los estructurados (ya casi dejado de lado)


y los orientados a objetos.
Sobre los métodos formales son de muy raro uso

en los proyectos, principalmente porque muchos


desarrolladores no son informáticos o ingenieros.
Sobre los métodos de prototipeos no son usados,

no se estila presentar avances no funcionales, en


el mejor de los casos se usan internamente sin
rigidez académica

http://www.eqsoft.net
KA : Software Quality
● “Calidad” en los proyectos de SL se asegura a traves de
varios métodos naturales en el modelo (también
denominado el método iterativo, congruente con XP) :
● Revisión de pares

● Test interno en el proyecto

● Test masivo de los usuarios

● Código abierto (miles de ojos revisando vuestro


código)
● El proceso de “calidad” en un proyecto de SL solo se

acaba cuando se retira el software del “mercado”,


mientras este “vivo” estará sometido a una eterna
Auditoria.
● En algunos proyectos se aplican las practicas de
modelos como CMMI e ISO9000/ISO12207

http://www.eqsoft.net
KA : Software Quality

http://www.eqsoft.net
KA : Software Quality

Ante
factores
externos
Los extremos,
procesos aplique un
FORK

Requiere
Auditoria
Acceso al una nueva
permanente
código forma de
medición

http://www.eqsoft.net
KA : Related Disciplines of Software
Engineering

http://www.eqsoft.net
KA : Related Disciplines of Software
Engineering

● Algorithms ● Discrete ● Accounting ● Linear ● Project ● Quality ● Cognition ● Business


● Computer Structures ● Finance Algebra Integration Systems ● Machine Processes and
Architecture ● Programming ● Marketing ● Differential ● Project Scope Developmen Learning Operational
● Digital Logic Fundamentals and Sales and Integral ● Project Time t, and Assessment
● Discrete ● Algorithms ● Operations Calculus ● Project Cost ● Implementa Grammar ● System/Solutio
Structures ● Operating Management ● Differential ● Project Quality tion And Induction n/Test
● Distributed Systems ● Information Equations ● Project Human Verification ● Formal Architecture
Systems ● Programming Systems ● Probability Resource ● Planning Methods ● Life Cycle Cost
● Embedded Languages Management ● Statistics ● Project Controlling, in & Cost-Benefit
Systems ● Graphics and ● Law ● Numerical Communicatio and Cognitive Analysis
● Human- Visual ● Human analysis ns Assuring Science: ● Serviceability /
Computer Computing Resource ● Discrete ● Project Risk Product and Language Logistics
Interaction ● Information Management Mathematics Management Process
● Intelligent Management ● Project Quality
Systems Procurement
http://www.eqsoft.net
KA : Related Disciplines of Software
Engineering

Aplica Aplica
Aplica Aplica Aplica
altamente nulo o
medianamente nulo o medianamente
la mayoría de casi nada
la mayoría de casi nada la mayoría de
las KA Aplica a su
las KA las KA
Aplica Aplica forma, procesos
altamente depende muy variados
la mayoría de el
las KA proyecto
http://www.eqsoft.net
Respondiendo las dudas
1.¿El modelo de desarrollo del Software Libre
encaja dentro de la ingeniería de software? : SI,
se fue adecuando de manera natural a traves
de los años.
2.¿Existe una ingeniería de software ... libre? :
NO, la Ing. de Soft. es tan amplia que cubre
fácilmente el software libre y privativo.
3.¿Aporta el modelo de desarrollo del Software
Libre algo a la ingeniería de software? : SI,
nuevas practicas que antes no eran siquiera
imaginadas.

http://www.eqsoft.net
Para leer mas

● http://www.itba.edu.ar/capis/rtis/rtis-7-2/Ingenieria-de-Software-Libre-y-Herramientas-Aplicadas.pdf
● http://swebok.org/ (Iniciativa de ACM y la IEEE sobre el conjunto de conocimientos necesarios para
la Ingeniería de Software)
● http://www.ati.es/novatica/2000/145/luifer-145.pdf (El Futuro de la Ing, de Software, ó, ¿Es el
Software un producto de ingeniería?)
● http://es.tldp.org/Presentaciones/200211hispalinux/robles/robles-ponencia-hispalinux-2002.pdf
(Ing. del Software Libre una alternativa a la ing. de software tradicional)
● http://www.sourceforge.net / http://www.freshmeat.net (Miles de proyectos libres para diferentes
necesidades)

http://www.eqsoft.net
Gracias
WEB SITE
http://www.eqsoft.net

Teléfonos
5645424 / 97244926 / 97003957

Email
informes@eqsoft.net

http://www.eqsoft.net

S-ar putea să vă placă și