25
INGENIERIA DE 2022 Eric Castro Chujutalli

Ingeniería de Software

Embed Size (px)

DESCRIPTION

hhj

Citation preview

INGENIERIA DE SOFTWARE

INGENIERIA DE SOFTWARE

INGENIERIA DE SOFTWAREEric Castro Chujutalli2015

Origen de la Ingeniera de SoftwareLa Ingeniera del Software, trmino utilizado por primera vez por Fritz Bauer en la primera conferencia sobre desarrollo de software patrocinada por el Comit de Ciencia de la OTAN celebrada en Garmisch, Alemania, en octubre de 1968. El trmino ingeniera del software empez a usarse a finales de la dcada de los sesenta, para expresar el rea de conocimiento que se estaba desarrollando entorno a las problemticas que ofreca el software en ese momento.En esa poca, el crecimiento espectacular de la demanda de sistemas de computacin cada vez ms y ms complejos, asociado a la inmadurez del propio sector informtico (totalmente ligado al electrnico) y a la falta de mtodos y recursos, provoc lo que se llam la crisis del software (en palabras de Edsger Dijkstra) entre los aos 1965 y 1985.Durante esa poca muchos proyectos importantes superaban con creces los presupuestos y fechas estimados, algunos de ellos eran tan crticos (sistemas de control de aeropuertos, equipos para medicina, entre otros) que sus implicaciones iban ms all de las prdidas millonarias que causaban.La crisis del software pas, no tanto por la mejora en la gestin de los proyectos, sino en parte porque no es razonable estar en crisis ms de veinte aos, y en parte porque se estaban haciendo progresos en los procesos de diseo y metodologas.As pues, desde 1985 hasta el presente, han ido apareciendo herramientas, metodologas y tecnologas que se presentaban como la solucin definitiva al problema de la planificacin, previsin de costes y aseguramiento de la calidad en el desarrollo de software. Entre las que se encuentran la programacin estructurada, la programacin orientada a objetos, a los aspectos, las herramientas CASE, el lenguaje de programacin ADA, la documentacin, los estndares, CORBA, los servicios web y el lenguaje UML (entre otros) fueron todos anunciados en su momento como la solucin a los problemas de la ingeniera del software, la llamada bala de plata (por silver bullet). Y lo que es ms, cada ao surgen nuevas ideas e iniciativas encaminadas a ello.En combinacin con las herramientas, tambin se han hecho esfuerzos por incorporar los mtodos formales al desarrollo de software, argumentando que si se probaba formalmente que los desarrollos hacan lo que se les requera, la industria del software sera tan predecible como lo son otras ramas de la ingeniera.

Qu es la Ingeniera de Software?LaIngeniera del Softwarees la rama de la ingeniera que crea y mantiene las aplicaciones de software usando tecnologas y prcticas de las ciencias de la computacin, manejo de proyectos, ingeniera, el mbito de la aplicacin, y otros campos.Segn la definicin delIEEE," software es la suma total de los programas de ordenador, procedimientos, reglas, la documentacin asociada y los datos que pertenecen a un sistema decmputo y un producto de software es un producto diseado para un usuario". En este contexto, la Ingeniera de Software (SE del ingls "Software Engineering") es un enfoque sistemtico del desarrollo, operacin, mantenimiento y retiro del software

Qu es el software?Estos son los programas informticos que hacen posible la realizacin de tareas especficas dentro de un computador. Por ejemploWord,Excel,PowerPoint,los navegadores web, los juegos,los sistemas operativos, etc.Caractersticas esenciales:

Evolucin del SoftwareERAAOSCARACTERSTICAS

11950 - 1965 Se trabajaba con la idea de Codificar y Corregir. No exista un planteamiento previo. No exista documentacin de ningn tipo. Existencia de pocos mtodos formales y pocos creyentes en ellos. Desarrollo a base de prueba y error.

