Logo cn.artbmxmagazine.com

新兴信息技术和软件开发

目录:

Anonim

摘要

当前,信息技术领域不断变化。变化最大的分支之一是软件工程。如Román(2011)所述,到目前为止,Web已经历了三个阶段的显着发展。第一个是Web 1.0,负责创建和维护要在Web上查询的内容的专业人士可以访问它们。当开发人员开发平台而无需专业知识或技术知识,并创建了第一个社交网络时,人们谈论的是从Web 1.0到所谓的Web 2.0的演变。当前,正在谈论一种称为Web 3.0或语义Web的新发展,它试图使Web上的现有资源有意义。

为了进行这种演进和不断创新所需的技术发展,信息技术工程和软件开发还得到了其他派生领域的支持,例如嵌入式系统,移动和普适计算,人机界面,系统分布式和非关系数据库,下一代网络,软件体系结构,设计模式,软件开发和测试驱动开发的质量,面向服务的软件开发,软件开发模型和方法作为基础融合并创建应用程序和电子设备,以响应人们不断需求的信息和知识。以下介绍了专注于信息技术和软件开发领域的最相关技术。

1.嵌入式系统

据卡尔瓦等。到了。(2012年)嵌入式系统是那些计算机系统,它们是大型系统的一部分,并且对这些系统的运行执行一些必要的要求。集成系统涵盖了广泛的计算机系统,从小型的基于超级计算机的设备到大型复杂的过程监控系统。

绝大多数计算机系统属于嵌入式系统。这些嵌入式系统中的大多数也都被称为实时系统,这意味着诸如响应时间,执行时间之类的实时属性是重要的设计问题。实时嵌入式系统越来越复杂,导致对需求工程,高级设计,早期错误检测,生产率,集成,验证和维护的需求不断增加,有效管理生命周期属性(如可维护性,可移植性和适应性)以及软件开发过程中实现的质量的重要性。

根据Toro和Cardona(2010)的研究,许多流程已被认为是自动化的,主要是通过软件控制,或者失败的是,通过集成嵌入式软件进行操作的设备。这就是为什么越来越多的软件工程致力于改善产品和过程的质量,以确保这些控制和自动化系统不包含错误的原因。

2.移动和普适计算

如今,沉浸在我们生活中的电子设备的使用与日俱增。这部分归因于在办公室,学校,家庭或公共交通中我们环境中互连的不同设备。根据Zapata(2012)的研究,无处不在的技术使个人无论身在何处都能学习,并能利用其社会环境的组成部分来学习。在在线学习环境中,访问资源的方式很重要,这样个人不必担心连接和使用在线平台的学习对象所需的形式或设备。

移动和无处不在的计算的主要特征之一是访问通过连接到Internet的设备访问的资源,而无需考虑我们如何实现计算机或设备之间的通信。随着互连或下一代网络平台和技术的不断改进,这一领域的信息技术知识正变得越来越重要。

移动和无处不在的计算正与分布式系统,嵌入式系统等一起使用,以使称为“物联网”的新技术成为现实:Haller(2010)将物联网定义为数据网络通过唯一的标识符(称为电子产品代码)和解析机制,可以查询现实世界中有关对象的信息。物联网使用语义网络技术赋予对象和从对象获得的数据的含义,并且在谈论对象时,可以理解它们是电子设备。

3.下一代网络

我们当前生活的社会要求越来越多的电子设备连接以访问信息媒体,Internet上可用的资源以及同级设备之间的互连性。这就是为什么我们现在根据Quiroz(2005)所说的信息和知识社会是一个过程,它充满了新技术使社会能够处理大量信息的过程,反过来,在不断进步的良性循环中会产生更多的知识。

ITU-T Y(2014)的组织在一个基于分组的网络中定义了这些网络,该网络允许提供电信服务,并且在其中可以使用多种宽带传输技术,并得到QoS(服务质量)的支持,以及服务相关功能独立于基础传输相关技术的地方。它允许用户不受阻碍地访问网络和服务提供商和/或他们选择的服务。

