Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Bello Muñoz Edgar Alejandro Ingeniería de Software Definiciones de Ingeniería de Software Alan Davis: La aplicación inteligente de principios probados, técnicas, lenguajes y herramientas para la creación y mantenimiento, dentro de un coste razonable, de software que satisfaga las necesidades de los usuarios Friedrich Bauer: El establecimiento y uso de principios de ingeniería robustos, orientados a obtener económicamente software que sea fiable y funcione eficientemente sobre máquinas reales. Barry Boehm La Ingeniería del Software incluye la aplicación práctica del conocimiento científico en el diseño y construcción de los programas y la documentación requerida para su desarrollo, operación y mantenimiento. Glosario IEEE: El enfoque sistemático para el desarrollo, operación, mantenimiento y eliminación del software, definiendo como software los programas, procedimientos, reglas y documentación, así como los datos de operación de un sistema de cómputo. Software Engineering Institute Esa forma de ingeniería que aplica los principios de la informática y las matemáticas para conseguir soluciones rentables a problemas software. Ian Sommerville La especificación, desarrollo, gestión y evolución de sistemas software. No está limitado por materiales sujetos a leyes físicas o procesos de fabricación manual. Teorías, métodos y herramientas necesarias para desarrollar software. Roger Pressman La Ingeniería de Software: Es una disciplina o área de la informática o ciencia de la computación, que ofrece técnicas y métodos para desarrollar y mantener software de calidad. Definición propia La ingeniería de Software es un conjunto de herramientas y disciplinas empleadas para la construcción y mantenimiento de software de calidad que sea capaz de satisfacer las necesidades de sus usuarios. Bello Muñoz Edgar Alejandro Ingeniería de Software Tipos de memorias RAM (Random Access Memory) Es una memoria que se utiliza para el almacenamiento temporal de instrucciones o de datos. Así mismo, la RAM se conoce como una memoria de escritura y lectura, ya que se lee o escriben datos de esta clase en la memoria. Se destaca por ser una memoria volátil. Finalmente, hay dos tipos que son, RAM dinámica (DRAM) y RAM estática (SRAM). Su capacidad promedio actual es de entre 4 a 16 GB. ROM (Read Only Memory) La memoria ROM o Read Only Memory, es un tipo de memoria que es sólo de lectura, destacando que en la mayoría de los casos no se van a poder modificar ya que la escritura se encuentra prohibida. Esta incorporada a la placa base y cuenta con las instrucciones para dar inicio a la BIOS. Es una memoria de tipo secuencial, así que todos los datos se deben recorrer hasta que se ubique la información que se necesita, lo que la diferencia de la RAM en donde el trabajo es aleatorio y por ende el acceso es específico y directo. SRAM Es una de las memorias que la computadora más usa. La placa base y el disco rígido cuentan con su propia memoria caché, la cual en resumen se emplea para resguardar direcciones distintas que son usadas por la memoria RAM para realizar funciones diversas. En resumen, almacena las ubicaciones en el disco, las cuales son ocupadas por programas que ya fueron ejecutados, para que en un momento posterior en que se inicien, el acceso sea más rápido. Memoria virtual o Swap En las computadoras con un sistema operativo Microsoft Windows o Linux se va a encontrar esta clase de memoria. Es semejante a la caché, pero es creada para ser usada en exclusiva por el sistema operativo. Para Linux se denomina memoria Swap y está situada en una partición distinta del disco, mientras que en Windows es un archivo que está en el interior del sistema operativo. Memoria Flash Se derivan de las siglas EEPROM y son las que permiten que un usuario pueda leer o escribir en posiciones múltiples de una memoria durante una misma operación. Permite en ese sentido una velocidad de funcionamiento superior y marcó un cambio importante para la tecnología al no tener que actuar únicamente en una celda de memoria por cada operación. A grandes rasgos se puede plantear que en la actualidad su tamaño es de 2 a 16 GB, pero hay modelos en los que superan con creces estas cantidades. Bello Muñoz Edgar Alejandro Ingeniería de Software Discos Duros y Discos de Estado Sólido El disco duro es el dispositivo principal donde se almacena toda la información que genera el usuario: los programas instalados, los archivos de música, imagen o vídeo, etcétera. Tradicionalmente ha consistido en discos giratorios provistos de un brazo móvil (hard disk drive o HDD) que buscaban la información. Esta tecnología está siendo reemplazada por las unidades de almacenamiento de estado sólido (SSD), que no tienen partes móviles y que están hechas a base de circuitos electrónicos (chips de memoria NAND Flash). Como ventaja, los discos SSD son mucho más pequeños, ligeros y transfieren de forma más rápida la información. Por eso se han convertido en la opción a la que recurren todos los fabricantes de portátiles, por ejemplo. Eso sí, son más caros que los discos tradicionales. Bello Muñoz Edgar Alejandro Ingeniería de Software Diferencias entre arquitecturas RISC y CISC RISC (Reduced instruction set computing) es una arquitectura que utiliza una unidad central de procesamiento (CPU) que implementa el principio de diseño del procesador de instrucciones simplificadas. El diseño de la arquitectura RISC agiliza y acelera significativamente el procesamiento de datos al minimizar el número de instrucciones almacenadas permanentemente en el microprocesador y se basa más en instrucciones no residentes, es decir, códigos o programas de software. RISC es posiblemente la tecnología de microprocesador más rápida y eficiente disponible en la actualidad. Los chips o microprocesadores RISC aprovechan el hecho de que la mayoría de las instrucciones para los procesos informáticos son relativamente simples y las computadoras están diseñadas para manejar esas instrucciones simples rápidamente. La arquitectura RISC es una mejora de la arquitectura CISC (computación de conjunto de instrucciones complejas) utilizada en los chips Intel Pentium originales. Aunque Intel ha ido integrando lentamente la tecnología RISC en sus chips, todavía están en su mayoría basados en CISC. CISC es un tipo de diseño de microprocesador. La arquitectura CISC contiene un gran conjunto de instrucciones informáticas que van desde muy simples hasta muy complejas y especializadas. Aunque el diseño estaba destinado a calcular instrucciones complejas de la manera más eficiente, más tarde se descubrió que muchas instrucciones pequeñas y cortas podían calcular instrucciones complejas de manera más eficiente. Aquí se enlistan las principales diferencias entre ambas arquitecturas RISC CISC El tamaño del código es grande El tamaño del código es pequeño Una instrucción se ejecuta en un solo ciclo de reloj La instrucción toma más de un ciclo de reloj Una instrucción que cabe en una palabra Las instrucciones son más grandes que el tamaño de una palabra Bello Muñoz Edgar Alejandro Ingeniería de Software Crisis del Software 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. El término se adjudica a F. L. Bauer, aunque previamente había sido utilizado por Edsger Dijkstra. La crisis del software es el resultado de la introducción de la tercera generación del hardware. Es un hecho de que el software que se construye no solamente no satisface los requerimientos ni las necesidades del cliente, sino que además excede los presupuestos y los horarios. En la actualidad, las aplicaciones típicas son muy grandes y complejas para que un individuo las entienda y, por ello, lleva gran tiempo implementar software. El término “crisis del software” fue usado en los primeros días de la ingeniería de software. Se empleó para referirse a losrápidos incrementos de la tecnología en la computación y la complejidad de los problemas a los cuales pudieran enfrentarse. Uno de los principales problemas en el desarrollo de software de hoy en día es que muchos proyectos empiezan la programación tan pronto se definen y concentran mucho de su esfuerzo en la escritura de código. 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. 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. Bello Muñoz Edgar Alejandro Ingeniería de Software 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. Evolución del Software Bello Muñoz Edgar Alejandro Ingeniería de Software Paradigmas de la Ingeniería de Software Definición de Paradigma: Para la Ingeniería de Software el paradigma es una agrupación de métodos, herramientas y procedimientos con el fin de describir un modelo. Paradigmas de la Ingeniería de Software: Cada metodología de desarrollo de software tiene más o menos su propio enfoque para el desarrollo de software. La ingeniería del Software define paradigmas de desarrollo estructurado como base a seguir en un proyecto de Software. Si ninguno de estos paradigmas se adecua al problema por resolver, entonces el desarrollador se verá obligado a combinar los paradigmas o definir uno nuevo. Para resolver los problemas reales, el ingeniero del software debe incorporar una estrategia de desarrollo que acompañe al proceso, métodos y capas de herramientas. Modelo Lineal Secuencial o de Cascada: Es un proceso secuencial de desarrollo en el que los pasos de desarrollo son vistos hacia abajo (como en una cascada de agua) a través de las fases de análisis de las necesidades, el diseño, implantación, pruebas (validación), la integración, y mantenimiento. Modelo de prototipos: El modelo de prototipos permite desarrollar modelos de aplicaciones de software que permiten ver la funcionalidad básica de la misma, sin necesariamente incluir toda la lógica o características del modelo terminado. Bello Muñoz Edgar Alejandro Ingeniería de Software El prototipo permite al cliente evaluar en forma temprana el producto, e interactuar con los diseñadores y desarrolladores para saber si se está cumpliendo con las expectativas y las funcionalidades acordadas. Modelo en espiral: Propuesto por Boehm en 1988 con la finalidad de paliar los inconvenientes del modelo en cascada y adecuar el desarrollo por prototipos a problemas complejos. Este paradigma combina el paradigma de cascada y el de construcción por prototipos, agregando una etapa de "análisis de riesgo". Bello Muñoz Edgar Alejandro Ingeniería de Software RAD. Rapid Application Development: El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de software, que implica el desarrollo iterativo y la construcción de prototipos. El desarrollo rápido de aplicaciones es un término originalmente utilizado para describir un proceso de desarrollo de software introducido por James Martin en 1991. El objetivo clave de este modelo es un rápido desarrollo y entrega de una alta calidad en un sistema de relativamente bajo coste de inversión. Intenta reducir el riesgo inherente del proyecto partiéndolo en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo. Bello Muñoz Edgar Alejandro Ingeniería de Software Tipos de Software Existen diferentes clasificaciones de software, la primera que vamos a ver es el tipo de software según función que cumplen éstos. En esta primera agrupación podemos encontrar: Software de Sistema, Software de Aplicación, Software de Programación y Software Malicioso. Software de Sistema El llamado software de sistema es el que permite que nuestro hardware funcione de forma correcta. Ejemplos de tipos de software de sistema son: ● Microsoft Windows ● Gnu/Linux ● Mac OS ● Android ● iOS ● BlackBerryOS Dentro de esta categoría podemos encontrar también a los controladores o drivers que permiten que el hardware interactúe con el software de forma correcta, y haga que nuestros periféricos funcionen de manera adecuada cuando usas un teclado, llave USB, el monitor, disco duro externo o impresora Wifi. Clasificación del Software de Sistema: ● Sistemas operativos Desktop y Móviles ● Controladores de dispositivos o Drivers ● Servidores de Datos ● Utilidades de Sistema (diagnóstico, optimizaciones para acelerar windows, etc) ● Herramientas de Corrección de Errores Bello Muñoz Edgar Alejandro Ingeniería de Software Software de Aplicación o Utilidad Existe una segunda clase de software llamado software de aplicación, también conocido como software de utilidad, y se trata de las aplicaciones, programas y herramientas que utilizamos activamente de acuerdo a nuestras necesidades. Todas aquellas aplicaciones que usamos a diario como navegador web, cliente de email, suites ofimáticas como Office, programas de diseño gráfico, mensajería instantánea o chat como Skype, visor de fotografías, reproductores multimedia (vídeo y fotografías), un antivirus, antimalware y antispyware, juegos en red, etc. En el caso del móvil el software de aplicación puede ser WhatsApp, Netflix, Slack, Twitter, Facebook, apps de predicción de tiempo, juegos móviles, etc. El software de aplicación en definitiva es el software que fue diseñado para los usuarios finales de los equipos informáticos o móviles. Clases de software de aplicación existentes: ● Aplicaciones de Suites Ofimáticas. ● Aplicaciones de Seguridad (antivirus, antimalware, etc). ● Aplicaciones Educativas ● Programas de Diseño ● Software Médico ● Software Contable ● Software de Inventario ● Software de Arquitectura ● Software Administrativo ● Software de Programación Software de programación El software de programación es una clase de software básica para la informática y el desarrollo de aplicaciones. Las aplicaciones de programación se utilizan para crear más software como el Software de Sistema o de Aplicaciones. Los programadores crean software utilizando diferentes programas como editores de texto, compiladores como GCC, entornos IDE (integrated development enviroment), gestores de versiones como Git, así como software deservidor (ejemplo Nginx) para probar sus desarrollos si es necesario. Esto aplica a casi todos los lenguajes de programación del mundo (C, C++, Python, Ruby, NodeJS, PHP, ASP.NET, etc). Bello Muñoz Edgar Alejandro Ingeniería de Software Gracias al uso de la matemática, la logica y programación, es que los programadores o desarrolladores de software logran crear fenomenales piezas de software. Clasificación de los diferentes tipos de software de programación: Editores de texto: son utilizados por muchos programadores retro para escribir código limpio y sin ataduras a grandes programas. Entornos de Desarrollo Integrado (IDE): son conjuntos de herramientas de programación todo en uno que ayudan a mejorar la productividad en el desarrollo. Depuradores de código: ayudan al programador a depurar y mejorar el código eliminando código basura. Compiladores: que permiten compatibilidad y ejecución del programa en tu sistema operativo. Software Malicioso El software malicioso, también conocido como “Malware” se trata de un tipo de software que en realidad no está en ninguna categoría anterior, sino que tiene su propia categoría de tipo de software pues no es software de sistema, ni de aplicación y menos de programación. Las aplicaciones maliciosas como los virus son instaladas por sus víctimas sin éstas saberlo, afectando tanto a equipos hogareños como a redes corporativas donde generalmente causan daños valuados en millones de dólares ya que se pierden y borran importantes datos de las empresas. Por ello es que el software malicioso está directamente relacionado con crímenes y ciberdelitos. Existen muchas clases de software malicioso englobado bajo el término malware, por ello intentaremos agruparlos ahora para que conozcas cuáles son. Tipos de Software Malicioso que podemos encontrar en nuestros equipos informáticos: ● Virus ● Malware ● Spyware ● Rootkits ● Dialers ● Backdoors ● Troyanos ● Gusanos ● Keyloggers Bello Muñoz Edgar Alejandro Ingeniería de Software Glosario Paradigma Un paradigma es entendido como el conjunto de conceptos, valores, técnicas y procedimientos compartidos por una comunidad científica, en un momento histórico determinado, para definir problemas y buscar soluciones. Para la Ingeniería de Software el paradigma es una agrupación de métodos, herramientas y procedimientos con el fin de describir un modelo. Metodología La metodología, hace referencia al conjunto de procedimientos racionales utilizados para alcanzar el objetivo o la gama de objetivos que rige una investigación científica, una exposición doctrinal o tareas que requieran habilidades, conocimientos o cuidados específicos. Las metodologías de desarrollo de software se utilizan en el ámbito de la programación, entre otros, con el objetivo de trabajar en equipo de manera organizada. Estas metodologías han ido evolucionando a lo largo del tiempo, pasando de ser un mero trámite de organización a ser una base importantísima a la hora de desarrollar software de una manera productiva y eficaz. Diferencia entre metodología y paradigma: Toda metodología de investigación se realiza desde una plataforma conceptual, mientras que un paradigma defina las características del objeto de estudio, en este sentido es como la metodología y el paradigma se relacionan. Software: Se conoce como software, logiciel o soporte lógico al sistema formal de 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. Software de base En terminología informática el software de sistema, denominado también software de base, consiste en un software que sirve para controlar e interactuar con el sistema operativo, proporcionando control sobre el hardware y dando soporte a otros programas; en contraposición del llamado software de aplicación. Software de aplicación Bello Muñoz Edgar Alejandro Ingeniería de Software En informática, un software de aplicación es el término que define cualquier programa que sea instalado en un ordenador con el fin de realizar las tareas que un usuario necesite. Un software de aplicación puede ser un editor de texto, una hoja de cálculo, un reproductor multimedia y otros más.
Compartir