Вы находитесь на странице: 1из 14

Profesor: Luis Colombo

Alumno: Andrs Enrique Perlo Hilgemberg

Tema: Desarrollo de Software


Introduccin al
Desarrollo de software
El software como tal es un conjunto de instrucciones lgicas que le permite al usuario
interactuar con el computador a travs de una interfaz, es lo que comnmente se conoce como
los programas del computador y van desde un editor de texto hasta aplicaciones que gestionan a
otras.
La industria del software avanza a pasos agigantados, un claro ejemplo de eso es la computacin
en la nube, que si bien antes tenamos que instalar un programa en nuestra computadora para
poder acceder a todas las funcionabilidades que tena ahora se lo puede hacer mediante un
navegador donde el programa se encuentra alojado en un servidor a varios kilmetros de
distancia, dejando as disponible el hardware que se utilizara para correr esta aplicacin
(memoria, disto, procesador).
A continuacin se analiza ms detalladamente que es el software, sus caractersticas y las
diferentes metodologas que utilizan los desarrolladores para crear este producto, ya que la
elaboracin del software a medida(es decir con una funcin en especfico), requiere de mucho
esfuerzo por parte del programador como del cliente para que el producto pueda tener xito.

Qu es el software?
Segn Pressman, R. 2010 El software de computadora es el producto que construyen los
programadores profesionales y al que despus le dan mantenimiento durante un largo tiempo.
Incluye programas que se ejecutan en una computadora de cualquier tamao y arquitectura,
contenido que se presenta a medida de que se ejecutan los programas de cmputo e informacin
descriptiva tanto en una copia dura como en formatos virtuales que engloban virtualmente a
cualesquiera medios electrnicos. El desarrollo de software est formado por un proceso, un
conjunto de mtodos (prcticas) y un arreglo de herramientas que permite a los profesionales
elaborar software de cmputo de alta calidad.
Ciclo de vida del software
El trmino ciclo de vida del software describe el desarrollo de software, desde la fase inicial
hasta la fase final. El ciclo de vida bsico de un software consta de los siguientes
procedimientos:

La naturaleza del software


En la actualidad, el software tiene un papel dual. Es un producto y al mismo tiempo es el
vehculo para entregar un producto. El software produce, administra, adquiere, modifica,
despliega o transmite informacin que puede ser tan simple como un solo bit o tan compleja
como una presentacin con multimedios generada a partir de datos obtenidos de decenas de
fuentes independientes.

En la actualidad, la enorme industria del software se ha convertido en un factor dominante en


las economas del mundo industrializado. Equipos de especialistas de software, cada uno
centrado en una parte de la tecnologa que se requiere para llegar a una aplicacin compleja, han
reemplazado al programador solitario de los primeros tiempos. A pesar de ello, las preguntas
que se haca aquel programador son las mismas que surgen cuando se construyen sistemas
modernos basados en computadora. stas y muchas otras preguntas, denotan la preocupacin
sobre el software y la manera en que se desarrolla, preocupacin que ha llevado a la adopcin de
la prctica de la ingeniera del software.
Ingeniera de Software
Aunque cientos de autores han desarrollado definiciones personales de la ingeniera de software,
a continuacin se muestra la expuesta por Fritz Bauer.
La ingeniera de software es el establecimiento y uso de principios fundamentales de la
ingeniera con objeto de desarrollar en forma econmica software que sea confiable y que
trabaje con eficiencia en mquinas reales.
La ingeniera de software es una tecnologa de varias capas las mismas que deben asegurar la
calidad del producto, El fundamento para la ingeniera de software es la capa proceso. El
proceso define una estructura que debe establecerse para la obtencin eficaz de tecnologa de
ingeniera de software. El proceso de software forma la base para el control de la administracin
de proyectos de software, y establece el contexto en el que se aplican mtodos tcnicos, se
generan productos del trabajo (modelos, documentos, datos, reportes, formatos, etc.), se
establecen puntos de referencia, se asegura la calidad y se administra el cambio de manera
apropiada.
El proceso del software
Un proceso es un conjunto de actividades, acciones y tareas que se ejecutan cuando va a
crearse algn producto del trabajo, a continuacin se definen cada uno de estos trminos.
Una actividad busca lograr un objetivo amplio (por ejemplo, comunicacin con los
participantes) y se desarrolla sin importar el dominio de la aplicacin, tamao del
proyecto, complejidad del esfuerzo o grado de rigor con el que se usar la ingeniera
de software.
Una accin (diseo de la arquitectura) es un conjunto de tareas que producen un
producto importante del trabajo (por ejemplo, un modelo del diseo de la arquitectura).
Una tarea se centra en un objetivo pequeo pero bien definido (por ejemplo, realizar una
prueba unitaria) que produce un resultado tangible.
Una estructura de proceso general para la ingeniera de software consta de cinco actividades:
Las actividades estructurales del proceso de ingeniera de software son complementadas por
cierto nmero de actividades sombrilla. En general, las actividades sombrilla se aplican a lo
largo de un proyecto de software y ayudan al equipo que lo lleva a cabo a administrar y
controlar el avance, la calidad, el cambio y el riesgo.
MODELOS DE PROCESOS: PRESCRIPTIVO
Los modelos de proceso prescriptivo fueron propuestos originalmente para poner orden en el
caos del desarrollo de software. La historia indica que estos modelos tradicionales han dado
cierta estructura til al trabajo de ingeniera de software y que constituyen un mapa
razonablemente eficaz para los equipos de software.
Todos los modelos del proceso del software pueden incluir las actividades estructurales
generales, pero cada una pone distinto nfasis en ellas y define en forma diferente el flujo de
proceso que invoca cada actividad estructural (as como acciones y tareas de ingeniera de
software)
Dentro de los modelos de proceso prescriptivo tenemos: cascada, incremental, evolutivo y
concurrentes, a continuacin se detallan sus caractersticas.

