Está en la página 1de 9

República Bolivariana de Venezuela.

Universidad Nacional Experimental de los Llanos Occidental


“Ezequiel Zamora”

PRINCIPIOS DEL SOFTWARE

Prof: Guillermo Certad integrante:


-Moreno Wilder
C.I:27.960.413
Semestre: VI
Carrera: Ing. Informática

DEFINICIÓN DEL SOFTWARE:


El sistema formal de un sistema informático se denomina software o soporte lógico, que incluye
todos los componentes lógicos necesarios para hacer posible la realización de tareas específicas,
en lugar de componentes físicos denominados hardware. La interacción entre el software y el
hardware hace que la computadora (u otro dispositivo) sea ejecutable, es decir, el software emite
instrucciones ejecutadas por el hardware para permitir su ejecución. Los componentes lógicos
incluyen aplicaciones informáticas, como procesadores de texto, que permiten a los usuarios
realizar todas las tareas relacionadas con la edición de texto; el llamado software de sistema,
como los sistemas operativos, que básicamente permiten que otros programas se ejecuten
normalmente, y también promueven componentes físicos y otras aplicaciones y proporcionar una
interfaz con el usuario.

La mayoría del software está escrito en lenguajes de programación de alto nivel porque son más
fáciles y eficientes para los programadores, porque están más cerca de los lenguajes naturales que
de los lenguajes de máquina. La traducción avanzada utiliza un compilador o un intérprete, o una
combinación de ambos. El software también se puede escribir en lenguaje ensamblador, que es de
bajo nivel y se asemeja mucho a las instrucciones del lenguaje máquina; use ensamblador para
traducirlo al lenguaje máquina. En cuanto a este concepto, el inglés del software es el más
difundido, especialmente en términos técnicos, y el sinónimo "lógico", derivado de la palabra
francesa logicial, se utiliza principalmente en países y regiones afectados por Francia.

CARACTERISITICAS DEL SOFTWARE:


El software tiene tres características principales:

1) Características operativas.

2) Características de transición.

3) Características de revisión.

Características operativas del Software:


Son factores de funcionalidad, es como se presenta el software, es la «parte exterior» del mismo.
Incluye aspectos como:

Corrección: El software que estamos haciendo debe satisfacer todas las especificaciones
establecidas por el cliente.

Usabilidad / Facilidad de aprendizaje: Debe ser sencillo de aprender. Integridad: Un software de


calidad no debe tener efectos secundarios.

Fiabilidad: El producto de software no debería tener ningún defecto. No sólo esto, no debe fallar
mientras la ejecución.

Eficiencia: Forma en que el software utiliza los recursos disponibles. El software debe hacer un
uso eficaz del espacio de almacenamiento y el comando ejecutar según los requisitos de tiempo
deseados.
Seguridad: Se deben tomar medidas apropiadas para mantener los datos a salvo de las amenazas
externas Características de transición del Software.

Características de transición del software:


Interoperabilidad: Es la capacidad para el intercambio de información con otras aplicaciones.

Reutilización: Es poder utilizar el código de software con algunas modificaciones para diferentes
propósitos.

Portabilidad: Capacidad para llevar a cabo las mismas funciones en todos los entornos y
plataformas.

Características de revisión de Software:


Son los factores de ingeniería, la calidad interior del software como la eficiencia, la documentación
y la estructura. Incluye aspectos como:

Capacidad de mantenimiento: El mantenimiento del software debe ser fácil para cualquier tipo de
usuario.

Flexibilidad: Los cambios en el software debe ser fácil de hacer.

Extensibilidad: Debe ser fácil de aumentar nuevas funciones.

Escalabilidad: Debe ser muy fácil de actualizar para más trabajo.

Capacidad de prueba: Prueba del software debe ser fácil.

Modularidad: Debe estar compuesto por unidades y módulos independientes entre sí.

EVOLUCIÓN DEL SOFTWARE HACIA LA INGENIERÍA:


A continuación, resumiremos la evolución de la Ingeniería del Software desde su nacimiento hasta
la actualidad; que según Barry Boehm, ha seguido un proceso de tesis, antítesis y síntesis que
explicaría las diferentes propuestas y contrapropuestas que se han sucedido a lo largo de estas
décadas; señalando las nuevas demandas que se han producido en la formación de los
profesionales.

Décadas de los 40 y 50: en estas décadas el coste del hardware era tremendamente superior al del
software, que tenía por lo tanto una importancia relativa mucho menor. Se consideraba además
que el software se podía desarrollar de la misma forma que se desarrolla el hardware; y, de hecho,
los primeros ingenieros que se ocupaban del software eran los mismos que desarrollaban el
hardware.

Década de los 60: a pesar de importantes éxitos como las misiones de la NASA, se empieza a hacer
evidente que el software se diferencia demasiado del hardware para poder ser tratado de la
misma manera. Es la época de los famosos “códigos espagueti” (muy difíciles de entender incluso
por quien lo escribía) y la aparición de “héroes” que después de varias noches sin dormir
conseguían arreglar a último minuto el software para cumplir los plazos marcados. En el
NASA/IEEE Software Engineering Workshop de 1966; y las conferencias de la OTAN en 1968 y
1969, se analizó la “crisis del software”, y se plantearon ideas fundamentales como “reutilización”
o “arquitectura software”. En 1968 aparece también el artículo de Dijkstra “Go To Statement
Considered Harmful” que impulsó la programación estructurada y en el congreso IFIP se cita por
primera vez el concepto de “factoría o fábrica de software”. Sin embargo, la formación de los
profesionales sigue siendo ad-hoc y más centrada en los sistemas y en la programación, que en
una verdadera Ingeniería del Software.

Década de los 70: en esta década las organizaciones empezaron a comprobar que los costes del
software superaban a los del hardware. Parnas propone la descomposición modular y el concepto
de ocultamiento de información (información hiding), Chen el modelo E/R y Royce el modelo de
ciclo de vida en cascada. La formación de los profesionales de la Ingeniería del Software se centra
entonces en las metodologías estructuradas (Warnier, Jackson, Myers, Yourdon y Constantine,
Gane y Sarson, Demarco, SSADM, MERISE, etc.) que supusieron un avance importante en el
análisis y diseño de software.

Década de los 80: Leo Osterweil impartió una charla invitada en la International Conference on
Software Engineering (ICSE) cuyo título fue “Software processes are software too” que supuso el
inicio de una nueva forma de abordar los procesos software. Los problemas de no conformidad de
proceso se intentaron resolver con estándares como el DoD-STD-2167 o el MILSTD- 1521B por
parte del Departamento de Defensa de EEUU que, con el fin de mejorar la calidad de sus sistemas
y evaluar a sus proveedores, encargan al entonces recientemente creado Software Engineering
Institute (SEI) de la Universidad Carnegie Mellon, un modelo de madurez de la capacidad software
(SW-CMM) que desarrollaría Watts Humphrey. En cuanto a la tecnología, se automatiza parte del
ciclo de vida del software, apareciendo la conocida como primera generación de herramientas
CASE, y los lenguajes de programación orientados a objetos que, si bien empezaron a finales de la
década de los sesenta con el lenguaje Simula y en los setenta con Smalltalk, se difundieron sobre
todo en la década de los ochenta con la aparición de C++, Objetivo-C y Eiffel. La formación de los
profesionales del software requiere entonces el manejo de las herramientas CASE, comprender el
gran cambio de paradigma que supone la orientación a objetos, y adquirir conocimientos sobre los
procesos software y los modelos de madurez.

