Logo Studenta

Tarea 1 conceptos - Mauricio axel 20

¡Este material tiene más páginas!

Vista previa del material en texto

Ingeniería de software 
INSTITUTO TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE ACAPULCO
Ingeniería en sistemas computacionales
Fundamentos de ingeniería en software
ingeniería de software
Profesor: María Nancy García Castro
López Anselmo Mauricio Axel 
Historia de la ingeniería de software.
La ingeniería del software, según la definición de la IEEE en 1993, es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software. La ingeniería del software ofrece métodos o técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo, y trata áreas muy diversas de la informática y de las ciencias computacionales.
ORÍGEN
El concepto de ingeniería del software surgió en 1968, tras una conferencia en Garmisch (Alemania) que tuvo como objetivo resolver los problemas de la crisis del software. El término crisis del software se usó desde finales de 1960 hasta mediados de 1980 para describir los frecuentes problemas que aparecían durante el proceso de desarrollo de nuevo software. Tras la aparición de nuevo hardware basado en circuitos integrados, comenzaron a desarrollarse sistemas y aplicaciones mucho más complejos que hasta entonces no era posible construir puesto que el hardware disponible no lo permitía. Estos nuevos proyectos de desarrollo de software, en la mayoría de las ocasiones, no se terminaban a tiempo, lo cual también provocaba que el presupuesto final del software excediera de aquel que se había pactado. Algunos de estos proyectos eran tan críticos (sistemas de control de aeropuertos, equipos para medicina, etc) que sus implicaciones iban más allá de las pérdidas millonarias que causaban. Además, en muchos casos el software no daba respuesta a las verdaderas necesidades del cliente o había que ser un usuario experto para poder utilizarlo, todo ello sumado a que el mantenimiento de los productos era complejo y muy costoso.
“NO SILVER BULLET”
Durante décadas, resolver la crisis del software desencadenó en que compañías e investigadores produjeran más y más herramientas software. Cada nueva tecnología o práctica que apareció entre 1970 y 1990 fue tratada como una “bala de plata” (en inglés, silver bullet) que solucionaría la crisis del software.
En 1986, Fred Brooks publicó el artículo No Silver Bullet, argumentando que ninguna tecnología o práctica por sí misma podría mejorar en un diez por ciento la productividad en los siguientes diez años. El debate sobre las balas de plata continuó durante la siguiente década, dando lugar a numerosas interpretaciones sobre el artículo de Brooks.
Los defensores de lenguajes como Ada, o de los procesos software continuaron apostando por que su tecnología sería la que solucionaría la crisis. Sin embargo, hubo gente que interpretó el hecho de que no se encontrara una solución única y efectiva al cien por cien como un fracaso de la ingeniería del software.
EVOLUCIÓN DE LA INGENIERÍA DEL SOFTWARE
Con el transcurso de los años se han desarrollado recursos que conforman la ingeniería del software, es decir, herramientas y técnicas de especificación, diseño e implementación del software: la programación estructurada, la programación orientada a objetos, las herramientas CASE, la documentación, los estándares, CORBA, los servicios web, el lenguaje UML, etc.
En combinación con las herramientas, también se han hecho esfuerzos por incorporar los métodos formales al desarrollo de software, argumentando que si se probaba formalmente que los productos software hacían lo que se les requería, la industria del software sería tan predecible como lo son otras ramas de la ingeniería.
La utilización de determinados recursos depende de la magnitud del proyecto, de la empresa a cargo, la experiencia de los desarrolladores, el presupuesto con el que se cuenta, etc.
La ingeniería del software comprende:
· Proceso de desarrollo de software (especificación, implementación y diseño, etc.…).
· Metodologías para el desarrollo de software (RUP, patrones, framework…).
· Herramientas de desarrollo de software.
PROCESO SOFTWARE
El proceso de ingeniería de software se define como «un conjunto de etapas parcialmente ordenadas con la intención de lograr un objetivo, en este caso, la obtención de un producto de software de calidad». El proceso de desarrollo de software «es aquel en que las necesidades del usuario son traducidas en requerimientos de software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo». Concretamente «define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo» [Jacobson 1998].
El proceso de desarrollo de software requiere por un lado un conjunto de conceptos, una metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del software, que comprende las etapas por las que pasa un proyecto software desde que es concebido, hasta que está listo para usarse.
Hay cuatro actividades fundamentales comunes a todo proceso software:
· Especificación: usuarios e ingenieros definen el software a producir y las restricciones en su funcionalidad.
· Desarrollo: fase en la cual el software se diseña y se programa.
· Validación: el software debe ser probado para asegurar que cumple con las necesidades del cliente.
· Evolución: el software debe poder ser modificado para adaptarse a cambios en el mercado y en las necesidades de los usuarios.
Los enfoques más generales son los siguientes:
· Modelo en cascada: ordena rigurosamente las etapas del ciclo de vida del software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior. La primera descripción formal la realizó en 1970 Winston W. Royce, en uno de sus artículos.
· Prototipado: pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se deben utilizar muchos recursos, pues a partir de que éste sea aprobado se puede iniciar el verdadero desarrollo del software.
· Incremental e iterativo: Divide la funcionalidad del sistema en partes. En cada incremento, una parte de la funcionalidad es desarrollada, desde el análisis hasta las pruebas.
· Espiral: Combinación de procesos en cascada y prototipado. Fue definido por Barry Boehm en 1986 en el artículo “A Spiral Model of Software Development and Enhancement”.
· RAD (Rapid Application Development): emplea técnicas iterativas y de prototipado. Lo introdujo James Martin en 1991.
· RUP (Rationa Unified Process): El Rational Unified Process en inglés es un proceso de desarrollo de software iterativo y junto con el Lenguaje Unificado de Modelado (UML), constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.
El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada organización.
Diferentes conceptos de la ingeniería de software.
· Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software por Zelkovitz, 1978.
· Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).
· La ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
Algunos autores consideran que "desarrollo de software" es un término más apropiado que "ingeniería de software" para el proceso de crear software. Personas como Pete McBreen (autor de Software Craftmanship) cree que el término IS implica niveles de rigor y prueba de procesos que noson apropiados para todo tipo de desarrollo de software.
Indistintamente se utilizan los términos "ingeniería de software" o "ingeniería del software"; aunque menos común también se suele referenciar como "ingeniería en software”. ​En Hispanoamérica los términos más comúnmente usados son los dos primeros.
La creación del software es un proceso intrínsecamente creativo y la ingeniería del software trata de sistematizar este proceso con el fin de acotar el riesgo de fracaso en la consecución del objetivo, por medio de diversas técnicas que se han demostrado adecuadas sobre la base de la experiencia previa.
La ingeniería de software se puede considerar como la ingeniería aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicación de ellos de la manera más eficiente para la obtención de resultados óptimos; objetivos que siempre busca la ingeniería. No es solo de la resolución de problemas, sino más bien teniendo en cuenta las diferentes soluciones, elegir la más apropiada.
Las 4 “p” de la ingeniería de software.
PERSONAS: Son los principales autores de un proyecto de Software, compuestos por arquitectos, desarrolladores, ingenieros de pruebas, y personal de Gestión. 
Equipo de Dirección de proyectos
· Identificar a los interesados
· Determinar sus requisitos y expectativas
· Gestionar su influencia en relación con los requisitos
Se debe tener en cuenta:
· Selección
· Reclutamiento
· Entrenamiento
· Trabajo y desarrollo de la cultura de equipo
· Diseño de la organización
Participantes:
· Gestores Ejecutivos: Definen los aspectos del negocio.
· Gestores del proyecto: Planifican, motivan, organizan y controlan a los profesionales que construyen el software.
· Profesionales: Proporcionan las habilidades técnicas necesarias.
· Clientes: Especifican los requerimientos.
· Usuario Final: Interactúan con el software.
Hay cuatro factores críticos en la gestión de personal:
1. Objetividad: el personal se debe valorar de forma equitativa.
2. Respeto: por las diferentes habilidades de las personas.
3. Incorporación: considerar las opiniones de todos.
4. Honestidad: en comunicar lo que va bien y lo que va mal en el equipo.
PRODUCTO
Articulo producido, que es cuantificable y que puede ser un elemento terminado o un componente y se crean durante la vida del proyecto.
El producto se puede definir también como la capacidad de prestar un servicio como, por ejemplo, las funciones del negocio que respaldan las producción y distribución.
Otro concepto de producto es un resultado como, por ejemplo, salidas o documentos.
Características:
· La aprobación de uno o más entregables caracterizan la fase de un proyecto.
· Un producto entregable es un producto de trabajo que se puede medir y cuantificar.
· Algunos productos entregables pueden corresponder al mismo proceso de direccion de proyectos
· Los productos entregables son parte de un proceso secuencial, diseñado para asegurar el adecuado control del proyecto.
PROCESO:
Es un conjunto completo de personas, reglas, políticas, procedimientos y actividades necesarias para transformar los requerimientos de un usuario en un producto.
Elementos de un proceso:
El equipo de trabajo debe elegir el proceso adecuado que le permita obtener una solución o producto que satisfaga las necesidades del cliente.
El director de proyecto debe elegir el modelo de proceso correcto para ser aplicado en el desarrollo del producto y el adecuado para:
· Los clientes que han solicitado el producto y el personal que hará el trabajo.
· Las características del producto
· El ambiente del proyecto en el que trabaja el equipo
Seleccionado el modelo de procesos se realiza una planificación preliminar del proyecto basado en las actividades del marco de trabajo, comenzando con la combinación del producto y el proceso. 
Cuando el equipo de trabajo haya definido correctamente el modelo de proceso, este debe ser flexible y adecuado para el proyecto. Este proceso se puede dividir para lograr desarrollar adecuadamente las actividades tareas del marco de trabajo. 
Las actividades que se deben desarrollar son:
· Desarrollar una lista de conflictos que deben clasificarse.
· Reunirse con los clientes para abordar los conflictos que deben clasificarse.
· Desarrollar en conjunto un enunciado del ámbito.
· Revisar el enunciado del ámbito con todos los implicados.
· Modificar el enunciado del ámbito según lo requiera.
PROYECTO:
Elemento organizativo por el cual se gestionara el desarrollo de las actividades en la implementación de un producto o servicio.
Para la correcta implementación de un proyecto tecnológico se deben tener en cuenta los siguientes aspectos:
· Recursos
· Calidad
· Finanzas
· Contrato
· Comunicaciones
· Riesgo
· Alcance
· Planificación
Gestion de Alcances
Consta de 4 etapas:
Se puede definir como el conjunto de actividades o procedimientos que tienen un objetivo concreto, ejemplo: Crear un producto o servicio
Debe gestionar los recursos limitados disponibles, entre ellos las personas, el tiempo, los costos, etc., para conseguir los objetivos planteados.
Fases de un proyecto:
Es un conjunto de actividades relacionadas con un objetivo en el desarrollo del proyecto.
Se crea agrupando tareas específicas (actividades elementales) que pueden compartir un tramo determinado.
Entre las fases principales de un proyecto se encuentran:
1. Inicio: Desarrollo de la idea, inicio formal del proyecto
2. Planificación: Organizar e plan de trabajo
3. Ejecución: Coordinar los recursos para llevar a cabo las actividades del plan de trabajo
4. Control: Verificar la realización de las actividades según los objetivos planteados
5. Finalización: Cierre del proyecto
Procesos
· Tácticos: gestión del proyecto.
· Operativos: Tareas y actividades realizadas, estos varían según el área de aplicación y el objetivo.
· Procesos orientados al producto
gestión del proyecto
Es conocida como Gerencia, Dirección o administración de proyectos es la disciplina que se encarga de planificar, organizar, y coordinar recursos y personas para cumplir con objetivos, entregables y criterios de éxito para los proyectos.
Un proyecto como tal como ya se ha descrito se compone de un conjunto de actividades relacionadas para logran un fin especifico con un comienzo y un fin definidos sujete a tres restricciones principales:
Factores de Éxito:
· Construcción del equipo correcto
· Incentivos = Calidad
· Seguimiento del proceso = Controlar actividades
· Decisiones Inteligentes
· Análisis de resultados
Alertas de peligro:
Al gestionar un proyecto se debe tener muy presente el riesgo de llegar a fracasar, según John Reel, existen 10 razones por las cuales un proyecto puede fracasar:
1. El personal de software no entiende las necesidades de los clientes.
2. El ámbito del producto está mal definido.
3. Los cambios se gestionan mal.
4. La tecnología elegida cambia.
5. Las necesidades comerciales cambian.
6. Los plazos de entrega no son realistas.
7. Los usuarios se resisten a la utilización del software.
8. Se pierde el patrocinio.
9. El equipo del proyecto carece de personal con las habilidades apropiadas.
10. Los gestores evitan las mejores prácticas y las lecciones aprendidas.
Página 1 | 1
Acapulco Gro. 30 de octubre de 2020

Continuar navegando