Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Fundamentos de la Ingeniería del Software - Apuntes - Diseño de Sistemas, Apuntes de Diseño de Sistemas

Apuntes del curso universitario de Informatica sobre los Fundamentos de la Ingenieria del Software - Apuntes de Diseño de Sistemas

Tipo: Apuntes

2012/2013

Subido el 03/05/2013

Alejandro_87
Alejandro_87 🇦🇷

4.4

(294)

697 documentos

1 / 5

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
FundamentosdelaIngenieríadelSoftware
Unprocesodesoftwareesunconjuntodeactividadesquesellevanacaboparael
desarrollodeunsoftware.Existeunagrandiversidadenlacantidaddeaplicacionesypor
lotantounagrandiversidadenlostiposdeproceso.Sinembargo,algunasactividadesson
comunesatodoslosprocesos:
1) Especificacióndelsoftware:Sedefinenlosrequerimientosdelsistema.
2) Implementación:Serealizanlastaresdedesarrollodelsoftwareparaquecumpla
conlasespecificaciones.
3) Validación:sevalidaqueelproductocumplaconlasnecesidadesdelcliente.
4) Evolución:secorrigendefectosyseagregannuevasfuncionalidades.
Losmodelosdesoftware
Losmodelossonunarepresentaciónabstractadelprocesoquepresentanunavista
teóricadelasdiferentesactividadesllevadasacaboenunprocesodesoftware.
Algunosmodelosgeneralesson:
1) Cascada:Seplanteanetapasbiendefinidasquesevanconcatenandoeneltiempo.
Haymuypocosolapamientoentrelasetapas.Lasprincipalesson:
a. Análisisderequerimientos
b. Diseño
c. Implementación
d. Test
e. Evolución
Elhechosellamarsecascadasedebeaqueelflujodetrabajocorregeneralmente
enunasoladirección,yesmuycostosovolveratrásenalgunaetapadelproceso
debidoaquecomolasalidadeunaetapaeslaentradadelaotra,uncambioenla
primeraincurriráengrandescambiosenlaposterior.
2) Evolutivo:Setratadepresentarunaversiónpreliminardelsistemaalusuario,
refinarlaatravésdelfeedbackqueestenosmismonosdaeirpresentandonuevas
versiones.Existendosversionesdeestemodelo:
a. Desarrolloexploratorio:Laideaestrabajarconelclienteparaexplorarsus
requerimientosyentregarunsistemafinal.
b. Prototiposdesechables:Sepresentaunprototiposoloparadeelsacarlos
requerimientosdelsistemafinal.
docsity.com
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Fundamentos de la Ingeniería del Software - Apuntes - Diseño de Sistemas y más Apuntes en PDF de Diseño de Sistemas solo en Docsity!

Fundamentos de la Ingeniería del Software

Un proceso de software es un conjunto de actividades que se llevan a cabo para el desarrollo de un software. Existe una gran diversidad en la cantidad de aplicaciones y por lo tanto una gran diversidad en los tipos de proceso. Sin embargo, algunas actividades son comunes a todos los procesos:

  1. Especificación del software: Se definen los requerimientos del sistema.
  2. Implementación: Se realizan las tares de desarrollo del software para que cumpla con las especificaciones.
  3. Validación: se valida que el producto cumpla con las necesidades del cliente.
  4. Evolución: se corrigen defectos y se agregan nuevas funcionalidades.

Los modelos de software

Los modelos son una representación abstracta del proceso que presentan una vista teórica de las diferentes actividades llevadas a cabo en un proceso de software.

Algunos modelos generales son:

1) Cascada: Se plantean etapas bien definidas que se van concatenando en el tiempo. Hay muy poco solapamiento entre las etapas. Las^ principales^ son: a. Análisis de requerimientos b. Diseño c. Implementación d. Test e. Evolución El hecho se llamarse cascada se debe a que el flujo de trabajo corre generalmente en una sola dirección, y es muy costoso volver atrás en alguna etapa del proceso debido a que como la salida de una etapa es la entrada de la otra, un cambio en la primera incurrirá en grandes cambios en la posterior.

2) Evolutivo: Se trata de presentar una versión preliminar del sistema al usuario, refinarla a través del feedback que este nos mismo nos da e ir presentando nuevas versiones. Existen dos versiones de este modelo: a. Desarrollo exploratorio: La idea es trabajar con el cliente para explorar sus requerimientos y entregar un sistema final. b. Prototipos desechables: Se presenta un prototipo solo para de el sacar los requerimientos del sistema final.