Década de los 90: durante la cual se desarrollan los modelos relacionados con la mejora de
procesos software, como Ideal, TSP o PSP, y las normas y estándares de calidad como la ISO 9126,
ISO 12207, ISO 9000-3, etc. También durante esta década se consolida la orientación a objetos
(OO) como aproximación para el desarrollo de sistemas informáticos, apareciendo más de cien
metodologías, que terminan dando lugar a la aparición del Lenguaje de Modelado Unificado (UML)
y el Proceso Unificado (UP). También surgen en los noventa y la década siguiente multitud de
técnicas y conocimientos sobre la construcción de sistemas orientados a objetos: patrones,
heurísticas, refactorizaciones, etc. Lo que supone una profundización en la formación de los
profesionales que deben adquirir todas estas “buenas prácticas” para la correcta construcción del
software. Por otro lado, los problemas del año 2000 y del Euro, que agudizaron aún más los
clásicos problemas del mantenimiento de software, hicieron plantearse a muchas organizaciones
la conveniencia de externalizar (outsourcing) sus procesos de mantenimiento, impulsando la
creación por parte de muchas empresas de centros y unidades dedicadas específicamente a la
externalización. La gestión y el desarrollo de software externalizado demanda conocimientos y
habilidades especializados a los Ingenieros de Software.

Década de los 2000: Se firma el “Manifiesto Ágil” como intento de simplificar la complejidad de las
metodologías existentes y en respuesta a los modelos “pesados” tipo CMM, y surgen, los métodos
híbridos, que buscan un equilibrio, combinando la adaptabilidad de los ágiles con la formalidad y
documentación de los métodos rigurosos. Actualmente vivimos el auge de este tipo de métodos,
especialmente de Scrum, y ha sido necesario reciclar a los Ingenieros de Software en la “cultura” y
técnicas ágiles.

Cabe destacar también que en esta década se difunden el Desarrollo Software Dirigido por
Modelos (DSDM) y las líneas o familias de productos software, que suponen un esfuerzo al
Ingeniero del Software al trabajar con modelos de alto nivel como elemento principal del
desarrollo y mantenimiento de software. Otro tema relevante es el Desarrollo Distribuido de
Software (especialmente cuando los equipos se distribuyen más allá de las fronteras de una
nación, recibiendo el nombre de Desarrollo Global de Software (GSD)), que requiere una
formación mucho más amplia del Ingeniero de Software, para resolver problemas como:
comunicación inadecuada, diversidad cultural, gestión del conocimiento o diferencia horaria, entre
otros. Por último, en esta década queremos resaltar la Ingeniería del Software Empírica (ESE) y la
Ingeniería del Software Basada en Evidencias (EBSE), que sentaron las bases para la
experimentación y rigurosidad en Ingeniería del Software.

Década de los 2010: En esta década, además de afianzarse las líneas descritas en las décadas
anteriores, estamos asistiendo a una mayor integración entre la Ingeniería del Software y la
Ingeniería de Sistemas -destacando el papel de los requisitos no funcionales y, sobre todo, de la
seguridad-; la importancia de la “Ciencia, Gestión e Ingeniería de los Servicios” que requiere un
enfoque interdisciplinar (informática, marketing, gestión empresarial, ciencias cognitivas, derecho,
etc.) a la hora de abordar el diseño de los servicios; la necesidad de adaptar los métodos de
desarrollo de software para trabajar en un “mundo abierto” -crucial cuando nos enfrentamos a
dominios tales como la inteligencia ambiental, las aplicaciones conscientes del contexto, y la
computación pervasiva-; los “Sistemas de Sistemas Intensivos en Software” (SISOS) con decenas de
millones de líneas de código, decenas de interfaces externas, proveedores “competitivos”,
jerarquías complejas, etc.

También estamos viendo ya la implantación de la “Ingeniería del Software Continua”, y su


