Está en la página 1de 22

INFORME “ANALISIS Y

DESARROLLO DE SOFTWARE”

PRESENTADO POR: JUAN CAMILO MEJIA


B.
SENA.
¿QUE ES EL SOFTWARE ?
Un sistema Informático, que comprende el conjunto de los componentes
lógicos necesarios, que hace posible la realización de tareas específicas, en
contraposición a los componentes físicos que son llamados Hardware. La
interacción entre el Software y el Hardware hace operativo un ordenador (u
otro dispositivo) es decir, el Software envía instrucciones que el Hardware
ejecuta, haciendo posible su funcionamiento.
SOFTWARE DE PROGRAMACION:
El software de programación en 2023 continúa evolucionando para mejorar la
productividad y eficiencia de los desarrolladores. Se espera un mayor uso de
tecnologías de inteligencia artificial y aprendizaje automático en la
programación, lo que permitirá a los programadores automatizar tareas
repetitivas y mejorar la calidad del código.

Definición:
Un Software de Programación es el conjunto de utilidades y herramientas
utilizadas para el desarrollo, programación o creación de programas o
aplicaciones informáticas por parte de los programadores. Dichas utilidades y
herramientas pueden hacer uso de diversos lenguajes de programación y
metodologías de desarrollo a través de un editor de texto y un compilador.

Historia:
La historia del Software de programación se remonta a los mismos inicios de
los primeros computadores sobre 1950 donde se diseñaron estos equipos,
mediante lenguaje máquina, principalmente como sistemas de control
industrial. Un par de décadas más tarde, en los 70, comenzaría a ganar
popularidad el sistema Unix que permitiría la multitarea, y la interpretación de
lenguajes de programación, entre muchos otros avances destacados. Es en
1976 cuando se publica el libro Software Tools (Herramientas de
Programación) escrito por el científico Biran Kernighan y el programador P.J.
Plauger centrado en las buenas prácticas de programación para conseguir
códigos más limpios que sean más eficientes, fáciles de leer, de mantener y de
modificar. Con el paso de los años, diferentes herramientas y

utilidades enfocadas a la programación de aplicación y programas, se han ido


aglutinando a su vez en sistemas más complejos que permiten realizar
desarrollos de Software de manera menos aislada, más asistida. Estos
conjuntos se denominaron inicialmente herramientas CASE, siglas de
Computer Aided Software Engineering, Ingeniería de Software Asistida por
Computadora en castellano que alcanzaron su máximo auge en la década de
los 80 y su declive a partir de los 90, cuando nacen los primeros Entornos de
Desarrollo Integrado o IDE (por sus definición en inglés como Integrated
Development Environment).Es a partir del auge los IDE cuando los software
de programación alcanza un nuevo nivel en el desarrollo de aplicaciones o
programas software.

¿Qué tipos de Software podemos distinguir?


Podemos clasificar los diferentes tipos de software en tres categorías
diferentes:

• Software de Sistema: Permite gestionar y administrar los recursos


relativos a la memoria, discos, puertos, dispositivos de comunicaciones,
periféricos (impresoras, pantallas, teclados). Estos proporcionan al usuario
interfaces de alto nivel, controladores, servidores, herramientas y utilidades
para el mantenimiento del sistema.

• Software de Programación: Se trata de un conjunto de herramientas


y utilidades que permiten a los programadores desarrollar programas
informáticos utilizando diferentes lenguajes de programación o bases de datos.
Incluye de manera general: editores de texto, compiladores, intérpretes,
enlazadores y depuradores.

También Entornos de Desarrollo Integrados (IDE): que agrupan en un mismo


entorno, habitualmente visual (GUI), todas las herramientas necesarias,
anteriormente mencionadas, para cubrir el ciclo completo de desarrollo de un
programa. Es en esta categoría en la que nos vamos a centrar en este artículo
• Software de Aplicación: Es el que permite a los usuarios realizar
tareas específicas, en muchos casos a través de una interfaz visual de alto nivel
(GUI). En otras palabras, son los programas que se crean con los softwares de
programación, para realizar numerosas tareas tanto laborales, como
administrativas, de gestión o con el objetivo simplemente de ocio, como
videojuegos. En esta categoría podríamos englobar a todo el software de
gestión empresarial, de telecomunicaciones, todas las aplicaciones ofimáticas
y de control, programas específicos de cualquier área, así como bases de datos
o videojuegos.

