Logo en.artbmxmagazine.com

Emerging information technologies and software development

Table of contents:

Anonim

Summary

At present there are constant changes in the field of Information Technology; one of the branches that has the most changes is Software Engineering. As described by Román (2011) the Web has evolved significantly through 3 stages so far. The first was Web 1.0, which were accessible to specialized people who were in charge of creating and maintaining the content to be consulted on the Web. When platforms were developed for anyone to create Web content without specialized or technical knowledge and the first social networks were created, there was talk of the evolution from Web 1.0 to the so-called Web 2.0. Currently there is talk of a new evolution called Web 3.0 or Semantic Web that tries to give meaning to existing resources on the Web.

To carry out the technological developments that are required in this evolution and constant innovation, Information Technology Engineering and Software Development are supported by other derived areas such as Embedded Systems, Mobile and Ubiquitous Computing, Human-Computer Interfaces, Systems Distributed and Non-Relational Databases, Next-Generation Networks, Software Architecture, Design Patterns, Quality in Software Development and Test-Driven Development, Service-Oriented Software Development, Software Development Models and Methodologies as the basis for converge and create the applications and electronic devices necessary to respond to the constant demand for information and knowledge that people require.The most relevant technologies that focus on the area of ​​Information Technology and Software Development are addressed below.

1. Embedded Systems

According to Calva et. to the. (2012) embedded systems are those computer systems that are part of larger systems and that carry out some of the necessary requirements for the operation of these systems. Integrated systems cover a wide range of computer systems from small ultra computer-based devices to large complex process monitoring and control systems.

The vast majority of computer systems belong to embedded systems. Most of these embedded systems are also characterized as real-time systems, which means that real-time properties, such as response time, execution time, are significant design issues. The increasing complexity of real-time embedded systems leads to increasing demand for requirements engineering, high-level design, early error detection, productivity, integration, verification and maintenance, increasing the importance of efficient management of life cycle properties such as maintainability, portability and adaptability, as well as the quality implemented in software development processes.

According to Toro and Cardona (2010), a number of processes have been considered to be automated, mostly through the control of software or, failing that, by devices that integrate embedded software for their manipulation. That is why more and more software engineering is working on improving the quality of products and processes to ensure that these control and automation systems do not contain errors.

2. Mobile and Ubiquitous Computing

Nowadays the use of electronic devices immersed in our lives has an increasing relevance. This is due in part to the different devices that are interconnected in our environment whether in the office, school, home, or in public transport. According to Zapata (2012), Ubiquitous technology allows individuals to learn wherever they are, and to do so with the components of their social environment. In online learning environments it is important to access resources in such a way that individuals do not have to worry about the form or devices that are required to connect and consume the learning objects of the online platforms.

One of the main characteristics of mobile and ubiquitous computing is to access the resources that are accessed through devices connected to the internet without even thinking about how we are achieving communication between the computers or devices. This area of ​​knowledge of Information Technology is gaining more and more importance as platforms and technologies for interconnection or next-generation networks are continually being improved.

Mobile and ubiquitous computing is being used together with distributed systems, embedded systems, among others, to make a new technological concept a reality called: Internet of Things (from the English Internet of Things) where Haller (2010) defines as a data network that allows information about objects in the real world to be consulted by means of a unique identifier called the Electronic Product Code and a resolution mechanism. The Internet of Things uses semantic web techniques to give meaning to objects and data obtained from them, and when talking about objects, it is understood that they are electronic devices.

3. Next Generation Networks

The society in which we currently live demands more and more connectivity of electronic devices to access the information media, resources available on the Internet, as well as interconnectivity between their peers. That is why we now speak of the information and knowledge society according to Quiroz (2005) is the process that feeds itself where new technologies empower society to handle large volumes of information, which in turn, generate more knowledge in an ascending virtuous cycle of progress.

