Software">
Nothing Special   »   [go: up one dir, main page]

Arquitectura de Software

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

Arquitectura de Software

Tradicional VS. Ágil

Una diferencia principal entre las metodologías tradicional y ágil es la secuencia de las fases
en las que se completa el proyecto de desarrollo de software.
El método tradicional utiliza un enfoque lineal donde las etapas del proceso de desarrollo
deben completarse en un orden secuencial. Esto significa que una etapa debe completarse
antes de que comience la siguiente. Estas etapas generalmente comprenden lo siguiente:
1. Recopilación de requisitos y documentación
2. Diseño de sistemas
3. Codificar y pruebas unitarias
4. Pruebas del sistema
5. Pruebas de aceptación del usuario
6. Corrección de errores
7. Entrega del producto
Por otro lado, la metodología ágil utiliza un enfoque iterativo y basado en equipos. Su principal
objetivo es entregar rápidamente la aplicación con componentes completos y funcionales. En
lugar de completar las tareas de desarrollo de software en secuencia, se completan en sprints
que se ejecutan desde alrededor de 1 a 4 semanas y donde se completa una lista de entregas
en cada sprint. Las tareas que no se completan dentro del sprint se vuelven a priorizar y se
incluyen en los sprints futuros. Esto también significa que las diferentes etapas del ciclo de
vida del desarrollo del software pueden revisarse según sea necesario.

Costos de licenciamiento en entornos de desarrollo, pruebas y producción

La estimación de costos en el desarrollo de software es un factor realmente importante para el


análisis de los proyectos, constituye un tema estratégico contar con métricas para medir el
costo de un proyecto de software garantizando la eficiencia, competitividad, eficacia y
excelencia. Un elemento indispensable en cualquier sistema económico constituye el asegurar
el papel del costo en la planificación del país y fundamentalmente en la correcta dirección de
la empresa mediante mecanismos ágiles que permitan un elevado grado de confiabilidad.

Actualmente, aquellas empresas que pretendan alcanzar un nivel competitivo, necesitan de un


buen sistema de costos que les sirva de base para la toma de decisiones. La definición de los
diferentes tipos de costos por áreas de responsabilidad y centros de costos es una gran
ventaja para cualquier organización.

En el mundo empresarial actual, es indispensable lograr los niveles de eficacia esperados por
los clientes y por la competencia. Para lograrlo se deben conocer los costos de la entidad
estos puede proveer información requerida para las operaciones de planeación, evaluación, y
control de la entidad permitiendo tomar decisiones estratégicas, tácticas y operacionales que
contribuyan al cumplimiento de los objetivos de una organización.
Lograr la medición y gestión eficaz de los costos o gastos de operaciones, implica una ventaja
competitiva, lo cual permitirá a la organización valorar mejor los gastos de todas sus
actividades, tomar decisiones dirigidas a disminuir los mismos, y así cumplir los objetivos
trazados y satisfacer la demanda de sus clientes potenciales.

El análisis de los costos es el proceso de identificación de los recursos necesarios para llevar
a cabo la labor o proyecto. La evaluación del costo determina la calidad y cantidad de
recursos necesarios en términos de dinero, esfuerzo, capacidad, conocimientos y tiempo, que
en disímiles ocasiones no son estimados o como sucede en otros casos, se valora que el
costo es tan bajo que no es necesario realizar el análisis. De igual manera, suele suceder que
una vez iniciado el proyecto, los desarrolladores se dan cuenta de que el equipamiento, los
materiales y los recursos humanos que se requiere para completarlo no están disponibles y el
proyecto fracasa (Jones, 2004).

El análisis de costo no solo ayuda a determinar el costo del proyecto y su mantenimiento sino
que también sirve para determinar si es viable. Se debe medir el software para evaluar los
beneficios en términos de productividad y de calidad derivados del uso de nuevos métodos y
herramientas de ingeniería del software estableciendo una línea base para la estimación.

El cálculo del costo en el desarrollo de software y la exactitud de este se ha convertido en un


factor clave tanto para la entidad que desarrolla el producto de software como para el cliente
el cual espera que el costo del software coincida con el estimado. Una estimación lo
suficientemente exacta permite a la empresa una mejor planificación de los proyectos que
maneja, así como una mejor asignación de los recursos necesarios para cada proyecto, en
cambio los errores en la estimación puede suponer que la planificación del proyecto acabe
sufriendo más problemas de los esperados inicialmente, una disminución de la calidad,
retrasos en la fecha de entrega, exceso de recursos reservados al proyecto lo cual conlleva a
un presupuesto excesivo.