. Software de Programación: Entornos de Desarrollo Integral (IDE):


Como anotábamos en la clasificación anterior, dentro de los llamados software
de programación, encontramos diferentes programas o aplicaciones, diseñadas
para cumplir una tarea específica dentro del ciclo de desarrollo, como por
ejemplo los compiladores, que habitualmente su tarea no es otra que traducir
el lenguaje de programación empleado a un lenguaje máquina que pueda
interpretar el hardware. Pero a nosotros nos interesa centrarnos en los
Entornos de Desarrollo Integrados o IDE. Se trata de plataformas o conjuntos
de programas encaminados a cubrir el ciclo completo de desarrollo de un
software facilitando todas las aplicaciones, herramientas y utilidades
necesarias para ello, normalmente en torno a una misma interfaz de usuario (o
muy similar) maximizando así la productividad

que un desarrollador puede alcanzar, pues podrá crear, modificar, compilar,


implementar y depurar Software desde un único lugar. Habitualmente los IDE
disponen de un editor de código fuente, herramientas de construcción
automáticas (como asistentes y plantillas) y un depurador. La mayoría también
incluyen un sistema de autocompletado inteligente del lenguaje de
programación. Algunos pueden incluir también compiladores y/o intérpretes.
Y hoy en día la mayoría de IDE modernos son gráficos (visuales)
incorporando interfaces (GUI) de alto nivel. Los Entornos de Desarrollo
Integrados pueden estar enfocados a un único lenguaje de programación,
haciendo así que las características de este sean los más fieles posibles al
paradigma de programación de dicho lenguaje. No obstante, muchos IDE
soportan múltiples lenguajes de programación, como es el caso de los más
famosos: Eclipse, NetBeans, .NET, Oracle JDeveloper o Microsoft Visual
Studio. Otros como Xcode o Delphi están cerrados a lenguaje concretos o
ajustes de tipos de lenguaje. Algunos de los lenguajes de programación
utilizados por los IDE son Ensamblador, C++, C#, Java, JavaScript, PHP,
Python, Pascal u Objetive-C, entre otros. Muchas de las aplicaciones software
que podemos descargar y que utilizamos en el día a día han sido desarrolladas
mediante IDE o software de programación, como por ejemplo la suite
ofimática de Microsoft (Word, Excel, PowerPoint, Publisher...), reproductores
de vídeo y audio como VLC, herramientas de edición como Adobe Photoshop
y muchas más, de hecho, hoy en día la gran mayoría de programas utilizados
hoy en día han sido creados con este tipo de plataformas.

¿Cuál es el mejor Entorno de Desarrollo Integrado (IDE) en


español?
Aunque el objetivo final de un IDE es actuar como software de programación
proporcionando todas las herramientas necesarias para cubrir el ciclo de
desarrollo de un software, ya hemos visto que

pueden existir diferencias sustanciales entre unos entornos y otros. Es por ello
que muchos entornos de desarrollo tienden a especializarse en áreas más
concretas y específicas, mientras que otros han optado por mantenerse como
una opción viable para cualquier tipo de desarrollo. Esto generado ventajas e
inconvenientes. Si tu entorno está pensado para sustentar cualquier tipo de
desarrollo, para cualquier sector y mediante cualquier tecnología, dicho
entorno tendrá que permitir compatibilidad con un montón de librerías
diferentes, controladores, sistemas, etc. Lo que a priori provocará que se trata
de un sistema mucho más complejo, tanto para su aprendizaje y uso, como
para su manejo de manera experta. Poniendo un ejemplo, la dificultad de hacer
volar un avión de pasajeros comercial debe ser mucho mayor que la de hacer
volar una avioneta biplaza, aunque ambos sirvan para el mismo propósito:
volar. Y es que muchas veces no necesitamos un avión comercial de pasajeros,
si nuestro único interés es volar (no transportar a otras personas ni sus
equipajes). Es por ello que en las últimas décadas muchos entornos de
desarrollo integrados (IDE) se han especializado para diferentes áreas y
sectores, permitiendo así aligerar los grandes entornos y ofreciendo a los
desarrolladores un entorno mucho más ágil, rápido y sencillo de aprender y
utilizar que los anteriores. Dentro de los diferentes sectores donde estos
entornos se han especializado encontramos la informática de gestión
empresarial, los videojuegos, el sector sanitario, las inmobiliarias y
constructoras, matemáticas, etc. Cada día existen más IDE especializados para
servirnos como software de programación.