根据IHS(2006),专门用于提供特定服务(如当前网络)的网络的不同之处在于,NGN是一种多服务网络。下一代网络(NGN)宣布通过单一网络转向多种服务的方法,它基本上是一个在IP平台下统一语音,数据和视频的网络,将其转变为可以提供不同服务的网络。服务,Restrepo(2009)。

4.人机界面

人机交互作用负责研究人机交互作用的关系,力求使其易于理解和使用(Abud,2006)。根据这个定义,可以推断出任何通过硬件或软件与人互动的电子设备。对于Pérez(2014),电子设备用户互动的主要目标是提高效率,以最大程度地减少错误,提高用户满意度,减少使用设备时的挫败感。简而言之,它必须使具有电子设备的人员的例行工作任务更加高效和高效。

对于新技术或平台,编程语言或软件的开发,重要的是要考虑将与最终用户联系的接口,因为与其交互的软件或硬件系统的成败很大程度上取决于它。最终用户。越来越多的软件公司正在研究彼此相关的两个概念,即可用性和可访问性。可用性是指特定用户可以使用产品来实现特定目标的范围,而可访问性是指可以独立于个人自身的限制或使用范围而访问和使用产品或服务的可能性。源自使用上下文Martínez(2014)。只要在特定的使用环境中以有效,高效和满意的方式使用应用程序,该应用程序的可用性就可以履行其主要功能,而可访问性必须使该应用程序的使用成为可能,而无论个人的视觉,运动或某些能力如何。其他。

5.分布式系统和非关系数据库

应用程序必须存储大量信息,这是由于Web的不断发展所致。在社交网络和Web 2.0初期,由于响应速度必须大于中央应用程序服务器所提供的响应速度,因此开始设计基于分布式系统的应用程序。分布式系统现已被广泛使用,尤其是新的BigData概念,据Barranco(2012)所述,它是技术进步的趋势,已为理解和决策的新方法打开了大门。来描述大量数据(结构化,非结构化和半结构化),而这些数据将花费很长时间且成本很高,无法加载到关系数据库中进行分析。

这样,大数据的概念适用于所有无法使用传统流程或工具处理或分析的信息,这就是为什么许多应用程序使用非关系数据库存储信息的原因。

有诸如Hadoop(2009)之类的平台,它是一个参考框架,允许通过使用简单编程模型的计算机组对大型数据集进行分布式处理。换句话说,不需要架构或硬件非常昂贵或最新一代。关于非关系数据库,Hadoop与Cassandra(2008)完美集成,Cassandra是高度可扩展的结构化键值数据仓库分布。在这两个应用程序之间,它们为BigData等分布式应用程序的需求提供支持和横向增长,以使信息可供Facebook等不同公司使用。

6.软件架构

根据Cervantes(2010)的说法,软件体系结构是指系统设计的结构化方式,它是在开发的早期阶段创建的。构造组件或模块以及系统设计的目的是:在性能,安全性,可维护性方面满足质量属性,并作为项目开发的指南。软件体系结构的目标是以有效,结构化和可重用的方式开发大型软件系统。

软件构架是软件工程师集成到他们执行的软件设计中的领域之一。这是因为他们开发项目的经验和时间要求他们具有参考架构设计。图1显示了定义软件体系结构要遵循的步骤:

软件架构设计阶段

图1.软件架构设计的各个阶段,Barraza(2014)。

确定软件体系结构的需求:涉及从需求调查中创建一个模型,该模型将根据预期的质量属性指导体系结构设计。

软件体系结构的设计:定义组成体系结构的组件的结构和职责。

软件体系结构验证:基本上,通过针对当前需求和任何未来需求进行设计来测试体系结构。

在卡马乔等人。(2004年)说,随着软件系统复杂性的增长,由于需求的数量或影响的增加,有必要建立管理这种复杂性的方法。最常见的软件体系结构包括单片应用程序,客户端-服务器体系结构,增强的客户端-服务器体系结构,3层体系结构,N层体系结构和面向服务的体系结构(SOA)。

