41
Unidad 1: Introducción a la ingeniería de software Ingeniería de software es el estudio de los principios y metodología utilizan en el desarrollo y mantenimiento de sistemas, y está relacionada con muchas otras ciencias. Generalmente, el término de ingeniero de software, se utiliza de forma genéric en ocasiones se confunde con desarrollo de software. En esta materia comprenderás el término por medio del estudio de los principios básicos de la ingeniería de software a traés de la aplicaci!n de metodologías, herramientas empleadas a lo largo del ciclo del desarrollo de software. "a materia comprende además el estudio básico de los procesos de soporte al desarrollo por medio de la planificaci!n y gesti!n de proyectos y aseguramient la calidad del software. El dise#o y desarrollo del software es un proceso más que todo creatio, en cambio la ingeniería de software permite sistematizar el proceso de desarrollo software para eitar tener fracasos constantes y me$orar la rentabilidad de lo sistemas por medio de diersas técnicas tomando en cuenta la e%periencia prei "a ingeniería de software no busca encontrar una soluci!n a los problemas, más que todo se centra en encontrar arias soluciones a un mismo problema y tener los criterios técnicos para poder elegir la soluci!n más adecuada. Tema 01: El campo de aplicación de la Ingeniería de Software El software de computadora actualmente es la tecnología más importante en el ámbito mundial,lo encontramos en todas las actiidades que efectuamos diariamente. En el pasado nadie podía predecir que el software estuiera presente de esta manera, pero el hecho es que lo está, por tanto, es importante cono diferentes técnicas y metodologías con las cuales contamos para poder producir software de calidad y que con ello logremos el principal ob$etio que es satis las necesidades de las personas que lo utilizan. Historia "a primera ez que se acu#! el término de Ingeniería de &oftware fue en '()* p un grupo de estudio de la + - quienes afirmaban que la Ingeniería de &oftware podía compararse con otras ciencias ingenieriles. /n a#o más tarde, en '()0, en una 1onferencia de la +- celebrada Garmisch, -lemania, se concluy! seg2n los conferencistas que la Ingeniería de &oftware debe utilizar las filosofías y los paradigmas de las discip ingeniería para solucionar lo que se denomina la crisis del software, la cual

ISW1 Unidad 1.docx

Embed Size (px)

Citation preview

Unidad 1: Introduccin a la ingeniera de softwareIngeniera de software es el estudio de los principios y metodologas que se utilizan en el desarrollo y mantenimiento de sistemas, y est relacionada con muchas otras ciencias.Generalmente, el trmino de ingeniero de software, se utiliza de forma genrica, en ocasiones se confunde con desarrollo de software. En esta materia comprenders el trmino por medio del estudio de los principios bsicos de la ingeniera de software a travs de la aplicacin de metodologas, tcnicas y herramientas empleadas a lo largo del ciclo del desarrollo de software.La materia comprende adems el estudio bsico de los procesos de soporte al desarrollo por medio de la planificacin y gestin de proyectos y aseguramiento de la calidad del software.El diseo y desarrollo del software es un proceso ms que todo creativo, en cambio la ingeniera de software permite sistematizar el proceso de desarrollo de software para evitar tener fracasos constantes y mejorar la rentabilidad de los sistemas por medio de diversas tcnicas tomando en cuenta la experiencia previa.La ingeniera de software no busca encontrar una solucin a los problemas, ms que todo se centra en encontrar varias soluciones a un mismo problema y tener los criterios tcnicos para poder elegir la solucin ms adecuada.Tema 01: El campo de aplicacin de la Ingeniera de SoftwareEl software de computadora actualmente es la tecnologa ms importante en el mbito mundial, lo encontramos en todas las actividades que efectuamos diariamente.En el pasado nadie poda predecir que el software estuviera presente de esta manera, pero el hecho es que lo est, por tanto, es importante conocer las diferentes tcnicas y metodologas con las cuales contamos para poder producir software de calidad y que con ello logremos el principal objetivo que es satisfacer las necesidades de las personas que lo utilizan.Historia La primera vez que se acu el trmino de Ingeniera de Software fue en 1967 por un grupo de estudio de la OTAN quienes afirmaban que la Ingeniera de Software poda compararse con otras ciencias ingenieriles.Un ao ms tarde, en 1968, en una Conferencia de la OTAN celebrada en Garmisch, Alemania, se concluy segn los conferencistas que la Ingeniera de Software debe utilizar las filosofas y los paradigmas de las disciplinas de ingeniera para solucionar lo que se denomina la crisis del software, la cual hace referencia a que la calidad de los productos de software no era la adecuada, adems existan problemas en los tiempos de entrega y en los presupuestos.Lastimosamente los aos han pasado y una proporcin muy grande de productos de software todava se entregan tarde, se exceden los presupuestos, no cumplen con las expectativas de los clientes, no cuentan con documentacin apropiada y con fallas de ltimo momento, es por ello que algunos autores consideran que en lugar de llamarse crisis del software, debera llamarse depresin del software, en vista de su larga duracin y mal pronstico.Un ingeniero de Software debe adquirir habilidades tcnicas y administrativas las cuales debe aplicar no solo a la programacin, sino en cada etapa de la produccin del software, desde los requisitos hasta el mantenimiento que se efecta luego de la entrega al cliente.SoftwareHace unos aos, pocas personas podran haber definido lo que significa software, pero en la actualidad, la mayora de profesionales y personas particulares consideran que entienden el significado.Sin embargo, para poder llegar a una definicin adecuada hay que considerar las caractersticas siguientes:a) El software no se desgasta: El software idealmente no debera fallar, conforme avanza el tiempo, no se desgasta como lo hace el hardware, pero se deteriora debido a los cambios que experimenta en su vida. Cuando un componente de hardware falla, se sustituye con un repuesto, sin embargo, al software hay que aplicarle mantenimiento para poder corregir el deterioro lo cual es una actividad de mayor complejidad.

b) El software se desarrolla no se construye:El hardware se manufactura y aunque tenga similitudes con el software, las actividades son diferentes. En ambos la calidad depende del xito de su diseo pero tienen caractersticas diferentes, en ambos se utilizan personas, pero los costos del software se centran en las actividades de la ingeniera, por tanto, los proyectos no se pueden manejar como si fueran proyectos de manufactura.c) La mayora de software an se construye a la medida:Generalmente el software se desarrolla conforme los requerimientos del cliente y de acuerdo al problema o necesidad que se requiere resolver.En resumen, el software est conformado por programas que incluyen lneas de cdigo, por datos organizados o estructurados para facilitar su manipulacin sin dejar a un lado la documentacin que incluye manuales de usuario, manuales tcnicos y otros documentos relacionados al software, sin embargo, hay diferentes definiciones y puntos de vista de diversos autores que tambin pueden ser de utilidad.

Cualidades del softwareCorrectitud Un programa es funcionalmente correcto si se comporta de acuerdo a la especificacin de las funciones (especificacin de requerimientos funcionales) que debera proveer. Esta definicin de correctitud asume que existe una especificacin de requerimientos funcionales del sistema y que es posible determinar en forma no ambigua si las cumple o no. Se presentan diversas dificultades cuando no existe dicha especificacin, o si existe pero est escrita informalmente.Confiabilidad Informalmente el software es confiable si el usuario puede tenerle confianza. Formalmente la confiabilidad se define en trminos del comportamiento estadstico: la probabilidad de que el software opere como es esperado en un intervalo especificado. Cualquier desviacin de los requerimientos hace que el sistema sea incorrecto. Por otro lado, si la consecuencia de un error en el software no es seria, el software incorrecto an puede ser confiable.RobustezUn programa es robusto si se comporta de forma razonable an en circunstancias que no fueron anticipadas en la especificacin de requerimientos, por ejemplo, cuando encuentra datos de entrada incorrectos o algn mal funcionamiento del hardware como rotura de disco. Un programa que genere un error no recuperable en tiempo de ejecucin tan pronto como el usuario ingrese inadvertidamente un comando incorrecto no ser robusto, aunque podra ser correcto si en la especificacin de requerimientos no se establece la accin a tomar si se ingresa un comando incorrecto.