Algunos consejos e informaciones al respecto:


• Cómo crear programas
• Hacer programas de Software en Español
• Crear programas en español
• Hacer programas para negocios
• ¿Qué programas se desarrollan para empresas?
• Aprender a programar Software de gestión
• Cómo hacer Software de gestión
• Programa para crear un Software

También se espera un aumento en la popularidad de lenguajes de


programación de alta capacidad como Python y una mayor adopción de
metodologías ágiles y DevOps para una mejor colaboración y entrega más
rápida de software.
Además, con el auge de la nube y el Internet de las cosas, se espera una mayor
demanda de software de programación para aplicaciones en la nube y
dispositivos conectados.
En resumen, el Software de Programación en 2023 seguirá avanzando y
mejorando para satisfacer las necesidades de los desarrolladores y los usuarios
finales.

Conclusión:
El Software de Programación es un conjunto de herramientas y utilidades
utilizadas para el desarrollo, programación o creación de programas o
aplicaciones informáticas. Estos incluyen editores de texto, compiladores,
intérpretes, enlazadores y depuradores, y pueden utilizar diferentes lenguajes
de programación.

La historia del Software de Programación se remonta a los inicios de los


primeros computadores en la década de 1950 y ha evolucionado a lo largo de
los años hasta incluir herramientas más complejas como los Entornos de
Desarrollo Integrado (IDE). El software se puede clasificar en tres categorías:
software de sistema, software de programación y software de aplicación.
El Software de Sistema permite la gestión de recursos de la computadora, el
software de programación permite a los programadores desarrollar programas
y el software de aplicación permite a los usuarios realizar tareas específicas,
como procesar textos o crear hojas de cálculo.

Proceso para el Desarrollo de Software:


El Proceso para el Desarrollo de Software, también denominado ciclo de vida
del desarrollo de Software, es una estructura aplicada al desarrollo de un
producto de software. Hay varios modelos a seguir para el establecimiento de
un proceso para el desarrollo de software, cada uno de los cuales describe un
enfoque diferente para diferentes actividades que tienen lugar durante el
proceso. Algunos autores consideran un modelo de ciclo de vida un término
más general. Que un determinado proceso para el desarrollo de software. Por
ejemplo, hay varios procesos de desarrollo de software específicos que se
ajustan a un modelo de ciclo de vida de espiral.

Actividades del Desarrollo de Software:


Planificación: es el paso previo al inicio de cualquier proyecto de desarrollo y
sin dudas el más importante. En este se definen los requerimientos y
funcionalidades que debe tener el software, mediante el trabajo en conjunto
entre los desarrolladores, el departamento de ventas, los estudios de mercado
y, fundamentalmente, el contacto con el cliente. En este punto se realizan
asimismo los análisis de riesgo para el emprendimiento y se fijan los
requisitos de aseguramiento de la calidad.
La importante tarea a la hora de crear un producto de software es obtener los
requisitos o el análisis de los requisitos. Los clientes suelen tener una idea más
bien abstracta del resultado final, pero no sobre las funciones que debería
cumplir el software.
Una vez que se hayan recopilado los requisitos del cliente, se debe realizar un
análisis del ámbito del desarrollo. Este documento se conoce como
especificación funcional.

Despliegue y Mantenimiento:
El despliegue comienza cuando el código ha sido suficientemente probado, ha
sido aprobado para su liberación y ha sido distribuido en el entorno de
producción.
Entrenamiento y soporte para el Software es de suma importancia y algo que
muchos desarrolladores de software descuidan. Los usuarios, por naturaleza,
se oponen al cambio porque conlleva una cierta inseguridad, es por ello que es
fundamental instruir de forma adecuada a los futuros usuarios del software.
El mantenimiento o mejora de un Software con problemas recientemente
desplegado, puede requerir más tiempo que el desarrollo inicial del Software.
Es posible que haya que incorporar código que no se ajusta al diseño original
con el objetivo de solucionar un problema o ampliar la funcionalidad para un
cliente. Si los costes de mantenimiento son muy elevados puede que sea
oportuno rediseñar el sistema para poder contener los costes de
mantenimiento.