The ITU-T Y (2014) organization defines these networks in a packet-based network that allows the provision of telecommunication services and in which multiple broadband transport technologies can be used, supported by QoS (Quality of Service), and where the service-related functions are independent of the underlying transport-related technologies. It allows users unhindered access to networks and service providers and / or services of their choice.

According to IHS (2006) the difference of the networks specialized in providing a specific service like the current ones, the NGN are a multi-service network. Next-generation networks (NGN) announce the move to the approach of many services through a single network, it is basically a network that unifies voice, data and video under the IP platform, turning it into a network in which it is possible to provide different services, Restrepo (2009).

4. Human Computer Interfaces

Human-Computer interaction is in charge of studying the relationship of the interaction between Man and computers, seeking to make it understandable and easy to use according to Abud (2006). With this definition it is inferred that any electronic device that interacts with a human either through Hardware or Software. For Pérez (2014) the primary objective of the interaction of users of electronic devices is efficient is to minimize errors, increase user satisfaction, reduce frustration regarding the use of the device. In short, it must make routine and work tasks of people with electronic devices more efficient and productive.

For the development of new technologies or platforms, programming languages ​​or software, it is important to take into account the Interfaces that will be in contact with the end users since the success or failure of the software or hardware system that interacts with it depends largely on it. the end user. More and more software companies are looking at two concepts that are related to each other which are usability and accessibility. Usability refers to the extent to which a product can be used by specific users to achieve specific goals, and accessibility is the possibility that a product or service can be accessed and used independently of the individual's own limitations or the limitations. derived from the context of use Martínez (2014).The usability in an application fulfills its main function as long as it is used effectively, efficiently and satisfactorily in a specific context of use and accessibility must make it possible to use that application regardless of the different capacities of the individual, whether visual, motor or some other.

5. Distributed Systems and Non-Relational Databases

Applications have to store a vast amount of information, this is due to the constant evolution of the Web. At the beginning of social networks and Web 2.0, applications based on Distributed systems began to be designed since the response speed must be greater than that offered by a central application server. Distributed systems are now widely used, especially by the new BigData concept, which according to Barranco (2012) is the trend in the advancement of technology that has opened the doors to a new approach to understanding and decision-making, which is used to describe huge amounts of data (structured, unstructured, and semi-structured) that would take too long and costly to load into a relational database for analysis.

In such a way, the concept of Big Data applies to all information that cannot be processed or analyzed using traditional processes or tools, which is why many applications use Non-Relational Databases to store information.

There are platforms such as Hadoop (2009), it is a reference framework that allows the distributed processing of large data sets through groups of computers that use simple programming models. In other words, it does not require that the architecture or hardware be very expensive or of the latest generation. Regarding non-relational databases, Hadoop integrates perfectly with Cassandra (2008), which is a highly scalable and structured key-value data warehouse distribution. Between the two applications they provide support and horizontal growth to the needs of distributed applications such as BigData to make the information available to different companies such as Facebook among others.

6. Software Architecture

According to Cervantes (2010), Software Architecture refers to the way in which the design of a system is structured, it is created in the early stages of development. The purpose of structuring the components or modules as well as the design of the system has the purposes of: satisfying quality attributes in terms of performance, safety, maintainability, and serving as a guide in the project development. The objective of software architecture is to develop large software systems in an efficient, structured and reusable manner.

Software Architecture is one of the areas that Software Engineers integrate into the software designs they carry out. This is because the experience and time they have developed projects require them to have a reference architectural design. Figure 1 shows the steps to follow to define a Software Architecture:

Stages of Software Architecture Design

Figure 1. Stages in the design of a Software architecture, Barraza (2014).

Determine the requirements of the Software Architecture: involves creating a model from the requirements survey that will guide the architecture design based on expected quality attributes.

Design of the Software Architecture: define the structure and responsibilities of the components that will comprise the Architecture.

Software Architecture Validation: basically the architecture is tested by going through the design against current requirements and any future requirements.