PerformanceEn la ingeniera de software generalmente performance equivale a eficiencia. Un sistema de software es eficiente si utiliza los recursos computacionales en forma econmica. La performance de un sistema es importante porque afecta su usabilidad, por ejemplo, si es muy lento reduce la productividad de los usuarios, si usa demasiado espacio de disco puede ser muy caro de ejecutar, si utiliza demasiada memoria puede afectar al resto de las aplicaciones que se estn ejecutando o ejecutarse demasiado lentamente mientras el sistema operativo intenta balancear el uso de la memoria por parte de las distintas aplicaciones.Amigabilidad Un sistema de software es amigable si un usuario humano lo encuentra fcil de utilizar.La interfaz de usuario es un componente importante de la amigabilidad al usuario, un sistema con una interfaz de ventana y un mouse es ms amigable para un usuario sin experiencia, mientras que un usuario ms avanzado podra preferir utilizar un conjunto de comandos. La amigabilidad es ms que la interfaz de usuario, por ejemplo, un sistema embebido no tiene interfaz humana, ya que solo interacta con hardware y quizs con otros sistemas. En este caso la amigabilidad est dada por la facilidad con que el sistema puede configurarse y adaptarse al ambiente de hardware.VerificabilidadUn sistema de software es verificable si sus propiedades pueden ser verificadas fcilmente. Por ejemplo, la correctitud o la performance de un sistema son propiedades que interesa verificar.La verificabilidad es en general, una cualidad interna pero a veces tambin puede ser externa, por ejemplo, en muchas aplicaciones de seguridad crtica, el cliente requiere la verificacin de ciertas propiedades.Mantenibilidad El trmino mantenimiento del software es utilizado, generalmente, para preferirse a las modificaciones que se realizan a un sistema de software luego de su liberacin inicial, siendo visto simplemente como correccin de bugs. Algunos estudios han mostrado, sin embargo, que la mayor parte del tiempo utilizado en mantenimiento es para agregarle al producto caractersticas que no estaban en las especificaciones originales o estaban definidas incorrectamente.ReparabilidadUn sistema de software es reparable si permite la correccin de sus defectos con una carga limitada de trabajo. En otros campos de la ingeniera puede ser ms barato cambiar un producto entero o una buena parte del mismo que repararlo, por ejemplo, televisores, y una tcnica muy utilizada para lograr reparabilidad es usar partes estndares que puedan ser cambiadas fcilmente. Sin embargo, en el software las partes no se deterioran, y aunque el uso de partes estndares puede reducir el costo de produccin del software, el concepto de partes reemplazables pareciera no aplicar a la reparabilidad del software.EvolucionabilidadUn sistema es evolucionable si acepta cambios que le permitan satisfacer nuevos requerimientos. La mayora de los sistemas de software comienzan siendo evolucionables pero luego de aos de evolucin alcanzan un estado en el cual cualquier modificacin importante trae aparejado el riesgo de daar caractersticas existentes. En general, la aplicacin de cambios sucesivos tiende a reducir la modularidad del sistema original, que era lo que lo haca evolucionable.ReusabilidadEs similar a la evolucionabilidad, en la segunda se modifica un producto para construir una nueva versin del mismo producto, en la primera se utiliza un producto, posiblemente con modificaciones menores, para construir otro producto.PortabilidadEl software es portable si puede ser ejecutado en distintos ambientes, refirindose este ltimo tanto a plataformas de hardware como a ambientes de software como puede ser determinado sistema operativo. En general, la portabilidad se refiere a la habilidad de un sistema de ser ejecutado en plataformas de hardware distintas, y a medida que la razn de dinero gastado en software versus hardware crece, la portabilidad gana importancia.Comprensibilidad Es una cualidad interna del producto y ayuda a lograr muchas de las otras cualidades como evolucionabilidad y verificabilidad. Desde un punto de vista externo, un usuario considera que un sistema es comprensible si su comportamiento es predecible, en este caso la comprensibildad es un componente de la amigabilidad al usuario.InteroperabilidadSe refiere a la habilidad de un sistema de coexistir y cooperar con otros sistemas, por ejemplo, la habilidad de un procesador de texto de incluir grficas producidas por un paquete de grficos.