correspondiente tecnología y “filosofía” “DevOps”, que logran reducir el tiempo entre que se
compromete un cambio en el sistema y que se ponga en producción normal; lo que requiere un
cambio cultural para aceptar la responsabilidad compartida (entre desarrollo y operación) de
entregar software de alta calidad al usuario final. Además de necesitar aprender nuevos conceptos
(p.ej. infraestructura como código o microsistemas) es necesario que el desarrollador amplíe su
visión con elementos de operación.
PROGRESO DE LAS TÉCNICAS EN LA CONSTRUCCIÓN DE SOFTWARE.
En ingeniería de software, el proceso de desarrollo de software es el proceso de dividir el trabajo
de desarrollo de software en etapas para mejorar el diseño, la gestión de productos y la gestión de
proyectos. También se conoce como el ciclo de vida del desarrollo de software. El enfoque puede
incluir la predefinición de productos y artefactos específicos creados y completados por el equipo
del proyecto para desarrollar o mantener la aplicación. La mayoría de los procesos de desarrollo
modernos pueden describirse aproximadamente como ágiles. Otros métodos incluyen el
desarrollo en cascada, la creación de prototipos, el desarrollo iterativo e incremental, el desarrollo
en espiral, el desarrollo rápido de aplicaciones y la programación extrema.

Técnicas de desarrollo de software:  Técnicas de recolección de datos: La recolección de datos se


refiere al uso de varias técnicas y herramientas que los analistas pueden usar para desarrollar
sistemas de información. Todas estas herramientas se aplicarán en momentos específicos con el
fin de encontrar información útil para investigaciones conjuntas. Hay dos tipos de recogida de
datos: es información que es un registro escrito que se obtiene directamente de la realidad, y
también del propio contacto, sin pasar por ningún proceso con la realidad, pero preparado de
antemano. Son recogidos, muchas veces el investigador recoge para sí mismo, y son procesados
por su contacto con la realidad. Investigadores.

Técnicas de recolección de datos: Es una técnica que consiste en observar atentamente el fenómeno,
hecho o caso, tomar información y registrarla para su posterior análisis. La observación es un elemento
fundamental de todo proceso investigativo; en ella se apoya el investigador para obtener el mayor
número de datos. Gran parte del acervo de conocimientos que constituye la ciencia ha sido lograda
mediante la observación.

CRISIS DEL SOFTWARE: CAUSAS, SÍNTOMAS, CONSECUENCIAS,


PLANTEAMIENTO DE SOLUCIONES.
Crisis:

La crisis del software es un término informático acuñado en 1968, en la primera conferencia


organizada por la OTAN sobre desarrollo de software, de la cual nació formalmente la rama de la
Ingeniería de Software. La crisis del software es el resultado de la introducción de la tercera
generación del hardware.

De hecho, el software que se creó no solo no cumplió con los requisitos y necesidades del cliente,
sino que también excedió el presupuesto y el cronograma. Las aplicaciones típicas de hoy en día
son demasiado grandes y complejas para que las entienda una persona, por lo que la
implementación del software lleva mucho tiempo. El término "crisis del software" se utilizó en las
primeras etapas de la ingeniería del software. Se utiliza para referirse al rápido crecimiento de las
tecnologías informáticas y la complejidad de los problemas que pueden enfrentar. Uno de los
principales problemas con el desarrollo de software hoy en día es que muchos proyectos
comienzan a programarse tan pronto como se completan. Definir y centrar la mayor parte de sus
esfuerzos en escribir código
Síntomas: Algunos “síntomas” que indican que el software se encuentra en un periodo de crisis
son: Baja calidad del software, tiempo y presupuesto excedido, confiabilidad cuestionable, altos
requerimientos de personal para desarrollo y mantenimiento.

Hay varias razones que pueden ser propuestas como causa de la crisis, todas tienen en común que
surgen por el método de valorar los avances científicos y el mecanismo actual de financiación de la
actividad científica.

Causas: Las causas de la crisis del software fueron vinculadas a la complejidad en general del
proceso de software y a la relativa madurez de la ingeniería de software como una profesión.

La crisis se caracterizó por los siguientes problemas:

 Funcionalidad incorrecta.
 Desarrollo y mantenimiento inadecuados.
 Insatisfacción de la demanda.
 Imprecisión en la planificación del proyecto y estimación de los costos.
 Baja calidad del software.
 Dificultad de mantenimiento de programas con un diseño poco estructurado, difícil y
