Software Testing

Pruebas de software: es el proceso de evaluar un sistema y sus componentes, con el propósito de encontrar otra manera de satisfacer las necesidades de los requerimientos especificados del software. Es ejecutar un sistema en orden para identificar errores o requerimientos faltantes. Son actividades dentro del desarrollo de software.

Los tipos de pruebas de software son:

Unitarias: Se centra en dividir el programa en módulos y mostrar que cada módulo funciona bien y cumple con los requerimientos.

Integración: Es la prueba que combina las partes de la aplicación y determina si estas funcionan correctamente. Este tipo de prueba se puede realizar de dos maneras “Bottom-up Integration Testing” y “Top-down integration testing”.

Sistema: Este tipo prueba al sistema como un conjunto. Una vez que se integra todo el sistema, se verifica que el sistema cumpla con las normas de calidad. Se llevan más pruebas especializadas.

Regresión: Cuando se hace un cambio en algún módulo del sistema, es probable que se hayan afectado los otros módulos del sistema. Este tipo de prueba se enfoca en verificar que un cambio no afecte al sistema por completo.

Aceptación: Se evalúa que el equipo cumpla con las especificaciones deseadas y satisface los requerimientos planteados por el cliente.  Con diferentes escenarios planteados se probará el programa.

Alpha: Es la primera etapa de la prueba, se combinan las pruebas unitarias, de integración y de sistema en este tipo. Durante la implementación de esta se revisan los siguientes aspectos:

  • Spelling Mistakes
  • Broken Links
  • Cloudy Directions
  • El sistema se probará en máquinas con la especificación más baja para probar los tiempos de ejecución

Betha: Esta prueba se pone en ejecución después de haber probado la Alpha, en esta una muestra de la audiencia pone a prueba la aplicación. También son conocidas como pruebas pre-lanzamiento. Es para que el sistema

Continue reading "Software Testing"

Design Pattern

Son las mejores herramientas usadas por desarrolladores que usan el concepto de programación orientada a objetos. Estas son soluciones para los problemas más comunes durante el desarrollo de software.  Patrones de diseño tienen dos usos en la ingeniería de software. Es necesario usarlos porque aunque tengamos un programa innovador o inusual, de seguro tendrá algún problema durante su implementación. Y si tenemos

Es una plataforma común para desarrolladores, nos dan un estándar de terminología y son para escenarios específicos. Usar un objeto para todos los desarrolladores están familiarizados con un diseño similar, y cuando este sea utilizado se que se decir a otros desarrolladores que sigue este patrón de diseño.

Los patrones de diseño han dedicado mucho en mejorar el patrón y este sea útil ante los problemas durante el desarrollo de software.

Los tipos de patrones de diseño son:

Creational Patterns

Este diseño ayuda a mejorar la manera de crear objetos, mientras se esconde la lógica de creación. Nos da un programa más flexible y así es más fácil saber qué objetos necesitamos crear.

Structural Patterns

Este diseño se enfoca en la clase y la composición de los objetos. Se utiliza la herencia para saber la composición de  las interfaces, así como las maneras en las que se compondrán los objetos y así obtener nuevas funcionalidades.

Behavioral Patterns

Se enfoca más en la comunicación de los objetos.

J2EE Patterns

Estos patrones son identificados por Sun Java Center.

 

Referencias:

Tutorials point.

Photo by Flickr

 

Chequen este vídeo de Creational Patterns


UML (Unified Modeling Language)

Models help us by letting us work at a higher level of abstraction. A model may do this by hiding or masking details, bringing out the big picture, or by focusing on different aspects of the prototype.

Modeling is an Essential Part of large software projects, and helpful to medium and even small projects as well. A model plays the analogous role in software development that blueprints and other plans (site maps, elevations, physical models) play in the building of a skyscraper.

UML (Unified Modeling Language) is a standard notation for the modeling of real-world objects as a first step in developing an object-oriented design methodology. Its notation is derived from and unifies the notations of three object-oriented design and analysis methodologies:

  • Grady Booch’s methodology for describing a set of objects and their relationships
  • James Rumbaugh’s Object-Modeling Technique (OMT)
  • Ivar Jacobson’s approach which includes a use case methodology

Ver la entrada original


Software architecture

La arquitectura de un sistema describe los componentes principales, sus relaciones (estructuras) y cómo interactúan entre ellos. Estos se representa en un número de componentes que deben cumplir ciertas funciones.

Esta nos da una un abstracto para gestionar la complejidad del sistema, establecer una comunicación y coordinación entre los componentes de éste. Se define una solución estructurada para conocer los requerimientos técnicos y operacionales.

Existen cuatro tipos de arquitectura:

  • Arquitectura de negocios
  • Arquitectura de aplicaciones
  • Arquitectura de información
  • Arquitectura de tecnología

El proceso de diseño de la arquitectura:

  • Entender el problema: es el paso más importante porque según este se define el diseño del sistema.
  • Identificar los elementos y sus relaciones.
  • Evaluar el diseño de arquitectura.
  • Transformar el diseño de arquitectura.