ProductividadEs una cualidad del proceso de produccin de software, mide la eficiencia del proceso, es la cualidad de performance aplicada al proceso. Un proceso eficiente resulta en una entrega ms rpida del producto.Oportunidad Es una cualidad del proceso que se refiere a la habilidad de entregar el producto a tiempo.Histricamente los procesos de produccin de software no han tenido esta cualidad lo que llev a la llamada crisis del software que a su vez trajo aparejada la necesidad y el nacimiento de la ingeniera de software. Incluso, actualmente muchos procesos fracasan en lograr sus resultados a tiempo.VisibilidadUn proceso de desarrollo de software es visible si todos sus pasos y su estado actual son claramente documentados. Otros trminos utilizados son transparencia y apertura. La idea es que los pasos y el estado del proyecto estn disponibles y fcilmente accesibles para ser examinados externamente.Definicin de ingeniera de softwareEl establecimiento y uso de principios de ingeniera robustos, orientados a obtener econmicamente software que sea fiable y funcione eficientemente sobre mquinas reales. Fritz Bauer.La aproximacin sistemticamente al desarrollo, operacin y mantenimiento del software. Software: Programas de ordenador, procedimientos, reglas, documentacin y datos asociados a un sistema ordenador.IEEE Standard Glossary of Software Engineering (IEE83).Podemos encontrar an ms definiciones, pero lo ms importante es comprender que es la ingeniera de software para que hagas tu propia definicin.Objetivos de la ingeniera de softwareEn la construccin y desarrollo de proyectos se aplican mtodos y tcnicas para resolver los problemas, la informtica aporta herramientas y procedimientos sobre los que se apoya la ingeniera de software, sus objetivos son: Mejorar la calidad de los productos de software. Aumentar la productividad y trabajo de los ingenieros del software. Facilitar el control del proceso de desarrollo de software. Suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente. Definir una disciplina que garantice la produccin y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado. Entre otros.Naturaleza de la ingeniera de softwareLa ingeniera de software tiene que ver con varios campos en diferentes formas:Matemticas, gestin de proyectos, creacin, arte.MatemticasLos programas tienen muchas propiedades matemticas. Por ejemplo, la correccin y la complejidad de muchos algoritmos son conceptos matemticos que pueden ser rigurosamente probados. El uso de matemticas en la IS es llamado mtodos formales.Gestin de proyectosEl desarrollo de software de gran porte requiere una adecuada gestin del proyecto. Hay presupuestos, establecimiento de tiempos de entrega y un equipo de profesionales que liderar. Recursos (espacio de oficina, insumos y equipamiento) por adquirir. Para su administracin se debe tener una clara visin y capacitacin en gestin de proyectos.CreacinLos programas son construidos en una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos pasos, como una lnea 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 metodologas que se encuentran en la IS.ArteLos programas contienen muchos elementos artsticos. Las interfaces de usuario, la codificacin, etc. Incluso la decisin para un nombre de una variable o una clase. Fundamentos y tcnicas de la ingeniera de softwareLos fundamentos y tcnicas de Ingeniera de software buscan un compromiso con la calidad, las organizaciones deben centrarse en conseguir dicha calidad. El software se puede ver como un conjunto de componentes que buscan obtener la calidad: Procedimientos, Mtodos y herramientas.Los procedimientos actan sobre los mtodos y las herramientas, definen la secuencia en la que deben aplicarse los mtodos y cmo usar las herramientas. Los mtodos definen cmo desarrollar el software desde el punto de vista tcnico. Las herramientas proporcionan un soporte automtico o semi automtico para los mtodos. Retos fundamentales que afronta la ingeniera de softwareEn el siglo XXI, la ingeniera de software afronta tres retos fundamentales:1. El reto de la heterogeneidadEs necesario que los sistemas operen en redes, con diferentes tipos de computadoras o dispositivos mviles, diferentes sistemas operativos. Tambin muchas veces es necesario combinar software nuevo con software heredado ms viejo escrito en diferentes lenguajes de programacin. El reto de la heterogeneidad es desarrollar tcnicas para construir software confiable que sea flexible para adecuarse a esta heterogeneidad.2. El reto de la entrega Las tcnicas de ingeniera de software consumen mucho tiempo con el propsito de desarrollar software de calidad. Hoy en da, los negocios necesitan cambiar con rapidez y dar una respuesta rpida. El reto es reducir los tiempos de entrega para sistemas grandes y complejos sin dejar de considerar la importancia de su calidad.3. El reto de la confianzaEl software tiene relacin con todos nuestros aspectos de la vida, necesitamos confiar en l, especialmente si accedemos al software por medio de pginas Web o interfaces de servicios Web. El reto de la confianza es desarrollar tcnicas que demuestren que los usuarios pueden confiar en el software.Se dice que el software cumple con la caracterstica de reusabilidad, si puede ser ejecutado en distintos ambientes, refirindose este ltimo tanto a plataformas de hardware como a ambientes de software como puede ser determinado sistema operativo. Falso.Un ingeniero de software debe adquirir habilidades tcnicas y administrativas que debe aplicar no solo a la programacin, sino en cada etapa de la produccin del software, desde los requisitos hasta el mantenimiento que se efecta luego de la entrega al cliente. Verdadero.El software idealmente no debera fallar conforme avanza el tiempo, no se desgasta como lo hace el hardware, pero se deteriora debido a los cambios que experimenta en su vida. Verdadero.El reto de la confianza es desarrollar tcnicas para construir software confiable que sea flexible para adecuarse a esta heterogeneidad. Falso.Tema 02: El papel del ingeniero de softwareLa ingeniera de software se lleva a cabo respetando metodologas, tcnicas, marcos legales y sociales, conceptos ticos, entre otras actividades relacionadas. Los ingenieros de software deben comprender que no solo bastan los conocimientos tcnicos que poseen y que su papel dentro de los proyectos de desarrollo de software es muy importante y que requiere de muchas responsabilidades. Necesitan conocer cul es el papel que tiene el ingeniero de software.Evolucin de la ingeniera del softwareInicialmente la programacin de las computadoras era un arte que no dispona de mtodos sistemticos en que poder basarse para la realizacin de productos software, por ello se realizaban sin ninguna planificacin.En el ao 1950 ya se hablaba de que existan programadores que escriban programas pero no tenan muchos conocimientos tcnicos, ni experiencia.A principios de los aos 60, ya existan los programadores expertos que desarrollaban grandes proyectos.A finales de los aos 60, surgieron los grandes sistemas comerciales de software, el trabajo ya no consista solo en la programacin, va ms all, se crea el trmino ingeniera de software.Desde mediados de los 60 hasta finales de los 70 se caracteriz por el establecimiento del software como un producto que se desarrollaba para una distribucin general. En esta poca naci lo que se conoce como el mantenimiento del software que se da cuando cambian los requisitos de los usuarios y se hace necesaria la modificacin del software. El esfuerzo requerido para este mantenimiento era en la mayora de los casos tan elevado que se haca imposible su mantenimiento.A continuacin, surge una etapa que se caracteriza por la aparicin de una serie de tcnicas como la Programacin Estructurada y las Metodologas de Diseo que solucionan los problemas anteriores. A finales de esta etapa aparecen las herramientas CASE, aunque como podemos imaginar eran muy rudimentarias.Hoy en da, los ingenieros de software estn muy orgullosos, ya que debido a la complejidad del software que han desarrollado a lo largo del siglo XX, es que han logrado muchas contribuciones en todas las actividades cotidianas que efectuamos, pero la contribucin en el siglo XXI ser an ms grande, ya visitamos el espacio, se cre Internet, el transporte es controlado por un software, etc.El ingeniero en generalUn ingeniero es alguien que resuelve problemas utilizando las fuerzas de la naturaleza. Sus herramientas principales son conocimientos cientficos y una serie de tcnicas aprendidas por experiencia o en sus estudios de la ingeniera.El ingeniero del softwareLa ingeniera de software es una disciplina de la ingeniera que concierne a todos los aspectos de la produccin de software.Los ingenieros de software adoptan un enfoque sistemtico para llevar a cabo su trabajo, utilizan las herramientas y tcnicas necesarias para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y recursos disponibles.Diferencia entre ingeniero del software y los programadoresEl programador es un especialista en algunos mbitos de la ingeniera de software. Un ingeniero de software est a cargo del proceso global de desarrollo de software y se espera que mejore la fiabilidad y el mantenimiento de este complejo proceso.Un ingeniero de software puede tener un equipo de programadores informticos que trabajan bajo su supervisin.Diferencia entre los tipos de ingenierosIngeniero en informticaLa ingeniera informtica es la profesin que consiste en la aplicacin de los fundamentos de la ciencia de la computacin, la electrnica y la ingeniera de software, para el desarrollo de soluciones integrales de cmputo y comunicaciones, capaces de procesar informacin de manera automtica.Por lo que se refiere al soporte fsico, la ingeniera informtica se fundamenta en la tecnologa electrnica, lo que le permite a las computadoras interactuar con sistemas fsicos, as como desarrollar interfaces de comunicacin y control entre la computadora y diversos dispositivos mecnicos y elctricos, tales como sistemas de adquisicin de datos, instrumentacin virtual, control de robots, sistemas de iluminacin, etc. En el aspecto lgico y formal, la ingeniera informtica se fundamenta en la teora de autmatas, los lenguajes formales, la teora de la informacin, el diseo de algoritmos, el reconocimiento de patrones, la inteligencia artificial y la ingeniera del conocimiento. Ingeniero de sistemasLa tarea del ingeniero de sistemas afecta a todos los aspectos de la produccin de un software de calidad. Participa de la creacin, produccin, racionalizacin, diseo y control de sistemas, equipos e instalaciones informticos. Tiene en cuenta todas las entidades que integran un sistema de computacin (hardware, software, servicios y clientes) para apoyar los procesos de una organizacin.Su propsito consiste en la aplicacin de la tecnologa a la construccin de equipos capaces de procesar y almacenar la informacin de manera automtica.Una de las principales diferencias de la ingeniera de sistemas respecto a otras disciplinas de ingeniera tradicionales, consiste en que la ingeniera de sistemas no construye productos tangibles. Mientras que los ingenieros civiles podran disear edificios o puentes, los ingenieros de sistemas trabajan con elementos abstractos, con ayuda de las metodologas de la ciencia de sistemas, y confan adems en otras disciplinas para disear y entregar los productos tangibles que son la realizacin de esos sistemas.El ingeniero de sistemas es capaz de:-Desarrollar, evaluar y optimizar software.-Disear recursos computacionales.-Crear modelos matemticos, estadsticos y de simulacin.-Realizar investigaciones cientficas, culturales y tecnolgicas.-Dirigir y coordinar grupos de trabajo.-Evaluar e instalar equipos.-Desarrollar la organizacin y arquitectura de equipos. -Seleccionar y administrar el personal y el equipo de unidades de servicios de computacin.Ingeniero de softwareEl ingeniero de software debe contar con conocimientos de sistemas operativos, programacin sistmica, tcnicas de programacin y sistemas computacionales para toma de decisiones.En la sociedad moderna el papel de la ingeniera es proporcionar sistemas y productos que mejoren los aspectos materiales de la vida humana, para que as la vida sea ms fcil, segura y placentera.Richard Fairley y Mary WillshireLos aspectos tcnicos de un ingeniero de software son: Tener conocimiento de tcnicas de programacin. Conocer a fondo la estructura de los datos disponibles. Conocer algn lenguaje de programacin. Tener fundamentos de anlisis, diseo y pruebas. Estar familiarizado con estrategias de diseo. Tener amplia capacidad de abstraccin. Tener capacidad de gestin. Tener capacidad de comunicacin.Relaciones de la ingeniera del softwareEl ingeniero del software como especialista se relaciona con mltiples reas en la empresa, as como ajenos a ella: El cliente (usuarios).Programadores, diseadores, testers, mantenimiento y calidad. La alta gerencia.Proveedores y grupos de inters.Mtodo de la ingeniera del software Consiste en usar heursticas para causar, con los recursos disponibles, el mejor cambio posible en una situacin incierta o pobremente comprendida.A diferencia de la ciencia, la ingeniera no busca modelar la realidad, sino la percepcin que tiene la sociedad de la realidad, incluyendo sus mitos y prejuicios. Caractersticas aplicables Bsqueda de una situacin que requiere un cambio y determinar el problema real. La solucin deseada tiene que ser consistente con los recursos disponibles. La solucin debe ser la mejor, tcnicamente se denomina la solucin ptima.Responsabilidad profesional y tica del ingeniero de software Los ingenieros de software no solo deben considerar aspectos tcnicos, deben tener una visin ms amplia, en lo tico, social y profesional.Dentro de los aspectos ticos tenemos: Confidencialidad. Competencia. Derechos de propiedad intelectual. Uso del equipo informtico. La responsabilidad en la ingeniera de software es un concepto complejo, sobre todo porque al estar los sistemas informticos fuertemente caracterizados por su complejidad, es difcil apreciar sus consecuencias. En la ingeniera 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 diseador, o el encargado de realizar las pruebas. Por encima de todos ellos destaca el director del proyecto. El software demanda una clara distribucin de la responsabilidad entre los diferentes roles que se dan en el proceso de produccin.El ingeniero del software tiene una responsabilidad moral y legal limitada a las consecuencias directas.No basta con decir que debes poseer estndares normales de honestidad e integridad. Existen reas donde los estndares de comportamiento no estn acotados por las leyes, sino por la nocin de la responsabilidad profesional. Algunas de estas son:A) ConfidencialidadDebes respetar la confidencialidad de los empleadores y clientes, incluso si no fue firmado un acuerdo formal de confidencialidad.B) CompetenciaNo debes aceptar conscientemente trabajos que estn fuera de tu capacidad, tampoco debes falsificar tu nivel de competencias.C) Derechos de propiedad intelectualDebes asegurarte que la propiedad intelectual de tus empleadores y clientes estn protegidas, de acuerdo a las leyes locales y si el sistema estar disponible va Web, incluso debes conocer las implicaciones y leyes internacionales que debes cumplir, incluyendo las patentes y copyright.D) Uso inapropiado de las computadorasActualmente existe un enorme uso inapropiado de las computadoras, por ejemplo, desperdiciando el tiempo laboral en actividades de ocio y en redes sociales, utilizando las computadoras para actividades de hacking, jugando en lnea.Organizaciones como la ACM, el IEEE y la British Computer Society publican un cdigo de conducta profesional o de tica.En cualquier situacin en la que diferentes personas tienen distintos puntos de vista y objetivos, ser posible encontrar problemas ticos. Los problemas ticos aparecen en nuestra vida profesional y, afortunadamente en muchos casos, son relativamente menores y se pueden resolver sin dificultad. Cuando no se pueden resolver, los ingenieros se enfrentan con otro problema, ya que la accin con base en sus principios podra ser renunciar a su trabajo, pero esto puede afectar a otros, como por ejemplo, a sus colaboradores o a sus hijos.El rea de tica y responsabilidad profesional ha recibido creciente atencin en los pasados aos. Los principios de tica se pueden considerar desde un punto de vista filosfico, y la tica de la ingeniera de software se debe tratar con referencia a estos principios bsicos. Este es el enfoque considerado por Laudon (1995) y por Huff y Martin (1995).Perfil del ingeniero de softwareEl ingeniero de software es un profesional con slidas bases metodolgicas en el desarrollo de software a pequea y gran escala, por tanto, debe contar con algunas caractersticas de conocimientos para poder desempear de forma correcta sus funciones.Las caractersticas que le permiten alcanzar el perfil descrito son:Conocimientos sobre:1. Metodologas y tcnicas para el desarrollo de software a pequea y gran escala, tales como desarrollo de requerimientos, interaccin humano-computadora, diseo, construccin, evolucin, pruebas y aquellos relacionados con la administracin, como el aseguramiento de la calidad y la administracin de proyectos.2. Las ciencias computacionales, que le permitan la aplicacin viable de algoritmos, estructuras de datos y lenguajes de programacin en el desarrollo de software.3. Las herramientas para la especificacin y el modelado de sistemas de software, as como la evaluacin de los procesos y productos de software para su mejora.4. Administracin y optimizacin de tiempo y costo de los recursos involucrados en el desarrollo de software.5. El entorno social para comprender los factores sociales, polticos, ecolgicos y ticos relacionados con el desarrollo tecnolgico y el desempeo profesional.6. Las reas de investigacin relacionadas con la ingeniera en software.Habilidades para:1. Trabajar como parte de un equipo en el desarrollo y evolucin de productos de software.2. Comprender, aplicar y comunicar el proceso para determinar las necesidades del cliente y traducirlos a requisitos de software.3. Conciliar objetivos en conflicto, considerando compromisos con las limitaciones de costo, tiempo, conocimiento, sistemas existentes y de las organizaciones involucradas.4. Disear soluciones apropiadas en una o ms reas de concentracin, usando enfoques de ingeniera que integren temas ticos, sociales, legales y econmicos.5. Entender y aplicar teoras, modelos y tcnicas que provean una base para el diseo, desarrollo, verificacin e implantacin de software.6. Negociar y trabajar profesionalmente, liderar cuando sea necesario y comunicarse efectivamente con los interesados en un ambiente de ingeniera de software.Actitudes de:1. Liderazgo en equipos de trabajo multidisciplinarios.2. Perseverancia en la solucin de problemas.Capacidad de mantenerse actualizado en su rea de trabajo.4. Afn de superacin.5. Responsabilidad y tica en su desempeo profesional.6. Conductora emprendedora e innovadora.7. Conciencia de la realidad social y responsabilidad ecolgica.8. Aprendizaje.Cdigo de tica y prctica profesional de la ingeniera de softwareLa ingeniera de software debe adherirse a los siguientes ocho principios:1. Pblico: Los ingenieros de software deben actuar en consonancia con el inters del pblico.2. Cliente y empleador: Los ingenieros de software deben actuar de forma que respondan a los intereses de sus clientes y empleadores siendo consecuentes con el inters pblico.3. Producto: Los ingenieros de software debern asegurar que sus productos y las modificaciones asociadas cumplan los ms altos estndares profesionales posibles.4. Juicio: Los ingenieros de software debern mantener la integridad e independencia en sus juicios profesionales.5. Gestin: Los gerentes y lderes ingenieros de software debern suscribir y promocionar un enfoque tico en la gestin del desarrollo y mantenimiento del software.6. Profesin: Los ingenieros de software debern mantener la integridad y reputacin de la profesin de acuerdo con el inters pblico.7. Colegas: Los ingenieros de software debern ser imparciales y apoyar a sus colegas.8. Uno mismo: Durante toda su existencia, los ingenieros de software debern aprender lo concerniente a la prctica de su profesin y promocionar un enfoque tico en la prctica de su profesin.Fuente: Cdigo de tica de la ACM/IEEE (IEEE/ACM 1999).Aunque cada uno de estos ocho principios es igualmente importante, aparece un tema ms relevante: un ingeniero de software debe trabajar en pro del inters pblico.En el mbito personal, un ingeniero de software debe atenerse a las siguientes reglas: Nunca robar datos para beneficio personal. Nunca distribuir o vender informacin patentada que haya obtenido como parte de su trabajo en un proyecto de software. Nunca destruir o modificar maliciosamente los programas, archivos o datos de otra persona. Nunca violar la privacidad de un individuo, grupo u organizacin. Nunca atacar un sistema por deporte o beneficio. Nunca crear o difundir un virus o un gusano de computadora. Nunca usar la tecnologa de computacin para facilitar la discriminacin o el hostigamiento.Durante la dcada pasada, ciertos miembros de la industria del software han cabildeado por una legislacin protectora que: Permita a las compaas liberar el software sin revelar los defectos conocidos. Exentar a los desarrolladores de responsabilidad penal por cualesquiera daos que resulten debido a dichos defectos conocidos. Restringir a otros la revelacin de defectos sin permiso del desarrollador original. Permitir la incorporacin de software de autoayuda dentro de un producto que pueda desactivar (va comandos remotos) la operacin del producto. Exentar a los desarrolladores de software con autoayuda de los daos en caso de que el software lo desactive una tercera persona. Al igual que con cualquier legislacin, el debate con frecuencia se centra en conflictos polticos, no tecnolgicos. Sin embargo, mucha gente considera que la legislacin protectora, si se propone de manera inadecuada, entra en conflicto con el cdigo de tica de la ingeniera de software al exentar indirectamente a los ingenieros de software de su responsabilidad para producir software de alta calidad.Las herramientas principales de un ingeniero son sus conocimientos cientficos y una serie de tcnicas aprendidas por experiencia o en sus estudios de la ingeniera. Verdadero.La responsabilidad en la ingeniera de software es un concepto complejo, sobre todo porque al estar los sistemas informticos fuertemente caracterizados por su complejidad, es difcil apreciar sus consecuencias. Verdadero.El concepto de confidencialidad indica que no debes aceptar conscientemente trabajos que estn fuera de tu capacidad, tampoco debes falsificar tu nivel de competencias. Falso.El ingeniero de software es un profesional con slidas bases metodolgicas en el desarrollo de software a pequea y gran escala, por tanto, debe contar con algunas caractersticas de conocimientos para poder desempear de forma correcta sus funciones. Verdadero.Tema 03: Modelos del ciclo de vida del softwareGeneralmente nos encontramos que al final de los proyectos de software, el resultado no es exactamente lo que el cliente necesita, a veces se da menos, a veces ms o incluso, en ocasiones nada de lo que se necesitaba, generando as costos muy elevados y la insatisfaccin del cliente, por esa razn es recomendable elegir el modelo que mejor se adapte a las necesidades y requerimientos del cliente.Desarrollo del software en teoraEn un mundo ideal, el software comienza desde cero, primero se determinan los requerimientos del cliente, luego se realiza el anlisis. Cuando se terminan los artefactos del anlisis se produce el diseo. Esto seguido por la implementacin o programacin del producto software completo, el cual se instala en la computadora del cliente o se pone en un servidor de acceso en lnea.No obstante, la construccin del software es muy diferente en la prctica por dos razones: Primera, los profesionales del software son humanos y, por lo tanto, cometen equivocaciones.Segunda, los requerimientos del cliente pueden cambiar mientras se est construyendo el software.