Los modelos de cálculo del costo de desarrollo de software se basan en un conjunto de


variables, estas se denominan factores como el costo, el esfuerzo o el tamaño, cada modelo
basa sus estimaciones en un conjunto propio de factores.

Los métodos de estimación se ven afectados por la gran cantidad de datos necesarios y la
dificultad de obtenerlos. La falta de información se ve acentuada en las etapas iniciales del
proyecto debido a que la aplicación a desarrollar no está definida del todo, según va
avanzando el desarrollo del proyecto se conocen más detalles sobre el sistema, las relaciones
entre los factores va aumentando permitiendo una mayor exactitud en la estimación.

El desarrollo de software es una actividad muy compleja obteniendo como resultado un


producto intangible que depende principalmente del esfuerzo intelectual y creatividad de
personas que lo realizan. Los errores humanos están presentes en todas las etapas de un
proyecto de este tipo y puede llegar a ser muy costosa su corrección. El resultado de un
producto de software con el costo lo más exacto posible implica la utilización de metodologías,
procedimientos, métricas y estándares para el análisis, diseño, programación y prueba del
software que permitan uniformar la filosofía de trabajo (Jones, 1996).

La actividad de estimación no se hace una sola vez en el proyecto, a medida que se cuenta
con más datos se hacen estimaciones más precisas que permiten una mejor planificación de
lo que resta del proyecto.

De todos los puntos en los cuales puede realizarse la estimación, cuando menos datos se
tienen para realizarla es en el momento inicial, cuando todavía se está evaluando la
factibilidad del proyecto. Desde el punto de vista del desarrollo y venta de software específico
para terceros esa estimación, desde etapas tempranas, es una de las más importantes.

La correcta estimación temprana de un proyecto de software es una tarea difícil. Esta


situación es conocida y es por eso que cada vez las empresas de desarrollo intentan vender el
análisis y diseño separado de la codificación, a fin de que esta última pueda ser estimada
sobre bases más firmes. En particular el Proceso Unificado de Desarrollo de Software sostiene
que sólo al final de la fase de elaboración se está en condiciones de hacer una propuesta
económica firme, lo cual implica haber consumido del 25% al 30% de los recursos del
proyecto al llegar a ese punto (Ivar Jacabson, El proceso unificado de desarrollo de software,
2000).

Independientemente de lo que resulta más correcto, lo cierto es que el mercado exige cerrar
un precio antes de comenzar los trabajos. El costo de recursos tanto materiales como
humanos es otro tema que debe quedar conciliado entre las partes con el objetivo de
minimizar errores y maximizar la calidad del resultado, es por ello la gran importancia que
tiene realizar una buena planificación del costo desde la fase preliminar del proyecto.

Por tanto surge la necesidad de darle solución a la problemática planteada, definiendo


como problema científico de la investigación ¿Cómo calcular el costo total de un producto
informático en el desarrollo de software?

La presente investigación tiene como objetivo general Diseñar un conjunto de métricas para


calcular el costo de un producto de software.

Usabilidad y desempeño del producto

La usabilidad (dentro del campo del desarrollo Web) es la disciplina que estudia la forma de
diseñar sitios Web para que los usuarios puedan interactuar con ellos de la forma más fácil,
cómoda e intuitiva posible. La mejor forma de crear un sitio Web usable, es realizando un
diseño centrado en el usuario, diseñando para y por el usuario, en contraposición a lo que
podría ser un diseño centrado en la tecnología o uno centrado en la creatividad u originalidad.
Es una necesidad básica en los procesos de creación de sitios Web o sistemas
computacionales ya que ayuda a alcanzar los niveles más óptimos de eficiencia, eficacia y
satisfacción del producto para sincronizarse al máximo con los objetivos del usuario.

Curva de aprendizaje para el desarrollador

Uno de los aspectos relevantes al momento de elegir un framework de desarrollo de software


