top of page

La ingeniería de software

  • nicole lippert
  • 9 nov 2021
  • 6 Min. de lectura

La ingeniería del software es la rama de las ciencias de la computación que busca principios que sirvan como guía al desarrollo de sistemas de software complejos y de gran tamaño. El desarrollo de estos sistemas requiere el esfuerzo de más de una persona a lo largo de un período extendido de tiempo durante el cual los requisitos del sistema propuesto pueden verse alterados y el personal asignado el proyecto puede variar.



Cualidades e importancia de la ingeniería de software

• Capacidad de construir sistemas a partir de componentes genéricos prefabricados. Los componentes de software son diseñados para un dominio específico y para una aplicación específica

• Falta de técnicas cuantitativas, denominadas métricas, para medir las propiedades del software.

o La complejidad del software es difícil de medir

o La calidad de un producto software es difícil de medir – Tiempo entre fallos no es una buena métrica

• Nuestra sociedad es dependiente a los sistemas de computadoras y software. Nuestra economía, la salud pública, el gobierno, las fuerzas de seguridad, el transporte y la defensa dependen de sistemas software de gran envergadura. Por lo tanto, los errores en el software han provocado desastres o casi desastres


Generalmente, los sistemas de software fallan por tres razones:

• No redundancy

• Hacking

• Human error


Para prevenir que el software falle, existen programas y aplicaciones CASE (ingeniería del software asistida por computadoras):

• Sistemas de planificación de proyectos: como ayuda para la estimación de costes para la fijación de hitos en los proyectos y para la asignación de personal

• Sistemas de gestión de proyectos: como ayuda para el monitoreo del progreso del proyecto desarrollo

• Herramientas de documentación: como ayuda para la escritura y organización de la documentación

• Sistemas de prototipado y simulación: como ayuda al desarrollo de prototipos

• Sistemas de programación: como ayuda a la escritura y depuración de programas


El ciclo de vida del software:

Una vez que el software ha sido desarrollado, entra en un ciclo de utilización y mantenimiento, un ciclo que continúa durante el resto de la vida útil de ese software.

En otros productos la fase de mantenimiento tiende a ser un proceso de reparación, en el caso de software suele consistir en correcciones y actualizaciones.

El proceso de mantenimiento normalmente requiere que una persona estudie el programa subyacente y su documentación para entender el programa, o cuando menos la parte pertinente del mismo

En ocasiones resulta más fácil desarrollar un nuevo sistema partiendo de cero que modificar adecuadamente el paquete existente.


Fase de desarrollo tradicional del ciclo de vida del software:


• Análisis de requisitos: Especificar qué servicios proporcionará el sistema propuesto, identificar las condiciones impuestas a esos servicios y definir cómo interactuará el mundo exterior con el sistema.


• Diseño: Crear un plan para la construcción de este sistema propuesto. El diseño consiste en tratar de desarrollar una solución para un problema. El resultado de la fase de diseño es una descripción detallada de la estructura del sistema software que puede convertirse en programa.


• Implementación: La implementación implica la escritura de programas la creación de archivos de datos, y el desarrollo de bases de datos. Analista de software vs. Programador.


• Pruebas: Proceso de depurar los programas y Pruebas confirmar que el producto software final es compatible con la especificación de requisitos. Eliminación de errores.


Otras metodologías de ingeniería de software:

Modelo en cascada: proceso estrictamente secuencial.

Modelo incremental: en este modelo el primer sistema es una versión simplificada del producto final con una funcionalidad limitada. El software se construye en incrementos, siendo el primer sistema una versión simplificada del producto final.

Modelo iterativo: en este modelo el primer sistema es una versión incompleta del sistema al cual se van añadiendo características

Proceso unificado racional: un paradigma de desarrollo de software que redefinir los pasos de la fase de desarrollo del ciclo de vida del software y proporcionar directrices para llevar a cabo esos pasos

Prototipado rápido: se construye rápidamente un ejemplo simple del sistema propuesto. Esto se hace durante las etapas iniciales del desarrollo. El objetivo no es una versión funcional del producto sino conseguir una herramienta de demostración que puede utilizarse para aclarar requerimientos.