Qu es?Los modelos del ciclo de vida del software, tambin conocidos como modelos prescriptivos del software, definen un conjunto distinto de actividades, acciones, tareas, fundamentos y productos de trabajo que se requieren para desarrollar software de alta calidad.No son perfectos, pero proporcionan una gua til para el trabajo de la ingeniera del software. Por qu se les llama prescriptivos?Porque prescriben un conjunto de elementos de proceso: Actividades del marco de trabajo. Acciones de ingeniera del software. Tareas. Productos del trabajo. Aseguramiento de calidad. Mecanismos de control de cambio para cada proyecto. Tambin prescribe un flujo de trabajo.Modelo en cascadaEl modelo en cascada es secuencial, ejecuta una lista de actividades al pie de la letra, y no se puede efectuar la actividad dos sin haber finalizado la uno, por eso es secuencial, se sabr el resultado hasta que se finalicen todas las etapas o tareas y eso puede ser desastroso, ya que cuando se conozca el resultado ya no habr mucho tiempo para corregir el software terminado, pero si hay tiempo, los cambios que se hagan pueden deteriorar el software.Algunas veces llamado Ciclo de vida clsico sugiere: Un enfoque sistemtico secuencial hacia el desarrollo del software.Es el paradigma ms antiguo para la ingeniera del software.