es determinar la curva de aprendizaje que requiere. En los proyectos de desarrollo de
software, en general, los desarrolladores disponen de poco tiempo para entregar un producto
estable y usualmente requieren de frameworks de desarrollo que tengan una curva de
aprendizaje baja. Actualmente, existen diversos frameworks para soportar el desarrollo web;
sin embargo, elegir el más adecuado puede ser una tarea compleja, debido a que los criterios
de selección pueden ser diversos, poco claros e incluso inexistentes. En este sentido, en este
artículo se lleva a cabo un análisis de diferentes frameworks de desarrollo MVC Web para
determinar cuáles son los más convenientes basados en un criterio de selección, el cual tiene
en cuenta el tiempo que requieren durante la curva de aprendizaje.

Tendencias de mercado

La industria del desarrollo del software se encuentra muy adelantada comparándola con su
estado hace unos pocos años. Los métodos de desarrollo de software lian madurado y
contemplan todo el proceso de desarrollo y mantenimiento. Las herramientas que se usan son
cada vez más poderosas y permiten analizar, diseñar, generar, probar y mantener los
productos de software de una manera integrada y controlada. El World Wide Web se ha
popularizado tanto en los últimos cinco años que se ha convertido en la interfaz de usuario de
facto para los productos de software y ha obligado al uso de tecnologías nuevas. Las bases
de datos son cada vez más sofisticadas y soportan desde un usuario en computadoras de
bolsillo a miles de usuarios en mainframes. Poco a poco, el desarrollo hecho a medida se va
abandonando y los negocios compran productos de software muy probados, genéricos y con
una buena base instalada de clientes.

Escalabilidad de la solución

La escalabilidad del software se refiere a su capacidad para manejar una carga creciente de
datos y trabajo, dicho de otra forma, la capacidad de un sistema para seguir satisfaciendo las
necesidades de tu empresa mientras crece.

 La escalabilidad es importante a la hora de elegir un sistema ERP. Dado que se trata de que
le empresa crezca, el sistema deberá ser capaz de seguirle el paso a la organización cuando
aumente la base de clientes, el número de transacciones diarias, los puntos de venta, las
necesidades directivas como Business Intelligence, o comerciales como ventas móviles, el
sistema deberá ser capaz de manejar dichos cambios, de lo contrario le empresa se verá en la
necesidad de rechazar oportunidades de crecimiento debido a las limitadas capacidades de su
sistema, o deberá gastar más allá de su presupuesto para suplir, con otros sistemas, las
deficiencias heredadas de su ERP.

Al seleccionar un nuevo sistema ERP, existen muchas opciones y todo puede parecer muy
complejo, pero si queremos evaluar la escalabilidad de los sistemas que estamos
considerando, los siguientes puntos nos ayudarán a evaluar con mayor seguridad el potencial
de escalabilidad del sistema ERP.

Paradigmas que soporta la tecnología

El vertiginoso avance alcanzado por las tecnologías en los últimos años, consolidó un nuevo
paradigma que generó las denominadas nuevas tecnologías de información y comunicación
(NTIC) las que plantean a los países con un menor desarrollo nuevos retos, precisos de
aceptar para garantizar el acceso al enorme potencial de información existente.

Se reconocen una serie de características del paradigma tecnológico, entre ellas, el creciente
papel de las innovaciones tecnológicas, el aumento de la demanda de información y nuevos
conocimientos, la tendencia a la comercialización del nuevo conocimiento, el auge de las
transnacionales en la generación y difusión de las nuevas tecnologías, el desarrollo de una
vasta red de telecomunicaciones, que originó Internet.

El desarrollo de la sociedad de fin de siglo se caracteriza por tres elementos claves: la


información, la comunicación y la tecnología. Información, comunicación y tecnología son
componentes esenciales en la estructura y el funcionamiento de la sociedad, debido a su
alcance, grado de influencia y penetración en todos los sectores y niveles de la vida social.
Las primeras están indisolublemente vinculadas a las tecnologías. Esto se expresa de forma
diferente en los países desarrollados y en los que están en vías de desarrollo.

Impactos del paradigma tecnológico

 En la sociedad en general
 En la política
 En la economía
 En la cultura
 En la educación
 En las instituciones

Internet, red global, convertido en el fenómeno número uno de la información y la


comunicación, constituye un fondo mundial de recursos de información y un espacio virtual de
comunicación para los millones de personas que tienen acceso a ella.

Arquitecturas que soporta la tecnología