In Camacho et al. (2004), says that as software systems grow in complexity, either due to the number of requirements or their impact, it is necessary to establish means to manage this complexity. The most common Software Architectures range from Monolithic Applications, Client-Server Architecture, Enhanced Client-Server Architecture, 3-tier Architecture, N-tier Architecture, and Service Oriented Architecture (SOA).

Software Engineers beginning to develop robust and scalable technology platforms need to implement different techniques to improve their coding. One of them is the identification of repetitive problems in programming, so software design patterns are used to solve the problems that need to be solved.

7. Design Patterns

The software design patterns are an important part in the design of the Architecture and in the Development of software specifically of the coding of the applications. These patterns have their origin in the design of systems with the paradigm of Object Oriented Programming and problems that they cannot solve and that are very recurrent in software programming. According to Gamma et al. (1995) a design pattern is a description of classes and objects communicating with each other, adapted to solve a general design problem in a particular context.

Design patterns help maintain reusable code and have greater control over recurring problems, hence they are a feasible solution for implementation in multiple applications.

These patterns are a fundamental part for the development of modular, maintainable and scalable solutions. Design patterns are integrated with UML systems modeling to clearly identify the patterns used in each component, module, or class of the system that is developed. This modeling is part of the Software Architecture.

There are 3 categories of design patterns that are applied depending on the problems identified in software development: creational patterns, structural patterns and behavior patterns.

8. Service Oriented Software Development

This type of Software Architecture is one of the most used architectures for the development of robust, scalable and high-performance software solutions. According to Torre et al. (2010) service-oriented applications allow an application to offer its functionality as a set of services to be consumed by clients and they specialize in providing a schema based on application-level messages. The main characteristics of this type of application is its high availability due in part to the fact that each service is autonomous and does not affect the application in its entirety if it fails. Clients and services are autonomous and can be consumed remotely over the network.Maintaining robust systems is not complicated as services are updated or new ones are created without directly affecting others or the client application that consumes them. According to Somerville (2005) there are 3 fundamental standards for the communication or publication of Web services which are:

  • SOAP (Simple Object Access Protocol): this standard defines an organization for the exchange of structured data between Web services.WSDL (Web Services Description Language): this protocol defines how to represent Web services interfaces.UDDI (English Universal Description, Discovery and Integration): This search standard defines how service description information, used by service requesters to find services, can be organized.

For Software Engineers, it is important to have the necessary skills to develop technology platforms that implement Service Oriented Architecture (SOA), which has a great penetration in the business applications market, due to its benefits and high availability characteristics.

9. Quality in Software Development and Test Oriented Development

One of the purposes of Software Engineering according to Kendall and Kendall (2005) is to assure the quality of Software products by designing systems in a modular approach; document the software with the appropriate tools and lastly test, maintain and audit the software.

One of the techniques most used and implemented in recent years is the development of Software directed to tests (TDD) where Blé et al. (2010) proposes a whole technique to reduce the problems related to the development of traditional software, especially traditional methods such as waterfall. This technique focuses on 3 main points:

  • Implementation of just functions that the client needs and no more. Minimization of the number of defects that reach the Software in the production phase. Develop modular, highly reusable software prepared for adjustments.

The development of Test Driven Software is a new paradigm that offers the ease of thinking about Software Testing before coding, managing to minimize errors generated in development stages as much as possible.

Quality in Software Development is intrinsically related to quality in the Software process to create it. Through the implementation of proven, well-documented and institutionalized development processes, a company is able to increase the precision of its planning, giving the possibility of establishing commitments with its clients that Jiménez could not or was not able to assume before (2012).

10. Models and Methodologies of Software Development

When talking about the implementation of a model or a methodology for software development, we are referring to the quality of software products. Obtaining quality Software according to Fernández, García, & Beltrán (1995), implies the use of standard methodologies or procedures for the analysis, design, programming and testing of the software that allow unifying the work, both for development work and for software quality control. This is because the models have defined the process areas to carry out to carry out the management of software projects with the different roles involved. There are many models for software quality management and other management systems and standards that have been applied to these processes for their evaluation Martín-Avil (2010).

