Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MATERIA
DOCENTE
INTEGRANTES
GRADO Y GRUPO
4-3
BLOQUEO 1: INTRODUCCION A CONCEPTOS GENERALES
1.1. CONCEPTOS GENERALES DE SOFTWARE:.......................................................................................3
SOFTWARE.................................................................................................................................................3
TIPOS DE SOFTWARE....................................................................................................................................4
Software de Sistema............................................................................................................................4
Software de Programación..................................................................................................................4
Software de Aplicación........................................................................................................................5
CARACTERÍSTICAS DE UN SOFTWARE:...............................................................................................................6
ETAPAS DEL CICLO DE DESARROLLO DE SOFTWARE..............................................................................................7
EN UN PROYECTO DE SOFTWARE SUELE:.............................................................................................8
1.2 COSTO DEL SOFTWARE.................................................................................................................. 8
1.2.1 DIRECTO..................................................................................................................................... 8
1.2.2 INDIRECTO.........................................................................................................................................9
1.2.3 OCULTO............................................................................................................................................9
1.3 FALLAS DEL SOFTWARE .............................................................................................................. 10
1.4 RETRASOS Y CANCELACIONES..................................................................................................... 11
1.5 COMPLEJIDAD DEL SOFTWARE..................................................................................................... 12
LA COMPLEJIDAD DEL SOFTWARE ES UNA PROPIEDAD ESENCIAL, NO ACCIDENTA.....................................................12
1.5.1 DEL PROBLEMA............................................................................................................................13
1.5.2 DE LA SOLUCION.........................................................................................................................13
Funcionalidad.....................................................................................................................................13
Entregables.........................................................................................................................................13
Clientes y actores del proyecto...........................................................................................................14
Duración.............................................................................................................................................14
Tamaño...............................................................................................................................................14
1.6 ASPECTOS PARA EL ÉXITO DE UN SISTEMA...................................................................................15
#1 ELEGIR UNA TECNOLOGÍA DE DESARROLLO CON ÉXITO..................................................................................15
#2 SER UN BUEN ANALISTA-PROGRAMADOR...................................................................................................15
#3 Gestionar las necesidades de tus clientes si desarrollas software estándar.................................16
#4 Vender software de gestión empresarial.......................................................................................16
#5 Mantener el software de tus clientes de forma rentable..............................................................17
1.7. DIAGRAMA RIQUEZA FUNCIONAL VS CALIDAD VS TIEMPO/COSTO..............................................17
¿QUÉ IMPACTO TIENE EL COSTO DEL SOFTWARE PERSONALIZADO?......................................................................19
1.8. BALA DE PLATA........................................................................................................................... 20
1.9. CICLO DE VIDA DE SOFTWARE..................................................................................................... 22
Planificación........................................................................................................................................22
Análisis................................................................................................................................................22
Diseño.................................................................................................................................................23
Implementación..................................................................................................................................23
Pruebas...............................................................................................................................................24
Instalación o despliegue.....................................................................................................................24
Uso y mantenimiento.........................................................................................................................24
1.10. MITOS DEL SOFTWARE.............................................................................................................. 25
EL DESARROLLO DE SOFTWARE A MEDIDA CONSUME MUCHO TIEMPO EN COMPARACIÓN CON LAS APLICACIONES
DISPONIBLES EN EL MERCADO.......................................................................................................................25
..............................................................................................................................................................25
MUCHOS PROGRAMAS CONTIENEN VIRUS INFORMÁTICOS OCULTOS.....................................................................25
LA MAYORÍA DEL SOFTWARE CONTIENE FUNCIONES OCULTAS QUE PERMITEN EL PHISHING O EL ESPIONAJE..................25
EL SOFTWARE SE PUEDE DESARROLLAR INCLUSO SIN UN EQUIPO DE GESTIÓN DE PROYECTOS....................................26
LA MAYORÍA DEL SOFTWARE SE VUELVE FÁCILMENTE OBSOLETO..........................................................................26
BLOQUE 1: INTRODUCCION A CONCEPTOS GENERALES
1.1. CONCEPTOS GENERALES DE SOFTWARE:
Software
Tipos de software
Software de Sistema
Conjunto de programas que sirven para interactuar con el sistema, confiriendo control
sobre el hardware, además de dar soporte a otros programas. Ejemplos: Sistema
operativo, controladores de dispositivos y programas utilitarios
Software de Programación
Editores de texto.
Compiladores.
Interpretes.
Enlazadores.
Depuradores.
Ejemplos:
Aplicaciones específicas.
Ofimática
Software Educativo.
Software Empresarial.
Base de datos.
Videojuegos.
Telecomunicaciones
Características de un software:
Mantenimiento: En esta fase, que tiene lugar después de la entrega se asegura que el
sistema siga funcionando y adaptándose a nuevos requisitos.
1.2.1 Directo
Para adquirir el software, el cual incluye el software empacado, se puede adquirir en un
negocio de computación o por internet: y el software a la medida, que requiere un desarrollo
especializado y adaptado a las necesidades particulares de una empresa
1.2.2 Indirecto
Para utilizar el software incluye aspectos como capacitación, instalación, soporte técnico, así
como otros costos que por lo general se pueden conocer de antemano.
1.2.3 Oculto
Ocasionado principalmente por las fallas del software. A diferencia de los costos directos e
indirectos, los cuales son previsibles, los costos ocultos por definición son difíciles de prever.
Vale la pena destacar que el tema de costos ocultos afecta principalmente a los sistemas
conocidos como de misión crítica aquellos sistemas críticos para la operación correcta de una
empresa
El monitor se ve a 16 colores.
No se configura la impresora.
Presencia de virus.
Sobrecosto y retraso en sistema del bombardero B-1 (1985). El bombardero B-1 en servicio
desde 1985 requirió US $1 billón adicional para mejorar su software de defensa aérea que era
inefectivo, aunque problemas de software imposibilitaron alcanzar los objetivos originales.
Sobrecosto y retraso en sistema de control de rastreo por satélite (1989). El software para la
modernización de la Facilidad de Control de Rastreo por Satélite tomó 7 años más de lo
previsto y costó $300 millones adicionales ofreciendo menor capacidad de la requerida.
Sobrecosto y retraso en sistema Airborne Self-Protection Jammer (1989). El sistema ASJP
(Airborne Self-Protection Jammer), un sistema electrónico de defensa aérea instalado en
alrededor de 2,000 aviones de combate y ataque de la Marina Americana, costó US $1 billón
adicional, tomó 4 años adicionales, y sólo fue “efectivo operacionalmente marginalmente y
apropiado operacionalmente marginalmente”.
Sobrecosto en sistema del avión de carga C-17 (1989). El avión de carga C-17 construido por
Douglas Aircraft costó $500 millones adicionales por problemas del software aeronáutico. Un
reporte de GAO notó que existieron 19 computadoras a bordo, 80 microprocesadores, y 6
lenguajes diferentes de programación.
1.5.2 DE LA SOLUCION
Para reducir la complejidad de tu proyecto de desarrollo de software, mencionare algunas
soluciones que
Funcionalidad
Ya sea que se busque mejorar una versión existente de un programa o aplicación, o
que se trate de desarrollar una nueva, la recomendación es “menos es mejor”. Entre
mayor funcionalidad se incluya en el producto final, el proyecto será más complejo,
habrá que tener en el radar mayor número de requerimientos, las pruebas y los casos
de prueba crecerán de manera proporcional a las funciones incluidas
Entregables
Nuevamente, cuando hablamos de los distintos productos que componen el proyecto,
debemos tratar de reducir su número para poder contener la complejidad del
proyecto. Normalmente, si el número de entregables es mayor, se requerirán múltiples
procesos técnicos para producirlos, lo que sin lugar a dudas implica una mayor
complejidad. Así que trata de reducir al máximo los entregables de tu proyecto,
evidentemente este punto está de alguna forma relacionado con el anterior.
Duración
Nadie, al menos hasta donde yo sé, tiene una bola de cristal que le diga lo que va a
pasar en el futuro. Entre más lejana esté la fecha de término de tu proyecto, más
compleja será su administración. Esto es particularmente cierto para la administración
de riesgos, pues será más difícil cumplir con las fechas esperadas, y habrá mayor
tiempo para que las expectativas crezcan o para que al cliente o a nosotros se nos
ocurran mayor funcionalidad. Es así que establecer la duración de tu proyecto en
periodos de 4 a 6 meses es una buena idea. Por supuesto que cumplir con los puntos
anteriores, sobre todo el 1 y 2 contribuirá a facilitar este punto de manera directa.
Tamaño
En términos generales, entre más grande el proyecto, típicamente serán necesarias
más interfaces, mayor coordinación, más integrantes en el equipo, y muy
probablemente el número de incidentes con los que tendremos que lidiar irán en
incremento, tomando más tiempo en la resolución de conflictos. Por ello, en la medida
de lo posible será necesario establecer y acotar el alcance del proyecto de manera que
cada versión del producto a generar involucre un número reducido de participantes,
funciones y entregables.
Una problemática recurrente en casi cualquier empresa, por lo que hablo con amigos y
conocidos, es encontrar una forma eficaz de avanzar en proyectos que se consideren
estratégicos.
Las frases típicas que escuchamos cuando le preguntamos a alguien el motivo por el
que un proyecto no avanza y que yo mismo he pronunciado en multitud de ocasiones
son:
o No tengo tiempo
Y muchas otras varias… No te pierdas este artículo si quieres saber cómo escoger una
plataforma de programación con éxito. Si lo que buscas es una tecnología de
programación low-code, también te recomendamos esta guía para elegir un
framework de desarrollo low-code.
Llevo mucho tiempo comentando con otros programadores de mi edad que cada vez
que hablo con programadores jóvenes tengo la sensación de que solo quieren trabajar
en desarrollo de la interfaz, el frontend, y es rarísimo que a alguno le guste el diseño
de la base de datos.
Para ser justos tengo que decir que si miro hacia atrás esto siempre ha sido así.
Cuando yo empecé a dar mis primeros pasos en 1980 ya existía el rol de analista y de
analista-programador, sin embargo ¡a mí lo que me gustaba era “programar”, picar
código! Seguir leyendo Guía indispensable para ser un buen analista-programador.
Si trabajas en una empresa que desarrolla software estándar seguro que una de las
mayores dificultades que habrás vivido es la de gestionar las expectativas de los
clientes sobre la gestión de sus necesidades en las próximas versiones.
Aquí podrás ver varios consejos sobre cómo gestionar las necesidades de tus clientes si
desarrollas software estándar.
#4 Vender software de gestión empresarial
Lejos de lo que se podría pensar, la venta telefónica (Inside Sales), crece día a día
incluyendo productos de valor añadido como es el software, en este artículo veremos
los pros de este tipo de venta y lo que debemos tener en cuenta, tanto desde el punto
de vista de la empresa que quiere montar este sistema (utilizando Inbound Marketing),
como el propio vendedor. Demostraremos que la rentabilidad y productividad es
mucho mayor, con menos esfuerzo conseguiremos llegar a más cuota de mercado y en
menos tiempo.
Voy a compartir contigo un montón de ideas que espero te sirvan para mejorar la
rentabilidad de tu negocio, y sobre todo evitar cometer errores que siempre suponen
fuertes dolores de cabeza para ti y para tus clientes.
Muchos de esos errores los conozco bien porque los he cometido y vivido en primera
persona.
Calidad
Son características propias del software, aquellas que tú quieres controlar y asegurar.
El software es un producto inmaterial que no se fabrica, tampoco se degrada
físicamente, pero sí se desarrolla. El software puede tener errores e incidencias, pero
no son similares a las de cualquier equipo de carácter físico.
Tiempo/costo
Cuantas más pantallas/páginas tenga, más trabajo deberá realizar para crear su
aplicación y más costoso será al momento de la entrega. Las aplicaciones pequeñas
van desde 10 a 25 pantallas, el tamaño medio está en el orden de 25-40 y un tamaño
grande es algo más que 40.
3. Diseño creativo
Los sistemas más antiguos o menos conocidos pueden plantear un desafío y aumentar
el costo del proyecto.
Brooks afirma que hemos limpiado gran parte de la complejidad accidental, y los
programadores de hoy pasan la mayor parte de su tiempo abordando la complejidad
esencial. Una tecnología, que había hecho una mejora significativa en el área de
complejidad accidental fue la invención de lenguajes de programación de alto nivel,
como Fortran en ese tiempo. Lenguajes de hoy, como C, C++, C# y Java, son
considerados como mejoras, pero no del mismo orden de magnitud
Brooks prosigue en argumentar que hay una diferencia entre diseñadores "buenos" y
"magníficos". Postula que, como la programación es un proceso creativo, algunos
diseñadores son intrínsecamente mejores que otros. Sugiere que hay tanto como una
diferencia de diez veces entre un diseñador común y uno magnífico. Entonces Brooks
sugiere tratar a los diseñadores estrellas igual de bien como a los gerentes estrellas,
proporcionándoles no sólo igualdad de remuneración, sino también todos los
privilegios del estatus mayor: despacho grande, personal, fondos para viajes, etc.
Así, una metodología para el desarrollo de software son los procesos a seguir
sistemáticamente para idear, implementar y mantener un producto de software desde
que surge la necesidad del producto hasta que se cumple el objetivo por el cual fue
creado.
De esta forma, las etapas del desarrollo de software son las siguientes:
Planificación
Análisis
Por supuesto, hay que averiguar qué es exactamente lo que tiene que hacer el
software. Por eso, la etapa de análisis en el ciclo de vida del software corresponde al
proceso a través del cual se intenta descubrir qué es lo que realmente se necesita y se
llega a una comprensión adecuada de los requerimientos del sistema (las
características que el sistema debe poseer).
Diseño
Es posible que la solución inicial no sea la más adecuada, por lo que en tal caso hay
que refinarla. No obstante, hay catálogos de patrones de diseño muy útiles que
recogen errores que otros han cometido para no caer en la misma trampa.
Implementación
En esta fase hay que elegir las herramientas adecuadas, un entorno de desarrollo que
facilite el trabajo y un lenguaje de programación apropiado para el tipo de software a
construir. Esta elección dependerá tanto de las decisiones de diseño tomadas como del
entorno en el que el software deba funcionar.
Al programar, hay que intentar que el código no sea indescifrable siguiendo distintas
pautas como las siguientes:
Pruebas
Como errar es humano, la fase de pruebas del ciclo de vida del software busca detectar
los fallos cometidos en las etapas anteriores para corregirlos. Por supuesto, lo ideal es
hacerlo antes de que el usuario final se los encuentre. Se dice que una prueba es un
éxito si se detecta algún error.
Instalación o despliegue
La siguiente fase es poner el software en funcionamiento, por lo que hay que planificar
el entorno teniendo en cuenta las dependencias existentes entre los diferentes
componentes del mismo.
Es posible que haya componentes que funcionen correctamente por separado, pero
que al combinarlos provoquen problemas. Por ello, hay que usar combinaciones
conocidas que no causen problemas de compatibilidad.
Uso y mantenimiento
Esta es una de las fases más importantes del ciclo de vida de desarrollo del software.
Puesto que el software ni se rompe ni se desgasta con el uso, su mantenimiento
incluye tres puntos diferenciados:
Un nivel de madurez bien definida con una meseta evolutiva hacia la consecución de
un proceso software maduro. Cada nivel de madurez proporciona una capa en la base
para una mejora continua del proceso.
Los modelos CMMI con representación por etapas, tienen cinco niveles de madurez
designado por los números del 1 al 5. Estos son:
Inicial
Gestionado
Definido
Cuantitativamente gestionado
Optimizar
Nivel de madurez
Medir el proceso
Analizar el desempeño
Guardar y utilizar los datos - para evaluar la estabilidad y la capacidad del proceso -
para interpretar los resultados de observaciones y análisis - para estimar coste y
desempeño futuros - para proveer baselines y benchmarks - para establecer
tendencias - para identificar oportunidades de mejora
Repetibilidad - ¿Otra persona podría ser capaz de repetir las medidas y obtener los
mismos resultados?
Tiempo de entrega (lead time). El tiempo de entrega es el tiempo que tarda algo de
principio a fin. En el desarrollo de software, por ejemplo, el tiempo de entrega de un
proyecto comienza con la propuesta y termina con la entrega.
Para la gestión eficiente de los riesgos es necesario seguir un proceso específico que
incluye:
Planear
Organizar
Dirigir y
Controlar
Esto se refiere a los recursos de la organización, divididos en recursos humanos y
materiales, que deben cumplir el objetivo de minimizar el riesgo, o, por el contrario,
hallar cierta manera de aprovecharlos en beneficio de la empresa.
Pero si ocurre lo contrario, es decir, si se percibe que las medidas de control de riesgos
no son eficaces, todo el proceso debe ser revisado y se deben establecer nuevas
medidas de control para que la gestión de riesgos se vuelva efectiva una vez más.
Riesgos de personal
El desarrollo de software complejo requiere tiempo y enorme energía por parte de los
equipos involucrados. Sin un método, el desarrollo de software es imposible. El
resultado de un equipo de producción que no sigue un sistema eficiente o que sigue un
método de defectuoso resultará en un software defectuoso – y eventualmente, caos.
Una metodología de gestión de proyectos como el método Ágil asegura que el proceso
de desarrollo de software se desarrolle en un ambiente que minimiza la aparición de
problemas. Este método evita la repetición cuando se producen errores, ya que estos
casos pueden rectificarse incluso a mitad del proceso de producción del software.
También permite cambios en los códigos, diseño y programación en cualquier fase del
proceso de desarrollo.
Fuentes bibliográficas:
La ficha bibliográfica es :
Sergio Martinez. (2012). ERP: Costes ocultos de implantación y puesta en
marcha. marzo del 2021, de ERP Sitio web:
https://www.mundoerp.com/blog/erp-los-costes-ocultos-de-la-implantacion-y-
puesta-en-marcha/
Juan Pablo Canales Hernandez. (2014). conceptos basicos del software. Marzo
2021, de UNIVO Sitio web:
https://sites.google.com/site/portafolio15univo/unidad-1/-conceptos-basicos-
de-software
https://onerp.es/exito-implantacion-software-empresarial/
https://velneo.es/5-aspectos-clave-para-triunfar-desarrollando-software-de-gestion/