Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIÓN...............................................................................................................2
CAPITULO 1. INGENIERÍA DEL SOFTWARE.......................................................................3
El Software y el Proceso..................................................................................................3
1.1 Características del software...........................................................................................3
1.2 Componentes del software............................................................................................4
1.3 Aplicaciones del software.............................................................................................5
1.4 Ingeniería del Software.................................................................................................6
1.5 Sistemas Basados en Computadora...............................................................................9
1.6 Ingeniería de la información.......................................................................................11
1.7 Ingeniería de productos...............................................................................................11
2. Gestión de proyectos de software.............................................................................11
2.1 Planificación de proyectos..........................................................................................13
2.2 Actividades asociadas a la planificación de proyectos de software............................14
2.3 Estimación del proyecto de software..........................................................................15
2.4 Modelos empíricos de estimación ..............................................................................16
2.5 Herramientas automáticas de estimación....................................................................17
3. Análisis de sistemas..................................................................................................17
3.1 Identificación de las necesidades (análisis de requisitos)...........................................18
3.2 Estudio de la viabilidad...............................................................................................21
3.3 Análisis técnico y económico......................................................................................22
3.4 Modelado de la arquitectura del sistema.....................................................................23
3.5 Especificación del sistema..........................................................................................23
3.6 Creación de prototipos del software...........................................................................24
1.4 Diseño de sistemas.................................................................................................25
1.4.1 Diseño de datos........................................................................................................25
1.4.2 Diseño arquitectónico...............................................................................................26
1.4.3 Diseño de la interfaz.................................................................................................27
4.4 Diseño procedimental..................................................................................................27
1.4.4 Arquitectura del software.........................................................................................28
1.4.6 Criterios para evaluar la calidad del diseño.............................................................28
1.5 Desarrollo de software ..........................................................................................29
1.6 Prueba del software..............................................................................................29
1.6.1 Objetivos de la prueba..............................................................................................30
1.6.2 Verificación y validación.........................................................................................30
1.7 Implantación ..........................................................................................................30
1.7.1 Capacitación de usuarios del sistema.......................................................................30
1.7.2 Evaluación del sistema.............................................................................................31
1.8 Mantenimiento ......................................................................................................31
1.9 Calidad del Software...............................................................................................32
1.9.1 Factores de calidad del software..............................................................................33
1.10.2 Bibliografía............................................................................................................34
5.2 Bibliografía.................................................................................................................34
INTRODUCCIÓN
Las técnicas de modelación de objetos constituyen una nueva forma de pensar acerca de los
problemas, empleando diversos modelos que se organizan a partir del mundo real. Los
modelos orientados a objetos son útiles para comprender los problemas, comunicarse con
los expertos de la aplicación, modelar la empresa, documentar y diseñar programas y bases
de datos.
2
CAPITULO 1. INGENIERÍA DEL SOFTWARE
El Software y el Proceso.
3
diseño, pero la fase de construcción del hardware puede introducir problemas de calidad
que no existen (o son fácilmente corregibles) en el software. Ambas actividades
dependen de las personas y requieren de métodos de construcción del producto final,
pero la relación entre las personas dedicadas y el trabajo realizado es completamente
diferente para el software, así como los métodos utilizados.
4
La reutilización es una característica importante para un componente de software de alta
calidad. El componente debería diseñarse e implementarse para que pueda volver a ser
reutilizado en muchos programas diferentes. En los años sesenta se construyeron
bibliotecas de subrutinas científicas reutilizables en una amplia serie de aplicaciones
científicas y de ingeniería. Esas bibliotecas de subrutinas reutilizaban de forma efectiva
algoritmos bien definidos, pero tenían un dominio de aplicación limitado. Hoy en día, se ha
extendido la visión de reutilización para abarcar no sólo los algoritmos, sino también
estructuras de datos. Los componentes reutilizables modernos encapsulan tanto datos como
procesos que se aplican a los datos, permitiendo al ingeniero del software crear nuevas
aplicaciones a partir de las partes reutilizables.
Software de sistemas. Es un conjunto de programas que han sido escritos para servir
a otros programas. Algunos programas de sistemas (por ejemplo, compiladores,
editores y utilidades de gestión de archivos) procesan estructuras de información
complejas, pero determinadas. Otras aplicaciones de sistemas, como ciertos
componentes del sistema operativo, utilidades de manejo de periféricos y procesadores
de telecomunicaciones procesan datos en gran medida indeterminados.
Software de tiempo real. Mide, analiza y controla sucesos del mundo real
conforme ocurren. Entre sus elementos se incluyen: un componente de adquisición de
datos que recolecta y da formato a la información recibida del entorno externo, un
componente de análisis que transforma la información según lo requiera la aplicación,
un componente de control/salida que responda al entorno externo y un componente de
monitorización que coordina todos los demás componentes, de forma que pueda
mantenerse la respuesta en tiempo real.
5
Software de ingeniería y científico. Está caracterizado por los algoritmos de
«manejo de números». Las aplicaciones van desde la astronomía a la vulcanología,
desde el análisis de la presión de los automotores a la dinámica orbital de las lanzaderas
espaciales y desde la biología molecular a la fabricación automática. Sin embargo, las
nuevas aplicaciones del área de ingeniería y ciencia se han alejado de los algoritmos
convencionales numéricos. El diseño asistido por computadoras (del inglés CAD), la
simulación de sistemas y otras aplicaciones interactivas, han comenzado a coger
características del software de tiempo real e incluso del software de sistemas.
La Ingeniería del Software es un área de la informática que ofrece métodos y técnicas para
desarrollar y mantener software de calidad que resuelvan problemas de todo tipo. La
Ingeniería del Software es una nueva ingeniería. Una selección de las definiciones de
“Ingeniería del Software” se muestra a continuación:
La mayoría de los lectores tienden a seguir esta definición. Aunque no dice sobre los
aspectos técnicos de la calidad del software, no se enfrenta directamente con la necesidad
de la satisfacción del cliente, omite la mención de la importancia de mediciones y métricas;
6
tampoco expresa la importancia de un proceso avanzado. Sin embargo, la definición de
Bauer nos proporciona una línea base.
El IEEE [IEEE93] ha desarrollado una definición más completa:
Los métodos de la ingeniería del software indican cómo construir técnicamente el software.
Abarcan un conjunto de tareas que incluyen análisis de requisitos, diseño, construcción de
programas, pruebas y mantenimiento.
7
¿Qué enfoque se va a utilizar para no contemplar los errores que se cometieron en el
diseño y en la construcción de la entidad?
¿Cómo se apoyará la entidad cuando usuarios soliciten correcciones, adaptaciones y
mejoras de la entidad?
En el curso sólo nos vamos a centrar en una sola entidad: el software de computadoras.
Para construir la ingeniería del software adecuadamente, se debe definir un proceso de
desarrollo de software, formado por tres fases:
Modelo lineal secuencial: llamado también ciclo de vida clásico, sugiere un enfoque
sistemático y secuencial del desarrollo del software, y consta de las actividades siguientes:
8
Generación de código o implementación: Este paso lleva a cabo la tarea de traducción
del diseño a una forma legible por la máquina. Si el diseño es detallado este paso es casi
mecánico.
Pruebas: Después de la generación comienzan las pruebas del programa, centrada en
los procesos lógicos internos del software, y en los externos funcionales, para detectar
errores y comprobar que la entrada definida produce los resultados deseados.
Mantenimiento: es casi seguro que el software sufra cambios luego de su entrega al
cliente, provocado por causas como dispositivos nuevos disponibles, o necesidad de
mejoras funcionales o de rendimiento.
Modelos de procesos evolutivos: estos modelos son iterativos y permiten a los ingenieros
desarrollar versiones cada vez más completas del software.
9
El proceso de ingeniería del software es denominado ingeniería de la información cuando
el contexto del trabajo de ingeniería se enfoca a una empresa. Cuando hay que construir un
producto, el proceso se denomina ingeniería de producto.
La palabra «sistema» es uno de los términos más usados del léxico técnico. El diccionario
Webster define «sistema» como «un conjunto o disposición de cosas relacionadas de
manera que forman una unidad o u todo orgánico... un conjunto de hechos, principios,
reglas, etc., clasificadas y dispuestas de manera ordenada mostrando un plan lógico de
unión de las partes... un método o plan de clasificación o disposición... una manera
establecida de hacer algo; método; procedimiento...».
Procedimientos. Los pasos que definen el empleo específico de cada elemento del
sistema o el contexto procedimental en que reside el sistema.
10
♦Definan explícitamente las entradas de información al modelo
♦Representen todas las uniones (incluyendo las salidas) que permitan al ingeniero entender
mejor la visión.
• Arquitectura de datos
• Arquitectura de aplicaciones
• Infraestructura de la tecnología
La gestión eficaz de un proyecto de software se centra en las tres 'p': personal, problema y
proceso. El orden no es arbitrario. El gestor que se olvida de que el trabajo de ingeniería
11
del software es un esfuerzo humano intenso nunca tendrá éxito en la gestión de proyectos.
Un gestor que no fomenta una minuciosa comunicación con el cliente al principio de la
evolución del proyecto se arriesga a construir una elegante solución para un problema
equivocado. Finalmente, el administrador que presta poca atención al proceso corre el
riesgo de arrojar métodos técnicos y herramientas eficaces al vacío.
Personal
La necesidad de contar con personal para el desarrollo del software altamente preparado y
motivado se viene discutiendo desde los años 60. El proceso del software y todos los
proyectos de software lo componen participantes que pueden clasificarse en una de cinco
categorías:
1. Gestores superiores, que definen los aspectos de negocios que a menudo tienen una
significativa influencia en el proyecto.
2. Gestiones (técnicos) del proyecto, que deben planificar, motivar, organizar y
controlar a los profesionales que realizan el trabajo de software.
3. Profesionales, que proporcionan las capacidades técnicas necesarias para la
ingeniería de un producto o aplicación.
4. Clientes, que especifican los requisitos para la ingeniería del software.
5. Usuarios finales, que interaccionan con el software una vez que se ha entregado para
la producción,
Problema
El desarrollador de software y el cliente deben reunirse para definir los objetivos del
proyecto y su ámbito. En muchos casos, esta actividad empieza como parte del proceso de
ingeniería del sistema y continúa como el primer paso en el análisis de los requisitos del
software. Los objetivos identifican las metas generales del proyecto sin considerar cómo se
conseguirán.
Una vez que se han entendido los objetivos y el ámbito del proyecto, se consideran las
soluciones alternativas. Aunque se estudia con poco detalle, las alternativas permiten a los
gestores y a los profesionales seleccionar el «Mejor» enfoque, dadas las limitaciones
12
impuestas por las fechas límite de entrega, restricciones del presupuesto, disponibilidad de
personal, interfaces técnicas y otros muchos factores.
Proceso
Aunque la estimación es más un arte que una ciencia, es una actividad importante que no
debe llevarse a cabo de forma descuidada. Existen técnicas útiles para la estimación de
costes y de tiempos. Y, dado que la estimación es la base de todas las demás actividades de
planificación del proyecto y sirve como guía para una buena ingeniería del software, no es
en absoluto aconsejable embarcarse sin ella.
13
2.2 Actividades asociadas a la planificación de proyectos de software.
La primera actividad que se lleva a cabo durante la planificación del proyecto de software
es el ámbito del software. El ámbito se define respondiendo las siguientes cuestiones.
El ámbito del software describe la función, el rendimiento, las restricciones, las interfaces y
la fiabilidad, se evalúan las funciones del ámbito y en algunos casos se refinan para dar más
detalles antes del comienzo de la estimación. Las restricciones de rendimiento abarcan los
requisitos de tiempo de respuesta y procesamiento, identifican los límites del software
originados por el hardware externo, por la memoria disponible y por otros sistemas
existentes.
2.2.2 Recursos
14
Recursos Humanos
Recursos de entorno
El coste del software constituía un pequeño porcentaje del coste total de los sistemas
basados en computadora. En la actualidad, el software constituye el elemento más caro de
la mayoría de los sistemas informáticos. Un gran error en la estimación del coste puede ser
lo que marque la diferencia entre beneficios y pérdidas, y sobrepasarse en el coste puede ser
catastrófico en el equipo de desarrollo.
La estimación del coste y del esfuerzo del software nunca será una ciencia exacta. Son
demasiadas las variables humanas, técnicas, de entorno, políticas que pueden afectar al
coste final del software y al esfuerzo aplicado para desarrollarlo.
15
Las siguientes opciones son útiles para realizar estimaciones seguras de costes y esfuerzos:
1. Deje la estimación para más adelante (lógico que podemos realizar una estimación
al cien por cien fiable luego de haber terminado el proyecto).
2. Guiar las estimaciones en proyectos similares ya concluidos.
3. Usar técnicas de descomposición relativamente sencillas para generar las
estimaciones de coste y de esfuerzo del proyecto.
4. Realice un modelo empírico para el cálculo de costes y esfuerzos del software.
Las opciones restantes son métodos viables para la estimación del proyecto de software.
Las técnicas de descomposición utilizan un enfoque de «divide y vencerás» para la
estimación del proyecto de software. Se pueden utilizar los modelos empíricos de
estimación como complemento de las técnicas de descomposición, ofreciendo un enfoque
de estimación potencialmente valioso por derecho propio
Los datos empíricos que soportan la mayoría de los modelos de estimación se obtienen de
una muestra limitada de proyectos. Por esta razón, el modelo de estimación no es adecuado
para todas las clases de software y en todos los entornos de desarrollo. Por tanto, los
resultados obtenidos de dichos modelos se deben utilizar con prudencia
Barry Boehm, en su libro clásico sobre economía de la Ingeniería del Software, introduce
una jerarquía de modelos de estimación de Software con el nombre de COCOMO
(Constructive Cost Model) o modelo constructivo de costos. La jerarquía de modelos de
Boehm esta formada por:
16
Modelo I. Es el modelo COCOMO básico que calcula el esfuerzo y el costo del desarrollo
de software en función del tamaño del programa, expresado en las líneas estimadas.
Modelo II. Es el modelo intermedio que calcula el esfuerzo del desarrollo de software en
función del tamaño del programa y de un conjunto de conductores de costos que
intervienen en la evaluación subjetiva del producto, del hardware, del personal y de los
atributos del proyecto.
Las herramientas automáticas de estimación requieren una o más clases de datos como:
3. Análisis de sistemas
17
• Crear una definición del sistema que forme el fundamento de todo el trabajo de
ingeniería.
Para alcanzar los objetivos de la etapa del análisis se requiere de un amplio conocimiento
del área de hardware, software, administración de bases de datos y de la ingeniería humana
para interactuar con el personal que solicita la realización del sistema.
18
Lo primero en el análisis del sistema es la identificación de la necesidad del usuario, donde
el analista se reúne con el cliente y usuarios finales para entender los objetivos del
producto y definir las metas necesarias para alcanzarlos.
Una vez que se han identificado las metas globales, el analista pasa a la evaluación de la
información suplementaria:
En la evaluación del problema y la síntesis de la solución el analista debe definir todos los
objetos de datos observables externamente, evaluar el flujo y contenido de la información,
definir y elaborar todas las funciones del software, entender el comportamiento del
software en el contexto de sistema. Estas tareas sirven para describir el problema de manera
que se pueda sintetizar un enfoque o solución global.
Durante la actividad de evaluación y síntesis de la solución, el analista crea modelos del
sistema para entender el flujo de datos y de control, el tratamiento funcional.
En esta etapa no es posible una especificación detallada del sistema, el cliente puede no
estar seguro de lo que quiere, el desarrollador puede no estar seguro de que un enfoque
específico consiga apropiadamente el funcionamiento y rendimiento adecuados.
19
Una vez que se han identificado las metas globales, el analista pasa a la evaluación de la
información suplementaria: ¿Existe la tecnología para construir el sistema? ¿Qué recursos
especiales de desarrollo y fabricación serán necesarios? ¿Qué límites se han puesto al
presupuesto y a la planificación temporal? Si el nuevo sistema es un producto a desarrollar
para venderlo a muchos clientes, se plantean además las siguientes cuestiones: ¿Cuál es el
mercado potencial del producto? ¿Cómo es comparativamente este producto con los de la
competencia? ¿Qué posición ocupa este producto en la línea general de producción de la
compañía?
La técnica de análisis más usada para cubrir el hueco de comunicación entre el cliente y el
desarrollador y para empezar el proceso de comunicación es llevar a cabo una reunión o
entrevista preliminar. El primer conjunto de cuestiones de contexto libre se enfoca sobre el
cliente, los objetivos generales y los beneficios esperados. Por ejemplo, el analista podría
preguntar:
¿Cómo caracterizaría una «buena» salida (resultado) generada para una buena
solución?
¿A qué tipo de problema(s) va dirigida esta solución?
¿Puede mostrarme (o describirme) el entorno en que se utilizará la solución?
¿Hay aspectos o restricciones especiales del rendimiento que afecten a la manera de
enfocar la solución?
¿Es usted la persona adecuada para responder a estas preguntas? ¿Sus respuestas
son «oficiales»?
¿Son adecuadas mis preguntas para el problema que tiene usted'?
¿Estoy preguntando demasiado?
¿Hay alguien más que pueda proporcionar información adicional'?
¿Hay algo más que debería preguntarle?
20
Estas preguntas (y otras) ayudarán a «romper el hielo» e iniciar la comunicación tan
esencial para el éxito del análisis. Pero el formato de reunión tipo «pregunta y respuesta»
no es un enfoque que haya tenido mucho éxito. De hecho, esta sesión de preguntas y
respuestas debería emplearse solamente en el primer encuentro y sustituirse después por
una modalidad que combine elementos de resolución del problema, negociación y
especificación.
Todos los proyectos son posibles en caso de tener infinitos recursos y tiempo.
Desafortunadamente el desarrollo de un sistema basado en computadoras es muy probable
que exista escasez de recursos y de fechas de entrega. Por lo que es necesario evaluar la
viabilidad de un proyecto cuanto antes.
La viabilidad tecnológica es frecuentemente el área más difícil de valorar en esta etapa del
proceso de ingeniería del producto. Como los objetivos, funciones y rendimiento son poco
claros, cualquier cosa parece posible si se hacen las suposiciones correctas. Es esencial que
el proceso de análisis y definición se realice en paralelo con una valoración de la viabilidad
técnica. De esta manera se pueden juzgar especificaciones concretas a medida que se
establecen.
21
Las consideraciones que están asociadas normalmente con la viabilidad técnica son:
Tecnología. ¿Ha progresado la tecnología respectiva hasta un punto que sea capaz de
soportar el sistema?
La viabilidad legal comprende una gama muy amplia de aspectos que incluyen contratos,
responsabilidades legales, infracciones y un montón de trampas frecuentemente
desconocidas para el personal técnico.
El grado con que se consideran las alternativas está a menudo limitado por restricciones de
tiempo y costes; sin embargo, no debería despreciarse una variación legítima por no estar
«subvencionada».
El estudio de viabilidad es revisado primero por el jefe del proyecto (para valorar la
fiabilidad del contenido) y por la dirección (para valorar el estado del proyecto). El estudio
debería concluir en una decisión «adelante / abandonamos».
El análisis costes beneficios determina los costes para el desarrollo del proyecto y los
pondera con los beneficios tangibles (medibles directamente en dinero) y beneficios
intangibles del sistema. El análisis costo/beneficio es complicado por criterios que varían
con las características del sistema a desarrollar, el tamaño relativo del proyecto y los
beneficios esperados de la inversión como parte del plan estratégico de la compañía.
Además, muchos beneficios obtenidos de los sistemas basados en computadora son
intangibles (por ejemplo, mejor calidad de diseño gracias a una optimización frecuente,
mayor satisfacción del cliente gracias al control programable y mejores decisiones de
negocio gracias a los datos de ventas preanalizados y reformateados). Las comparaciones
cuantitativas directas pueden ser difíciles de conseguir.
Durante el análisis técnico, el analista evalúa los principios técnicos del sistema al mismo
tiempo que se recoge información adicional sobre el rendimiento, fiabilidad, características
de mantenimiento y productividad.
22
El análisis técnico empieza con una valoración de la viabilidad técnica del
sistema propuesto. ¿Qué tecnologías se requieren para lograr el funcionamiento
y rendimiento del sistema?
¿Qué nuevos materiales, métodos, algoritmos o procesos se necesitan y cuál es
su riesgo de desarrollo?
¿Cómo afectarán estos aspectos tecnológicos a los costes?
Como casi todas las técnicas de modelado usadas en la ingeniería del software y de
sistemas, el esquema de arquitectura permite al analista crear una jerarquía en detalle. En
la parte alta de la jerarquía reside el diagrama de contexto de la arquitectura (DCA).
Las especificaciones del sistema se registran en un documento que sirve de base para
ingeniería hardware, software, base de datos, e ingeniería Humana. En este documento se
describen las funciones y rendimiento de un sistema basado en computadoras y las
dificultades que se pueden presentar durante su desarrollo. Al concluir la etapa del análisis
se realizan las especificaciones de los requisitos del software.
23
3.6 Creación de prototipos del software.
El análisis hay que hacerlo independientemente del paradigma de ingeniería del software
que se aplique, sin embargo, la forma que toma este análisis varía. En algunos casos es
posible aplicar los principios operativos del análisis y obtener un modelo de software del
que se pueda desarrollar un diseño. En otras situaciones, se realizan recopilaciones de
requisitos, se aplican los principios del análisis y se construye un modelo del software a
fabricar denominado prototipo para que lo valore el cliente y el desarrollador. Finalmente,
hay circunstancias que requieren la construcción de un prototipo al comienzo del análisis,
ya que el modelo es el único medio a través del cual se pueden obtener eficazmente los
requisitos. El modelo evoluciona después hacia la producción del software.
Como el cliente debe interactuar con el prototipo en fases posteriores, es esencial que (1) se
destinen recursos del cliente a la evaluación y refinamiento del prototipo, y (2) el cliente
sea capaz de tomar decisiones inmediatas sobre los requisitos.
Existe un conjunto de seis cuestiones que ayudarán en la selección del enfoque de creación
de prototipos:
24
6. ¿Hay contradicciones en los requisitos?
El diseño del software es el núcleo técnico del proceso de ingeniería del software y se
aplica independientemente del paradigma de desarrollo utilizado.
Cada uno de los elementos del modelo de análisis proporciona información necesaria para
crear un modelo de diseño. Los requisitos del software, manifestados por los datos y los
modelos funcionales y de comportamiento, componen la fase de diseño. Mediante el
empleo de uno de los métodos de diseño la fase de diseño produce:
• Diseño de datos
• Diseño arquitectónico
• Diseño de interfaz
• Diseño procedimental.
El diseño de datos es la primera (y alguien diría que la más importante) de las cuatro
actividades de diseño que se llevan a cabo durante la ingeniería del software.
25
Independientemente de las técnicas de diseño que se emplean, datos bien diseñados pueden
conducir a una mejor estructura y modularidad del programa, y a una menor complejidad
procedimental.
El diseño orientado al flujo de datos es un método de diseño arquitectónico que permite una
cómoda transición desde el modelo de análisis a una descripción del diseño de la estructura
del programa.
26
particionamiento; y (5) se refina la estructura resultante usando medidas y heurísticas de
diseño. El tipo de flujo de información es lo que determina el método de conversión
requerido en el paso 3.
El diseño de la interfaz de usuario tiene tanto que ver con el estudio de las personas como
con los aspectos de la tecnología. ¿Quién es el usuario? ¿Cómo aprende el usuario a
interactuar con el nuevo sistema basado en computadora?¿Cómo interpreta el usuario la
información producida por el sistema? ¿Qué es lo que espera el usuario del sistema? Éstas
son unas pocas de las cuestiones que deben hacerse y contestarse como parte del diseño de
la interfaz de usuario.
El proceso general para diseñar la interfaz de usuario empieza con la creación de diferentes
modelos de función del sistema (tal y como se percibe desde fuera). Se definen las tareas
orientadas al hombre y a la máquina, requeridas para conseguir la función del sistema; se
consideran los aspectos de diseño aplicables a todos los diseños de interfaz; se usan
herramientas para crear el prototipo e implementar el modelo de diseño y se evalúa la
calidad del resultado.
El diseño de interfaz describe cómo se comunica el software consigo mismo, con los
sistemas que operan con él y con los operadores que lo emplean. Una interfaz implica un
flujo de información. Por tanto, los diagramas de flujo de datos y control proporcionan la
información necesaria para el diseño de la interfaz.
27
teoría, al menos), las personas fuera del mundo del software podrían entender mejor la
especificación, y no sería necesario un nuevo aprendizaje.
La importancia del diseño del software se puede decir con una sola palabra: calidad. El
diseño es el lugar donde se fomenta la calidad en el desarrollo del software. El diseño nos
proporciona representaciones del software en las que se pueden valorar la calidad. El
diseño es la única manera de traducir con precisión los requisitos del cliente en un sistema o
producto software
La arquitectura del software contribuye a «la estructura global del software del sistema».
En su forma más simple, la arquitectura es la estructura jerárquica de los componentes del
programa (módulos), la manera de interactuar de estos componentes, y la estructura de los
datos usados por estos componentes. La relación de control entre los módulos se expresa
de la siguiente manera: un módulo que controla otro módulo se dice que es superior a él;
inversamente, un módulo controlado por otro se dice que es inferior.
• Debe tener una estructura jerárquica que haga un uso inteligente del control entre los
componentes del software.
28
• Debe ser modular, o sea hacer una partición lógica del software en elementos que
realicen funciones y subfunciones especificas.
• Debe contener abstracciones de datos y procedimientos.
• Los módulos deben presentar características de funcionamiento independiente.
• Las interfaces no deben ser complejas para las conexiones entre los módulos y el
entorno exterior.
• Debe hacerse usando un método según la información obtenida durante el análisis de
requisitos de Software.
Luego de generar el código se comienzan las pruebas del programa, este paso se centra en
los procesos lógicos internos del software, asegurando que todas las sentencias y procesos
externos funcionales se han comprobado, se realizan las pruebas para la detección de
errores y el sentirse seguro de que las entradas produzcan resultados reales de acuerdo con
los resultados requeridos.
29
• Según el momento son apropiadas diferentes técnicas de prueba.
• La prueba la lleva a cabo el responsable del desarrollo del software y (para grandes
proyectos) un grupo independiente de pruebas.
Una estrategia de prueba del software debe incluir pruebas de bajo nivel que verifiquen que
todos los pequeños segmentos de código fuente se han implementado correctamente, así
como pruebas de alto nivel que validen las principales funciones del sistema frente a los
requisitos del cliente. Una estrategia debe proporcionar una guía al profesional y
proporcionar un conjunto de hitos para el jefe de proyecto.
La prueba del software es un elemento de un tema más amplio que, a menudo, se le conoce
como verificación y validación. La verificación se refiere al conjunto de actividades que
aseguran que el software implementa correctamente una función específica. La validación
se refiere a un conjunto diferente de actividades que aseguran que el software construido se
ajusta a los requisitos del cliente.
1.7 Implantación
Para implantar el sistema de información hay que estar bien seguro que el sistema sea
operacional, o sea, que funcione de acuerdo a los requerimientos del análisis.
A pesar de que el sistema esté bien diseñado y cuente con interfaces adecuadas, es
importante para la implantación realizar una buena capacitación a todos los usuarios para su
puesta en explotación y garantizar el mantenimiento.
30
que toman las decisiones sin usar una computadora. Es recomendable no incluir durante el
entrenamiento a grupos de personas de habilidad e intereses de trabajo diferentes; ya que
ambos grupos quedarían perdidos.
A pesar de que una empresa puede contratar los servicios de instructores externos, el
analista es la persona que puede ofrecer la mejor capacitación debido a que conoce al
usuario del sistema y al sistema mejor que cualquier otro.
La evaluación del sistema se lleva a cabo para identificar puntos débiles y fuertes del
mismo. Esta evaluación se lleva en cualquiera de las siguientes dimensiones:
♦ Evaluación operacional:
Se evalúa la manera en que funciona el sistema, facilidad de uso, tiempo de respuesta ante
una petición, formatos en que se muestra la información de entradas y salidas, y el nivel de
utilidad.
♦ Impacto organizacional:
Se miden los beneficios operacionales para la empresa en áreas tales como las finanzas,
eficiencia en el desempeño laboral e impacto competitivo. Se evalúa el impacto, rapidez y
organización en el flujo de información interna y externa.
1.8 Mantenimiento
31
Es lógico que el software sufra cambios después de ser entregado al cliente. Se producirán
cambios porque se han encontrado errores, porque el software debe adaptarse para ajustarse
a los cambios de su entorno externo o porque el cliente requiere mejoras funcionales o de
rendimiento.
Esta fase vuelve a aplicar los pasos de las fases de definición y de desarrollo, pero en el
contexto del software ya existente. Durante la fase de mantenimiento se encuentran cuatro
tipos de cambios:
Adaptación. Con el paso del tiempo, es probable que cambie el entorno original (ejemplo:
CPU, el sistema operativo, las reglas de empresa, las características externas de productos)
para el que se desarrolló el software. El mantenimiento adaptativo produce modificación
en el software para acomodarlo a los cambios de su entorno externo.
Todas las metodologías y herramientas tienen un único fin que es producir software de
gran calidad.
32
características implícitas que se espera de todo software desarrollado
profesionalmente”.
Los requisitos del software son la base de las medidas de calidad. La falta de concordancia
con los requisitos es una falta de calidad. Los estándares o metodologías definen un
conjunto de criterios de desarrollo que guían la forma en que se aplica la ingeniería del
software. Si no se sigue ninguna metodología siempre habrá falta de calidad. Existen
algunos requisitos implícitos o expectativas que a menudo no se mencionan, o se
mencionan de forma incompleta (por ejemplo el deseo de un buen mantenimiento) que
también pueden implicar una falta de calidad.
• Eficiencia: La eficiencia del software está dada por la capacidad de hacer un buen
uso de los recursos que manipula.
33
• Integridad: La integridad es la capacidad de un software de proteger sus propios
componentes contra los procesos que no tengan derecho de acceso.
1.10.2 Bibliografía.
5.2 Bibliografía.
34
• Modelado y diseño orientados a objetos. Metodología OMT . Prentice Hall. 1995
Rumbaugh, Jim y otros.
• Ingeniería del Software. Un enfoque práctico. Mc Graw Hill. 1997 Cuarta Edición
Roger Pressman.
• www.rational.com
35