Los Ingenieros de Software que comienzan a desarrollar plataformas tecnológicas robustas y escalables necesitan implementar diferentes técnicas para mejorar su codificación. Una de ellas es la identificación de problemas repetitivos en la programación por lo que se emplean patrones de diseño de software para dar solución a los problemas que se necesitan solventar.

7. Patrones de Diseño

Los patrones de diseño de software son una parte importante en el diseño de la Arquitectura y en el Desarrollo de software en específico de la codificación de las aplicaciones. Estos patrones tienen su origen en el diseño de sistemas con el paradigma de la Programación Orientada a Objetos y a problemas que estos no pueden resolver y que son muy recurrentes en la programación de software. De acuerdo con Gamma et al. (1995) un patrón de diseño es una descripción de clases y objetos comunicándose entre sí, adaptada para resolver un problema de diseño general en un contexto particular.

Los patrones de diseño ayudan a mantener un código reutilizable y tener mayor control sobre los problemas que son recurrentes, de ahí que sean una solución factible para su implementación en múltiples aplicaciones.

Estos patrones son parte fundamental para el desarrollo de soluciones modulares, mantenibles y escalables. Los patrones de diseño se integran junto al modelado de sistemas con UML para identificar claramente los patrones empleados en cada componente, módulo o clase del sistema que se desarrolle. Este modelado forma parte de la Arquitectura de Software.

Se tienen 3 categorías de patrones de diseño que se aplican dependiendo de los problemas identificados en el desarrollo de software: patrones creacionales, patrones estructurales y patrones de comportamiento.

8. Desarrollo de Software Orientado a Servicios

Este tipo de Arquitectura de Software, es una de las arquitecturas más usadas para el desarrollo de soluciones de software robustas, escalables y de alto desempeño. De acuerdo con Torre et al. (2010) las aplicaciones orientadas a servicios permiten a una aplicación ofrecer su funcionalidad como un conjunto de servicios para que sean consumidos por clientes y se especializan en proporcionar un esquema basado en mensajes de nivel de aplicación. Las características principales de este tipo de aplicaciones es su alta disponibilidad debido en parte a que cada servicio es autónomo y no afecta a la aplicación en su totalidad si llegará a fallar. Los clientes y servicios son autónomos y pueden ser consumidos de manera remota a través de la red. El mantenimiento de sistemas robustos no es complicado ya que se actualizan los servicios o se crean nuevos sin afectar directamente a los demás o la aplicación cliente que los consuma. Según Somerville (2005) existen 3 estándares fundamentales para la comunicación o publicación de servicios Web los cuales son:

  • SOAP (del Ingles Simple Object Access Protocol): este estándar define una organización para el intercambio de datos estructurados entre servicios Web.WSDL (del Ingles Web Services Description Language): este protocolo define cómo representar las interfaces de servicios Web.UDDI (del Ingles Universal Description, Discovery and Integration): este estándar de búsqueda define como se puede organizar la información de descripción de servicios, usada por los solicitantes de los servicios para encontrar servicios.

Para los Ingenieros de Software es importante tener las habilidades necesarias para desarrollar plataformas tecnológicas que implementen la Arquitectura Orientada a Servicios (SOA) que tiene una gran penetración en el mercado de las aplicaciones empresariales, por sus bondades y características de alta disponibilidad.

9. Calidad en el Desarrollo de Software y Desarrollo Orientado a Pruebas

Uno de los propósitos de la Ingeniería de Software según Kendall y Kendall (2005) son el aseguramiento de la calidad de los productos Software diseñando los sistemas en un enfoque modular; documentar el software con las herramientas adecuadas y por último probar, mantener y auditar el Software.

