SUPER FINAL POST UNIDAD 1 Ingeniería de software
Efra DiazResumen4 de Mayo de 2017
12.125 Palabras (49 Páginas)245 Visitas
SUPER FINAL POST
UNIDAD 1
Ingeniería de software
Disciplina de la ingeniera cuya meta es el desarrollo costeable de sistemas de software, este es abstracto, intangible y fácil de modificar. La ingeniería de software comprende todos los aspectos de la producción de software, desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de este después que se utiliza.
Retos que afronta la Ingeniería del software
- De Heterogeneidad (consiste en desarrollar técnicas para construir software que pueda operar como un sistema distribuido en redes con distintos tipos de computadoras, con sistema en otros lenguajes, etc)
- De la Entrega (reducir los tiempos de entrega para sistemas grandes y complejos sin comprometer la calidad del sistema)
- De la Confianza (desarrollar técnicas que demuestren que los usuarios pueden confiar en el software)
Crisis del Software
La noción de la ingeniería de software surgió en 1968 debido a la crisis de software causada por la introducción de nuevas computadoras basadas en circuitos integrados que provoco la posibilidad de desarrollar software más grande y complejos, esto llevo a que los proyectos se atrasaban, otros se cancelaban, se sobrepasaban los presupuestos, como consecuencia se generaban software de mala calidad y desempeño pobre que requerían intensas actividades de mantenimiento.
Entonces fue evidente que para crear un software de esta magnitud tomar un enfoque informal no era adecuado, se necesitaban nuevas técnicas y métodos para controlar la complejidad de estos sistemas.
Software
Es un set de programas, archivos de configuración y la documentación asociada
Tipos básicos de Software:
- System Software (S.O)
- Utilitarios (Winrar)
- Software de Aplicación (Office)
Tipos de Productos:
- Productos Genéricos: sistemas producidos por una organización y que se venden al mercado abierto a cualquier cliente, la especificación es controlada por quien lo desarrolla
- Personalizados o A Medida: son sistemas requeridos por un cliente en particular, la especificación es desarrollada y controlada por la organización que compra el software
Buen Software
Los atributos reflejan la calidad del software, no están directamente asociados con lo que el software hace, más bien reflejan su comportamiento durante su ejecución y en la estructura y organización del programa fuente y en la documentación asociada.
- Mantenibilidad (debe escribirse de tal forma que pueda evolucionar para cumplir necesidades de cambio)
- Confiabilidad (no debe causar daños físicos o económicos en el caso de una falla del sistema)
- Eficiencia (no debe malgastar los recursos del sistema, como memoria o procesamiento)
- Usabilidad (debe ser fácil de usar por el usuario, con interfaz apropiada y su documentación)
Software VS manufactura
El software no se gasta, no está gobernado por las leyes de la física, es menos predecible…
Proceso de Software
Es un conjunto estructurado de actividades que la gente usa para desarrollar y mantener sistema de software, estas actividades varían dependiendo de la organización y el tipo de sistema, son llevadas a cabo por los ingenieros de software.
El desarrollo de sistema es tan complejo y es tan impredecible, que debe ser gestionado bajo un modelo empírico (asume procesos complicados con variables cambiantes, la administración y control es mediante inspecciones frecuentes y adaptaciones) de control de procesos. Debe ser explícitamente modelado si va a ser administrado.
Un proceso de desarrollo permite usarse con una variedad de ciclos de vida.
El proceso de desarrollo se elegirá de acuerdo al tipo de sistema que se vaya a desarrollar, el uso inadecuado del proceso puede reducir la calidad o la utilidad del producto de software a desarrollar o incrementar los costos de desarrollo.
Existen 4 actividades fundamentales comunes a todos los procesos:
- Especificación de software: los clientes e ingenieros definen el software a producir y las restricciones
- Desarrollo de software: el software se diseña y programa
- Validad de software: el software se válida para asegurar que es lo que el cliente realmente quiere
- Evolución de software: el software se módica para adaptarlo a los cambios requeridos por el cliente y el mercado
Ciclos de vida (Modelos de proceso)
Es una descripción simplificada de un proceso de software que presenta una visión de ese proceso, son una serie de pasos a través de los cuales el producto progresa, los modelos especifican las fases del proceso (req, diseño…) y su orden, grafica una descripción del proceso desde una perspectiva particular.
Sirven para proveer una guía para la administración de proyectos.
Son una herramienta para planificar y monitorear proyectos, son muy abstractos.
Pueden incluir Actividades, Productos y Papel de las personas involucradas.
Agilizan el proyecto, mejora la calidad, minimiza costos, minimiza riesgos, mejora la relación con el cliente, etc.
La elección del modelo depende de factores como riesgos técnicos, riesgos de administración, ciclo de tiempo requerido, tamaño del equipo, etc.
Tipos de Ciclo de Vida básicos:
- Secuencial (Tradicional): ha fallado en muchos proyectos grandes, una actividad no inicia hasta que ha terminado la anterior.
Por ejemplo el Cascada: ordena rigurosamente las etapas del ciclo de vida del software, para que inicie una debe tener su anterior, cualquier error de diseño detectado en etapas de prueba conduce necesariamente el rediseño y nueva programación del código afectado. Se tiene todo bien organizado y no se mezclan las fases, es bueno para proyectos rígidos y con buena especificación de requerimientos. Sin resultados o mejoras visibles y rara vez el cliente va a establecer al principio todos los requerimientos.
- Iterativo/Incremental: hacer algo una y otra vez, son la tendencia de hoy. Todos los modelos recursivos son iterativos, pero no al revés. Por ejemplo Iterativo: creado en respuesta a las debilidades del modelo tradicional de cascada, donde se saca ventaja de lo aprendido a lo largo del desarrollo anterior incrementando entregables. Permite mejorar y ajustar el proceso. Desarrollo lento por la necesidad de la retroalimentación del cliente, no es bueno para aquellos proyectos grandes en recursos y largos en el tiempo.
- Recursivo: significa que se comienza con algo en forma completa, como una subrutina que se llama a sí misma en un ciclo completo que comienza nuevamente. Por ejemplo el Espiral
[pic 1][pic 2][pic 3]
Proyecto
Un proyecto es una planificación que consiste en un conjunto de actividades que se encuentran interrelacionadas y coordinadas. La razón de un proyecto es alcanzar objetivos específicos dentro de los límites que imponen un presupuesto, calidades establecidas previamente y un lapso de tiempo previamente definido.
Surge como respuesta a una necesidad. El proyecto finaliza cuando se obtiene el resultado deseado, y se puede decir que colapsa cuando desaparece la necesidad inicial o se agotan los recursos disponibles.
Características
- Está orientado a objetivos
- Los proyectos están dirigidos a obtener resultados y ello se refleja en los objetivos, indican su fin.
- Guían al proyecto, no deben ser ambiguos, deben ser claros, alcanzables y medibles.
- Los objetivos me dicen dónde empieza y donde termina el proyecto
- Tiene una duración limitada en el tiempo, tiene principio y fin siempre
- Son temporales, cuando se alcanza el objetivo, el proyecto termina.
- Una línea de producción no es un proyecto
- Implican tareas interrelacionadas basadas en esfuerzo y recursos
- Trabajo en equipo, calendarización, control, monitoreo…
- Son únicos
Ciclo de vida de un proyecto
Definen para cada fase:
- Que trabajo técnico debería realizarse
- Quien debería está involucrado en cada fase
- Como controlarla y aprobarla
- Como se deben generar los entregables y como se revisa, verifica y valida cada producto
Características de la mayoría de los ciclos de vida:
- Costos y nivel de personal son bajos al principio y más alto al final, y cae cuando el proyecto termina
- El riesgo y la incertidumbre son altos al comienzo, por lo tanto la probabilidad del éxito al completar el proyecto es muy baja al comienzo.
Ciclo de vida del Producto vs Proyecto
[pic 4]
Éxito de un proyecto
- Monitoreo y Feedback
- Tener una misión/objetivo claro
- Comunicación
Fracaso de un proyecto
Fallas al definir un problema, planificar con datos insuficientes, el plan de proyecto no tiene seguimiento, estimación está basada en supuestos sin consultar datos históricos, requerimientos incompletos o cambiantes, falta de recursos, falta de involucramiento del usuario.
Errores
- Gente (falta de motivación, personal mediocre…)
- Proceso (planificación insuficiente, diseño inadecuado…)
- Producto (exceso de requerimientos, desarrolladores meticulosos…)
- Tecnología (Síndrome SilverBullet ósea el equipo se aferra solo a una nueva técnica, cambio de herramientas a mitad del proyecto…)
Factores de calidad
La restricción triple, el balance de ellos afecta directamente la calidad del proyecto y es responsabilidad del Líder del proyecto balancearlos, es la única forma de negociar proyectos.
...