Comunicacin: Inicio del proyecto, Recopilacin de requisitos.Planeacin: Estimacin, Itinerario, Seguimiento.Modelado: Anlisis, Diseo.Construccin: Cdigo, Prueba.Despliegue: Entrada, Soporte, Retroalimentacin.En este modelo las pruebas se dejan ya casi en las ltimas etapas, hoy en da, es preferible que las pruebas se hagan lo ms pronto posible, no solo al final, as se garantiza la calidad del software.Modelo en cascadaSe utiliza cuando: Existen ocasiones en que los requisitos de un problema se entienden de manera razonable: cuando el trabajo fluye desde la comunicacin a travs del despliegue de una manera casi lineal. Ejemplo: adaptaciones o mejoras a un sistema de contabilidad existente debido a los cambios en las regulaciones del Gobierno, ya se sabe que hay que cambiar porcentajes de impuestos u otros, pero son porcentajes fijos.En un nmero limitado de proyectos de nuevos desarrollos, cuando los requerimientos estn bien definidos y son estables de forma razonable.Problemas al aplicar el modelo:Es muy raro que los proyectos reales sigan el flujo secuencial que propone el modelo, ya que generalmente los proyectos son demasiado complejos y el cliente necesita ver lo ms pronto posible una versin funcional del software.Es difcil para el cliente establecer los requisitos de manera explcita, al principio pueda que no conozca todos los detalles que necesita resolver con la implementacin del software. El modelo en cascada lo requiere.El cliente debe tener paciencia. Debe esperar que el proyecto est bien avanzado para poder probar una versin que funcione del programa, no puede utilizar ninguna versin funcional del software, hasta que finalice el proyecto.Resultados de aplicar el modelo:Los cambios confunden mientras el equipo del proyecto acta.Incorporan la incertidumbre natural.Un error grave ser desastroso si no se detecta antes de la revisin del programa.Los proyectos de software van avanzando, pero por cada cambio que se realiza, el equipo de desarrollo tiende a confundirse ms.Conclusin de anlisis a un proyecto real:Conduce a estados de bloqueo.El estado de bloqueo tiende a ser ms comn al principio y al final del proceso. Puede servir como modelo en situaciones donde los requerimientos estn fijos, y donde el trabajo se realiza hasta su conclusin de una manera lineal.En la actualidad, el trabajo de software est acelerado y sujeto a una cadena infinita de cambios (de carctersticas, funciones y contenido de la informacin). Con frecuencia el modelo en cascada no es apropiado para dicho trabajo.Modelo de procesos incrementalesEn los modelos incrementales, el cliente identifica a grandes rasgos, los servicios que proporcionar el sistema. Identifica qu servicios son ms importantes y cules menos. Entonces se definen varios incrementos en donde cada uno proporciona un subconjunto de funcionalidades del sistema.Entre los modelos incrementales podemos seleccionar alguno de los siguientes segn nos convenga:a) Modelo incrementalSe da cuando: Los requisitos iniciales del software estn bien definidos en forma razonable.Hay una necesidad imperiosa de proporcionar un conjunto de funcionalidad al usuario y despus refinarla y expandirla.A menudo, al utilizar un modelo incremental el primer incremento es un producto esencial, es decir, software que puede ser utilizado pero que posee solo requerimientos bsicos.En muchas situaciones los requisitos iniciales del software estn bien definidos en forma razonable, pero el enfoque global excluye un proceso puramente lineal.Quiz haya necesidad de proporcionar un conjunto limitado de funcionalidad para el usuario y despus refinarla y expandirla en las entregas posteriores del software. Para situaciones como estas, es conveniente utilizar el modelo incremental, ya que por cada incremento, el usuario ver una versin funcional del software. En el siguiente incremento se habr mejorado y agregado nuevas funcionalidades.

