Web view... la visualización y la recuperación de la ... de especificaciones, control...
-
Upload
nguyenmien -
Category
Documents
-
view
215 -
download
1
Transcript of Web view... la visualización y la recuperación de la ... de especificaciones, control...
Trabajo investigativo No. 02
Análisis de sistemas
Presentado por:
Camilo Esteban Rodriguez Forero
Andres Mauricio Clavijo
Jhon Alexander Chacon Torres
Brayan Andrés Valero Pinzon
Presentado a:
Juan Carlos Guevara Bolaños
Universidad Distrital Francisco José de Caldas
Sistematización de datos
Facultad Tecnológica
Bogotá D.C. Colombia, jueves 25 de febrero 2016
Tabla de contenidoIntroducción..............................................................................................................................3
Conceptos................................................................................................................................3
Ingeniería de software..........................................................................................................3
Proyecto de software............................................................................................................4
Modelo..................................................................................................................................4
Historia de la ingeniería de software........................................................................................4
Roles de un equipo de desarrollo de software.........................................................................7
Fases o etapas de un proyecto de software..........................................................................11
Descripción de los componentes de un proyecto de software...............................................16
Estándares para evaluar la calidad de un producto de software...........................................19
Conclusiones..........................................................................................................................24
Bibliografía.............................................................................................................................25
Introducción.
El presente trabajo consta de un organizado seguimiento de la ingeniería del
software, conceptos básicos, su procedencia, los roles en el equipo de trabajo y a su
misma vez cómo están relacionadas implícitamente con el trabajo colaborativo para
que de esta manera se logre ver como trabajan los ingenieros en ese aspecto; todo
esto llevado a cabo por unas fases de planeación establecidas para cumplir con el
objetivo gracias a la información histórica registrada nos permite mostrar la razón de
cada uno de los ítems registrados posteriormente como lo son los roles, fases de un
proyecto, etc. que solo fueron posibles ver gracias a las distintas fases de crisis por
la que pasó este campo a lo largo del tiempo permitiendo la identificación de
algunos aspectos en cuanto a los estándares de evaluación de los proyectos de
software y los componentes de los mismos.
Conceptos.
Ingeniería de software.
Trata los problemas a los cuales el ingeniero se enfrenta con teorías y herramientas
para su respectiva solución; posee una estructura de desarrollo que se desenvuelve
en las siguientes tareas: planificación, análisis, diseño, implementación y pruebas,
en esencia la ingeniería de software es una disciplina que se encarga del desarrollo
del software.
“La ingeniería de software es el estudio de los principios y metodologías para
desarrollo y mantenimiento de sistemas de software.”(Zelkovits,1978)
“La ingeniería de software es la aplicación práctica del conocimiento científico en el
diseño y construcción de programas de computadora y la documentación asociada
requerida para desarrollar, operar y mantenerlos. Se conoce también como
desarrollo de software o producción de software.”(Bohem,1976).
Proyecto de software.
Se plantea una serie de dibujos, escritos y demás para tener claridad del proyecto
que se va a realizar en cuanto a costos y desarrollo; en estos proyectos se requiere
de planeación, de algo no rutinario y de cumplir el lapso estimado de tiempo para
realizar el mismo. Este proyecto de software maneja recursos limitados, requiere de
personas especializadas en ciertos campos según el proyecto y las actividades se
llevan a cabo en varias fases, en esencia es algo organizado.
Modelo.
Se define como la idea que se establece a través de una serie de ideas planteadas
para continuar con el desarrollo de un proyecto de software. Este modelo tiene un
esquema en el cual se divide y/o fracciona el proyecto, dando de esta forma una
jerarquización de tareas a realizar para cumplir con lo que se ha planteado en el
modelo, en caso de encontrar errores se agrega o modifica algún segmento al
modelo planteado anteriormente y luego se vuelve a seguir con este ciclo hasta
llegar a algo óptimo.
Historia de la ingeniería de software.
Su origen se debió a que el entorno de desarrollo de sistemas software carecía de:
Retrasos considerables en la planificación.
Poca productividad.
Elevadas cargas de mantenimiento.
Demandas cada vez más desfasadas frente a las ofertas.
Baja calidad y fiabilidad del producto.
Dependencia de los realizadores.
1955 a 1965: Los orígenes.
El término Ingeniería del software apareció por primera vez en la década de 1950 y
principios de los años 1960. Los programadores siempre habían sabido sobre
ingenieros civiles, eléctricos y de computadores y debatían qué podría significar la
ingeniería para el software.
1965 a 1985: La Crisis del Software
La ingeniería de software fue estimulada por la llamada crisis del software de la
década de 1960, 1970 y 1980, que identifica muchos de los problemas de desarrollo
de software. Muchos proyectos de software sobrepasaron el presupuesto y el
tiempo estimados. Algunos proyectos causaron daños a la propiedad. Algunos
proyectos causaron pérdidas de vidas.
Desarrollo inacabable de grandes programas.
Ineficiencia, errores, coste impredecible.
Nada es posible..
1985 a 1989: No hay balas de plata.
Durante décadas, solucionar la crisis del software fue de suprema importancia para
investigadores y empresas productoras de herramientas de software.
El costo de propiedad y mantenimiento del software en la década de 1980 fue dos
veces más caro que el propio desarrollo del software.
Durante la década de 1990, el costo de propiedad y mantenimiento aumentó en un
30% con respecto a la década anterior.
En 1995, las estadísticas mostraron que la mitad de los proyectos de desarrollo
encuestados estaban operacionales, pero no eran considerado exitoso.
El proyecto de software medio sobrepasa su estimación en tiempo en el 50%. Las
tres cuartas partes de todos los grandes productos de software son entregados al
cliente con tales fallas que no son usados en absoluto, o no cumplen con los
requerimientos del cliente.
1990 a 1999: Prominencia de Internet.
El auge de la Internet condujo a un rápido crecimiento en la demanda de sistemas
internacionales de despliegue de información y e-mail en la World Wide Web.
El crecimiento del uso del navegador, corriendo en el lenguaje HTM, cambió la
manera en que estaba organizada la visualización y la recuperación de la
información. Las amplias conexiones de red condujeron al crecimiento y la
prevención de virus informáticos internacionales en computadores con MS
Windows, y la gran proliferación de correo basura se convirtió en una cuestión de
diseño importante en sistemas de correo electrónico, inundando canales de
comunicación y requiriendo de precalificación semiautomatizada.
2000 al presente: Metodologías ligeras.
Con la creciente demanda de software en muchas organizaciones pequeñas, la
necesidad en soluciones de software de bajo costo llevó al crecimiento de
metodologías más simples y rápidas que desarrollan software funcional, de los
requisitos de implementación, más rápidos y más fáciles. El uso de prototipos
rápidos evolucionó a metodologías ligeras completas como la programación
extrema,(XP), que intentó simplificar muchas las áreas de la ingeniería de software,
incluyendo la recopilación de requerimientos y las pruebas de confiabilidad para el
creciente y gran número de pequeños sistemas de software.
El software en la actualidad.
Hoy en día el software tiene un doble papel. Es un producto, pero simultáneamente
es el vehículo para hacer entrega de un producto. Como producto permite el uso del
hardware, ya sea, por ejemplo, un ordenador personal o un teléfono móvil celular.
Como vehículo utilizado para hacer entrega del producto, actúa como base de
control, por ejemplo un sistema operativo, o un sistema gestor de redes. El software
hace entrega de lo que se considera como el producto más importante del siglo
veintiuno, la información.
Actualmente se considera la Ingeniería del Software como una nueva área de la
ingeniería, y la profesión de ingeniero informático es una de las más demandadas,
aunque en España los salarios suelen ser bajos para la cualificación de estos
profesionales. La palabra ingeniería tiene una connotación de prestigio que provoca
que muchas ramas del conocimiento tiendan a autodenominarse así.
Roles de un equipo de desarrollo de software.
El desarrollo de software es una actividad que, dada su complejidad, debe
desarrollarse en grupo. Además, esta actividad requiere de distintas capacidades,
las que no se encuentran todas en una sola persona. Por ello, se hace necesario
formar el grupo de desarrollo con las personas que cubran todas las capacidades
requeridas.
Administrador de proyecto:
El administrador de proyecto es la persona que administra y controla los recursos
asignados a un proyecto, con el propósito de que se cumplan correctamente los
planes definidos. Los recursos asignados pueden ser recursos humanos,
económicos, tecnológicos, espacio físico, etc. En un proyecto, siempre debe existir
un administrador. No obstante, un administrador puede dirigir más de un proyecto.
Analistas:
La palabra “análisis” se refiere a una característica típicamente relacionada con la
inteligencia humana. Esta se refiere a la habilidad de poder estudiar un problema de
una complejidad determinada, descomponiendo el problema en subproblemas de
menor complejidad. De esa forma, la solución del problema completo se obtiene
como la suma de las soluciones de los subproblemas de menor complejidad.
Diseñadores:
Es el encargado de generar el diseño del sistema. Entre sus funciones está:
• Generar el diseño arquitectónico y diseño detallado del sistema, basándose en los
requisitos.
• Generar prototipos rápidos del sistema (con analistas y programadores) para
chequear los requisitos.
• Generar el documento de diseño arquitectónico de software (DDA), y mantenerlo
actualizado durante el proyecto.
• Velar porque el producto final se ajuste al diseño realizado (funciones de téster).
Programadores:
Los programadores deben convertir la especificación del sistema en código fuente
ejecutable utilizando uno o más lenguajes de programación, así como herramientas
de software de apoyo a la programación.
El éxito del desarrollo de software depende grandemente de conocimiento. Este
conocimiento no sólo corresponde a habilidades de programación y de
administración de proyectos, sino que a una percepción y entendimiento de los
últimos desarrollos de la industria del software.
Téster:
El desarrollo de un sistema de software requiere la realización de una serie de
actividades de producción. En dichas actividades existe la posibilidad de que
aparezcan errores humanos. Dichos errores pueden empezar a aparecer desde el
primer momento del proceso. Por ejemplo, los requisitos del sistema pueden ser
especificados en forma errónea o imperfecta. Por ello, el desarrollo de software
considera una actividad que apoye el proceso de detección y eliminación de los
errores y defectos del sistema en construcción. El objetivo del rol de téster es
precisamente realizar dichas tareas.
Aseguradores de calidad:
En la actualidad, los factores dominantes en la administración de proyectos de
software son los tiempos y costos de desarrollo. Existen buenas razones para ello.
Los tiempos y costos de desarrollo son con frecuencia, muy grandes. Por ello, la
administración se ha concentrado en tratar de resolver dichos problemas. En la
medida que crece la presión por cumplir con las fechas estipuladas, y reducir los
costos, es la calidad del producto la que sufre. Cuando se acelera el desarrollo de
un sistema que está atrasado, generalmente se corta todo lo que no se considere
“esencial”, usualmente cortando las actividades de verificación y testeo, resultando
en un producto de calidad reducida.
Administrador de configuración:
La administración de la configuración es una disciplina que tradicionalmente se
aplica al desarrollo de sistemas de hardware, al desarrollo de elementos de
hardware o sistemas de hardware/software. La administración de la configuración de
software corresponde a la administración de la configuración aplicada a un sistema,
o a partes de un sistema, predominantemente correspondiente a software.
La administración de la configuración es una disciplina que aplica dirección y
vigilancia técnica y administrativa a:
• Identificar y documentar las características funcionales y físicas de ítems de
configuración.
• Auditar los ítems de configuración para verificar cumplimiento de especificaciones,
control de interfaces y documentos, así como otros requisitos adicionales que pueda
definir el contrato.
• Controlar cambios a los ítems de configuración y su documentación relacionada.
• Registrar y reportar información necesaria para administrar ítems de configuración
en forma efectiva, incluyendo el estatus de cambios propuestos y el estatus de
implementación de cambios aprobados.
• Mantener el repositorio del proyecto actualizado con las últimas versiones de todos
los entregables del proyecto.
• Administrar el software utilizado para el control de versiones.
• Definir y controlar perfiles de acceso a los archivos del proyecto.
• Velar por la completitud y exactitud del repositorio del proyecto.
Los problemas de software más frustrantes son frecuentemente ocasionados por
una pobre administración de la configuración.
Ingeniero de validación y verificación:
Una de las metas necesarias de tener en cuenta en toda organización de desarrollo
de software que se considere exitosa es que el software que evoluciona, continúe
satisfaciendo las expectativas de los usuarios durante dicho proceso. Para lograr
esta meta, es necesario aplicar prácticas de ingeniería de software durante la
evolución del producto. La mayoría de estas prácticas tratan de crear y modificar
software de forma de maximizar la probabilidad de satisfacer las expectativas de sus
usuarios. Otras prácticas tratan de asegurar que el producto cumplirá con las
expectativas de dichos usuarios. Estas últimas son ampliamente conocidas como la
validación y verificación de software (V&V).
Documentador:Durante el proceso de desarrollo de software, se genera una gran cantidad de
documentación. Dicha documentación debe ser almacenada en el repositorio del
proyecto. La documentación sirve, entre otras cosas, para conocer la historia del
proyecto. Hay que destacar que los documentos no se escriben al final del proyecto,
sino que se van generando junto con las diferentes fases del proyecto. A medida
que el proyecto va avanzando, los documentos deben ir siendo modificados para
mantener el estado de los documentos a la par con el estado de desarrollo del
proyecto. Por lo anterior, debe pensarse que los documentos van evolucionando,
para mostrar el estado más reciente de desarrollo del proyecto.
Ingeniero de manutención:
Hace ya casi 30 años, el proceso de manutención de software se caracterizaba con
el término “iceberg” [Canning], ya que los problemas que eran visibles eran una
pequeña parte de la enorme cantidad de problemas potenciales y costos que se
escondían debajo de la superficie.
Los objetivos a cumplir por un ingeniero de manutención son los siguientes:
• Modificar el software para adaptar nuevas funciones o modificar algunas funciones
existentes.
• Modernizar el software por medio de cambios al sistema.
• Asegurarse de que el equipo de desarrollo esté informado de los errores
encontrados en el sistema.
Cliente comprometido:
Un cliente es aquella persona responsable de llevar a cabo el buen desempeño del
proyecto, por parte de la empresa que contrata el desarrollo, también llamada
mandante. El cliente debe representar los derechos y asumir los deberes de dicha
empresa ante el equipo de desarrollo. Por lo tanto, el cliente debe estar presente en
todas las fases del desarrollo del producto, y realizar todas las actividades que se
esperan de él, tales como la aceptación provisional y final del producto.
Entre sus tareas están:
• Liderar el proyecto de software cuando la organización así lo requiere.
• Debe conocer las distintas etapas y roles en la construcción de software.
• Definir los objetivos del proyecto negociando con sus clientes las características
que le afecten.
• Definir y priorizar requisitos.
• Revisar y aprobar documentos en forma responsable.
• Difundir el estado del proyecto al resto de su ámbito de trabajo
Fases o etapas de un proyecto de software.
Las fases o etapas dentro del desarrollo de software son muy importantes a la hora
de realizar cualquier proyecto, pues estas fases permiten que el equipo de trabajo o
las personas a cargo de un proyecto, puedan tomar puntos de referencia y durante
el desarrollo de cada etapa no cometan muchos errores y en dado caso de
cometerlo sólo habría que evaluar la fase de desarrollo no funcional.
Generalmente en muchos textos las etapas para el desarrollo de software son 5
pero dependiendo desde qué punto de vista se miren se pueden desglosar o dividir
las etapas,pero en sí las 5 etapas o fases estándares por decirlo así son las
siguientes.
Análisis de requisitos.
Diseño y arquitectura.
Programación o implementación, codificación.
Pruebas.
Documentación y Mantenimiento.
Figura 1 Figura 2
Figura1 Obtenido de :
https://ciclodevidasoftware.wikispaces.com/Ciclo+Del+Software+Clasico+Prototipad
o
Figura 2 Obtenido de:
https://proyectosinformaticoscht2009.wordpress.com/antes-de-empezar/marco-
teorico/paradigmas-de-desarrollo-de-software/
Descripción de cada fase o etapas de un proyecto de software.
Análisis de requisitos.
Esta es la etapa que da inicio a cualquier proyecto, es tan fundamental como las
demás, cada etapa depende depende del desarrollo de las demás y esta es la más
importante, pues es donde el equipo de trabajo analiza lo que se quiere lograr,
Se trata fundamentalmente de estudiar las necesidades y preferencias del usuario,
es también muy importante dejar clara constancia de las decisiones tomadas en
esta etapa, para ser tenidos en cuenta posteriormente, por ello, la documentación
producida en esta fase debe ser concreta y estar siempre disponible durante el resto
del proceso.
Se extraen los requisitos del producto de software. En esta etapa la habilidad y
experiencia en la ingeniería del software es crítica para reconocer requisitos
incompletos, ambiguos o contradictorios. Usualmente el cliente/usuario tiene una
visión incompleta/inexacta de lo que necesita y es necesario ayudarle para obtener
la visión completa de los requerimientos. El contenido de comunicación en esta
etapa es muy intenso ya que el objetivo es eliminar la ambigüedad en la medida de
lo posible.
Para la elaboración de cualquier proyecto esta fase es vital, ya que se reúnen,
aclaran, discuten ideas sobre cómo debe ser el proceso de elaboración y que debe
tener, de esta etapa dependen los objetivos que se quieran cumpir pues un falo en
el modelo de análisis puede significar que el proyecto quede mal.
Diseño y arquitectura.
Luego de pasar la etapa más fundamento de cualquier proyecto de software
procedemos a entrar en la etapa o fase 2 donde se especifican y aclaran los diseños
que este proyecto tendrá y cuál arquitectura tendrá, consiste en el diseño de los
componentes del sistema que dan respuesta a las funcionalidades descritas en la
segunda etapa también conocidas como las entidades de negocio. Generalmente se
realiza en base a diagramas que permitan describir las interacciones entre las
entidades y su secuenciado.
En esa etapa se reúne la información recogida durante el primer análisis para ser
procesada y luego estructurada para darle un diseño específico, pues esta etapa
diseña el modelo a los especificaciones para el software o componentes de un
sistema que se quieran.
En la etapa de diseño y arquitectura se decidirá la estructura general del programa
(subdivisión en partes y relaciones entre ellas). Para cada una de las partes se
seguirá recursivamente un proceso similar, hasta que tengamos totalmente definido
el programa y estemos listos para pasar a la fase de programación.
Programación o implementación, codificación.
En esta etapa todos los procesos y análisis realizados en las dos primeras etapas
se ponen en marcha, esta es la etapa donde literalmente se le da vida a los
proyectos de software, ya que este involucra la generación de código que permite
resolver lo planteado luego de un análisis de requisitos y el diseño del software.
Se traduce el diseño a código. Es la parte más obvia del trabajo de ingeniería de
software y la primera en que se obtienen resultados tangibles. No necesariamente
es la etapa más larga ni la más compleja aunque una especificación o diseño
incompletos/ambiguos pueden exigir que, tareas propias de las etapas anteriores se
tengan que realizarse en esta.
Una de las principales decisiones a tomar en esta fase es la del lenguaje a emplear,
aunque a veces en el diseño ya está de alguna forma implícito. Desde hace tiempo
la tendencia es a utilizar lenguajes de más alto nivel, sobre todo a medida de que
se dispone de compiladores más eficientes. Esto ayuda a los programadores a
pensar más cerca de su propio nivel que del de la máquina, y la productividad suele
mejorarse. Como contrapartida este tipo de lenguajes son más difíciles de
aprender. Y además hay que tener en cuenta que los programadores suelen ser
conservadores y reacios a aprender nuevos lenguajes: prefieren usar los que ya
conocen. La existencia, en una organización, de una gran cantidad de programas
desarrollados en un determinado lenguaje, hace además muy dura la decisión de
cambiar a uno nuevo
La etapa de codificación es muy crucial se deben seguir rigurosos procesos de
lógica y algoritmos eficientes que den paso la optimización, rendimiento y eficacia
de las máquinas para que el software sea más factible, es un proceso arduo donde
los desarrolladores tienen que estar concentrados para no cometer errores lógicos
que puedan ocasionar fallas en el producto final.
Pruebas.
Podemos decir que este es el proceso de prueba de calidad, donde se inspeccionan
los posibles fallo y los fallos que ocurren durante el funcionamiento del producto
final, esta etapa permite identificar aquellos puntos donde se cometen errores para
poder ser corregidos y volver a rediseñar o mejorar el proyecto.
Consiste en comprobar que el software responda/realice correctamente las tareas
indicadas en la especificación. Es una buena praxis realizar pruebas a distintos
niveles (por ejemplo primero a nivel unitario y después de forma integrada de cada
componente) y por equipos diferenciados del de desarrollo (pruebas cruzadas entre
los programadores o realizadas por un área de test independiente).
En esta fase hay que comprobar que las especificaciones se cumplen
perfectamente y en todos los casos. En la realidad es prácticamente imposible
probar un programa totalmente: por ello siempre suele quedar algún error
escondido. Este problema se agrava cuando sobre él se realizan repetidos cambios
y corrección, si no se gestionan de una manera adecuada se puede acabar con un
conjunto de parches que más que posibles soluciones pueden aportar más
problemas.
En la etapa de pruebas los desarrolladores o personas a cargo de probar el
proyecto deben intentar hacer que este no funcione o arroje errores, pues si no se
hiciera esta fase muchos proyectos realizados al momento de sacarlos al mercado o
utilizarlos con cierto fin pueden presentar problemas de ejecución, de datos, entre
otros.
Documentación y Mantenimiento.
En esta etapa final se hace toda la documentación sobre el proyecto de software, se
realiza el proceso de documentación para el usuario final y el documento de
explicación del software para el desarrollador y cliente, además de los posibles
mantenimientos preventivos que se le tengan que hacer al proyecto final, si es que
se tienen previstos si no no.
Realización del manual de usuario, y posiblemente un manual técnico con el
propósito de mantenimiento futuro y ampliaciones al sistema. Las tareas de esta
etapa se inician ya en el primera fase pero sólo finalizan una vez terminadas las
pruebas.
Además, En esta etapa se realiza un mantenimiento correctivo (resolver errores) y
un mantenimiento evolutivo (mejorar la funcionalidades y/o dar respuesta a nuevos
requisitos).
La documentación es parte fundamental de cualquier proyecto de software, hasta
para los desarrolladores, pues estos deben tener su propia documentación del
código por si se necesitan hacer más correcciones, actualizaciones y
mantenimientos, en esta parte final se realiza un riguroso documento que conste las
funcionalidades que cumple el programa y un manual de usuario que especifica sus
funciones y cómo deben ser usadas, esto con el objetivo de sacar el mayor
provecho posible al software.
Descripción de los componentes de un proyecto de software.
Los componentes de un proyecto de software son aquellos que forman parte activa
del proceso de desarrollo y cuya participación es imprescindible para el proyecto, los
principales componentes son las actividades los recursos humanos y los productos
software obtenidos. La elección de estos tres componentes se origina por la
importancia que tiene cada uno de ellos en el éxito del proyecto, y porque
determinan lo que se conoce como las 3 P’s de un proyecto, Procesos, Personas y
Productos.
Anteriormente solo se consideraban 3 los componentes fundamentales de un
proyecto de software pero últimamente se habla de que ya no son 3 si no son 4, en
los cuales se encuentran: personal, producto, proceso y el proyecto formando o'que
se conoce como as P’4.
Personal.
El factor humano siempre será el más importante en el desarrollo de soluciones
software, muchos empresarios famosos, líderes de empresas tecnológicas,
coinciden que el éxito que han alcanzado sus empresas no se debe a las
herramientas que utilizan, es la gente y el trabajo en equipo.
El Instituto de Ingeniería de Software, al ver la importancia que tiene el factor
humano en la construcción del software, ha desarrollado un modelo de madurez de
la capacidad de gestión del personal, esto con el fin de ayudar a las organizaciones
de software a incrementar la rapidez en el desarrollo de proyectos cada vez más
complejos.
Eso hace que el personal dentro del componente de un proyecto de software sea de
vital importancia, además entre mejor personal calificado se tenga para el desarrollo
de las etapas de un proyecto de software mejores resultados se obtendrán.
Producto.
software que se crean durante la vida del proyecto luego de las etapas o fases
necesarias para la elaboración del mismo, para el producto de un proyecto de
software hay que tener muchas consideraciones entre ellas, Se requieren
estimaciones cuantitativas y un plan organizado, pero no se dispone de información
sólida.
Muchas veces cuando un cliente pide que le construyan una solución, siempre
pregunta ¿cuánto me va a costar? Pues bien, todo producto requiere estimaciones
cuantitativas y una adecuada planificación. Una adecuada recolección de
información y un análisis detallado de los requerimientos proporciona la información
necesaria para dar una estimación del costo del producto. Antes de planear un
proyecto, se debe establecer los objetivos y el alcance que tendrá el proyecto,
además de sus restricciones técnicas y de gestión. Con una buena planificación se
puede estimar el tiempo que tomará desarrollar o construir el producto y
redimensionar el valor cuantitativo del producto.
El desarrollador del software debe reunirse con el cliente las veces que sean
necesarias para definir el dominio y los objetivos del producto. Esta actividad,
comienza con la aplicación del proceso de ingeniería de requisitos; captura, análisis
y, validación y verificación.
Este componentes es fundamental pues si no se logra una planeación clara del
producto y se definen todas las consideraciones el producto no podrá ser iniciado o
en ocasiones se inicia pero no es culminada debido a los malos procesos.
Proceso.
Como los anteriores componentes ese es muy importante ya que en este
componente se debe decidir el modelo de proceso más adecuado para la
realización de proyecto, una vez escogido el proceso por el cual se realizará el
proyecto, se pasa a escoger el entorno en el que el personal trabajará para sacar
adelante el proyecto.
En este componente se realizan un conjunto de actividades necesarias para
transformar todos los requisitos del cliente y usuario en el producto final.
En ocasiones durante el proceso se deben desarrollar ciertos pasos como lo son:
Desarrollar una lista de conflictos que deben clasificarse.
Reunirse con los clientes para abordar los conflictos que deben
clasificarse.
Desarrollar en conjunto un enunciado del ámbito.
Revisar el enunciado del ámbito con todos los implicados.
Modificar el enunciado del ámbito según lo requiera.
Proyecto.
Este componente hace referencia a los elementos organizativos través del cual se
gestiona el desarrollo de software, cuando se gestiona un proyecto exitoso, es
necesario entender que este puede llegar a fracasar. Según John Reel, existen 10
razones por las cuales un proyecto puede fracasar:
El personal de software no entiende las necesidades del los clientes.
El ámbito del producto está mal definido.
Los cambios se gestionan mal.
La tecnología elegida cambia.
Las necesidades comerciales cambian.
Los plazos de entrega no son realistas.
Los usuarios se resisten a la utilización del software.
Se pierde el patrocinio.
El equipo del proyecto carece de personal con las habilidades apropiadas.
Los gestores evitan las mejores prácticas y las lecciones aprendidas.
Para el éxito de un proyecto hay que tener siempre mucha disciplina, empeño y
confianza ya que sin esta cualidades el desarrollo de un proyecto de software se
puede ver afectado, y lo más importante a la hora de realizar un proyecto es ser
eficaces y darle solución a los inconvenientes que puedan surgir, el proyecto tiene
que contener todos los componentes mencionados anteriormente ya que es el
producto culminado, donde uno y todos tienen acción sobre la elaboración final del
producto.
Estándares para evaluar la calidad de un producto de software.
La calidad, para poder ser entendida y medida de una mejor manera, con eficacia,
debe ser expresada por medio de otros términos que tengan más sentido para el
usuario; En el caso del software, estos factores son el medio por el cual se traduce
el término “calidad” al lenguaje de las personas que manejan la tecnología.
Los factores de calidad que afectan a la calidad del software se dividen en dos
grandes grupos:
Los que miden directamente (defectos descubiertos en las pruebas).
Los que se miden directamente (facilidad de uso o de mantenimiento).
En cada caso debe presentarse una medición. Se debe comparar el software con
algún conjunto de datos y obtener así algún indicio sobre la calidad.
McCall, Richards & Walters (1977), propusieron una clasificación de los factores que
afectan la calidad del software, entre estos factores se concentran tres aspectos
importantes de un software:
Características operativas.
Capacidad para experimentar cambios.
Capacidad para adaptarse a nuevos entornos.
Además, en la figura 7 podemos observar cómo estos atributos han cambiado
llegando a las normas ISO/IEC 9126.
Figura 3
Figura 3 obtenido de:
http://evaluaciondesoftware2013.blogspot.com.co/
Los que miden directamente (defectos descubiertos en las pruebas).
Corrección.
El grado en que el programa cumple con su especificación y satisfacer los objetivos
que propuso el cliente.
Confiabilidad.
El grado en que se esperaría que un programa desempeña su función con la
precisión requerida.
Eficiencia.
La cantidad de código y de recursos de cómputo necesarios para que un programa
realice su función.
Integridad.
El grado de control sobre el acceso al software o los datos por parte de las personas
no autorizadas.
Facilidad de uso.
El esfuerzo necesario para aprender, operar y preparar los datos de entrada de un
programa interpreta la salida.
Facilidad de mantenimiento.
El esfuerzo necesario para localizar y corregir un error en un programa.
Flexibilidad.
El esfuerzo que demanda probar un programa con el fin de asegurar que realiza su
función.
Portabilidad.
El esfuerzo necesario para transferir el programa de un entorno de hardware o
software a otro.
Facilidad de reutilización.
El grado en que un programa o partes de él pueden reutilizarse en otras
aplicaciones (en relación con el empaquetamiento y el alcance de las funciones que
realiza el programa).
Interoperabilidad.
El esfuerzo necesario para acoplar un sistema con otro.
Sin embargo, Vega et al. (2008), proponen un modelo con métricas distintas al
propuesto por McCall y que ha sido utilizado y comprobado en distintos proyectos
de desarrollo de software. Los factores que conforman al modelo y su descripción,
se presentan a continuación.
Corrección.
El grado en que un producto de software satisface sus especificaciones y consigue
los objetivos de la misión encomendada por el usuario.
Confiabilidad.
El grado en que se puede esperar que un producto de software lleve a cabo sus
funciones esperadas con la precisión requerida.
Eficiencia.
La cantidad de recursos computacionales y de código requeridos por un producto de
software para llevar a cabo las funciones encomendadas.
Integridad.
El grado en que puede controlarse (facilitar y restringir) el uso y acceso al software y
a los datos, tanto al personal autorizado como al no autorizado.
Facilidad de uso.
El esfuerzo requerido para aprender, trabajar, preparar la entrada e interpretar la
salida de un producto de software.
Facilidad de mantenimiento.
El esfuerzo necesario para localizar y corregir los errores en un producto de
software.
Flexibilidad.
El esfuerzo requerido para modificar un producto de software una vez que se
encuentra ya liberado o en producción, esto es, una vez que el usuario esté
haciendo uso de él.
Facilidad de prueba.
El esfuerzo requerido para probar un producto de software, de tal forma que se
asegure que realiza las funciones especificadas por el usuario.
Portabilidad.
El esfuerzo requerido para transferir un producto de software de una plataforma
(entorno de hardware y software) a otra.
Reusabilidad.
El grado en que un producto de software (o alguna de sus partes) pueda volver a
ser utilizado en otras aplicaciones, aun cuando la funcionalidad de la misma cambie.
Facilidad de interoperación.
El esfuerzo requerido para lograr que un producto de software trabaje con otro,
compartiendo recursos.
Conclusiones.
A través del tiempo se han visto diferentes problemáticas en el desarrollo de
software que de alguna forma llevó a un mejor desarrollo del sector permitiendo ver
factores importantes como técnicas, lenguajes,etc. resaltando la planificación en los
procesos de desarrollo de software como necesarios e importantes debido a que
permiten que los proyectos que se generen tengan menor grado de riesgo gracias al
análisis y la participación de cada uno de los grupos de trabajo de desarrollo,
teniendo en cuenta que cada uno de los roles que se plantean son muy importantes
a fin de garantizar su éxito.
Además, la calidad de un producto debe ser valorada bajo unos estándares
generales, los cuales además de mostrar la calidad del producto determinan si el
producto necesita mejoras o no, con el fin de realizar un excelente trabajo y que
tanto el cliente como el equipo de trabajo queden satisfechos con el producto
generado.
En conclusión, luego de grandes avances a lo largo de la evolución del software, es
pertinente tener en cuenta que cada uno de estos ha aportado un poco más al
desarrollo de los mismos; cada aspecto que se ve relacionado con el desarrollo de
software tiene toda una arquitectura para que este se desenvuelva de una mejor
manera, minimizando una porción de errores, dando orden y jerarquización a las
actividades de desarrollo del mismo y mejorando con cada planteamiento el
software, por ende la planificación junto con todos los métodos llevan a cabo el
desarrollo de un producto (software) de calidad.
Bibliografía.
http://yaqui.mxl.uabc.mx/~molguin/as/IngSoft%201-4.pdf Ingeniería de Sw.
Padilla, D. F. (2003). Roles en el desarrollo de software. In D. F. Padilla, Apuntes de
taller de ingeniería de software (pp. 1-51).
https://es.wikipedia.org/wiki/Historia_de_la_ingenier%C3%ADa_del_software
http://www.um.es/docencia/barzana/IAGP/IAGP2-Ingenieria-software-
introduccion.html
http://www.uv.mx/personal/jfernandez/files/2010/07/1_conceptos2012.pdf Proyecto
de Sw.
http://www.cdi.gob.mx/jovenes/data/gestion_de_proyectos.pdf Proyecto de Sw.
http://ftp.itam.mx/pub/alfredo/PAPERS/WeitzenfeldGuardatiComputacion2008.pdf
Modelo.
http://www.academica.mx/blogs/las-5-etapas-la-ingenier%C3%ADa-software
http://dit.upm.es/~fsaez/intl/libro_complejidad/15-el-desarrollo-del-software.pdf
http://es.slideshare.net/itlac/etapas-de-desarrollo-software
https://sistemasvd.wordpress.com/2008/07/05/fases-del-proceso-de-desarrollo-del-
software/
https://danielvn7.wordpress.com/2008/04/25/gestion-de-proyectos-de-software/
http://yaqui.mxl.uabc.mx/~molguin/as/IngSoft%201-4.pdf
libro: Técnicas cuantitativas para la gestión en la ingeniería del software, Isabel
Ramos Román,José Javier Dolado Cosín
http://www.eumed.net/tesis-doctorales/2014/jlcv/calidad-software.htm
http://evaluaciondesoftware2013.blogspot.com.co/
https://www.codejobs.biz/es/blog/2013/10/06/la-calidad-de-diseno-del-softwar