Software design

El diseño de software

Es el proceso en el que se transforman los requerimientos del usuario a una forma concreta, la cual facilita al programador su implementación. Este es el primer paso de SDLC (Software Design Life Cycle).

El diseño de software se divide en 3 niveles:

Diseño de arquitectura: En este se identifica el software como un sistema de componentes que interactúan entre sí. En este nivel los diseñadores encuentran la manera de implementar la idea.

Diseño de alto nivel: Se enfoca en diseñar cómo los pequeños módulos se conectarán para alcanzar el objetivo del programa y crear un sistema más complejo. Se reconoce la estructura de cómo se comunicarán estos módulos.

Diseño de detalles: Es cuando implementamos el sistema y observamos lo que hace cada módulo, checamos que cada uno cumpla con su función establecida.

 

https://www.tutorialspoint.com/software_engineering/software_design_basics.htm


Software requirements

 

The software requirements get a deal with the needs of the stakeholders, the purpose of those is dealing the things that will be solved with the software.

 

In the requirements engineering, requirements elicitation is asking the requirements of the software and what happens if this or if that; and with those get answers. Following a good analysis of the requirements.  For this reason, we need the stakeholders for getting responses and get a good job.

 

“discovering, extracting and learning needs of stakeholders, it includes a domain analysis that helps to identify problems and deficiencies in existing systems opportunities and general objectives. Scenarios are part of this activity ” (Christian R. Prause).

 

The specification of requirements is the description of the behavior of the software, this includes the way that this will develop, and  have the interactions that the user will have, and also the functional and nonfunctional requirements.  

 

“Requirements expressed in a more precise way, sometimes as a documentation of the external behavior of the system” (Christian R. Prause).

 


The STEM Education Coalition

Science, Technology, Engineering and Mathematics  

 

In this post I want that you meet more about this foundation in the United States:

“The STEM Education Coalition works aggressively to raise awareness in Congress, the Administration, and other organizations about the critical role that STEM education plays in enabling the U.S. to remain the economic and technological leader of the global marketplace of the 21st century. Members of the STEM Coalition believe that our nation must improve the way our students learn science, mathematics, technology and engineering and that the business, education, and STEM communities must work together to achieve this goal.  The Coalition is organized as a 501c4 non-profit organization”.  (STEM Education Coalition, 2016). 

 

This organization wants that  United States have a progress in the science areas, technology, education and mathematics; because with this they could get a national  prosperity in many ways. They are focused at the government enact  public policies that help to the education. And need to have an education system that can meet the needs of these interested.

 

Those aspects are interested if we make this things in Mexico, the education system needs more interested in these areas. I want to improve that…

If you want to know more about this:

http://www.stemedcoalition.org/ 

Resultado de imagen para stem


Waterfall Model

Waterfall approach was first SDLC Model to be used widely in Software Engineering. In “The Waterfall” approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially. 

The sequential phases in Waterfall model are:

  • Requirement Gathering and analysis: All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
  • System Design: The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
  • Implementation: With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase.
  • Integration and Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit.
  • Deployment of system: Once the functional and non functional testing is done, the product is deployed in the customer environment or released into the market.
  • Maintenance: There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

Resultado de imagen para waterfall methodology

Advantage

The advantage of waterfall development is that it allows for departmentalization and control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one. It’s simple and easy to use.

Disadvantages

No working software is produced until late during the life cycle, and it isn’t a good model for complex and object-oriented projects, because all team is working on each part

Continue reading "Waterfall Model"

Functional and non functional req.. Does it really matter?

Functional and non functional!!

What is a functional requirement?

Refers mainly to the expected function of the product. Product or system features, or what the program does is what the functional requirements are. Definitely it is easier to determine the functional requirements than the non-functional because they are almost obvious.

What is a non-functional requirement?

These requirements refer mainly to the attributes that include performance, security, usability, etc. Developers usually miss these requirements because they focus mainly on the functional requirements. When addressing incorrectly these non-functional requirements, the system actually fails. For example, the lack of usability or performance can lead to frustration or system problems. This is why non-functional requirements are so important for a system to succeed.

functional-and-non-functional-testing

Ver la entrada original


Software development processes

Specification and Build Architecture

–Analyze requirements: the requirement analysis is fundamental stage in SDLC. The information is used to plan the basic project approach and to conduct product in the technical areas. We are planning for the quality assurance requirements and found the risks associated with the project.

–Design architecture:  the product architecture is proposed and documented in a – Design Document Specification.A design approach clearly defines all the architectural modules of the product along with its communication and data flow representation with the external and third party modules.

Development Phase

–Integration and Implementation: follow the coding guidelines defined by their organization and programming tools like compilers, interpreters, debuggers etc are used to generate the code.

Testing and documenting

–Quality analysis: testing only stage of the product where products defects are reported, tracked, fixed and retested.

–Documentation:   how to use the program can be completed.

 

Deployment and Maintenance

–Deployment: Once the product is tested and ready to be deployed it is released formally in the appropriate market

–Maintenance: is done for the existing customer base.