Caractersticas: Este modelo combina elementos del modelo en cascada aplicada en forma iterativa. Aplica secuencias lineales de manera escalonada conforme avanza el tiempo en el calendario. Cada secuencia lineal produce incrementos de software. En este modelo el primer incremento es un producto esencial. Es iterativo por naturaleza. Se enfoca en la entrega de un producto funcional con cada incremento. Es til cuando el personal necesario para una implementacin completa no est disponible, posiblemente el personal con mayor experiencia est trabajando en otro proyecto. Podemos utilizar el personal disponible para iniciar el proyecto y luego incorporar ms personal para los siguientes incrementos. Los primeros incrementos se pueden implementar con menos gente. Los incrementos se pueden planear para manejar los riesgos tcnicos. En este tipo de proyectos podemos comenzar con un equipo reducido de personas y conforme se avanza en los incrementos se van incorporando ms, se corre el riesgo que estas nuevas personas no se acoplen al equipo que inici el software, pero si se planifica y documenta bien todo, el riesgo ser mnimo.Ejemplo de un software procesador de texto aplicando el modelo incremental:Primer incremento:Realiza funciones bsicas de administracin de archivos, edicin y produccin de documentos.Segundo incremento: Ediciones ms sofisticadas y tendra funciones ms complejas de produccin de documentos.Tercer incremento:Funciones de correccin ortogrfica y gramatical.Cuarto incremento:Capacidades avanzadas de configuracin de pgina.

b) Desarrollo Rpido de Aplicaciones (DRA)El objetivo del modelo de desarrollo rpido de aplicaciones es el desarrollo de sistemas en poco tiempo, es una adaptacin a alta velocidad del modelo en cascada, pero tiene las siguientes caractersticas: Requiere de equipos trabajando en paralelo.Aplicando tecnologa de componentes.Del ingls Rapid Application Development (RAD). El Desarrollo Rpido de Aplicaciones (DRA) es un modelo de proceso de software incremental que resalta un ciclo de desarrollo corto. Como otros modelos de proceso, el enfoque DRA cumple con las actividades genricas del marco de trabajo que ya se han presentado.La comunicacin trabaja para entender el problema del negocio y las caractersticas de informacin que debe incluir el software. La planeacin es esencial porque varios equipos de software trabajan en paralelo sobre diferentes funciones del sistema. El modelado incluye 3 fases: el modelado de negocios, el modelado de datos y modelado de procesos. La construccin resalta el empleo de componentes de software existente y la aplicacin de la generacin automtica de cdigo. Por ltimo, el despliegue establece una base para las iteraciones subsecuentes, si estas son necesarias.

Tema 04: El proceso del softwareCuando se trabaja para construir un producto o sistema es importante seguir una serie de pasos predecibles, una especie de mapa de carreteras que ayude a obtener un resultado de alta calidad y a tiempo. El mapa de carreteras que debe seguirse se llama proceso de software.Los procesos de software son complejos y, como todos los procesos intelectuales y creativos, dependen de las personas que toman decisiones y juicios.Un proceso de software es un conjunto de actividades que conducen a la creacin de un producto software.Quin lo hace? Los ingenieros de software y sus jefes adaptan el proceso a sus necesidades y despus le dan seguimiento. Adems la gente que ha solicitado el software tiene una funcin que desempear en el proceso de definirlo, construirlo y probarlo. Por qu es importante?Porque ofrece estabilidad, control y organizacin a una actividad que puede volverse catica si no se controla. Sin embargo, un enfoque de ingeniera del software moderno debe ser gil. Debe requerir solo aquellas actividades, controles y documentaciones apropiados para el equipo del proyecto y el producto que ha de producirse.Concepto de proceso de software

Producto y procesoEl producto de software, generalmente, nace por una necesidad o para resolver algn problema, luego este producto pasa por un proceso de software que incluye las etapas de desarrollo, control, gestin y operacin, hasta que obtenemos el producto o la solucin del software.Es extrao que alguien diga: "Me puse a programar y me sali una contabilidad", sin embargo, algunas aplicaciones dan la impresin de que recordar que la probabilidad de que un mono teclee en una mquina de escribir y salga el quijote no es cero, es decir, en algunas ocasiones se puede finalizar un producto de software sin efectuar ninguna planificacin, al final el software siempre se va finalizar, pero no ser un software de calidad.

Si el proceso es dbil, sin duda, el producto final sufrir las consecuencias. Asimismo, una confianza excesiva en el proceso es peligrosa.La gente obtiene tanta satisfaccin del proceso creativo que del producto final. Un pintor disfruta los trazos del pincel tanto como el resultado del cuadro. Un profesional creativo del software debe sentir tanta satisfaccin del proceso como del producto terminado.El trabajo que realizan las personas relacionadas con el software, cambiar en los aos que siguen. La dualidad del producto y el proceso es un elemento importante para mantener a las personas creativas comprometidas mientras finaliza la transicin desde la programacin hasta la ingeniera de software. Marco de trabajo para el procesoUn marco de trabajo establece la base para un proceso de software completo al identificar un nmero pequeo de actividades del marco de trabajo aplicables a todos los proyectos de software, sin importar su tamao o complejidad.El siguiente marco de trabajo genrico del proceso se puede aplicar en la mayora de proyectos de software:

El marco de trabajo descrito lo complementa una serie de actividades, de las cuales se incluyen:

La aplicacin de cualquier modelo de proceso del software debe reconocer que la adaptacin es esencial para el xito, pero los modelos de proceso difieren de manera fundamental en: El grado en el cual las tareas de trabajo estn definidas dentro de cada actividad del marco de trabajo. La forma en la que se aplican las actividades para asegurar la calidad del software. La forma en la cual se efectan las actividades de seguimiento y control. La interdependencia entre las tareas y las actividades. El grado en que los clientes se comprometen con el proyecto. El grado en el cual se define la responsabilidad del equipo y la organizacin. El grado de autonoma otorgado al equipo del proyecto de software. En aos recientes se han propuesto modelos de proceso que subrayan la agilidad del proyecto y siguen un conjunto de principios, los cuales conducen a un enfoque ms informal para el proceso de software.Estos modelos giles del proceso resaltan la manejabilidad y adaptabilidad. Son apropiados para muchos proyectos y son tiles cuando se desarrollan aplicaciones en red. Modelo de capacidad de madurez (CMMI)CMMI es una hoja de ruta para la mejora del proceso de software. Identifica niveles de madurez, proporciona una gua para medir la capacidad del proceso de software de la organizacin, permite fijar metas y prioridades para la mejora del proceso, gua a la organizacin hacia una ingeniera del software de excelencia.El objetivo del modelo CMMI es proveer una gua para mejorar los procesos de una organizacin y su capacidad para gestionar el desarrollo, la adquisicin y el mantenimiento de los productos de software.El Modelo de Capacidad de Madurez fue desarrollado por el Instituto de Ingeniera de Software, basado en un conjunto de capacidades de software y de sistemas que deben estar presentes conforme las organizaciones alcanzan diferentes grados y niveles de madurez del proceso.La CMMI es un modelo definido en alrededor de 700 pginas, la pregunta que se ha debatido durante una dcada es La CMMI es excesiva?, la respuesta no es un simple s o no.Siempre debe adoptarse el espritu de la CMMI, el desarrollo de software debe tomarse con seriedad, debe planearse, debe controlarse, debe rastrearse, conducirse de manera profesional, debe centrarse en las necesidades del cliente, la habilidad de los ingenieros de software y la calidad del producto terminado.Aun si una organizacin de software decide no adoptar la CMMI, todo equipo de software debe retomar su espritu y aprender de su exposicin del proceso y la prctica de la ingeniera de software. Patrones del procesoEl proceso de software puede definirse como una coleccin de patrones que definen un conjunto de actividades, acciones, tareas de trabajo o comportamientos relacionados que requiere el desarrollo de un software de computadora.Un patrn del proceso, ofrece una plantilla, mediante la combinacin de patrones, un equipo de software puede construir un proceso que satisfaga lo mejor posible las necesidades de un proyecto.En algunos casos se puede aplicar un patrn para describir un proceso completo, como por ejemplo, un prototipo. En otras situaciones se utilizan los patrones para describir una actividad dentro del marco de trabajo como la planeacin o una tarea dentro de una actividad del marco de trabajo, como por ejemplo, la estimacin de un proyecto.Ejemplo de un patrn del procesoNombre del patrnAl patrn se le asigna