In this section we will talk about the agile methodology for the management of Software SCRUM projects and the Mexican model for the development of Software MoProSoft and the international model CMMI.

The agile SCRUM methodology according to Palacio & Ruata (2011) is applied to Software development where the agile principle of iterative and incremental development is used commonly called sprint to each of the development iterations. Figure 2 shows the SCRUM model as well as the components that comprise it.

SCRUM methodology

Figure 2. SCRUM Methodology.

Ventura & Peñaloza (2006) defines MoProSoft as a process model for the national software industry (Mexico), which encourages the standardization of its operation through the incorporation of best practices in software management and engineering.

The benefits of MoProSoft are as follows:

  • Companies achieve greater control over their performance in the market by covering the model from areas of management to operation. The cost of personnel would be reduced if it focuses on education and training on a model. Small companies, by following processes Similar, could be associated more easily to face larger projects. The export of software services of Mexican companies thanks to MoProSoft considering the internationally recognized practices.

It should be noted that the MoProSoft standard has helped the software industry in Mexico to standardize processes and mature in each of its levels, which are 5 if level 0 is not counted.

The International model (from English Capability Maturity Model Integration) has become worldwide a requirement to access the export of Software services. The CMMI-DEV (2010) standard provides a guide to implement a quality strategy and improve the processes of an organization that is dedicated to the development and / or maintenance of software. It has a certification scheme created on private organizations where the SEI (from the English Software Engineering Institute) created the standard for the standardization of areas and processes to achieve a better integration of the developments of the companies that handle it. Being an international standard, it makes it easier to integrate processes from one company to another even if they are in different countries or continents. CMMI has 5 levels which certify 4 of them.

conclusion

This article addresses different information technologies, methodologies and software development paradigms and how they complement each other to benefit the needs that the information and knowledge society constantly has.

The evolution of new technological platforms provides an important opportunity for different areas of Information Technology to converge for a common purpose which is to develop a robust, scalable, maintainable technological solution and above all using quality in its development process that is manifested in the quality of the developed product.

That is why engineers, developers and specialists in Information Technology and Software Development must be constantly updated to meet the needs of companies, organizations or entities that request it.