21965 - 1972 Se busca simplificar cdigo. Aparicin de Multiprogramacin y Sistemas Multiusuarios. Sistemas de Tiempo Real apoyan la toma de decisiones. Aparicin de Software como producto. (Casas de Software). INICIO DE LA CRISIS DEL SOFTWARE. Se buscan procedimientos para el desarrollo del Software.

31972 - 1989 Nuevo Concepto: Sistemas Distribuidos. Complejidad en los Sistemas de Informacin. Aparecen: Redes de rea local y global, y Comunicadores Digitales. Amplio Uso de Microprocesadores.

41989 - ? Impacto Colectivo de Software. Aparecen: Redes de Informacin, Tecnologas Orientadas a Objetos. Aparecen: Redes Neuronales, Sistemas Expertos y SW de Inteligencia Artificial. La informacin como valor preponderante dentro de las Organizaciones.

Sin embargo, un conjunto de problemas relacionados con el software ha persistido a travs de la evolucin de los sistemas basados en computadora, y estos problemas continan aumentando. Los avances del software continan dejando atrs nuestra habilidad de construir software para alcanzar el potencial del hardware. Nuestra habilidad de construir nuevos programas no pueden ir al mismo ritmo de la demanda de nuevos programas, ni podemos construir programas lo suficientemente rpido como para cumplir las necesidades del mercado y de los negocios. El uso extenso de computadoras ha hecho de la sociedad cada vez ms dependiente de la operacin fiable del software. Cuando el software falla, pueden ocurrir daos econmicos enormes y ocasionar sufrimiento humano. Luchamos por construir software informtico que tengan fiabilidad y alta calidad. Nuestra habilidad de soportar y mejorar los programas existentes se ve amenazada por diseos pobres y recursos inadecuados.En respuesta a estos problemas, las practicas de la Ingeniera del Software se estn adoptando en toda la industria.

ObjetivosCapacidadSon actividades que influyen a la capacidad de sta para procesar transacciones con rapidez y eficiencia.Los sistemas de informacin mejoran esta capacidad en tres formas.* Aumentan la velocidad de procesamiento*Aumento en el volumen* Recuperacin ms rpida de la informacinCostoEs determinar en la forma esperada, de acuerdo con lo presupuestado, Que se debe llevar a cabo el seguimiento de los costos de mano de obra, bienes y gastos generales.* Reduccin de costos:Son diseos de sistemas que ayudan a disminuir los costos, ya que toman ventaja de las capacidades de clculo automtico y de recuperacin de datos que estn incluidos en procedimientos de programas en computadora.ControlSon datos ya hechos para que puedan ser guardados en una forma adecuada para su lectura por medio de una mquina, y para alcanzar en un medio ambiente donde no existen computadoras.Esto se puede lograrse por medio de uso de procedimientos de control. Cada paso se lleva a cabo de la misma manera. Con consistencia y con exactitud: por otra parte se efectan todos los pasos para cada lote de transacciones. Y se omiten etapas, especificas para su desarrollo y no tenga problemas al momento de manipular

CalidadEs donde el usuario permite interactuar con el sistema ya que el usuario esta inconforme sabr que mi sistema es malo y no tiene los requerimientos bsicos para un buen softwareCompetitividadSon sistemas de informacin computacionales son un arma estratgica, capaz de cambiar la forma en que la compaa compite en el mercado, en consecuencia stos sistemas mejoran la organizacin y la ayudan a ganar "ventaja competitiva",Cada software debe cumplir estas expectativas entre las cuales tenemos1- Mejores precios2- Servicios exclusivos.3- Productos diferentes.

Los objetivos especficos del ingeniero de software son los siguientes: Disear aplicaciones informticas que se ajusten a las necesidades de las organizaciones. Dirigir y coordinar el desarrollo de aplicaciones complejas. Intervenir en todas las fases del ciclo de vida de un producto. Estimar los costes de un proyecto y determinar los tiempos de desarrollo. Hacer el seguimiento de costes y plazos. Dirigir equipos de trabajo de desarrollo software. Organizar la realizacin de pruebas que verifiquen el correcto funcionamiento de los programas y que se ajustan a los requisitos de anlisis y diseo. Disear, construir y administrar bases de datos. Dirigir y asesorar a los programadores durante el desarrollo de aplicaciones. Introducir procedimientos de calidad en los sistemas, evaluando mtricas e indicadores y controlando la calidad del software producido. Organizar y supervisar el trabajo de su equipo de los tcnicos de mantenimiento y los ingenieros de sistemas y redes.