Desarrollo de código fuente abierto (Open Source): un único autor escribe una versión inicial del software y publica código fuente y su documentación en Internet. Desde allí puede ser descargado y modificado por otros usuarios sin ningún costo.

Métodos ágiles: implementación rápida y temprana basada en el concepto incremental, una adecuada capacidad de respuesta a las variaciones en requisitos y menor énfasis en la rigurosidad del análisis de requisitos y el diseño.


Metodología SCRUM




SCRUM: es una metodología ágil para desarrollar productos y servicios.

  • Allows rapid exploration and feedback.

  • Provides a balanced approach to design, which includes some design up front combined with a just-in-time design.

  • Demands cross-functional work.

  • Encourages daily synchronization.


Beneficios SCRUM: Delighted costumers. Improved return on investment. Reduced costs. Fast results. Confidence to succeed in a complex world. More joy.


SCRUM framework: SCRUM is a framework for organizing and managing work (not a standardized process). The SCRUM framework is based on a set of values, principles and practices that provide the foundation to which an organization will add its unique implementation of relevant engineering practices and your specific approaches for realizing the SRUM practices. SCRUM is refreshingly simple, people-centric framework based on the values of honesty, openness, courage, respect, focus, trust, empowerment and collaboration.


Equipo SCRUM: dueño del producto, SCRUM master y equipo de desarrollo.

  • Dueño: responsable de qué se producirá y en qué orden. Comunica la visión del objetivo. Su obligación es que el trabajo importante se realice. Colabora activamente con los otros miembros del equipo y debe estar disponible para resolver dudas.

  • SCRUM máster: es el responsable de guiar el quipo a crear y seguir su propio proceso basado en el framework de SCRUM. Ayuda a incorporar los valores, principios y prácticas de SCRUM. Ayuda a resolver problemas y a mejorar el sistema SCRUM. Su función es de líder no de gerente.

  • Equipo de desarrollo: es diverso, multifuncional y son responsables de diseñar, construir y probar el producto deseado. Se organiza solo. Entre 5 y 9 personas con las habilidades necesarias.


Artefactos del SCRUM

  • Product backlog: · Important work first. · On new product development the product backlog items are features required to meet the product owner’s vision. · On ongoing product development, it can also contain new features, defect, improvements, etc. · The backlog is constantly evolving

  • Sprint backlog: Same as the product backlog but for a specific sprint. · Set up a calendar with sprints of the same duration. · The work created in each sprint should create something tangible · No goal changes or people changes during the sprint.

  • Potentially Shippable product: Te result of each print.


Actividades del SCRUM

  • Sprint execution: · The development team guided by the master performs all the task-level work necessary to get the features done. · “Done” means that there is a high degree of confidence that all the work necessary for producing good quality features has been completed. · Nobody tells the development team in what order or how to do the task-level work

  • Daily SCRUM: · 15 min meeting. · 3 Questions to solve: 1) What did I accomplish since the last daily SCRUM? 2) What do I plan to work on by the next daily SCUM? 3)What are the obstacles or impediments that are preventing me form making progress? · The daily SCRUM is essential for the long the development team manage the fast, flexible flow of work. · The daily SCRUM is not a problem-solving activity. · The daily SCRUM is not a traditional status meeting. · The daily SCRUM is mainly an inspection and adaptive daily planning activity that helps a self-organizing team do its job better

  • Sprint review: · Inspect and adapt the product. · Evaluation

  • Sprint retrospective: · Before the sprint planning. · Opportunity to inspect and adapt the process. · The team comes together to check what is working.


SCRUM is not a magic cure:

  • Good for complex product development

  • It is simple but not easy

  • Provides visibility to the work processes


SCRUM for interrupted work: Kanban

Kanban is an approach that is overlaid on an existing process (instead of a stand-alone process solution) and advocates that you:

  • Visualize how the work flows through the system

  • Limit the work in progress at each step to ensure that you are not doing more work than you have the capacity to do

  • Measure and optimize the flow of the work through the system to make continuous improvement

 
 
 

Comentarios


Publicar: Blog2_Post

Formulario de suscripción

¡Gracias por tu mensaje!

  • Facebook
  • Twitter
  • LinkedIn

©2021 por Aprende todo sobre tecnología. Creada con Wix.com

bottom of page