Modelo de la cascada
El modelo de la cascada, a veces llamado ciclo de vida clsico, sugiere un enfoque sistemtico
y secuencial para el desarrollo del software, que comienza con la especificacin de los
requerimientos por parte del cliente y avanza a travs de planeacin, modelado, construccin y
despliegue, para concluir con el apoyo del software terminado.
Este tipo de modelo es utilizado cuando los requerimientos para cierto problema se comprenden
bien: cuando el trabajo desde la comunicacin hasta el despliegue fluye en forma
razonablemente lineal. Esta situacin se encuentra en ocasiones cuando deben hacerse
adaptaciones o mejoras bien definidas a un sistema ya existente (por ejemplo, una adaptacin
para software de contabilidad que es obligatorio hacer debido a cambios en las regulaciones
gubernamentales). Tambin ocurre en cierto nmero limitado de nuevos esfuerzos de desarrollo,
pero slo cuando los requerimientos estn bien definidos y tienen una estabilidad razonable.
El modelo de la cascada es el paradigma ms antiguo de la ingeniera de software, es por esto
que en el momento de utilizarlo aparecen ciertos problemas que se detallan a continuacin.

Modelos de proceso Incremental


Hay muchas situaciones en las que los requerimientos iniciales del software estn
razonablemente bien definidos, pero el alcance general del esfuerzo de desarrollo imposibilita
un proceso lineal. Adems, tal vez haya una necesidad imperiosa de dar rpidamente cierta
funcionalidad limitada de software a los usuarios y aumentarla en las entregas posteriores de
software. En tales casos, se elige un modelo de proceso diseado para producir el software en
incrementos.
Cuando se utiliza un modelo incremental, es frecuente que el primer incremento sea el producto
fundamental. Es decir, se abordan los requerimientos bsicos, pero no se proporcionan muchas
caractersticas suplementarias (algunas conocidas y otras no). El cliente usa el producto
fundamental (o lo somete a una evaluacin detallada). Como resultado del uso y/o evaluacin,
se desarrolla un plan para el incremento que sigue. El plan incluye la modificacin del producto
fundamental para cumplir mejor las necesidades del cliente, as como la entrega de
caractersticas adicionales y ms funcionalidad. Este proceso se repite despus de entregar cada
incremento, hasta terminar el producto final.

Modelos de proceso Evolutivo


Los modelos evolutivos son iterativos. Se caracterizan por la manera en la que permiten
desarrollar versiones cada vez ms completas del software.
El software, como todos los sistemas complejos, evoluciona en el tiempo. Es frecuente que los
requerimientos del negocio y del producto cambien conforme avanza el desarrollo, lo que hace
que no sea realista trazar una trayectoria rectilnea hacia el producto final; los plazos apretados
del mercado hacen que sea imposible la terminacin de un software perfecto, pero debe lanzarse
una versin limitada a fin de aliviar la presin de la competencia o del negocio; se comprende
bien el conjunto de requerimientos o el producto bsico, pero los detalles del producto o
extensiones del sistema an estn por definirse. En estas situaciones y otras parecidas se
necesita un modelo de proceso diseado explcitamente para adaptarse a un producto que
evoluciona con el tiempo.
Dentro del proceso evolutivo encontramos dos modelos: prototipos y modelo espiral que se
detallan a continuacin:

