Introducción a software Flashcards
(43 cards)
¿Qué es la ingeniería?
La ingeniería es una profesión basada en el uso de conocimientos científicos para la solución de problemas en el mundo real.
¿Qué es software?
Programas de cómputo y su documentación asociada: requerimientos, modelos de diseño y manuales de usuario
¿Qué es ingeniería de software?
Es una disciplina de ingeniería que comprende todos los aspectos de la producción de software desde las etapas iniciales del sistema de especificación hasta el mantenimiento de este después que se libera
La ingeniería de software incluye:
Personas
Proceso
Proyecto
Producto
Que son las ciencias computacionales:
Conciernen a la teoría y fundamentos de cualquier sistema de cómputo (hardware y software)
Qué es ingeniería de sistemas
Concierne a todos los aspectos del desarrollo de sistemas basados en cómputo incluyendo en hardware, software y la ingeniería de procesos
¿Qué hacen los ingenieros de software?
Son los encargados de la especificación del sistema y del diseño de la arquitectura, la integración y la puesta en marcha
Los mitos del software se dividen en 3:
Mitos de la administración
Mitos del cliente
Mitos del profesional
¿Cuáles son los 3 mitos de la administración?
- Tenemos un libro lleno de estándares y procedimientos para elaborar software. ¿No le dará a todo mi personal lo que necesita saber?
- Si nos atrasamos, podemos agregar más programadores y ponernos al corriente (CONCEPTO DE HORDA DE MONGOLES)
- Si decido subcontratar el proyecto de software a un tercero, puedo descansar y dejar que esa compañía lo elabore.
¿Cuáles son los 2 mitos del cliente?
- Para comenzar a escribir programas, es suficiente el enunciado general de los objetivos- podemos entrar en más detalles adelante.
- Los requirimientos del software cambian continuamente, pero el cambio se asimila con facilidad debido a que el software es flexible.
¿Cuáles son los 4 mitos del profesional?
- Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado
- Hasta que no se haga “correr” el programa, no hay manera de evaluar su calidad
- El único producto del trabajo que se entrega en un proyecto exitoso es el programa que funciona
- La ingeniería en software hará que generemos documentación voluminosa e innecesaria e invariablemente nos retrasará.
¿Cuál es la realidad del primer mito de la administración?
Tal vez exista el libro pero, ¿se utiliza?¿es adaptable? ¿saben de su exitencia los trabajadores de software?
¿Cuál es la realidad del segundo mito de la administración?
El desarrollo de software no es un proceso mecánico similar a la manufactura. Pueden agregarse individuos de manera planeada y ordenada.
¿Cuál es la realidad del tercer mito de la administración?
Si una organización no comprende cómo administrar y controlar pryectos de software internamente, de manera invariable tendrán problemas cuando subcontraten software.
¿Cuál es la realidad del primer mito del cliente?
Aunque no siempre es posible tener el enunciado exhaustivo y estable de los requerimientos , un “planteamiento de problemas” ambiguo es una receta para el desastre.
¿Cuál es la realidad del segundo mito del cliente?
El efecto que tiene los cambios varian según la época en la que se introducen
¿Cuál es la realidad de los mitos del profesional?
- Entre 60 y 80% del esfuerzo dedicado al software ocurrirá después de entregarle al cliente
- Las revisiones del software son un filtro de calidad
- Un programa que funciona solo es una parte de la configuración del software que incluye muchos elementos.
- La ingniería de software no consiste en producir documentos, sino en crear un producto de calidad
DÉCADAS 40 Y 50 DEL SOFTWARE
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 DEL SOFTWARE
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”.
Década de los 70
Parnas propone la descomposición modular y el concepto de ocultamiento de información (information 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’s
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++, Objective-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.
En la decada de los 90’s en el software
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.
En la 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”
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.
En la década de los 2010
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
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