Herramientas de la Ingeniera de SoftwareHerramientas CASESe puede definir a las Herramientas CASE como un conjunto deprogramasy ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos delCiclo de Vidade desarrollo de un Software.Objetivos1. Mejorar la productividad del software2. Aumentar la calidad del software3. Reducir el tiempo y costo de desarrollo y mantenimiento de los sistemas informticos.4. Mejorar la planificacin de un proyecto5. Aumentar la biblioteca de conocimiento informtico de una empresa ayudando a la bsqueda de soluciones para los requisitos.6. Automatizar el desarrollo del software, la documentacin, la generacin de cdigo, las pruebas de errores y la gestin del proyecto.7. Ayuda a la reutilizacin del software, portabilidad y estandarizacin de la documentacin8. Gestin global en todas las fases de desarrollo de software con una misma herramienta.9. Facilitar el uso de las distintas metodologas propias de la ingeniera del software.

Sistemas de control de revisinLa complejidad de un proyecto tiende a aumentar durante el ciclo de desarrollo de software. Los sistemas de control de revisin son una herramienta utilizada en la ingeniera de software para contrarrestar problemas asociados con esto. Muchos proyectos implican que ms de un desarrollador trabaje en el cdigo al mismo tiempo. Estos desarrolladores pueden no saber cuando otros desarrolladores estn trabajando en el mismo cdigo que ellos. Un sistema de control de revisin puede ayudar a prevenirlos de la sobre escritura de cdigo entre s y puede resaltar los cambios que han hecho otros desarrolladores. Si se cometen errores durante el proceso de desarrollo, puedes fcilmente revertirlos.DepuradoresLos depuradores son herramientas que se utilizan en ingeniera de software para realizar pruebas en un programa durante y despus del desarrollo. Mediante la adicin de puntos de "interrupcin" al cdigo, los ingenieros de software pueden causar que la ejecucin de un programa se detenga en puntos especficos para que las variables puedan ser analizadas. Esto les permite determinar si se manipulan correctamente los datos. La colocacin estratgica de los puntos de interrupcin facilita reducir el origen de un problema.Tablas de decisinTanto como los diagramas de flujo, las tablas de decisin son herramientas diseadas para modelar el flujo lgico de un programa. Esto permite a los ingenieros de software detallar todos los comportamientos de un programa antes de escribirlo. Asegurndose de que todas las condiciones estncubiertas, los desarrolladores son capaces de minimizar los resultados inesperados. La depuracin, las pruebas y las modificaciones se minimizan como resultado, ahorrando tiempo y permitiendo que el cdigo permanezcalimpio. Las tablas de decisiones pueden ser construidas dibujando una cuadricula en una hoja de papel. Una lista de condiciones precede a una lista de acciones que corresponden a una secuencia de condicin. Cada decisin est representada por una columna de la cuadrcula. Un valor "falso" o "verdadero" es indicado cerca de cada condicin y se hace una marca por cada accin que corresponde a esa secuencia de condiciones. El carcter condicional de tablas de decisin los hace especialmente adecuados para la lgica de control.

Aplicaciones1.-Software de sistemas.Elsoftware del sistemase encarga de controlar, integrar y administrar los componentes de hardware de un sistema informtico, proporcionando un entorno amigable para que los usuarios puedan ejecutar otras aplicaciones de software.El software del sistema es un conjunto de programas de software que permiten al usuario interactuar con los dispositivos sin perderse en la complejidad tcnica del equipo. Estos programas son la base de la arquitectura del software, incluyendo las partes que regulan las funciones de entrada/salida.El software del sistema incluye los sistemas operativos, controladores de dispositivos, servidores, sistemas de ventanas y programas de utilidades. Permitiendo coordinar todos los dispositivos internos o externos de la computadora como impresora, mouse, teclado, monitor, etc.