Modelos concurrentes
El modelo de desarrollo concurrente, en ocasiones llamado ingeniera concurrente, permite que
un equipo de software represente elementos iterativos y concurrentes de cualquiera de los
modelos de proceso descritos en este captulo. Por ejemplo, la actividad de modelado definida
para el modelo espiral se logra por medio de invocar una o ms de las siguientes acciones de
software: hacer prototipos, anlisis y diseo.
Todas las actividades de ingeniera de software existen de manera concurrente, pero se hallan en
diferentes estados. Por ejemplo, la actividad de comunicacin (no se muestra en la figura)
termina su primera iteracin al principio de un proyecto y existe en el estado de cambios en
espera. La actividad de modelado (que exista en estado inactivo mientras conclua la
comunicacin inicial, ahora hace una transicin al estado en desarrollo. Sin embargo, si el
cliente indica que deben hacerse cambios en los requerimientos, la actividad de modelado pasa
del estado en desarrollo al de cambios en espera (Pacheco, I y Garca, J. 2008).

Los modelos de procesos prescriptivos se utilizan cuando los requerimientos se encuentran bien
definidos desde el inicio, es el caso del proceso cascada que se utiliza cuando los requerimientos
no cambian o para la mejora de un producto ya realizado donde los requerimientos ya fueron
definidos, el modelo incremental permite entregar software en cada incremento con nuevas
funcionalidades que fueran especificadas en los requerimientos, el proceso evolutivo por as
decirlo muestra cmo evoluciona a travs del tiempo y los modelos concurrentes permiten
realizar varios anlisis de los requerimientos al combinar varios procesos de desarrollo y
mantener las actividades en un estado (inactivo, en desarrollo, ejecutado, etc).

PROCESO PREVISIBLE
Adecuado para las situaciones en que la incertidumbre es baja: las variables de entrada
son conocidas y el producto final se puede estimar con gran precisin de acierto.
Caracterstica comn: alto coste de reconstruccin o reparacin de las fallas del producto
nal.
PROCESO EMPRICO

El empirismo es la teora que afirma que el conocimiento surge principalmente de la


experimentacin sensorial. Un proceso emprico est caracterizado por el aprendizaje adquirido
a partir de la experimentacin y de las adaptaciones realizadas para mejorar el proceso. Es decir:
Haciendo y Aprendiendo.
Adecuado en las situaciones en que la incertidumbre es alta: donde los cambios son frecuentes y
el producto final es difcil de ser estimado.
La incertidumbre en los proyectos de software deriva de diversos factores:
Los requisitos recolectados pueden estar equivocados o incompletos.
La arquitectura escogida puede ser ineciente o insuciente.
Las pruebas se realizan sobre requisitos inciertos o confusos.
El soporte tcnico de las pruebas puede ser insuciente o inadecuado.
El cdigo fuente puede contener bugs.
Las plantillas y las especiaciones no son conables al 100%.
La incertidumbre solamente se reduce cuando el usuario usa la aplicacin de manera
efectiva (feedback).

FACTORES DE CALIDAD DEL SOFTWARE.


Los factores de calidad del software sirven para descomponer el concepto genrico de
calidad en otros ms sencillos, para facilitar su control y su medicin.

Dado que la divisin en factores es una divisin subjetiva, existen varias clasificaciones de los
factores de calidad. Veremos la de McCall, que los agrupa en tres perspectivas: operativa, de
mantenimiento y evolutiva.
Factores operativos de la calidad del software.
Los factores operativos son aquellos que afectan al uso del software:
Correccin: el software cumple las especificaciones
Fiabilidad: grado en el que el software es confiable, es decir, no tiene fallos
Eficiencia: necesidad de recursos software y hardware del producto
Seguridad: grado en el que puede controlarse el acceso al software y a los datos
Facilidad de uso: grado de esfuerzo necesario para utilizar el software
Factores de mantenimiento de la calidad del software.
Los factores de mantenimiento son aquellos que se aplican a la capacidad de modificacin del
software:
Flexibilidad: esfuerzo necesario para modificar un programa
Facilidad de prueba: esfuerzo requerido para realizar las pruebas de un programa
Facilidad de mantenimiento: esfuerzo requerido para localizar y reparar un error
Factores evolutivos
Los factores evolutivos son aquellos que indican si el software se puede trasladar con facilidad a
otra mquina o a otro producto de base (SO, SGBD, etc.), o incrementar sus prestaciones:
Portabilidad: facilidad para migrar el software de un entorno de operacin a otro
Capacidad de reutilizacin: grado en el que un programa o parte del mismo se puede
utilizar en otras aplicaciones.
Capacidad de interoperacin: esfuerzo necesario para que un software opere
conjuntamente con otros sistemas.