Bibliography

  • Abud, Ma. Antonieta. (2006). »Design of Human-Computer Interfaces in Educational Software Applications». Accessed August 19, 2014 Barranco, Ricardo. (2012). »What is BigData?». IT Specialist for Information Management, IBM Software Group México. México DF June 18, 2012. Revised August 22, 2014. http://www.ibm.com/developerworks/ssa/local/im/que-es-big-data.Barraza, Fernando. (2014). "Modeling and Design of Software Architecture". Modeling Concepts. Accessed August 17, 2014. http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:s2_conceptosdemodelado.pdf.Blé, Carlos et al. (2010). "Agile Design with TDD" First Edition January 2010, www.iExpertos.com Creative Commons License. ISBN: 978-1-4452-6471.4.Camacho, Erika. et al. (2004). "Software Architecture". Study guide. http: //prof.usb.See / lmendoza / Documents / PS-6116 / Guia% 20Arquitectura% 20v.2.pdf.Cassandra. (2008). "Cassandra Wiki". Accessed August 22, 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, November 2012. Revised August 22, 2014. http://www.ijcce.org/ papers / 81-T0023.pdf Cervantes, Humberto. (2010). "Software Architecture". A look at the DNA of the Software industry in Mexico. Editorial Software Gurú. Mexico DF. Number. 27. Year 2010, page 32. ISSN 1870-0888.CMMI-DEV, V1.3 (2010). "Improvement of processes for the development of better products and services". CMMI® for Development, Version 1.3, CMMI Product Kit. Revised August 23, 2014 Fernández,Oscar M., García, Delba & Beltrán, Alfa (1995). "A Current Approach to Software Quality".ACIMED. Accessed August 22, 2014. http://eprints.rclis.org/5424/1/aci05395.htm Gamma et al., (1995) “Design Patterns. Elements of Reusable Object-Oriented Software ”. Publisher: Addison-Wesley. 1995. ISBN: 0-201-63361. Westford, Massachusetts, USA.Hadoop. (2009). "Welcome to Apache ™ Hadoop®!" Retrieved August 22, 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). "Next Generation Networks Begin to Transform Communications". IHS Company. Revised August 19, 2014. https://www.ihs.com/expertise/thought-leadership.html.Jiménez, Luis. (2012)."The Challenge of Quality in Software Development (II)". The IBM Rational Spain Developer Blog. Accessed August 22, 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 and Kendall, E., Julie (2005) "Analysis and systems design" Sixth Edition, Editorial: Pearson Educacion, Mexico 2005 ISBN: 970-26-0577-6. Area: Computing.Martin-Avil, Toni. (2010). «Certifications and Quality Standards in Software». Quality in Software.Martínez, Guillermo M. (2014). "Usability and Accessibility on the Web". Revised August 19, 2014. http://www.semac.org.mx/archivos/6-11.pdf.Mora, Juan. (2011). "Software architecture for Web applications". Master's Thesis in Computer Science.Center for Research and Advanced Studies of the National Polytechnic Institute (CINVESTAV), Zacatenco Unit, Department of Computing. Mexico DF. Accessed August 15, 2014. http://delta.cs.cinvestav.mx/~pmalvarez/tesis-tahuiton.pdf Pérez, Sergio L. (2014). "User interfaces". UAM Cuajimalpa. México, DF.Palacio, Juan & Ruata, Claudia. (2011). »Scrum Manager - Project Management». Creative Communs License Quiroz, Francisco J., (2005). "Information and knowledge society". Bulletin of the National Statistical and Geographic Information Systems. Vol. 1 Number 1, May - August 2005. Revised on August 19, 2014. Online: http://www.inegi.gob.mx/prod_serv/contenidos/espanol/bvinegi/productos/integracion/especiales/BoletinSNEIG/ 2005 / bolsneig1.pdf Restrepo, Ana M. (2009)."Overview of Next Generation Networks (NGN)". Universidad Pontificia Bolivariana, School of Engineering, Faculty of Electrical and Electronic Engineering. Medellín, Colombia, 2009. Román, Felipe. (2011). "Information Extraction Based on Ontology Alignment Techniques". Master of Science thesis in Computer Science. National Center for Technological Research and Development (CENIDET). Cuernavaca Morelos, October 28, 2011 Somerville, Ian. (2005). "Software engineering". Publisher: Pearson Educación SA. Seventh Edition, ISBN: 84-7829-074-5. Torres, Cesar et al. (2010). "Domain Oriented N-Layers Architecture Guide with.Net 4.0". Publisher: Krasis Consulting SL Spain March 2010. ISBN: 978-84-936696-3-8 Toro Alonso y Cardona, Lorena (2010)."State of the Art of Software Engineering in the National and International Scope according to Organizations that Treat the Discipline". Universidad Católica Popular del Risaralda, Faculty of Basic Sciences and Engineering, Systems Engineering and Telecommunications. Pereira, Colombia ITU-T Y. (2014). "ITU-T's Definition of NGN". INTERNATIONAL UNION OF TELECOMMUNICATIONS. Ventura, Teresa & Peñaloza, Marcela. (2006). "MoProSoft: Software Process Model Made in Mexico". Find out online, Internet Computing and Telecommunications. Year 5, Number 47, March 2006. Zapata, Miguel. (2012). "Quality in ubiquitous learning environments". University of Alcalá. NET. Journal of Distance Education, Number 31. ISSN 1578-7680. Revised August 22, 2014. Online:
Emerging information technologies and software development