2.-Software de tiempo real.El software que mide/analiza/controla sucesos del mundo real conforme ocurren, se denomina de tiempo real. Entre los elementos del software de tiempo real se incluyen: un componente de adquisicin de datos que recolecta y da formato a la informacin recibida del entorno externo, un componente de anlisis que transforma la informacin recibida del entorno externo, un componente de anlisis que transforma la informacin segn lo requiera la aplicacin, un componente de control/salida que responda al entorno externo y un componente de monitorizacin que coordina todos los dems componentes, de forma tal que pueda mantenerse la respuesta en tiempo real.

3.-Software de gestin.El procesamiento de informacin comercial constituye la mayor de las reas de aplicacin del software. Los sistemas discretos (p. Ej.: nominas, cuentas de haberes/dbitos, inventarios, etc.), han evolucionado hacia el software de sistemas de informacin de gestin (SIG), que accede a una o ms bases de datos grandes que contienen informacin comercial. Las aplicaciones en esta rea reestructuran los datos existentes para facilitar las operaciones comerciales o gestionar la toma de decisiones. Adems de las tareas convencionales de procesamiento de datos, las aplicaciones de software de gestin tambin realizan calculo interactivo (p. Ej. : el procesamiento de transacciones en puntos de ventas).

5.Software de inteligencia artificial.El software de inteligencia artificial (IA) hace uso de algoritmos no numricos para resolver problemas complejos para los que no son adecuados el clculo o el anlisis directo. Los sistemas expertos, tambin llamados sistemas basados en el conocimiento, reconocimiento de patrones (imgenes y voz), redes neuronales artificiales, prueba de teoremas, y los juegos son representativos de las aplicaciones de esta categora.

4.-Software de ingeniera y cientfico.El campo del software cientfico y de ingeniera se ha visto ampliado ltimamente con el desarrollo de los sistemas de diseo, ingeniera y fabricacin asistida por ordenador (CAD, CAE y CAM), lossimuladores grficosy otras aplicaciones interactivas que lo acercan ms al software de tiempo real e incluso al software de sistemas.Estos sistemas se suelen enfocar hacia los anlisis estadsticos o clculo de estructuras generando una aplicacin tpica de diseo asistido por ordenador (CAD- Computer Aided Design). No suelen ser interactivos, por lo que tampoco disfrutan de una interfaz amigable.Lossistemas de Diseo Asistido por Ordenador(CAD, acrnimo de Computer Aided Design) pueden utilizarse para generar modelos con muchas, si no todas, de las caractersticas de un determinado producto. Estas caractersticas podran ser el tamao, el contorno y la forma de cada componente, almacenados como dibujos bi y tridimensionales. Una vez que estos datos dimensionales han sido introducidos y almacenados en el sistema informtico, el diseador puede manipularlos o modificar las ideas del diseo con mayor facilidad para avanzar en el desarrollo del producto. Adems, pueden compartirse e integrarse las ideas combinadas de varios diseadores, ya que es posible mover los datos dentro de redes informticas, con lo que los diseadores e ingenieros situados en lugares distantes entre s pueden trabajar como un equipo. Los sistemas CAD tambin permiten simular el funcionamiento de un producto. Hacen posible verificar si un circuito electrnico propuesto funcionar tal y como est previsto, si un puente ser capaz de soportar las cargas pronosticadas sin peligros e incluso si una salsa de tomate fluir adecuadamente desde un envase de nuevo diseo.Podemos mencionar como ejemplo los programas orientados altratamiento de nmeros o estadsticas(Mathematica, Statgraphic), diseo de planos o estructuras (AutoCad)o tan sofisticados como los encargados de las predicciones meteorolgicas.

Proceso del Software