Arquitectura de Software:, según el estándar IEEE (Institute of Electrical and Electronics


Engineers) es la organización fundamental de un sistema basada en sus componentes, las
relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.
Componente: Es una parte de una arquitectura de software claramente identificable,
independiente a la aplicación en la que se utiliza y de otros componentes (partes), que
describe y realiza funciones específicas y claras dentro del contexto de la arquitectura.
Escenario: Un escenario consta de tres partes: el estímulo, el contexto y la respuesta. El
estímulo es la parte del escenario que explica o describe lo que el involucrado en el desarrollo
hace para iniciar la interacción con el sistema. Puede incluir ejecución de tareas, cambios en
el sistema, ejecución de pruebas, configuración, etc. El contexto describe qué sucede en el
sistema al momento del estímulo. La respuesta describe, a través de la arquitectura, cómo
debería responder el sistema ante el estímulo. Este último elemento es el que permite
establecer cuál es el atributo de calidad asociado.
Evaluación: Es un estudio de factibilidad que pretende detectar posibles riesgos, así como
buscar recomendaciones para contenerlos. La diferencia entre evaluar y verificar es que la
evaluación se realiza antes de la implementación de la solución. La verificación, es con el
producto ya construido.
Stakeholders: Aquellas personas que están relacionadas de cierta forma con el sistema, ya
sea un desarrollador, usuario, gerente, etc.
Atributo de calidad: es una característica de calidad que afecta a un elemento. Donde el
término “característica” se refiere a aspectos no funcionales y el término “elemento” a
componente.
Propósito de evaluar una Arquitectura
El propósito de realizar evaluaciones a la arquitectura, es para analizar e identificar riesgos
potenciales en su estructura y sus propiedades, que puedan afectar al sistema de software
resultante, verificar que los requerimientos no funcionales estén presentes en la arquitectura,
así como determinar en qué grado se satisfacen los atributos de calidad.
Momento para realizar una evaluación de Arquitectura
Según Kazman, es posible realizarla en cualquier momento , pero propone dos variantes que
agrupan dos etapas distintas: temprano y tarde.
Temprano. No es necesario que la arquitectura esté completamente especificada para
efectuar la evaluación, y esto abarca desde las fases tempranas de diseño y a lo largo del
desarrollo.
Tarde. Cuando ésta se encuentra establecida y la implementación de la solución, ya se ha
completado.
Métodos de Evaluación de Arquitecturas
Existen varias técnicas para realizar evaluaciones de arquitectura que se dividen basicamente
en técnicas cualitativas y cuantitativas. Normalmente, las técnicas de evaluación cualitativas
son utilizadas cuando la arquitectura está en construcción, mientras que las técnicas de
evaluación cuantitativas, se usan cuando la arquitectura ya ha sido implantada.

Hay métodos de evaluación de arquitecturas, que se centran en un atributo particular, como


por ejemplo:

 ALMA (Architecture Level Modifiability Analysis): El atributo de calidad que analiza


este método es la facilidad de modificación.
 PASA (Performance Assessment of Software Architecture):El atributo de calidad que
analiza este método es el desempeño.
 SALUTA (Scenario based Architecture Level Usability Analysis): Se basa en el atributo
de la facilidad del uso del sistema.

Hay otros métodos más generales, donde es posible realizar la evaluación desde distintas
perspectivas y que pueden analizar distintos atributos de calidad. Entre estos métodos se
encuentra:

 ATAM (Architecture Trade-off Analysis Method).


 SAAM (Software Architecture Analysis Method).
 ARID (Active Reviews for Intermediate Design).

Atributos de calidad por los que puede ser evaluada una arquitectura
Los atributos de calidad, se clasifican en las siguientes dos categorías:
 Observables vía Ejecución: Son los atributos que se determinan del comportamiento
del sistema, en tiempo de ejecución.
 No Observables vía Ejecución: Son los atributos que se establecen durante el
desarrollo del sistema.

En la siguiente figura, aparecen a modo de ejemplo algunos atributos de calidad


categorizados.

Diversidad de herramientas para desarrollo, monitoreo y mantenimiento sobre esta


tecnología

La gestión tecnológica en la empresa es la aplicación de un conjunto de prácticas que le