costoso.
 Por otra parte, se exige que el software sea eficaz y barato tanto en el desarrollo como en
la compra.
 Carencia de información sobre qué realizamos y cómo.
 Insatisfacción de clientes y usuarios.
 Calidad sospechosa.

Donde las potenciales causas son:

 Carácter lógico del software.


 Formación profesional.
 Entrenamiento y actualización.
 Resistencia al cambio.

Muchas de las causas de la crisis del software se pueden encontrar como una mitología
que surge durante los primeros años del desarrollo del software. Los mitos son actitudes
erróneas que han causado problemas en el desarrollo de software. Algunos de los mitos
más comunes son:

 Basta con tener estándares y procedimientos.


 Basta con la tecnología de punta.
 Si estoy atrasado, pongo más gente y me pongo al día.
 Hay que partir programando inmediatamente.
 Los cambios se acomodan fácilmente.
 El código es el único producto
La solución para finalizar la crisis del software es brindar un enfoque ingenieril, es decir, un
enfoque formal de resolución de problemas.

DEFINICIÓN DE LA INGENIERÍA DEL SOFTWARE

La ingeniería de software es una disciplina que consiste en un conjunto de métodos,


herramientas y técnicas para desarrollar programas informáticos (software).

Esta disciplina va más allá de las actividades de programación, que son los pilares
fundamentales de la creación de aplicaciones. Un ingeniero de software se encarga de
toda la gestión de un proyecto para que el desarrollo se lleve a cabo en un plazo
determinado y dentro de un presupuesto planificado.

Por tanto, la ingeniería del software incluye el análisis preliminar de la situación, el diseño
del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto
funcionamiento y la implementación del sistema.

OBJETIVOS DE LA INGENIERÍA DEL SOFTWARE

Los objetivos de la ingeniería de software son muy diversos, pero podemos destacar los
siguientes más importantes:

 Crear programas informáticos que satisfagan las necesidades de la sociedad y empresas.


 Guiar y coordinar el desarrollo de una programación difícil.
 Intervenir en el ciclo de vida de un producto.
 Estimar los costos y el plazo de ejecución de un proyecto.

DISCIPLINAS QUE COMPONEN LA INGENIERÍA DEL SOFTWARE.

 Ingeniería de la Computación. 1.1. Algoritmos


 Ciencias de la Computación.
 Fundamentos de la Programación.
 Ergonomía del Software.
 Procesamiento Léxico.
 Ingeniería de Sistemas.
 Identificación de requerimientos.
 Gestión de Calidad.
 Métodos cuantitativos.
 Gestión.
 Matemáticas.
 Gestión de Proyectos.
FUNDAMENTOS Y TÉCNICAS DE APOYO A LA INGENIERÍA DEL SOFTWARE.
 Conocer los procesos del ciclo de vida del software y sus diferentes formas de organización
en distintos modelos del ciclo de vida.
 Conocer los conceptos y actividades fundamentales de la ingeniería de requisitos, y ser
consciente de la importancia que la ingeniería de requisitos tiene en el desarrollo
y mantenimiento de software.
 Conocer los conceptos fundamentales de sistemas de información.
 Conocer los conceptos, técnicas y diagramas básicos del paradigma de desarrollo
estructurado: desde el análisis a la prueba y el despliegue.
 Conocer un modelo de proceso de aplicación del paradigma estructurado, que incluya el
proceso de análisis y diseño estructurado, heurísticas de transición entre ambos, y
estrategias de prueba.
 Conocer qué es un método (o metodología) de desarrollo de software, y en concreto,
conocer Métrica 3, la Metodología de Planificación y Desarrollo de Sistemas de
Información de la Administración española.
 Conocer las posibilidades que ofrece la reutilización del software en todos los niveles del
desarrollo.
 Conocer el concepto de prototipo y sus diferentes tipos.
 Conocer algunos estándares internacionales en ingeniería del software.

También podría gustarte