Una de las técnicas más utilizadas e implementadas en los últimos años es el desarrollo de Software dirigido a pruebas (del inglés TDD) donde Blé et al. (2010) propone toda una técnica para disminuir los problemas relacionados con el desarrollo de software tradicional en especial a los métodos tradicionales como el de cascada. Esta técnica se enfoca en 3 puntos principales:

  • Implementación de funciones justas que el cliente necesita y no más.Minimización de número de defectos que llegan al Software en fase de producción.Desarrollar Software modular, altamente reutilizable y preparado para las adecuaciones.

El desarrollo de Software Dirigido por Pruebas es un nuevo paradigma que ofrece la facilidad de pensar en las Pruebas de Software antes que en la codificación, logrando con minimizar lo más posible los errores generados en etapas de desarrollo.

La calidad en el Desarrollo de Software esta intrínsecamente relacionado con la calidad en el proceso de Software para crearlo. A través de la implantación de procesos de desarrollo probados, bien documentados e institucionalizados, una compañía es capaz de incrementar la precisión de sus planificaciones, dando la posibilidad de establecer compromisos con sus clientes que antes no podía o no era capaz de asumir Jiménez (2012).

10. Modelos y Metodologías de Desarrollo de Software

Al hablar de la implementación de un modelo o una metodología para el desarrollo de software estamos haciendo referencia a la calidad de los productos de software. La obtención de un Software con calidad según Fernández, García, & Beltrán (1995), implica la utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba del software que permitan unificar el trabajo, tanto para la labor de desarrollo como para el control de la calidad del software. Esto se debe a que los modelos tienen definidas las áreas de proceso a realizar para llevar a cabo la gestión de proyectos de software con los diferentes roles que intervienen. Existen multitud de modelos para la gestión de la calidad del software y otros sistemas y normas de gestión que se han aplicado sobre estos procesos para su evaluación Martín-Avil (2010).

En este apartado se hablará de la metodología ágil para la administración de proyectos de Software SCRUM y el modelo mexicano para el desarrollo de Software MoProSoft y el modelo internacional CMMI.

La metodología ágil SCRUM de acuerdo con Palacio & Ruata (2011) es aplicado al desarrollo de Software donde se emplea el principio ágil del desarrollo iterativo e incremental llamado comúnmente sprint a cada una de las iteraciones de desarrollo. En la figura 2 se observa el modelo de SCRUM así como los componentes que lo integran.

Metodología SCRUM

Figura 2. Metodología SCRUM.

Ventura & Peñaloza (2006) define a MoProSoft como un modelo de procesos para la industria de software nacional (México), que fomenta la estandarización de su operación a través de la incorporación de las mejores prácticas en gestión e ingeniería de software.

Los beneficios de MoProSoft son los siguientes:

  • Las empresas logran un mayor control sobre su desempeño en el mercado al cubrir el modelo desde áreas de dirección hasta la operación.El costo de personal se reduciría si se enfoca a la educación y a la capacitación sobre un modelo.Las empresas pequeñas, al seguir procesos similares, podrían asociarse con mayor facilidad para afrontar proyectos de mayor envergadura.La exportación de servicios de software de las empresas mexicanas gracias a que MoProSoft considera las prácticas reconocidas en el ámbito internacional.

Cabe señalar que la norma MoProSoft ha ayudado a la industria de software en México a estandarizar procesos y madurar en cada uno de los niveles que tiene los cuales son 5 si no se cuenta el nivel 0.

El modelo Internacional (del Inglés Capability Maturity Model Integration) se ha convertido mundialmente en un requisito para acceder a la exportación de servicios de Software. La norma CMMI-DEV (2010) provee una guía para implementar una estrategia de calidad y mejorar los procesos de una organización que se dedica al desarrollo y/o mantenimiento de software. Dispone de un esquema de certificación creado sobre organismos privados donde el SEI (del Ingles Software Engineering Institute) creo la norma para la estandarización de áreas y procesos para lograr una mejor integración de los desarrollos de las empresas que lo manejan. Al ser una norma Internacional hace más fácil la integración de procesos de una empresa a otra aunque se encuentren en diferentes países o continentes. CMMI tiene 5 niveles los cuales certifica a 4 de ellos.

