UNIDAD 1 FUNDAMENTOS INGENIERÍA DE SOFTWARE
1.1 Conceptos básicos
Importancia
•La economía de todos los países desarrollados es dependiente del software.
•Actualmente
cada vez mas sistemas son
controlados por
software.
•La
Ingeniería de Software concierne a teorías, métodos y
herramientas para el desarrollo profesional de
software .
•El
gasto en la Ingeniería de Software, representa un alto porcentaje del PIB de los países
desarrollados.
Ingeniería de software
La Ingeniería de Software es una disciplina de la Ingeniería que concierne a todos los aspectos de la producción de software. Los Ingenieros de Software adoptan un enfoque sistematico para llevar a cabo su trabajo y utilizan las herramientas y técnicas necesarias para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y recursos disponibles.
Diferencia entre ingeniería de software y ciencias computacionales
Las ciencias computacionales conciernen a la teoría y fundamentos de
cualquier sistema de cómputo (hardware, software).
La ingeniería de software concierne a los aspectos prácticos del
desarrollo y puesta en marcha de productos útiles de software.
La ingeniería de software aún está lejos de ser considerada una ciencia
como lo son la química y la física.
Diferencia entre ingeniería de software e ingeniería de sistemas
La ingeniería de sistemas se refiere a todos los aspectos del
desarrollo de sistemas basados en cómputo incluyendo hardware, software y la
ingeniería de procesos.
La ingeniería de software es una parte de este proceso que comprende el
desarrollo de software, control, aplicaciones y bases de datos del sistema.Costos de la ingeniería de software
El
costo total de un software esta dividido aproximadamente de la
siguiente forma:
60%
costos de desarrollo .
40%
costos de pruebas.
.En el software a la medida los costos de evolución a menudo exceden los costos de desarrollo. Los costos dependen del tipo de sistema que se desarrolla y de los requerimientos del mismo tales como desempeño y confiabilidad. La distribución de los costos depende del modelo de desarrollo empleado.
1.2 El Papel Evolutivo del Software
El software es tanto un producto como el vehículo para su entrega. Es el transformador de la información. El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años. Las mejorías substanciales en el desempeño del hardware, los cambios profundos en las arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de salida y de entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras. Nadie sabe en realidad el futuro de los sistemas que día a día se construyen, más sin embargo sin importar el lugar en el que resida el software, ya sea en un celular o dentro de una computadora central, el software realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que puede ser tan simple como un solo bit o tan compleja como una presentación multimedia. En su papel de vehículo para la entrega de un producto, el software actúa como la base para el control de la computadora (sistemas operativos), la comunicación de información (redes) y la creación y el control de otros programas (utilerías de software y ambientes)
El software entrega el producto más importante de nuestro tiempo: información.
Transforma los datos personales, por ejemplo las transacciones financieras de
un individuo, de modo que los datos sean más útiles en un contexto local. Maneja
información de negocio para mejorar la competitividad, proporciona una vía para
las redes de información alrededor del mundo (Internet) y proporciona los
medios para adquirir información en todas sus formas (páginas web).
Evolución prolongada del sistema
La evolución de los programas es un proceso autorregulativo. Los
atributos de los sistemas, tales como tamaño, tiempo entre entregas y la cantidad
de errores y documentados son aproximadamente invariantes para cada entrega del
sistema.
Estabilidad organizacional
Durante el tiempo de vida de un programa su velocidad de desarrollo es
aproximadamente constante e independiente de los recursos dedicados al
desarrollo del sistema.
Crecimiento continuado: la funcionalidad ofrecida por los sistemas
tiene que crecer continuamente para,
tener la satisfacción de los usuarios.
1.3 Etapas del Desarrollo del Software
Al inicio de un desarrollo esta es la primera fase que se realiza y
según el modelo de proceso adoptado, pueden
casi terminar para pasar a la próxima etapa. Durante esta fase, se adquieren,
reunen y especifican las características funcionales y no funcionales que deberán
cumplir el futuro programa o sistema a desarrollar. Las características, tanto
de entorno, parámetros no funcionales y arquitectura dependen enormemente de lo
bien logrado.
Planificaciòn
En esta etapa se establece el problema, aclarando lo mas posible. Es la parte mas critica de la solución. Amerita un estudio cuidadoso. Se deben identificar las teorías, fundamentos y/o principios matemáticos, físicos o de cualquier índole q puedan fundamentar satisfactoriamente el problema.
Análisis
En esta etapa se debe entender y comprender de forma detallada cual es la problematica a resolver, verificando en el entorno en cual se encuentra dicho problema, de tal manera que se obtenga la información necesaría y suficiente para afrontar su respectiva solución.
Diseño
En esta etapa consiste básicamente en desarrollar una lista de pasos llamados algoritmos o receta de la solución, verificando que el problema se resuelva como se desee. Una vez que se tiene la suficiente información del problema a solucionar, es importante determinar la estrategia que se va a utilizar, para resolver el problema.
Implementación
En esta etapa consiste en implementar o escribir el algoritmo como un programa de computadora en un lenguaje de programaciòn, convirtiendo cada paso de algoritmo en instrucciones en lenguaje de programacion.
Pruebas
En esta etapa comprueba que le software realize correctamente las tareas indicadas en la especificación. Se considera un buena pràctica el que las pruebas sean efectuadas por alguien distinto al desarrollador quien programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas.
Uso y Mantenimiento
En esta etapa se realiza la resoluciòn del problema previamente planteado o satisface una determinada necesidad, es importante mantener una estructura de actualizaciòn, verificaciòn y validaciòn que permita a dicho programa ser útil.
1.4 Clasificacion de la Tecnologia en el Desarrollo de Software (tecnologias estructuradas y orientada a objetos).
Tecnología de desarrollo estructurado
Es posible
estructurar el modelo de un sistema de software en base a funciones que
procesan la información que reciben de otras funciones que procesan la función
lo del exterior y dirigen la información que reciben de otras funciones del
sistema necesario.
Tecnologías orientadas a objetos
Los métodos de
descomposición orientada a objetos contribuyen la tendencia mas influyente
observada en la ingeniería del software en los últimos años en ellas un objeto
es un conjunto de datos y funciones de manipulación de los mismos encapsulados
en una cantidad que es posible tratar.
1.5 Definiciòn e Historia de las Herramientas "CASE"
Las herramientas CASE son diversas aplicaciones informaticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. Estas herramientas pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costos, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras. Ya en los años 70 un proyecto llamado ISDOS diseñó un lenguaje y por lo tanto un producto que analizaba la relación existente entre los requisitos de un problema y las necesidades que éstos generaban, el lenguaje en cuestión se denominaba PSL (Problem Statement Language) y la aplicación que ayudaba a buscar las necesidades de los diseñadores PSA (Problem Statement Analyzer).
Aunque ésos son los inicios de las herramientas informáticas que ayudan a crear nuevos proyectos informáticos, la primera herramienta CASE fue Excelerator que salió a la luz en el año 1984 y trabajaba bajo una plataforma PC.
Las herramientas CASE alcanzaron su techo a principios de los años 90. En la época en la que IBM había conseguido una alianza con la empresa de software AD/Cycle para trabajar con sus mainframes, estos dos gigantes trabajaban con herramientas CASE que abarcaban todo el ciclo de vida del software. Pero poco a poco los mainframes han ido siendo menos utilizados y actualmente el mercado de las Big CASE ha muerto completamente abriendo el mercado de diversas herramientas más específicas para cada fase del ciclo de vida del software.
1.6 Clasificaciòn de las Herramientas CASE.
Las herramientas CASE pueden clasificarse por su función, su papel como instrumentos para administradores o personal técnico, por su utilización en los distintos pasos del proceso de ingeniería del software, la arquitectura de entorno (hardware y software) que les presta su apoyo, o incluso por su origen o su coste. En muchos casos, las únicas herramientas disponibles para el ingeniero del software eran compiladores y editores de texto. Estas herramientas abarcan solo la codificación, actividad que no debería de ocupar mas del 20% del proceso global del software. La taxonomía que se presenta enseguida, utiliza como criterio principal funcion.
Herramientas de la ingeniería de la información.
Al modelar los requisitos de información estratégica de una organización, las herramientas de la ingeniería de la información proporcionan un metamodelo del cual se derivan sistemas de información específicos. En lugar de centrarse en los requisitos de una aplicación especifica, estas herramientas CASE modelan la información de negocios cuando esta se transfiere entre distintas entidades organizativas en el seno de una compañía. El objetivo primordial de las herramientas de esta categoría consiste en representar objetos de datos de negocios, sus relaciones, y la forma en que fluyen estos objetos de datos entre distintas zonas de negocio en el seno de la compañía.
Modelado de procesos y herramientas de administración.
Si una organización intenta mejorar un proceso de negocios (o de software) lo primero que debe de hacer es entenderlos. Las herramientas de modelado de procesos (también denominadas herramientas de tecnología de procesos) se utilizan para representar los elementos clave del proceso para entenderlo lo mejor posible. Estas herramientas también pueden proporcionar vínculos con descripciones de procesos que ayuden a quienes estén implicados en el proceso de comprender las tareas que se requieren para llevar a cabo ese proceso. Además, también pueden proporcionar vínculos con otras herramientas que proporcionen un apoyo para actividades de proceso ya definidas.
Herramientas de planificación de proyectos.
Las herramientas de esta categoría se concentran en dos áreas primordiales: estimación de esfuerzos de proyecto y de costes de software, y planificación de proyectos. Las primeras calculan su esfuerzo estimado, la duración del proyecto y su número de personas empleando una o más de las técnicas presentadas. Por su parte, las herramientas de planificación de proyectos capacitan al administrador para definir todas las tareas del proyecto (la estructura de desglose de tareas), para crear una red de tareas (normalmente empleando una entrada gráfica), para representar la interdependencia entre tareas y para modelar la cantidad de paralelismo que sea posible para ese proyecto.
Herramientas de análisis de riesgos.
La identificación de riesgos potenciales y el desarrollo de un plan para mitigar, monitorizar y administrar esos riesgos tiene una importancia fundamental en los grandes proyectos. Estas herramientas en si, capacitan al administrador del proyecto para construir una tabla de riesgos proporcionando una guía detallada en la identificación y análisis de riesgos.
Herramientas de administración de proyectos.
La planificación del proyecto y el plan del proyecto deben de seguirse y de monitorizarse de forma continua. Además, el gestor deberá de utilizar las herramientas que recojan métricas que en ultima instancia proporcionen una indicación de la calidad del producto del software. Las herramientas de esta categoría suelen ser extensiones de herramientas de planificación de proyectos.
Herramientas de seguimiento de requisitos.
Cuando se desarrollan grandes sistemas, el sistema proporcionado suele no satisfacer los requisitos especificados por el cliente. El objetivo estas herramientas es proporcionar un enfoque sistemático para el aislamiento de requisitos, comenzando por la solicitud del cliente de una propuesta (RFP) 0 especificación. Las herramientas de trazado de requisitos típicas combinan una evaluación de textos por interacción humana. Con un sistema de gestión de bases de datos que almacena y categoriza todos y cada uno de los requisitos del sistema que se analizan partir de la RFP o especificación original.
Herramientas de métricas y gestión.
Las métricas de software mejoran la capacidad del administrador para controlar y coordinar el proceso del software y la capacidad del ingeniero para mejorar la calidad del software que se produce. Las métricas y herramientas de medida actuales se centran en procesos, proyectos y características del producto. Las herramientas orientadas a la administración capturan métricas especificas del proyecto (p. ej.: LDC/persona-mes, defectos por punto de función) que proporcionan una indicación global de productividad o de calidad. Las herramientas orientadas técnicamente determinan métricas técnicas que proporcionan una mejor visión de La calidad del diseño o del código.
Muchas de las herramientas métricas avanzadas mantienen una base de datos de medidas de medias de la industria. Basándose en características de proyectos y de productos proporcionados por el usuario, estas herramientas «califican» los numero locales frente a los valores medios de la industria (y frente al rendimiento local anterior) y sugieren estrategias para llegar a mejoras.
Herramientas de documentación.
Las herramientas de producción de documentos y de autoedición prestan su apoyo a casi todos los aspectos de la ingeniería del software, y representan una importante oportunidad de «aprovechamiento» para todos los desarrollares de software. La mayor parte de las organizaciones dedicadas al desarrollo de software invierte una cantidad de tiempo considerable en el desarrollo de documentos, y en muchos casos el proceso de documentación en 51' resulta bastante deficiente. No es infrecuente que una organización de desarrollo de software invierta hasta Un 20 0 un 30 por ciento de su esfuerzo global de desarrollo de software en la documentación. Por esta razón, las herramientas de documentación suponen una oportunidad importante para mejorar la productividad.
Herramientas de software de sistema.
CASE es una tecnología de estaciones de trabajo. Por tanto, el entorno CASE debe adaptarse a un software de sistema en red de alta calidad, al correo electrónico, a los boletines electrónicos y a otras capacidades de comunicaciones.
Herramientas de control de calidad.
La mayor parte de las herramientas CASE que afirman que tienen como principal interés el control de calidad son en realidad herramientas métricas que hace una auditoría del código fuente para determinar Si se ajusta o no a ciertos estándares del lenguaje. Otras herramientas extraen métricas en un esfuerzo por extrapolar la calidad del software que sé esta construyendo.
Herramientas de gestión de bases de datos.
El software de gestión de bases de datos sirve como fundamento para establecer una base de datos CASE (depósito), que también se denominara- base de datos del proyecto. Dado el énfasis acerca de los objetos de configuración, las herramientas de gestión de bases de datos para CASE pueden evolucionar a partir de los sistemas de gestión de bases de datos relacionales (SGBDR) para transformarse en sistemas de gestión de bases de datos orientadas a objetos (SGBDOO).
Herramientas de gestión de configuración de software.
La gestión de configuración de software (GCS) se encuentra en el núcleo de todos los entornos CASE. Las herramientas pueden ofrecer su asistencia en las cinco tareas principales de CICS: identificación, control de versiones, control de cambios, auditoría y contabilidad de estados. La base de datos CASE proporciona Un mecanismo para identificar todos los elementos de configuración y relacionarlo con otros elementos; el proceso de control que se describa se puede implementar con ayuda de herramientas especializadas; un acceso sencillo a los elementos de configuración individuales facilita el proceso de auditoría; y las herramientas de comunicación CASE pueden mejorar enormemente la contabilidad de estados (ofreciendo información acerca de los cambios a todos aquellos que necesiten conocerlos).
Herramientas de análisis y diseño.
Estas herramientas capacitan al ingeniero del software para crear modelos del sistema que haya que construir. Los modelos contienen una representación de los datos, de la función y del comportamiento (en el nivel de análisis), así como caracterizaciones del diseño de datos, arquitectura, procedimientos e interfaz. Al efectuar una comprobación de la consistencia y validez del modelo, las herramientas de análisis y diseño proporciona una al ingeniero del software Un cierto grado de visión en lo tocante a la representación del análisis, y ayudan a eliminar errores antes de que se propaguen al diseño, o lo que es peor, a la propia implementación.
Biliografias
http://www.itescam.edu.mx
Software Engineering for information system, Donald McDermid, Blackwell scientific Publication
www.slideshare.net/..///historia-y-evolucion-del-software-9165502
www.slideshare.net/..///historia-y-evolucion-del-software-9165502
Rapid Development: Taming Wild Software Schedules. 1996. Steve McConnell. Las 680
buena informacion
ResponderEliminarbien compañero, buena investigacion
ResponderEliminarMuy buena investigación amigo...
ResponderEliminarexcelentes datos compañeros muy buena investigacion
ResponderEliminarbuenisimo tu trabajo.... buena informacion.. xD
ResponderEliminar