Los patrones de proceso proporcionan un mecanismo efectivo para describir cualquier proceso de software, sin embargo, la existencia de un proceso de software no es garanta de que este ser entregado a tiempo, esto depender de otros factores.Por qu el proceso de software cambia tan drsticamente de una organizacin a otra?La razn principal es la falta de habilidades en ingeniera de programacin. Pocos profesionales se mantienen actualizados. La mayora sigue desarrollando software a la antigua porque no conoce otra forma de hacerlo. Otra razn de que haya diferencias en el proceso del software es que muchos gerentes de software son excelentes gerentes, pero saben muy poco acerca del desarrollo de software o de su mantenimiento. Su falta de conocimientos tcnicos puede ocasionar retrasos importantes en los calendarios de los proyectos hasta el punto de que no haya modo de continuar. Con frecuencia este es el motivo por el que muchos proyectos de software no se terminan.Modelos de proceso personal y en equipo

Tecnologa del procesoLas herramientas de tecnologa del proceso permiten que una organizacin de software construya un modelo automatizado del marco de trabajo comn del proceso, de los conjuntos de tareas y actividades vistas anteriormente en el marco de trabajo del proceso.Las herramientas de tecnologa de proceso se pueden aprovechar para coordinar el uso de otras herramientas de la ingeniera de software asistida por computadora que sean apropiadas para una tarea de trabajo particular.Una vez creado un proceso aceptable es posible utilizar otras herramientas de tecnologa del proceso para localizar, monitorear e incluso, controlar todas las tareas de ingeniera de software definidas como una parte del modelo del proceso.Evaluacin del procesoLa norma ISO 9001:2008 ha adoptado un ciclo de planear-hacer-revisar-actuar, que se aplica a los elementos de gestin de calidad de un proyecto de software. Dentro de un contexto de software, planear establece los objetivos, las actividades y las tareas del proceso necesario para conseguir un software de alta calidad y una satisfaccin del cliente, hacer implementa el proceso de software, revisar monitorea y mide el proceso para asegurarse de que todos los requisitos establecidos para la gestin de calidad hayan sido cumplidos, actuar inicia las actividades de mejoramiento del proceso de software, el cual tiene una continuidad de trabajo para mejorar el proceso.La existencia de un proceso de software no es garanta de que este ser entregado a tiempo, de que satisfar las necesidades del cliente, o que mostrar las caractersticas tcnicas que conducirn a caractersticas de calidad a largo plazo. Por tanto, el proceso mismo debe ser evaluado para asegurarse de que cumpla con criterios bsicos que demuestran ser esenciales para una ingeniera de software exitosa.Las herramientas de tecnologa de proceso se pueden aprovechar para coordinar el uso de otras herramientas de la ingeniera de software asistida por computadora que sean apropiadas para una tarea de trabajo particular.Verdadero.El proceso de software, generalmente, nace por una necesidad o para resolver algn problema. Falso.La existencia de un proceso de software garantiza que el producto de software ser entregado a tiempo, de que satisfar las necesidades del cliente y que mostrar las caractersticas tcnicas que conducirn a caractersticas de calidad a largo plazo. Falso.El proceso de software en equipo resalta la medida personal del producto de trabajo que se produce y la calidad resultante del producto de trabajo. Falso.

Tema 05: Mitos del software y cmo ha cambiado la ingeniera de softwareEn la actualidad los profesionales reconocidos en la ingeniera de software identifican los mitos en su real dimensin: actitudes equivocadas que han causado problemas serios a los administradores y al personal tcnico por igual. La mayora ya comprendi que solamente son mitos, no realidad, sin embargo, aun existen algunos profesionales que siguen aferrados a los mitos.Mitos del software Los mitos son creencias, acerca del software y los procesos empleados, parecen una relacin de hechos razonables (algunas veces contienen elementos verdaderos).En la actualidad algunos de estos mitos an son contemplados por los profesionales o ingenieros de software. Mitos de la administracin De la misma forma que una persona a punto de ahogarse se aferra a un tronco, con frecuencia los administradores se aferran a un mito si sienten que esta creencia reducir la presin, para sentirse ms tranquilos, consideran que la creencia es verdadera.

Mitos del cliente Los mitos conducen a expectativas falsas (del cliente) y en definitiva a la insatisfaccin con el desarrollador, ya que el cliente no obtiene lo que se imagin que tendra al final del proyecto. El cliente que solicita un software de computadora puede ser la persona del escritorio de al lado, un grupo tcnico del piso de abajo, una empresa externa que ha solicitado el software bajo contrato, etc., cualquier persona que sienta la necesidad de que se le desarrolle un sistema o software, puede considerarse como cliente, incluso, los mismos desarrolladores en ocasiones tienen el papel de clientes.Entre algunos de los mitos de los clientes se pueden mencionar los siguientes:Mito 1: Un enunciado general de los objetivos es suficiente para comenzar a escribir programas; los detalles se pueden afinar despus.Realidad: Un enunciado ambiguo de los objetivos es la receta perfecta para el desastre, ya que si el cliente no tiene claro que es lo que necesita, se complicar el proceso de desarrollo, hay caractersticas que el desarrollador sabe que debe contener el sistema, como por ejemplo, las validaciones, tomar en cuenta la seguridad del sistema, pero hay detalles que solamente el cliente puede definir.Mito 2: Los requerimientos del proyecto cambian de manera continua, pero el cambio puede ajustarse con facilidad porque el software es flexible.Realidad: Los requisitos del software si cambian, pero conforme se avanza en el proyecto el impacto de costos debido a esos cambios es mayor.El software es flexible, pero llega un punto en donde algunos cambios podran incluso, generar que se cambie el rumbo del proyecto y que se necesita comenzar de nuevo. Por otro lado, no todo lo que solicitan los usuarios es tcnicamente posible de realizar, hay que llegar a un acuerdo mediante una negociacin de los requisitos antes de iniciar el proyecto, para que sea tcnica y econmicamente posible.Mitos del desarrolladorLos mitos que an subsisten entre los desarrolladores del software han permanecido a travs de 50 aos de cultura de programacin. Durante los primeros aos del software, la programacin era vista como una forma de arte, por ello las viejas formas y actitudes son difciles de eliminar.

