sofware libre

648 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
648
On SlideShare
0
From Embeds
0
Number of Embeds
68
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

sofware libre

  1. 1. Algunas definicionesSoftware : conjunto de programas y procedimientosnecesarios para hacer posible la realización de una tareaespecífica, en contraposición a los componentes físicos delsistema (hardware)Ingeniería : La ingeniería es la profesión en la que elconocimiento de las matemáticas y ciencias naturales,obtenido mediante estudio, experiencia y práctica, se aplicacon juicio para desarrollar formas de utilizar,económicamente, los materiales y las fuerzas de lanaturaleza para beneficio de la humanidad y del ambiente.La ingeniería de softwareLa Ingeniería de software es la rama dela ingeniería que crea y mantiene lasaplicaciones de software aplicandotecnologías y prácticas de las cienciascomputacionales, manejo deproyectos, ingeniería, el ámbito de laaplicación, y otros campos.Referencia :http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_softwarehttp://www.eqsoft.netDe forma prácticaSe busca aplicar los conocimientos previamenteestudiados y puestos en práctica en la ingenieríaconvencional dentro de los proyectos de desarrollo desoftware con el fin de :Desarrollar software mas rápido●Desarrollar software a menores costos●Desarrollar software de mayor calidadIngeniería de software es la aplicación de un enfoque sistemático, disciplinadoy cuantificable al desarrollo, operación y mantenimiento de software, y elestudio de estos enfoques, es decir, la aplicación de la ingeniería al software.1Es 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 laingeniería.2
  2. 2. Se pueden citar otras definiciones enunciadas por prestigiosos autores: • Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978) • Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976). • Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).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 decomputadora.3 El término "ingeniero de software", sin embargo, se utiliza enforma genérica en el ambiente empresarial, y no todos los ingenieros desoftware poseen realmente títulos de ingeniería de universidades reconocidas.Algunos autores consideran que "desarrollo de software" es un término másapropiado que "ingeniería de software" para el proceso de crear software.Personas como Pete McBreen (autor de "Software Craftmanship") cree que eltérmino IS implica niveles de rigor y prueba de procesos que no son apropiadospara todo tipo de desarrollo de software.Indistintamente se utilizan los términos "ingeniería de software" o "ingenieríadel software". En Hispanoamérica el término usado normalmente es el primerode ellos.La creación del software es un proceso intrínsecamente creativo y la ingenieríadel software trata de sistematizar este proceso con el fin de acotar el riesgo delfracaso en la consecución del objetivo creativo por medio de diversas técnicasque se han demostrado adecuadas en base a la experiencia previa.La IS se puede considerar como la ingeniería aplicada al software, esto es, pormedios sistematizados y con herramientas preestablecidas, la aplicación de ellosde la forma más eficiente para la obtención de resultados óptimos; objetivos quesiempre busca la ingeniería. No es sólo de la resolución de problemas, sino másbien teniendo en cuenta las diferentes soluciones, elegir la más apropiada.La ingeniería de software afecta a la economía y las sociedades de variadasformas.
  3. 3. EconómicamenteEn los Estados Unidos, el software contribuyó a una octava parte de todo elincremento del PIB durante la década de 1990 (alrededor de 90,000 millones dedólares por año), y un noveno de todo el crecimiento de productividad durantelos últimos años de la década (alrededor de 33.000 millones de dólaresestadounidenses por año). La ingeniería de software contribuyó a US$ 1 billónde crecimiento económico y productividad en esa década. Alrededor del globo,el software contribuye al crecimiento económico en formas similares, aunque esdifícil de encontrar estadísticas fiables. [cita requerida]Además, con la industria del lenguaje está hallando cada vez más campos deaplicación a escala global.SocialmenteLa ingeniería de software cambia la cultura del mundo debido al extendido usode la computadora. El correo electrónico (E-mail), la WWW y la mensajeríainstantánea permiten a la gente interactuar en nuevas formas. El software baja elcosto y mejora la calidad de los servicios de salud, los departamentos debomberos, las dependencias gubernamentales y otros servicios sociales. Losproyectos exitosos donde se han usado métodos de ingeniería de softwareincluyen a GNU/Linux, el software del transbordador espacial, los cajerosautomáticos y muchos otros.MetodologíaUn objetivo de décadas ha sido el encontrar procesos y metodologías, que seansistemáticas, predecibles y repetibles, a fin de mejorar la productividad en eldesarrollo y la calidad del producto software.Etapas del procesoLa ingeniería de software requiere llevar a cabo numerosas tareas agrupadas enetapas, al conjunto de estas etapas se le denomina ciclo de vida. Las etapascomunes a casi todos los modelos de ciclo de vida se pueden son las siguientes:Análisis de requisitosExtraer los requisitos de un producto de software es la primera etapa paracrearlo. Mientras que los clientes piensan que ellos saben lo que el softwaretiene que hacer, se requiere habilidad y experiencia para reconocer requisitosincompletos, ambiguos o contradictorios. El resultado del análisis de requisitoscon el cliente se plasma en el documento ERS, Especificación de Requisitos delSistema, cuya estructura puede venir definida por varios estándares, tales como
  4. 4. CMMI. Asimismo, se define un diagrama de Entidad/Relación, en el que seplasman las principales entidades que participarán en el desarrollo del software.La captura, análisis y especificación de requisitos (incluso pruebas de ellos), esuna parte crucial; de esta etapa depende en gran medida el logro de losobjetivos finales. Se han ideado modelos y diversos procesos de trabajo paraestos fines. Aunque aún no está formalizada, ya se habla de la Ingeniería derequisitos.La IEEE Std. 830-1998 normaliza la creación de las especificaciones derequisitos de software (Software Requirements Specification).No siempre en la etapa de "análisis de requisitos" las distintas metodologías dedesarrollo llevan asociado un estudio de viabilidad y/o estimación de costes. Elmás conocido de los modelos de estimación de coste del software es el modeloCOCOMOEspecificaciónLa especificación de requisitos describe el comportamiento esperado en elsoftware una vez desarrollado. Gran parte del éxito de un proyecto de softwareradicará en la identificación de las necesidades del negocio (definidas por la altadirección), así como la interacción con los usuarios funcionales para larecolección, clasificación, identificación, priorización y especificación de losrequisitos 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 einformales.ArquitecturaLa integración de infraestructura, desarrollo de aplicaciones, bases de datos yherramientas gerenciales, requieren de capacidad y liderazgo para poder serconceptualizados y proyectados a futuro, solucionando los problemas de hoy. Elrol 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 denegocios gracias a su valioso aporte de soluciones tecnológicas.La arquitectura de sistemas en general, es una actividad de planeación, ya sea anivel de infraestructura de red y hardware, o de software.La arquitectura de software consiste en el diseño de componentes de unaaplicación (entidades del negocio), generalmente utilizando patrones de
  5. 5. arquitectura. El diseño arquitectónico debe permitir visualizar la interacciónentre las entidades del negocio y además poder ser validado, por ejemplo pormedio de diagramas de secuencia. Un diseño arquitectónico describe en generalel cómo se construirá una aplicación de software. Para ello se documentautilizando diagramas, por ejemplo: • Diagramas de clases • Diagramas de base de datos • Diagrama de despliegue • Diagrama de secuenciaSiendo los dos primeros los mínimos necesarios para describir la arquitectura deun 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 ArchitectsProgramaciónReducir un diseño a código puede ser la parte más obvia del trabajo deingeniería de software, pero no necesariamente es la que demanda mayortrabajo 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.PruebaConsiste en comprobar que el software realice correctamente las tareasindicadas en la especificación del problema. Una técnica de prueba es probarpor 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 pruebassean efectuadas por alguien distinto al desarrollador que la programó,idealmente un área de pruebas; sin perjuicio de lo anterior el programador debehacer 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 quedesconozca el tema de pruebas, de esta forma se evalúa que la documentaciónentregada sea de calidad, que los procesos descritos son tan claros quecualquiera puede entenderlos y el software hace las cosas tal y como estándescritas. El segundo enfoque es tener un área de pruebas conformada porprogramadores con experiencia, personas que saben sin mayores indicacionesen qué condiciones puede fallar una aplicación y que pueden poner atención en
  6. 6. detalles que personal inexperto no consideraría.DocumentaciónTodo lo concerniente a la documentación del propio desarrollo del software yde la gestión del proyecto, pasando por modelaciones (UML),diagramas decasos de uso, pruebas, manuales de usuario, manuales técnicos, etc; todo con elpropósito de eventuales correcciones, usabilidad, mantenimiento futuro yampliaciones al sistema.MantenimientoFase dedicada a mantener y mejorar el software para corregir erroresdescubiertos e incorporar nuevos requisitos. Esto puede llevar más tiempoincluso que el desarrollo del software inicial. Alrededor de 2/3 del tiempo deciclo de vida de un proyecto4 está dedicado a su mantenimiento. Una pequeñaparte de este trabajo consiste eliminar errores (bugs); siendo que la mayor partereside en extender el sistema para incorporarle nuevas funcionalidades y hacerfrente a su evolución.Modelos y filosofías de desarrollo de softwareLa ingeniería de software dispone de varios modelos, paradigmas y filosofías dedesarrollo, en los cuales se apoya para la construcción del software, entre ellosse 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 ISLa ingeniería de software tiene que ver con varios campos en diferentes formas:MatemáticasLos programas tienen muchas propiedades matemáticas. Por ejemplo lacorrección y la complejidad de muchos algoritmos son conceptos matemáticosque pueden ser rigurosamente probados. El uso de matemáticas en la IS es
  7. 7. llamado métodos formales.CreaciónLos programas son construidos en una secuencia de pasos. El hecho de definirpropiamente y llevar a cabo estos pasos, como en una línea de ensamblaje, esnecesario para mejorar la productividad de los desarrolladores y la calidad finalde los programas. Este punto de vista inspira los diferentes procesos ymetodologías que se encuentran en la IS.Gestión de ProyectosEl desarrollo de software de gran porte requiere una adecuada gestión delproyecto. Hay presupuestos, establecimiento de tiempos de entrega, un equipode profesionales que liderar. Recursos (espacio de oficina, insumos,equipamiento) por adquirir. Para su administración se debe tener una claravisión y capacitación en Gestión de Proyectos.ArteLos programas contienen muchos elementos artísticos. Las interfaces deusuario, la codificación, etc. Incluso la decisión para un nombre de una variableo una clase. Donald Knuth es famoso por argumentar a la programación comoun arte.ResponsabilidadLa responsabilidad en la ingeniería del software es un concepto complejo, sobretodo porque al estar los sistemas informáticos fuertemente caracterizados por sucomplejidad, es difícil apreciar sus consecuencias.En la ingeniería del software la responsabilidad será compartida por un grupogrande de personas, que comprende desde el ingeniero de requisitos, hasta elarquitecto software, y contando con el diseñador, o el encargado de realizar laspruebas. Por encima de todos ellos destaca el director del proyecto. El softwaredemanda una clara distribución de la responsabilidad entre los diferentes rolesque se dan en el proceso de producción.El ingeniero del software tiene una responsabilidad moral y legal limitada a lasconsecuencias directas.
  8. 8. Uso del sofware libreSistemas Ubuntu Fedora Open bsdoperativosUso en America 10000 12000 5000Uso en europa 50000 2000 14000total 600000 140000 19000 70000 60000 50000 40000 Columna 1 Columna 2 30000 Columna 3 20000 10000 0 ubuntu fedora open bsd
  9. 9. Índice de contenido Económicamente.........................................................................................................................2 Socialmente.................................................................................................................................2 Metodología.....................................................................................................................................2 Etapas del proceso.......................................................................................................................3 Análisis de requisitos..............................................................................................................3 Especificación........................................................................................................................3 Arquitectura............................................................................................................................3 Programación..........................................................................................................................4 Prueba.....................................................................................................................................4 Documentación.......................................................................................................................4 Mantenimiento........................................................................................................................4 Modelos y filosofías de desarrollo de software...............................................................................5 Naturaleza de la IS......................................................................................................................5 Matemáticas............................................................................................................................5 Creación..................................................................................................................................5 Gestión de Proyectos..............................................................................................................5 Arte.........................................................................................................................................5 Responsabilidad...............................................................................................................................5

×