1. UNIVERSIDAD FERMIN TORO DISEÑO DE SOFTWARE
FACULTAD DE INGENIERIA SECCIÒN: SAIA A
DEPTO. DE PROGRAMACIÒN PROF: ADRIANA BARRETO
CABUDARE – EDO. LARA
ENSAYO SOBRE SOFTWARE
El software trae consigo muchas definiciones, de las cuales se encuentra y
se entiende que:
“Es el conjunto de programas y procedimientos que hacen posible las
operaciones de un computador o sistema en conjunto de su hardware siendo este
último los componentes físicos que ejecuta las tareas enviadas por medio del
software”.
Entendiendo que el software puede ser binario, código fuente o ejecutable
también abarca archivos y datos; para ser precisos es todo lo “intangible”,
contrario al hardware que es todo lo “físico”. Este, a su vez comprende dos tipos
según el área de especialización y al campo donde va dirigido los cuales son:
Software de sistema.
Software de programación.
Software de aplicación.
Siendo el primero aquel que se encarga de crear una interfaz entre el
usuario y la máquina, generando una comunicación fácil y sencilla evitando a su
vez que el primero vea los procesos internos que se ejecutan para lograr las tareas
que realiza dicha máquina.
El segundo tipo se caracteriza por ser un conjunto de herramientas que
permite “crear” procesos y desarrollar programas usando varios lenguajes de
programación proporcionando editores de texto, interpretes, depuradores, entre
otros.
Por último, el software de aplicación es aquel que permite realizar tareas
que son de un campo especifico tales como bases de datos, software empresarial,
por nombrar algunos y que pueden ser automatizados. En general se usan en
sistemas contables, software de diseño, entre otros.
Para realizar un software o crear uno, se debe generar por medio de
procesos y reglas preestablecidas que deben ser aplicadas para su éxito. Este
proceso puede ser sencillo o complejo, todo dependiendo de qué objetivos y
necesidades se dicte para dicho programa. Para ello debe realizarse un estudio y
cumplir con las siguientes etapas:
2. Análisis de requisitos
En esta fase inicial, se reúnen y especifican las funciones necesarias
que deberá cumplir el sistema a desarrollar. Lo cual hace que esta sea la
principal fuente de éxito del desarrollo del sistema, ya que en este se
trazaran los objetivos a cumplir. Por lo que se necesita desarrollar buenos
criterios para la toma de decisiones.
Para lograr criterios certeros se deben tener algunos principios tales
como:
o Presentar y entender cabalmente el dominio de la
información del problema.
o Definir correctamente las funciones que debe realizar el
Software.
o Representar el comportamiento del software a consecuencias
de acontecimientos externos, particulares, incluso
inesperados.
o Reconocer requisitos incompletos, ambiguos o
contradictorios.
o Dividir claramente los modelos que representan la
información, las funciones y comportamiento y características
no funcionales
Diseño
Esta etapa se basa en “como” los requisitos van a lograrse. En otras
palabras, como la estructura del software hará posibles dichas
necesidades.
Codificación
Esta etapa consiste en la “programación” de lo diseñado
previamente y se caracteriza por necesitar más horas/hombre para
su desarrollo.
Mientras se traduce los requisitos en lenguaje de programación o
codificación, es natural que se realicen tareas de depuración y
evaluación, evitando así errores futuros.
Durante la fase de programación existen varias formas de código
para el desarrollo del mismo, y que pueden ser de tipo fuente, objeto
y ejecutable. Todo esto dependiendo de lo que se necesite lograr y la
manera más fácil y eficaz de trabajar.
Pruebas (unitarias y de integración)
En esta fase se pueden destacar dos tipos de pruebas, las unitarias y
de integración. La primera consiste en probar pequeñas partes del
3. conjunto, como módulos, procedimientos, entre otros. Mientras que
el segundo comprende el sistema completo para así garantizar el
funcionamiento del sistema. Claro que para realizar este primero
debe cumplir la prueba unitaria.
Instalación y paso a producción
La instalación, no es más que transferir los datos al computador
configurados para su uso. Esto quiere decir su entrega, y por lo tanto
esta etapa es susceptible a futuros ajustes y configuraciones.
Mantenimiento
Este se entiende como la mejora y optimización del producto
desarrollado e instalado previamente y que comprende la
depuración y configuración de funciones anexasen caso de existir
alguna.
Tomando en cuenta y entendiendo cada una de las etapas antes descritas, se
encuentran sub-etapas, en el que el “modelo de proceso o ciclo de vida” empleado
para el desarrollo de este, norma el orden y tareas involucradas para dicho
proceso. Entre los ciclos más conocidos se destacan tres:
Cascada
Modelo en espiral
Modelo iterativo incremental.
El primer tipo es el tradicional, el cual generalmente no se usa en su forma pura
sino que se flexibiliza debido a que en su manera original es muy rígida. Cuando se
usa en una de sus variantes se caracteriza por ser un software pequeño y sencillo y
de gran eficacia. Claro está que para ello se realizan ajustes en los procesos para
lograr una retroalimentación de etapas y así cumplir con los objetivos. Así se
obtiene el “modelo cascada retroalimentado”.
Una de las desventajas de este modelo es que si se realizan cambias durante el
proceso de desarrollo puede ocasionar confusión y el fracaso para dicho programa.
El segundo modelo es uno de tipo evolutivo e iterativo, esto quiere decir que
permite desarrollar versiones cada vez más complejas hasta llegar al objetivo
siendo específico detallando absolutamente todo lo que el sistema debe hacer.
Este modelo se construye en una serie de versiones incrementales. Dicho modelo
se divide en “regiones de tareas”. En general existen entre tres y seis regiones de
tareas. Este tiene como ventaja la capacidad de ir adaptándose y aplicarse a lo
largo de todo el software. Además se adapta muy bien para desarrollos a gran
escala, pero se debe tener gran experiencia para evaluar los riesgos.
4. Este modelo se inicia generando un centro con una tarea específica y en el cual
se basa el programa y luego se agregan capas de tareas, las cuales pueden ser
sencillas o complejas dependiendo del proyecto a abarcar. Por lo general este tipo
de modelo se usa en proyectos de gran escala y complejidad tales como
navegadores y controladores aeronáuticos. De este modelo existe una variante, a
la cual se refiere como espiral win & win. Este se basa en el ganar-ganar,
traduciendo su nombre en español.
Lo que se refiere a que su objetivo principal es satisfacer las necesidades del
cliente mientras que el desarrollador del programa gana un buen presupuesto y el
tiempo necesario para trabajar en el diseño del software. Para esto se debe tener
habilidades de negociación para llegar a un acuerdo.
En este modelo existen las siguientes premisas para abarcar el proyecto:
Identificación del sistema o subsistemas clave de los directivos (*) (saber
qué quieren).
Determinación de «condiciones de victoria» de los directivos (saber qué
necesitan y los satisface)
Negociación de las condiciones «victoria» de los directivos para obtener
condiciones «Victoria & Victoria» (negociar para que ambos ganen).
Por último se tiene el modelo iterativo o incremental. Este es uno de tipo
“evolutivo” debido a que permite crear versiones de “estudio” o prototipos
basándose en el modelo cascada y que depura en su desarrollo los ciclos hasta
llegar a su producto final, en el cual ya han sido evaluados las operaciones y
tomados como necesarios para su funcionamiento.
En este tipo de software, el funcionamiento se basa en partes pequeñas que
permiten su “reciclaje” o refiriéndose de otro modo, pueden ser reutilizables y son
llamados incrementos. Estos se caracterizan por ser construidos sobre uno ya
elaborado anteriormente y entregado (reutilizado).
Dicho todo esto, se puede denotar que el modelo evolutivo permite una
retroalimentación entre el cliente y el programador, debido a que se entrega una
versión de prueba con funciones básicas y a medida que el cliente arroja
evaluaciones para reajustar o agregar funciones se logra un diseño del software
depurado y certero hasta cumplir totalmente con los objetivos trazados.
Claramente, son muy factibles estos modelos evolutivos, debido a que es casi nulo
que un cliente este consiente de todas las funciones que debería poseer dicho
programa, por lo que da la ventaja al programador de reciclar el prototipo sin
generar pérdidas en tiempo de ajuste y evaluación, aumentando así el éxito del
producto.
Participante:
María Alejandra Mendoza