Modelos de Desarrollo de Software:


Los modelos de Desarrollo de Software son una representación abstracta de
una manera en particular. Realmente no representa cómo se debe desarrollar el
software, sino de un enfoque común. Puede ser modificado y adaptado de
acuerdo a las necesidades del software en proceso de desarrollo.
1hay varios modelos para perfilar el proceso de desarrollo, cada uno de las
cuales cuenta con pros y contras. El proyecto debería escoger el más
apropiado para sus necesidades. En ocasiones puede que una combinación de
varios modelos sea apropiada. Existen tres paradigmas de los modelos de
desarrollo de software:

Modelo de Cascada:
El modelo de cascada define las siguientes etapas que deben cumplirse de
forma sucesiva:
 Especificación de requisitos
 Diseño del software
 Construcción o Implementación del software
 Integración
 Pruebas (o validación)
 Despliegue (o instalación)
 Mantenimiento

Modelos de mejora de Procesos:


Capability Maturity Model Integration. El Capability Maturity Model
Integration (CMMI), en español «Integración de Modelos de Madurez de
Capacidades» es uno de los modelos líderes basados en mejores prácticas. Son
evaluaciones independientes las que confirman el grado con el que una
organización sigue sus propios procesos, que no evalúa la calidad de los
procesos o del software que se produce. CMMI ha reemplazado a CMM y
tiene un ámbito global, no sólo en procesos destinados al desarrollo del
software.

ISO 9000:
ISO 9000 describe estándares para un proceso organizado formalmente para
resultar en un producto y los métodos de gestión y monitoreo del progreso.
Aunque este estándar se creó inicialmente para el sector de producción, los
estándares de ISO 9000 también se han aplicado al desarrollo del software. Al
igual que CMMI, que una organización está certificada con el ISO 9000 no
garantiza la calidad del resultado final, sólo confirma que se ha seguido los
procesos establecidos.

ISO 15504:
ISO 15504, también conocido como Software Process Improvement
Capability Determination (SPICE), en español «Determinación de la
Capacidad de Mejora del Proceso de Software» es un marco para la
evaluación de procesos de software. Este estándar tiene como objetivo un
modelo claro para poder comparar procesos. SPICE se utiliza como en el caso
de CMMI. Modela procesos para gestionar, controlar, guiar y monitorear el
desarrollo del software.

Métodos Formales:
Los métodos formales son soluciones matemáticas para resolver problemas de
software y hardware a nivel de requisitos, especificación y diseño. Ejemplos
de métodos formales incluyen el Método B, la red de Petri, la demostración
automática de teoremas, RAISE y el VDM. Hay varias notaciones de
especificaciones formales, tales como el lenguaje Z. Más generalmente, se
puede utilizar la teoría de autómatas para aumentar y validar el
comportamiento de la aplicación diseñando un sistema de autómata finito.
Las metodologías basadas en los autómatas finitos permiten especificación de
software ejecutable y evitar la creación convencional de código.
Los métodos formales se suelen aplicar en software de aviación,
especialmente si es software de seguridad crítico. Los estándares de
aseguramiento del software de seguridad, tales como DO178B demandan
métodos formales en el nivel más alto de categorización (Nivel A).
La formalización del desarrollo de software está ganando en fuerza poco a
poco, en otros ámbitos, con la aplicación del lenguaje de especificación
OCL2.0 (y especializaciones tales como Java) y particularmente con Model-
driven Architecture, que permite la ejecución de diseños, incluso
especificaciones.

Principales Roles en el proceso de Desarrollo de Software:


Un Rol se define como una “Función que alguien o algo cumple”.
Cada uno de los roles aportará al grupo parte del total necesario para tener
éxito en el desarrollo. Los roles son necesarios para cubrir todas las
especificaciones necesarias para cumplir un proceso ya que no todos tenemos
las mismas cualidades y experiencias. Además, al asignar roles, se definen
objetivos y actividades para cada uno; lo anterior evitando que alguna
actividad no sea asignada o que dos personas realicen el mismo trabajo.