Tambin denominadociclo de vida del desarrollo de softwarees una estructura aplicada al desarrollo de un producto de software. Un proceso de software es un conjunto de actividades que conducen a la creacin de un producto software. Estas actividades pueden consistir en el desarrollo software desde cero en un lenguaje de programacin estndar como Java o C. Sin embargo cada vez ms se desarrolla nuevo software ampliando y modificando los sistemas existentes y configurando e integrando software comercial o componentes del sistema.

Los procesos de software son complejos y, como todos los procesos intelectuales y creativos, dependen de las personas que toman decisiones y juicios. Debido a la necesidad de juzgar y crear, los intentos por automatizar estos procesos han tenido un xito limitado. No existe un proceso ideal, y muchas organizaciones han desarrollado su propio enfoque para el desarrollo de software. Los procesos han evolucionado para explotar las capacidades de las personas de una organizacin, as como las caractersticas especficas de los sistemas que se han desarrollado.

1.- Especificacin de requisitosLa importante tarea a la hora de crear un producto de software es obtener losrequisitoso elanlisis de los requisitos. Los clientes suelen tener una idea ms bien abstracta del resultado final, pero no sobre las funciones que debera cumplir el software.Una vez que se hayan recopilado los requisitos del cliente, se debe realizar un anlisis del mbito del desarrollo. Este documento se conoce como especificacin funcional.2.-Diseo e implementacinSe refiere a determinar cmo funcionar el software de forma general sin entrar en detalles. Consisten en incorporar consideraciones de la implementacin tecnolgica, como el hardware, la red, etc. Se definen los casos de uso para cubrir las funciones que realizar el sistema, y se transformarn las entidades definidas en el anlisis de requisitos en clases de diseo, obteniendo un modelo cercano a la programacin orientada a objetos. 3.- ValidacinConsiste en comprobar que el software realice correctamente las tareas indicadas en la especificacin del problema. Una tcnica de prueba es probar por separado cada mdulo del software y luego probarlo de forma integral, para as llegar al objetivo. Se considera una buena prctica que las pruebas sean efectuadas por alguien distinto al desarrollador que la program.4.-MantenimientoElmantenimientoo mejora del software de un software con problemas recientemente desplegado, puede requerir ms tiempo que el desarrollo inicial del software. Es posible que haya que incorporar cdigo que no se ajusta al diseo original con el objetivo de solucionar un problema o ampliar la funcionalidad para un cliente. Si los costes de mantenimiento son muy elevados puede que sea oportuno redisear el sistema para poder contener los costes de mantenimiento.

MtodosLos mtodos abarcan una gran gama de tareas que incluyen anlisis de requisitos, diseo, construccin de programas, pruebas y mantenimiento. Los mtodos de la ingeniera del software dependen de un conjunto de principios bsicos que gobiernan cada una de las reas de la tecnologa e incluyen actividades de modelado y otras tcnicas descriptivas. La construccin de software implica una amplia coleccin de actividades tcnicas. La capa de mtodos contiene los mtodos definidos para realizar esas actividades de forma eficiente. Se centra en cmo se han de realizar las actividades tcnicas. Los personas involucradas usan los mtodos para realizar las actividades de ingeniera fundamentales necesarias para construir el software. El equipo de proyecto debera seleccionar el mtodo que es ms apropiado para el problema, el entorno de desarrollo y el conocimiento y experiencia de los miembros del equipo.Gestin de ProyectosLa gestin deproyectosde software es una parte esencial en la Ingeniera del Software y, aunque no puede garantizar el xito del proyecto, una mala gestin usualmente lleva a su fracaso, entregando el software tarde, con sobre costos y muchas veces los requerimientos no son cubiertos totalmente.Los gestores de Software pueden hacer un trabajo similar al de los gestores de otro tipo de proyecto, sin embargo, la Ingeniera del Software es diferente en muchos aspectos, algunos de ellos estn relacionados en que es un intangible, no existe un proceso estndar en su desarrollo y por lo general el producto debe ser hecho a la medida delcliente. De ah la importancia de su gestin.