Algunos problemas de este modelo son: c. Poca visibilidad: Debido a esto se deben entregar muchos documentos y esto no es rentable si se necesita un desarrollo rápido. d. Estructura deficiente: Los cambios continuos que se realizan tienden a corromper la estructura y aplicar nuevos cambios es cada vez más difícil.

3) IS basada en componentes: En muchos modelos se realiza la reutilización de código pero de manera informal (queda a cargo de cada dev). Sin embargo, esto se ha incorporado a algunos modelos de desarrollo y se está aplicando con buena aceptación. Los primeros pasos del desarrollo pueden ser comparables con modelos ya existentes. Sin embargo se incluyeron algunas nuevas etapas como: a. Análisis de componentes: Una vez que se tiene los requerimientos se buscan los componentes que puedan ser usados según las necesidades. b. Modificación de requerimientos: los requerimientos pueden ser modificados levemente según los componentes hallados, para que estos encajen de mejor manera. c. Desarrollo e integración: Para las necesidades que no se encontraron componentes aplicables se desarrolla y luego se integra todo el sistema.

Existen algunas variaciones de estos 3 modelos genéricos que se emplean en diferentes organizaciones. Uno de los más importantes es el modelo formal, donde la modelización se lleva a cabo a través de transformaciones matemáticas. Uno de los más conocidos es el de Clean Room, desarrollado por IBM. Este tipo de modelo son aplicables a proyectos que requieren alto de grado de seguridad y protección.

Otros modelos muy utilizados son:

**1) Espiral:

  1. Entregas incrementales:**

Las etapas del proceso

Las cuatro etapas principales del proceso son:

**1) Especificación

  1. Desarrollo
  2. Validación
  3. Evolución**

Diseño de interfaz: Se describen los input y output de cada subsistema, que será la forma en que se puede acceder a cada uno de ellos.

Diseño de componentes: Se le otorga funcionalidad a cada modulo y se diseñan las interfaces.

Diseño de estructura de datos: Se diseñan en detalle las estructuras de datos que se usaran en todo el sistema.

Diseño de Algoritmos: Se diseñan en detalle los algoritmos que prestaran servicio.

Validación del software

Es la verificación del producto para corroborar que cumple con las pautas y requerimientos establecidos por el cliente que lo comprará.

Es una buena práctica aplicar la validación en cada una de las etapas del proceso, pero normalmente no se ven los costos de la validación hasta la etapa de prueba del sistema.

La detección de errores lleva a cambios que pueden variar en importancia y por lo tanto puede cambiar la etapa en donde los cambios deban ser aplicados. Puede que se solucione con pequeños cambios en la etapa de implementación como que necesite un re diseño de un componente.

Las etapas de prueba pueden dividirse en 3 partes:

  1. Prueba unitaria: Se prueban todos los componentes de manera unitaria para analizar su comportamiento.
  2. Prueba de integración: Se junta todo el sistema y se lo prueba como tal para verificar la correcta integración entre todos los módulos.
  3. Prueba de aceptación: Se expone el sistema a pruebas con datos y situaciones reales del cliente.

Evolución del Software

Existe una visión que separa al desarrollo del mantenimiento del software. Se piensa comúnmente que el desarrollo es la parte interesante y creativa del proceso de creación del software, sin embargo el mantenimiento en muchas ocasiones representa varias veces los costos del desarrollo. Debido a esto, es que cada vez esta diferencia se hace mas irrelevante, con lo que parece más realista ver a la IS como un proceso evolutivo.

RUP y UML

RUP es un modelo de trabajo que proviene de usar UML. Reúne elementos de todos los procesos de enfoque genérico.

El RUP es un modelo en fases que identifica cuatro fases diferentes en el proceso del software. Sin embargo, a diferencia del modelo en cascada donde las fases se equiparan con las actividades del proceso, las fases en el RUP están mucho más relacionadas con asuntos de negocio más que técnicos.

Herramientas CASE

Son herramientas informáticas que se utilizan para facilitar la labor de los diseñadores. Esta tecnología está disponible para casi todas las etapas de un proyecto, lo que permite una mejora en la calidad del producto dada la estandarización que permiten.