Está en la página 1de 3

Resumen AI-C1-Introducción al desarrollo de software v1.

0
Introducción
El software se encuentra presente en nuestras vidas desde el despertador del teléfono
hasta el ascensor que tomamos para llegar al piso 5 de la fiuba. Los dados son ejemplos de
proyectos que han llegado a buen puerto pero existen una cantidad importante de
proyectos que nunca llegan a la etapa de producción ya sea por no saber captar bien lo
pedido por el cliente y luego no ser utilizado o por no poder cumplir con la entrega lo que
puede hacer que un cliente poco convencido y mal informado del estado del proceso
decida cancelarlo.

Factores de calidad de software

 Funcionalidad: Que cumpla con lo que se supone que debe hacer.


 Confiabilidad: Que además lo haga de manera determinista y entregue resultados
correctos, si una calculadora arroja un resultado incorrecto 10% de las veces no es
confiable.
 Facilidad de uso.
 Facilidad de mantenimiento: Que este bien documentado e implementado para
que pueda mantenerse con el menor esfuerzo posible. El uso de patrones de
programación facilita esta tarea.

Problemas en el desarrollo de software


Es una entidad compleja resultado de un proceso de desarrollo que posee relaciones y
estados tan complejos que resulta difícil su manejo y comprensión desde el punto de vista
del modelado. Forma parte de un sistema mayor (es un subsistema), dado que no opera
por sí mismo y se basa en la interacción con el usuario.

Es difícil de desarrollar porque es invisible y además es muy complejo con lo que


modelarlo requiere superposición de descripciones de distintos aspectos tales como el
comportamiento y las estructuras de datos y sus relaciones. También tiene Mutabilidad
que, a diferencia de otros productos, permite cosas como corrección de errores post
lanzamiento y además agregado de funciones (como por ejemplo DLC en juegos).

Se fueron atracando los problemas accidentales (aquellos que tiene solución) ejemplos de
esto fueron la creación del OOP, los lenguajes de alto nivel, el advenimiento de los IDE’s,
etc., pero en el desarrollo aun hay problemas llamados esenciales que son los
infranqueables tales como el hecho de que hay que tratar con humanos lo que incluso con
gente capacitada y las herramientas correctas se tienen presiones y ansiedades que hay
que manejar y tratar de disminuir.

Ingeniería de software
Aplica las técnicas de ingeniería al desarrollo de software con varios pasos comunes a cada
proceso:

 Captura de especificaciones: tanto de software como de hardware y


requerimientos del usuario.
 Diseño: Análisis de la información capturada para la creación de modelos que
permitan la construcción y mantenimiento posterior.
 Construcción: Programación.
 Validación: Test de cumplimiento de requerimientos del usuario y de correcto
funcionamiento de las mismas y de las características internas del software.
 Mantenimiento: Evolución y correcciones de errores de todo tipo.

El desarrollo dado por la ingeniería de software es el proyecto que genera la capacidad de


producir valor, y el resultado es la producción que es cuando el software opera y genera
valor (venta o utilización del mismo).

Ingeniería de requerimientos
Se encarga de tomar las funciones y objetivos que deba cumplir el sistema y la transforma
en especificaciones a nivel de ingeniería de software, dicho de otra forma se encarga de
responder a la pregunta ¿Que se va a desarrollar?

Métodos de desarrollo de software

 Heurísticos: guiados por la experiencia y la intuición más que por un método


estructurado.
 Formales: son más procedimentales y siguen un esquema más estricto como la
matemática.

Existe una cuestión entre el modelado ágil que es más informal en el cual se crean algunos
modelos simples y se comienza inmediatamente la programación y la ingeniería basada en
modelos que es un nivel superior de abstracción que describe cómo se comporta el
software y a partir de ellos se puede hacer la transición inmediata al ejecutable. De alguna
forma remite a la cuestión del TDD vs MDD.
El software se desarrolla mejor de forma iterativa (cada cierto tiempo se tiene una
versión) e incremental (se va mejorando/creando de a pocas características). El ciclo de
vida en cascada es el más aplicado a lo largo de la historia con sus diferentes variantes
tales como que cada fase se relacione estrechamente con la anterior y todas
preferentemente en paralelo dentro de los posible determinado por la fase dominante de
desarrollo. Algunos ejemplos son

 Scrum: Posee iteraciones de 2 a 4 semanas denominadas “Sprints”, se tiene un


“product backlog” que describe las funcionalidades en orden de prioridad y se van
desarrollando en ese orden creando “sprints backlogs” para cumplir en cada
iteración. Cada día hay una reunión del equipo o “scrum” en donde se determina
el avance obtenido.
 XP (Extreme Programming): Iteraciones de 2 semanas, no tiene documentación y
no hay requerimientos, solo historias de usuario. Tiene que haber un usuario en el
equipo de desarrollo y se apoya en el TDD.
 Feature Driven Development (FDD): Se ponen metas basadas en cada característica
requerida y se desarrolla cada meta en orden.
 Disciplined Agile Delivery: combina varias de los métodos anteriores.

También podría gustarte