EtapasPlanificacin Determinacin de un curso deaccionespara alcanzar los objetivos organizacionales. La planificacin es la definicin de qu se va a hacer, hasta donde se pretende o se puede llegar y cmo se lograr.Organizacin Discusin y establecimiento de las relaciones entre unidades de trabajo para el cumplimiento de objetivos previo otorgamiento de responsabilidades yautoridadpara alcanzar los objetivos.Staffing Seleccin deentrenamientoy certificaciones necesarias para los cargos dentro de la organizacin.Direccin Creacin de unaatmsfera de apoyo y motivacin al equipo involucrado para alcanzar los resultados deseados.Control Establecimiento, evaluacin y medicin del desempeo en la ejecucin de las actividades a travs de los objetivos planteados

Lenguaje UML (Lenguaje Unificado de Modulado)Es un lenguaje grfico para visualizar, especificar, construir y documentar un sistema de software. UML ofrece un estndar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programacin, esquemas de bases de datos y componentes de software reutilizables. Es la herramienta que nos permitir proyectar y conocer la arquitectura del sistema que queremos crear.El lenguaje UML se expresa con smbolos y/o agrupaciones de estos llamadasdiagramas. Nos sirve fundamentalmente para crear diferentes tipos de ellos permitindonos ver desde diferentes perspectivas un sistema software.Los diagramas son de gran utilidad para trabajar en los requisitos, en el anlisis del sistema, en la construccin del mismo y en su posterior despliegue. Nos permitirn conocer ese concepto del que tanto se habla y que parece tan difcil de determinar que es laArquitectura del Sistema. El UML hace que esta sea algo tangible. Siendo el resultado de agrupar los diferentes diagramas en lo que llamamosvistas. Estas vistas forman la Arquitectura del Sistema.Quin usa UML? UML lo suelen usar las empresas o medianos o grandes equipos de desarrollo software con el objetivo de planificar y documentar cmo se construyen los programas informticos complejos.Al igual que un proyecto de edificio requiere la participacin de un arquitecto y unos plantos, un proyecto software requiere la participacin de ingenieros de software , una planificacin y documentacin.TIPOS DE DIAGRAMAS EN UMLUsando UML se pueden construir numerosos tipos de diagramas. Vamos a citar algunos:Diagramas de casos de uso:representan a los actores y casos de uso (procesos principales) que intervienen en un desarrollo de software.Diagramas de clases: Para UML una clase es una entidad, no una clase software. Un diagrama de clases UML puede ser un diagrama del dominio o representacin de conceptos que intervienen en un problema, o tambin un diagrama de clases software. El sentido de un diagrama UML se lo da la persona que lo construye.Diagramas de secuencia:Suelen usarse para representar objetos software y el intercambio de mensajes entre ellos, representando la aparicin de nuevos objetos de izquierda a derecha.Diagramas de colaboracin:Suelen usarse para representar objetos o clases y la forma en que se transmiten mensajes y colaboran entre ellos para cumplir un objetivo.Diagramas de estados: Suelen usarse para representar cmo evoluciona un sistema (cmo va cambiando de estado) a medida que se producen determinados eventos.

Visin Industrial del softwareLos procesos que se utilizan en cualquier fbrica son bsicos e imprescindibles para el correcto funcionamiento de la fbrica. El proceso ms importante en una fbrica de software es el proceso de desarrollo de software. Por ello, se debe definir el proceso, basado en estndares adaptado a los proyectos y tipologa de losclientes, donde se definen: La planificacin de las fases del proyecto: Inicio, Elaboracin,Construcciny Transicin. Los estndares de tiempos de ejecucin y costes de desarrollo de cada fase. La planificacin de los flujos de trabajo de desarrollo: Requisitos,Anlisis,Diseo, Implementacin yPruebas. Los roles de desarrolladores asociados a cada tarea. Las herramientas a utilizar en cada flujo de trabajo y actividad. Las plantillas correspondientes a los artefactos a generar. Las mtricas de diferentes parmetros del proyecto. Una completa documentacin de todo el proceso.

Eric Castro Chujutalli8

$33