Descripción de roles en el Proceso de Desarrollo de Software:


El software se construye en equipo y hay muchas metodologías diferentes. Los
roles se asignan de acuerdo a las capacidades de cada persona, así como
también su especialización, experiencia e interés. Los roles más comunes son:

Gerente de Proyecto:
Tiene por función presentar informes sobre las litigaciones de riesgos, hacer
cumplir los plazos y lleva el control de los costos. También organiza el
equipo, realiza planificación y estima el tiempo de las actividades. En
conclusión, resuelve problemas.

Analista de Requerimientos:
Se encarga del revelamiento de los requerimientos esenciales para el
desarrollo del Software, la documentación de los requerimientos para así el
resto del equipo lo pueda consultar en cualquier momento. Debe ser una
persona con capacidad de abstracción y análisis.

Desarrollador de Software o Programador:


Encargado de la concepción y el diseño, escribe el código, prueba lo que
construye y se encarga de hacer el mantenimiento del código.
Testeador:
Diseña y ejecuta las pruebas, para ello requiere conocer el producto a probar
claro está, estudiar funcionalidad del producto y desarrollar las pruebas que
revelen incidentes críticos. Reporta los incidentes y provee información sobre
la calidad del sistema.

Arquitecto de Software:
Determina las estructuras de la aplicación y las tecnologías con las que se
construirá la aplicación. Está encargado del aseguramiento de la calidad,
mejorar continuamente la arquitectura. Gestiona los requerimientos no
funcionales, asume la dirección técnica para asegurar que todos los aspectos
de la arquitectura se estén desarrollando de manera correcta.

Al arquitecto de software también se le conoce como: 

 Arquitecto de Sistemas
 Arquitecto de la Soluciones
 Arquitecto SOA
 Arquitecto de soluciones orientadas a servicios
 Arquitecto TI

La terminología se mezcla entre todos estos títulos profesionales en los que se


trabaja en la Arquitectura Software.
Ciclo de vida del Desarrollo de Software:
El ciclo de vida del desarrollo de software es la estructura que contiene los
procesos, actividades y tareas relacionadas con el desarrollo y mantenimiento
de un producto de software, abarcando la vida completa del sistema, desde la
definición de los requisitos hasta la finalización de su uso.
Se trata de evitar los costes de rectificar errores de implementación mediante
un método que permita a los programadores adelantarse para mejorar sus
resultados finales.
Metodologías de Desarrollo de Software:
Las metodologías de Desarrollo de Software son un conjunto de técnicas y
métodos organizativos que se aplican para diseñar soluciones de software
informático. El objetivo de las distintas metodologías es el de intentar
organizar los equipos de trabajo para que estos desarrollen las funciones de un
programa de la mejor manera posible.
El Desarrollo de software puede ser un sector especialmente complejo, sobre
todo cuando se trata de grandes aplicativos y equipos de trabajo. Ponerse a
desarrollar un producto sin una metodología clara desembocará en un proceso
aún más complejo, que conducirá a problemas, retrasos, errores y, en
definitiva, un mal resultado final.
El trabajo con una metodología de Desarrollo de Software permite reducir el
nivel de dificultad, organizar las tareas, agilizar el proceso y mejorar el
resultado final de las aplicaciones a desarrollar.

¿Qué tipos de Metodologías de Desarrollo de Software existen?


En la actualidad se pueden diferenciar dos grandes grupos de metodologías de
desarrollo de software: las ágiles y las tradicionales. A continuación, se
explican las características de cada una de ellas.

Metodologías de desarrollo de Software tradicionales:


Las metodologías de Desarrollo de Software tradicionales se caracterizan por
definir total y rígidamente los requisitos al inicio de los proyectos de
Ingeniería de Software. Los ciclos de desarrollo son

poco flexibles y no permiten realizar cambios, al contrario que las


metodologías ágiles; lo que ha propiciado el incremento en el uso de las
segundas.
Las principales metodologías tradicionales o clásicas son:
 Waterfall (cascada): es una metodología en la que las etapas se
