• No se han encontrado resultados

La Ingeniería de Software en el modelo de desarrollo del Software Libre

N/A
N/A
Protected

Academic year: 2022

Share "La Ingeniería de Software en el modelo de desarrollo del Software Libre"

Copied!
39
0
0

Texto completo

(1)

La Ingeniería de La Ingeniería de

Software en el Software en el

modelo de modelo de

desarrollo del desarrollo del Software Libre Software Libre

http://www.eqsoft.net

(2)

Software :

Software : conjunto de programas y procedimientos conjunto de programas y procedimientos

necesarios para hacer posible la realización de una tarea necesarios para hacer posible la realización de una tarea

específica, en contraposición a los componentes físicos del específica, en contraposición a los componentes físicos del

sistema (hardware) sistema (hardware)

http://es.wikipedia.org/wiki/Software http://es.wikipedia.org/wiki/Software

Ingeniería :

Ingeniería : La ingeniería es la profesión en la que el La ingeniería es la profesión en la que el conocimiento de las matemáticas y ciencias naturales, conocimiento de las matemáticas y ciencias naturales,

obtenido mediante estudio, experiencia y práctica, se aplica obtenido mediante estudio, experiencia y práctica, se aplica

con juicio para desarrollar formas de utilizar, con juicio para desarrollar formas de utilizar,

económicamente, los materiales y las fuerzas de la económicamente, los materiales y las fuerzas de la

Algunas definiciones

(3)

¿ Porqué hablamos

¿ Porqué hablamos entonces de una entonces de una

ingeniería de software ? ingeniería de software ?

Pregunta fundamental

(4)

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.

(5)

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.

(6)

Áreas de conocimiento de

la Ingeniería de Software

(7)

Áreas de conocimiento de

la Ingeniería de Software

(8)

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.

(9)

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.

(10)

Duda 1

¿El modelo de desarrollo del Software Libre encaja

dentro de la ingeniería de

software?

(11)

Duda 2

¿Existe una ingeniería de

software ... libre?

(12)

Duda 3

¿Aporta el modelo de desarrollo del Software

Libre algo a la ingeniería de

software?

(13)

La gran respuesta

Esto es muy complicado de responder, vamos a

intentarlo ahora.

(14)

Conozcamos la evolución del modelo de desarrollo

del Software Libre

(15)

Como va incorporando el modelo las practicas de la IS

Años 60-70

Necesidad no

atendida Programación Implementación

Voluntaria

Necesidad de los mismos

“informáticos”.

Programación en ASM y C

El software se pone tal cual, si da problemas ellos mismos lo arreglan.

1972 : TCP-IP (protocolo)

1974 : PDP-11 (Unix de Berkley)

1975 : Emacs (entorno completo)

(16)

Como va incorporando el modelo las practicas de la IS

Años 80

Requerimiento Programación Testing

permanente

Requerimientos del movimiento, 1981 : BSD 4.1 (OS)

1984 : Latex (procesador de

Reporte de Error o código solucionándolo

Nuevas Ideas

(17)

Como va incorporando el modelo las practicas de la IS

Años 90

Integración de muchos paquetes independientes y despliege.

Aplicaciones afinadas y

especializadas para laborar

1993 : Debian y Slackware (distros de Linux)

1997 : Doxygen (automatización de documentación a partir del código fuente)

Requerimiento Programación Testing

permanente

Reporte de Error o código solucionándolo

Nuevas Ideas

Diseño Formal o

informal

Documentación

(18)

Como va incorporando el modelo las practicas de la IS

Actualmente

Software para diseno de software. 1998 : Bugzilla (administración de errores y requerimientos)

Gestión de

Proyecto Programación

Publicación y Testing permanente

Reporte de Error o código solucionándolo

TO-DO

Diseño Formal

Documentación

Gestión de errores y requerimientos Testing

Interno y Adm. Releases

(19)

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

(20)

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.

(21)

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

(22)

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

(23)

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.

(24)

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

(25)

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/

(26)

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

(27)

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

(28)

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/

http://www.eqsoft.net

(29)

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.

(30)

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,

(31)

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

(32)

KA : Software Quality

(33)

KA : Software Quality

Los

procesos

Auditoria

Ante factores externos extremos, aplique un FORK

Requiere una nueva

(34)

KA : Related Disciplines of Software

Engineering

(35)

KA : Related Disciplines of Software Engineering

Algorithms

Computer Architecture

Digital Logic

Discrete Structures

Distributed Systems

Embedded Systems

Discrete Structures

Programming Fundamentals

Algorithms

Operating Systems

Programming Languages Graphics and

Accounting

Finance

Marketing and Sales

Operations Management

Information Systems Management Law

Linear Algebra

Differential and Integral Calculus

Differential Equations

Probability

Statistics Numerical

Project Integration

Project Scope

Project Time

Project Cost

Project Quality

Project Human Resource

Project

Communicatio

Quality Systems Developmen t,

Implementa tion And Verification

Planning Controlling, and

Cognition

Machine Learning and

Grammar Induction

Formal Methods in

Cognitive

Business Processes and Operational Assessment

System/Solutio n/Test

Architecture

Life Cycle Cost

& Cost-Benefit Analysis

(36)

KA : Related Disciplines of Software

Engineering

(37)

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

(38)

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)

(39)

Gracias

WEB SITE

http://www.eqsoft.net

Teléfonos

5645424 / 97244926 / 97003957 Email

[email protected]

Referencias

Documento similar

García-Holgado, "Introducción a la Ingeniería del Software," Recursos docentes de la asignatura Ingeniería de Software I. Grado en

n La aplicación disciplinada de principios, métodos y herramientas de ingeniería, ciencia y matemáticas para la producción económica de software de calidad [Humphrey, 1989].

Como parte del proceso de desarrollo de software y la migración nacional a software libre surge Nova Servidores, variante de la distribución cubana GNU/Linux

 Teniendo como referencia el estudio del estado del arte realizado a los modelos y métodos definidos para la ingeniería y desarrollo de software basado en reutilización,

[r]

Atendiendo a las necesidades de la comunidad de tener el portal de manera funcional lo antes posible, que además permitirá realizar pruebas con los propios usuarios,

Controlador de Versiones (CV): En el proceso de Integración Continua es preciso tener un control de las diferentes versiones del código para de esta forma poder recuperar

El presente trabajo pretende, como objetivo general, Elaborar una propuesta de desarrollo para un portal Web que brinde los servicios de gestión de la