En conclusin, muchos profesionales de los sistemas reconocen la falacia de los mitos del software, pero an hay algunos que los reconocen como ciertos, por ello es que an se siguen teniendo inconvenientes en los tiempos de entrega, malas estimaciones, costos superiores a lo planificado, etc.Las actitudes y los mtodos habituales conducen a adoptar malas prcticas administrativas y tcnicas, el reconocimiento de la realidad del software es el primer paso hacia la formulacin de soluciones prcticas para la ingeniera de software, siempre enfocadas en asegurar la calidad del software. Cmo ha cambiado la ingeniera de softwareCualquier proyecto de software inicia por alguna necesidad que tiene el negocio, la necesidad de corregir algn defecto en una aplicacin ya existente, adaptar un sistema heredado a un negocio, el requerimiento de extender las funciones y caractersticas de una aplicacin existente, o la necesidad de crear un producto, servicio o sistema nuevo.Con frecuencia, en el inicio de un proyecto de ingeniera de software la necesidad de negocios se expresa de manera informal durante una simple conversacin.En los pasados 50 aos, el software ha evolucionado desde ser una herramienta para la solucin de problemas especializados y el anlisis de informacin, hasta convertirse en una industria por s mismo.El software de computadora es una de solo unas cuantas tecnologas clave que tendrn un impacto significativo en cualquier aspecto de la sociedad moderna. A largo plazo, los avances revolucionarios en la informtica bien pueden dirigirlos las ciencias sociales: psicologa humana, sociologa, filosofa, antropologa y otras.El perodo de gestacin de las tecnologas informticas que se puedan derivar de la disciplina de las ciencias sociales es muy difcil de predecir, pero las primeras influencias ya han comenzado (por ejemplo, las comunidades, una estructura antropolgica, de usuarios, que son ramificados de las redes de pares a pares). La influencia de las ciencias sociales quizs ayude a modelar la direccin de la investigacin en informtica en las ciencias bsicas. Por ejemplo, el diseo de las futuras computadoras tal vez lo gue ms al conocimiento en la psicologa cerebral que el de la microelectrnica convencional.A corto plazo, los cambios que incidirn en la ingeniera de software durante la siguiente dcada recibirn la influencia de cuatro fuentes simultneas:1. las personas que realicen el trabajo.2. el proceso que apliquen.3. La naturaleza de la informacin.4. la tecnologa informtica subyacente.El software que requieren los sistemas de alta tecnologa se vuelve ms complejo cada ao, y el tamao de los programas resultantes aumenta proporcionalmente.El rpido crecimiento en el tamao de los programas promedio presentara pocos problemas si no fuese por un hecho simple: conforme aumenta el tamao del programa, tambin aumentar el nmero de personas que deben trabajar en l.La experiencia indica que conforme aumenta el nmero de personas de un equipo de proyecto de software, tal vez la productividad global del grupo disminuya. Una forma para resolver este problema consiste en crear equipos de ingeniera de software, y, por tanto, dividir al personal en grupos de trabajo individuales.Sin embargo, conforme crece el nmero de equipos de trabajo de ingeniera de software, la comunicacin entre ellos se vuelve tan difcil y tardada como la comunicacin entre los individuos.La comunicacin entre individuos o equipos tiende a ser ineficiente, es decir, se pasa demasiado tiempo transfiriendo muy poco contenido de informacin, y con mucha frecuencia la informacin importante cae entre las grietas.Si la comunidad de la ingeniera de software tiene que tratar con eficacia el dilema de la comunicacin, el camino que corrern los ingenieros de software debe incluir cambios radicales en la forma en que los individuos y los equipos se comunican entre s.El correo electrnico, los sitios Web y las conferencias de video centralizadas ahora son mecanismos comunes para conectar a un gran nmero de personas a una red de informacin.La importancia de estas herramientas en el contexto del trabajo de ingeniera de software no se debe sobrevaluar.Las sesiones de conversacin (chat) sobre un tema particular y los grupos de noticias especializados se vuelven depsitos de conocimiento que permiten que el saber colectivo de un gran grupo de tcnicos sea aplicado para solucionar un problema tcnico o un conflicto de gestin.La evolucin de los patrones inteligentes cambiar los patrones laborales de un ingeniero de software al extender sustancialmente las capacidades de las herramientas de software. Los agentes inteligentes mejorarn la habilidad del ingeniero de software al comprobar varias veces los productos de trabajo de la ingeniera empleando conocimiento especfico del dominio, realizando tareas administrativas, llevando a cabo una investigacin dirigida y coordinando la comunicacin entre las personas.La adquisicin de conocimientos est cambiando de forma radical. En internet, un ingeniero de software puede suscribirse a grupos de noticias que se enfoquen en reas de tecnologa que le interesen directamente. Una pregunta enviada a un grupo de noticias precipita las respuestas a otras partes interesadas alrededor del mundo. La Word Wide Web ofrece a un ingeniero de software la ms grande biblioteca del mundo de trabajos e informes de investigacin, manuales, comentarios y referencias acerca de la ingeniera del software. Las personas no cambiarn, sin embargo, las formas en las que se comunican, el entorno en el que trabajan, la manera en la que adquieren conocimiento, los mtodos y herramientas que usan, la disciplina que aplican y la cultura general del desarrollo del software cambiar en formas significativas e incluso, profundas.El nuevo proceso de ingeniera de softwareAnteriormente la ingeniera de software se enfoc como una actividad lineal en la que se podan aplicar una serie de pasos secuenciales con la finalidad de resolver problemas complejos. Sin embargo, los enfoques lineales acerca del desarrollo del software ya no son muy utilizados, los sistemas complejos evolucionan iterativamente, incluso, de forma incremental. Por esta razn un segmento de la comunidad de ingeniera de software se desplaza hacia modelos incrementales giles para el desarrollo del software.Las tecnologas de objetos, junto a la ingeniera de software basada en componentes, son una consecuencia natural de la tendencia hacia los modelos de procesos incrementales y evolutivos. El rpido crecimiento en las tecnologas de red y multimedia est cambiando tanto al proceso de ingeniera de software como a sus participantes.De nuevo se est ante un paradigma incremental gil que destaca la inmediatez, la seguridad y la esttica, as como preocupacin por la ingeniera de software ms convencional.Los modernos equipos de software con frecuencia mezclan tcnicos con especialistas de contenido para construir una fuente de informacin destinada a una comunidad de usuarios grande e impredecible.El software que se ha desarrollado con base en estas tecnologas ha generado cambios econmicos y culturales. La tecnologaLas tendencias futuras de la ingeniera de software las impulsan las tecnologas de software.La reutilizacin y la ingeniera de software basada en componentes ofrecen la mejor oportunidad en cuanto a mejoras en la magnitud de la calidad de los sistemas y en el tiempo en que llegan al mercado.Conforme pasa el tiempo, el negocio del software, puede llegar a parecerse al negocio del hardware en la actualidad.La ingeniera de software cambiar, de eso se puede estar seguro. Pero, sin importar que tan grandes sean los cambios, se puede estar seguro de que la calidad del software nunca perder su importancia, y que el anlisis y el diseo efectivo y las pruebas competentes siempre tendrn un lugar en el desarrollo de los sistemas basados en computadoras.Tecnologa de empujeEn los aos anteriores surgi un problema y se desarroll la tecnologa para resolverlo. Puesto que el problema era evidente para muchas personas, el mercado para la nueva tecnologa estaba bien definido.En la actualidad, algunas tecnologas evolucionan como soluciones que buscan problemas. Un mercado debe empujarse para reconocer que necesita la nueva tecnologa (por ejemplo, telfonos mviles, PDA, etc.)Conforme las personas reconocen la necesidad, la tecnologa se acelera, mejora y con frecuencia se transforma segn evoluciona la combinacin de tecnologas.Nuevos modos de representar la informacin A lo largo de la historia de la informtica ha ocurrido una transicin sutil, hace 40 aos, el trmino procesamiento de datos era la frase operativa para describir la utilizacin de las computadoras en un contexto de negocios. En la actualidad, el procesamiento de datos ha dado paso a otra frase, tecnologa de la informacin. Los datos son informacin en bruto: colecciones de hechos que deben procesarse para que sean significativos. La informacin se deriva de asociar los hechos en un contexto dado.La gran mayora del software se ha construido para procesar datos o informacin. Los ingenieros de software ahora estn igualmente preocupados con los sistemas que procesan el conocimiento. La clave es la habilidad personal para asociar la informacin proveniente de diversas fuentes, que tal vez no tengan alguna conexin evidente, y combinarla en una forma que ofrezcan algn beneficio distinto.El camino que recorrer el software conduce a sistemas que procesan el conocimiento. Se han estado procesando datos empleando computadoras durante 50 aos y extrayendo informacin durante ms de tres dcadas. Uno de los desafos ms significativos que enfrenta la comunidad de ingeniera de software es construir sistemas que den el prximo paso a lo largo del espectro: sistemas que extraigan conocimiento a partir de los datos e informacin en una forma prctica y beneficiosa.Son creencias, acerca del software y los procesos empleados, parecen una relacin de hechos razonables: Mitos del software.Los modernos equipos de software con frecuencia mezclan tcnicos con especialistas de contenido para construir una fuente de informacin destinada a una comunidad de usuarios grande e impredecible. Verdadero.Cualquier persona que sienta la necesidad de que se le desarrolle un sistema o software, puede considerarse como cliente. Verdadero.A corto plazo, los cambios que incidirn en la ingeniera de software durante la siguiente dcada recibirn la influencia de cuatro fuentes simultneas:Las personas que realicen el trabajo, el proceso que apliquen, la naturaleza de la informacin y la tecnologa informtica subyacente.