permiten establecer una estrategia en materia de tecnología congruente con sus planes de
negocio. En el ambiente empresarial, la gestión tecnológica se revela en sus planes, políticas
y estrategias tecnológicas para la adquisición, uso y creación de tecnología, así como cuando
se asume la innovación como eje de las estrategias de desarrollo de los negocios. También es
evidente cuando en la cultura de las empresas se logra "crear una mentalidad innovadora,
enfocada hacia el aprendizaje permanente que sirva de sustento al crecimiento de la
competitividad a largo plazo".[5]

La iniciación de un plan tecnológico conlleva las siguientes acciones o pasos:

Inventariar. Consiste en recopilar tecnologías disponibles a nivel mundial lo cual implica


conocer las tecnologías utilizadas y dominadas por la empresa que constituyen su patrimonio
tecnológico.

Vigilar. Significa estar alerta sobre la evolución de las nuevas tecnologías, sistematizar las
fuentes de información de la empresa, vigilar la tecnología de los competidores, así como
identificar el impacto posible de la evolución tecnológica sobre las actividades de la empresa.

Evaluar. Determinar la competitividad y el potencial tecnológico propio, estudiar posibles


estrategias de innovación e identificar posibilidades de alianzas tecnológicas.

Enriquecer. En esta etapa se trata de diseñar estrategias de investigación y desarrollo.

 Priorizar tecnologías emergentes, clave y periféricas.


 Definir una estrategia de adquisición de equipo y tecnologías externas.
 Definir proyectos conjuntos o alianzas.
 Determinar estrategia de financiamiento a proyectos.

Asimilar. Una vez realizados los pasos anteriores, es posible asimilar y actuar en la
explotación sistemática del potencial tecnológico mediante:

 Programas de capacitación.
 Documentación de tecnologías de la empresa.
 Desarrollo de aplicaciones derivadas de tecnologías genéricas.
 Gestión eficiente de recursos.

Proteger. Por último, queda proteger la tecnología de la empresa mediante el establecimiento


de una política de propiedad intelectual que incluya: patentes, derechos de autor, marcas,
diseños industriales y secretos.

Cabe indicar que, equivocadamente, se piensa que la tecnología es un aspecto que tiene que
ver sólo con actividades de la producción por medio de los cuestionamientos sobre cómo
mejorar un producto existente, cómo ingeniar uno nuevo y cómo hacer más productos.

En una empresa que ha incorporado la gestión tecnológica en su cultura, las actividades


propias de ella están incorporadas en su cadena de valor y se realizan en forma sistemática
mediante procesos básicos que desarrollan funciones de gestión tecnológica, procesos que
integran competencias tecnológicas, competencias de gestión y recursos disponibles en la
empresa para cumplir sus propósitos, objetivos, estrategias y operaciones. Estos procesos
involucran también el uso de datos, información y conocimientos, así como la interacción
social de personas en la creación de conocimiento y el desarrollo de innovaciones para la
creación de valor y de ventajas competitivas Según Gaynor (1996), entre estos procesos
pueden mencionarse: la gestión del conocimiento, el seguimiento y la inteligencia
tecnoeconómica, la evaluación de alternativas tecnológicas, la negociación de tecnología, la
transferencia de tecnología, así como la asimilación y adaptación, mejoramiento, investigación
y el desarrollo.
Facilidad de uso de las herramientas para desarrrollo, monitoreo y mantenimiento
sobre esta tecnología

El objetivo de este trabajo es analizar y comparar diferentes herramientas tecnológicas


utilizadas para la gestión de proyectos. Este estudio nos permitirá obtener las diferencias más
importantes entre ellas analizando sus características y funcionalidades, además de ver qué
metodologías y buenas prácticas de los estándares más conocidos de gestión de proyectos,
IPMA y PMI, se aplican en dichos programas. Su estudio bibliográfico consistirá en aportar
información sobre el contexto en el que se encuentran dichas herramientas, su evolución a lo
largo de la historia, su selección en las empresas y sus funcionalidades y características. Una
vez realizada esta revisión bibliográfica se procederá a la aplicación de un caso práctico en
cada una de las herramientas analizadas para dar más consistencia a la información teórica
sobre las funcionalidades que ofrecen. Así mismo, se concluirá con la introducción de tablas
comparando cada una de las herramientas con el objetivo de visualizar qué procesos y cuáles
no son aplicados de las dos organizaciones nombradas anteriormente.

También podría gustarte