Conclusión

En este artículo se abordan diferentes tecnologías de la información, metodologías y paradigmas de desarrollo de software y como se complementan entre sí para beneficio de las necesidades que tiene constantemente la sociedad de la información y el conocimiento.

La evolución de nuevas plataformas tecnológicas brinda una oportunidad importante para que diferentes áreas de las Tecnologías de la Información converjan para un fin común que es desarrollar una solución tecnológica robusta, escalable, mantenibles y sobre todo empleando calidad en su proceso desarrollo que se manifiesta en la calidad del producto desarrollado.

Es por ello que los ingenieros, desarrolladores y especialistas en Tecnologías de la Información y Desarrollo de Software deben estar en constante actualización para solventar las necesidades de las empresas, organizaciones o entidades que lo soliciten.

Bibliografía

  • Abud, Ma. Antonieta. (2006).»Diseño de Interfaces Humano-Computadora en Aplicaciones de Software Educativo». Revisado el 19 de agosto de 2014.Barranco, Ricardo. (2012).»¿Qué es BigData?». IT Specialist for Information Management, IBM Software Group México. México D.F. 18 de Junio de 2012. Revisado el 22 de agosto de 2014. http://www.ibm.com/developerworks/ssa/local/im/que-es-big-data.Barraza, Fernando. (2014). «Modelado y Diseño de Arquitectura de Software». Conceptos de Modelado. Revisado 17 de agosto de 2014. http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:s2_conceptosdemodelado.pdf.Blé, Carlos et al. (2010). “Diseño Ágil con TDD” Primer Edición enero de 2010, www.iExpertos.com Licencia Creative Commons. ISBN: 978-1-4452-6471.4.Camacho, Erika. et al. (2004). «Arquitectura de Software». Guía de Estudio. http://prof.usb.ve/lmendoza/Documentos/PS-6116/Guia%20Arquitectura%20v.2.pdf.Cassandra. (2008). “Cassandra Wiki”. Revisado el 22 de agosto de 2014. http://wiki.apache.org/cassandra/FrontPage.Calva, C. A et al. (2012). «Design of a Low Cost Electronic System for Automotive Steering Controlling» International Journal of Computer and Communication Engineering, Vol. 1, No. 4, Noviembre 2012. Revisado el 22 de agosto de 2014. http://www.ijcce.org/papers/81-T0023.pdfCervantes, Humberto. (2010). “Arquitectura de Software”. Un vistazo al ADN de la industria de Software en México. Editorial Software Gurú. México DF. Número. 27. Año 2010, pág.32. ISSN 1870-0888.CMMI-DEV, V1.3 (2010). «Mejora de los procesos para el desarrollo de mejores productos y servicios». CMMI® para Desarrollo, Versión 1.3, Equipo del Producto CMMI. Revisado el día 23 de agosto de 2014.Fernández, Oscar M., García, Delba & Beltrán, Alfa (1995). «Un Enfoque Actual Sobre la Calidad del Software».ACIMED. Revisado el 22 de agosto de 2014. http://eprints.rclis.org/5424/1/aci05395.htmGamma et al., (1995) “Design Patterns. Elements of Reusable Object-Oriented Software”. Editorial: Addison-Wesley. 1995. ISBN: 0-201-63361.Westford, Massachusetts, USA.Hadoop. (2009). “Welcome to Apache™ Hadoop®!”. Revisado el 22 de agosto de 2014. http://hadoop.apache.org/Haller, Stephan. (2010). «The Things in the Internet of Things». SAP Research Center Zurich. Internet of. Things Conference 2010, Tokyo, Japan.IHS. (2006). «Las Redes de la Próxima Generación Comienzan a Transformar las Comunicaciones». IHS Company. Revisado 19 de agosto de 2014. https://www.ihs.com/expertise/thought-leadership.html.Jiménez, Luis. (2012). «El Reto de la Calidad en el Desarrollo de Software (II)». El Blog de Desarrollador de IBM Rational España. Revisado el 22 de agosto de 2014. https://www.ibm.com/developerworks/community/blogs/rationalspain/entry/el_reto_de_la_calidad_en_el_desarrollo_de_software_ii4?lang=en.Kendall, E., Keneth y Kendall, E., Julie (2005) “Análisis y diseño de sistemas” Sexta Edición, Editorial: Pearson Educacion, Mexico 2005 ISBN: 970-26-0577-6. Área: Computación.Martin-Avil, Toni. (2010). «Certificaciones y Normativas de Calidad en Software». Calidad en Software.Martínez, Guillermo M. (2014). «Usabilidad y Accesibilidad en Web». Revisado 19 de Agosto de 2014. http://www.semac.org.mx/archivos/6-11.pdf.Mora, Juan. (2011). «Arquitectura de software para aplicaciones Web». Tesis de Maestría en Ciencias de la Computación. Centro de Investigación y de Estudios Avanzados del Instituto Politécnico Nacional (CINVESTAV), Unidad Zacatenco, Departamento de Computación. México DF. Revisado el 15 de agosto de 2014. http://delta.cs.cinvestav.mx/~pmalvarez/tesis-tahuiton.pdfPérez, Sergio L. (2014). «Interfaces de usuario ». UAM Cuajimalpa. México, DF.Palacio, Juan & Ruata, Claudia. (2011).»Scrum Manager – Gestión de Proyectos». Licencia Creative Communs.Quiroz, Francisco J., (2005). «Sociedad de la información y del conocimiento». Boletín de los Sistemas Nacionales Estadístico y de Información Geográfica. Vol. 1 Numero 1, Mayo – Agosto 2005. Revisado el 19 de agosto de 2014. En línea: http://www.inegi.gob.mx/prod_serv/contenidos/espanol/bvinegi/productos/integracion/especiales/BoletinSNEIG/2005/bolsneig1.pdfRestrepo, Ana M. (2009). “Visión General de las Redes de Próxima Generación (NGN)”. Universidad Pontificia Bolivariana, Escuela de Ingenierías, Facultad de Ingeniería Eléctrica y Electrónica. Medellín, Colombia, 2009.Román, Felipe. (2011). “Extracción de Información Basada en Técnicas de Alineamiento de Ontologías”. Tesis de Maestría en Ciencias en Ciencias de la Computación. Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET). Cuernavaca Morelos a 28 de Octubre de 2011.Somerville, Ian. (2005). “Ingeniería del Software”. Editorial: Pearson Educación SA. Séptima Edición, ISBN: 84-7829-074-5.Torres, Cesar et al. (2010). “Guía de Arquitectura N-Capas Orientada al Dominio con.Net 4.0”. Editorial: Krasis Consulting S.L. España Marzo de 2010. ISBN: 978-84-936696-3-8Toro Alonso y Cardona, Lorena (2010). «Estado del Arte de la Ingeniería del Software en el Ámbito Nacional e Internacional de Acuerdo a Organizaciones que Tratan la Disciplina». Universidad Católica Popular del Risaralda, Facultad de Ciencias Básicas e Ingenierías, Ingeniería de Sistemas y Telecomunicaciones. Pereira, Colombia.UIT-T Y. (2014). «ITU-T’s Definition of NGN». UNION INTERNACIONAL DE TELECOMUNICACIONES.Ventura, Teresa & Peñaloza, Marcela. (2006). «MoProSoft: Modelo de Procesos de Software Hecho en México». Entérate en línea, Internet Cómputo y Telecomunicaciones. Año 5, Número 47, Marzo de 2006.Zapata, Miguel. (2012). «Calidad en entornos ubicuos de aprendizaje». Universidad de Alcalá. RED. Revista de Educación a Distancia, Número 31. ISSN 1578-7680. Revisado el 22 de agosto de 2014. En línea:
新兴信息技术和软件开发