organizan de arriba a abajo, de ahí el nombre. Se desarrollan las
diferentes funciones en etapas diferenciadas y obedeciendo un riguroso
orden. Antes de cada etapa se debe revisar el producto para ver si está
listo para pasar a la siguiente fase. Los requisitos y especificaciones
iniciales no están predispuestos para cambiarse, por lo que no se pueden
ver los resultados hasta que el proyecto ya esté bastante avanzado.

 Prototipado: se basa en la construcción de un prototipo de software


que se construye rápidamente para que los usuarios puedan probarlo y
aportar feedback. Así, se puede arreglar lo que está mal e incluir otros
requerimientos que puedan surgir. Es un modelo iterativo que se basa
en el método de prueba y error para comprender las especificidades del
producto.

 Espiral: es una combinación de los dos modelos anteriores, que añade


el concepto de análisis de riesgo. Se divide en cuatro etapas:
planificación, análisis de riesgo, desarrollo de prototipo y evaluación
del cliente. El nombre de esta metodología da nombre a su
funcionamiento, ya que se van procesando las etapas en forma de
espiral. Cuanto más cerca del centro se está, más avanzado está el
proyecto.

 Incremental: en esta metodología de desarrollo de software se va


construyendo el producto final de manera progresiva. En cada etapa
incremental se agrega una nueva funcionalidad, lo que permite ver
resultados de una forma más rápida en comparación con el modelo en
cascada. El software se puede empezar a utilizar incluso antes de que se
complete totalmente y, en general, es mucho más flexible que las demás
metodologías.
 Diseño rápido de aplicaciones (RAD): esta metodología permite
desarrollar software de alta calidad en un corto periodo de tiempo. Los
costes son mucho más altos y el desarrollo más flexible, aunque
requiere una mayor intervención de los usuarios. Por otro lado, el
código puede contener más errores, y sus funciones son limitadas
debido al poco tiempo del que se dispone para desarrollarlas. El
objetivo es iterar el menor número posible de veces para conseguir una
aplicación completa de forma rápida.

Las Metodologías Agiles:


se basan en la metodología incremental, en la que en cada ciclo de desarrollo
se van agregando nuevas funcionalidades a la aplicación final. Sin embargo,
los ciclos son mucho más cortos y rápidos, por lo que se van agregando
pequeñas funcionalidades en lugar de grandes cambios.
Este tipo de metodologías permite construir equipos de trabajo autosuficientes
e independientes que se reúnen cada poco tiempo para poner en común las
novedades.

Las principales metodologías ágiles son:


 Kanban: metodología de trabajo inventada por la empresa de
automóviles Toyota. Consiste en dividir las tareas en porciones
mínimas y organizarlas en un tablero de trabajo dividido en tareas
pendientes, en curso y finalizadas. De esta forma, se crea un flujo de
trabajo muy visual basado en tareas prioritarias e incrementando el
valor del producto.
 Scrum: es también una metodología incremental que divide los
requisitos y tareas de forma similar a Kanban. Se itera sobre bloques de
tiempos cortos y fijos (entre dos y cuatro semanas) para conseguir un
resultado completo en cada iteración. Las etapas son: planificación de la
iteración (planning sprint), ejecución (sprint), reunión diaria (daily
meeting) y demostración
de resultados (sprint review). Cada iteración por estas etapas se
denomina también sprint.

 Lean: está configurado para que pequeños equipos de desarrollo muy


capacitados elaboren cualquier tarea en poco tiempo. Los activos más
importantes son las personas y su compromiso, relegando así a un
segundo plano el tiempo y los costes. El aprendizaje, las reacciones
rápidas y potenciar el equipo son fundamentales.

 Programación Extrema (XP): es una metodología de Desarrollo


de Software basada en las relaciones interpersonales, que se consideran
la clave del éxito. Su principal objetivo es crear un buen ambiente de
trabajo en equipo y que haya un feedback constante del cliente. El
trabajo se basa en 12 conceptos: diseño sencillo, testing, refactorización
y codificación con estándares,
propiedad colectiva del código, programación en parejas, integración
continua, entregas semanales e integridad con el cliente.
RAMAS DEL SOFTWARE:
Los tipos de Software que existen se pueden clasificar en tres grandes
grupos de acuerdo con las funciones que habilitan. De esta forma,
hablamos de Software de Aplicación (dentro del cual encontramos, a su
vez, el software de gestión), software de programación y software de
sistema.

También podría gustarte