Un modelo para gobernarlos a todos (Lenguaje Unificado de Modelado).

Sus siglas en ingles (UML) Unified Modeling Language es un estándar para desarrollo de software. Tiene como objetivo mejorar la comunicación entre programadores, hacer saber de las necesidades servidor cliente, crear un modelado de la estructura para el diseño de un programa.

UML_logo.gif

Los pioneros de  UML fueron: Grady Booch, James rumbaugh e Ivar Jacobson. En la época de los 80s, al desarrollar individualmente una metodología para el análisis y diseño orientado objeto, donde posterior mente (en el inicio de los 90s) juntaron su trabajo. De ahi nacio la idea de un lenguaje unificado.

Es importante que entendamos que UML no es programación, no son sentencias ni codigo; no esta asociado a ningún lenguaje de programación. Ni es metodología.

DIAGRAMAS UML

  • Define la estructura y el comportamiento del programa.
  • Organizar características y funciones de un proceso para su mejor funcionamiento.
  • Se utiliza para hacer el análisis del sistema.
  • Presentar diversas perspectivas de un sistema
  • Se pueden correlacionar un diagrama con otro.
  • Genera muchas formas de organizarlos y extenderlos.

DIAGRAMA DE CLASES

Una clase es una categoría o grupo de cosas que tienen atributos y acciones similares.

DIAGRAMA DE OBJETOS

Es una entidad que tiene valores específicos de los atributos y acciones.

DIAGRAMA DE ESTADOS

Es el estado en particular que se encuentra el objeto. Establece condiciones. Realiza actividad o espera algún evento.

DIAGRAMA DE SECUENCIAS

Son interacciones entre objetos que suceden con el tiempo.

DIAGRAMA DE ACTIVIDADES

Las actividades que ocurren dentro de un caso de uso. Lo que se hace en un estado o grupo de estados. Orden, donde, tiempo, cuando, quien y que harán.

Entre estos y mas conceptos los podemos ver junto con sus respectivos ejemplos en la playlist Curso UML de Ingenio y Tecnología. Toda la información del blog fue extraída de dicha playlist y plasmada en texto (las partes

Continue reading "Un modelo para gobernarlos a todos (Lenguaje Unificado de Modelado)."

Software maintenance

tools

Is the modification of a software product after delivery to correct faults, to improve performance or other attributes.

There are number of reasons, why modifications are required, some of them are briefly mentioned below:

  • Market Conditions: Policies, which changes over the time, such as taxation and newly introduced constraints like, how to maintain bookkeeping, may trigger need for modification.
  • Client Requirements: Over the time, customer may ask for new features or functions in the software.
  • Host Modifications: If any of the hardware and/or platform (such as operating system) of the target host changes, software changes are needed to keep adaptability.
  • Organization Changes: If there is any business level change at client end, such as reduction of organization strength, acquiring another company, organization venturing into new business, need to modify in the original software may arise.

Types of maintenance

In a software lifetime, type of maintenance may vary based on its nature. It may be just a routine maintenance tasks as some bug discovered by some user or it may be a large event in itself based on maintenance size or nature.

  • Corrective Maintenance: This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.
  • Adaptive Maintenance: This includes modifications and updations applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.
  • Perfective Maintenance: This includes modifications and updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.
  • Preventive Maintenance: This includes modifications and updations to prevent future problems of the software. It aims to attend problems, which are not significant at this moment but
    Continue reading "Software maintenance"

Software Verification and Validation

Although validation and verification might mean the same, they are two different concepts that are used in software engineering.  Just to avoid confusion, everything can be narrowed to this:

Validation: Are we building the right system?

Verification: Are we building the system right?

It is true that both of them require approval, but it dependes on the type of approval you need. Validation checks that what is being done, is what we need. This has to do with complying with the requirements that are proposed by the project managers. Verification, in the other hand, is to check that what we are doing, is being done the correct way. It is all about complying the requirements, so everything converges on reading the requirements the good way.

I’m might contradict myself a bit, but verification and validation do have things in common. These are processes in order to assure software quality and guess what, it also has to do with software testing and evaluation. This is a diagram of what could comprehend each of the concepts, and also what they do have in common.

 

Credit to Easterbrook, from here I obtained most of this content.


Just keep it simple.

User Interface, what is it ? It is not only where they can interact and write commands, like in terminal, in fact, bash and terminal applications are user interfaces. But not everyone is as tech savvy as others. So that’s why we must take the final user into account. Not only because it is he the one who pays, but also the one you must help. So, long story, short UIs are:

The means by which the user and a computer system interact, in particular the use of input devices and software.

This concept is something that changes across history, we didn’t have those cool transparency effects on the Mac Lisa. Developers have adapted to what the user needs and their experience. By the way, this experience is called User Experience (UX) and it has a strong link with UI Design. In fact, design provides the experience. These two concepts transcend much  more than simple software. It applies for OS, software, websites and also hardware such as phones and home appliances. There are several tools to test the UX and all of them involves human interaction.

The Basics: Do’s and Dont’s

There are a few things you might want to take into consideration for your software projects. These are some guidelines (not rules). 

  • Remember that you are not the final user, so don’t assume anything. Do not assume the user knows how to even turn on the device. Yep, not even that.
  • Keep it simple. Yes, that simple.
  • Be consistent in all possible ways. Do not mix layouts, colors, styles. It is all part of a whole interface, so different styles or layouts might confuse the user if done.
  • Let the user know what’s happening. I don’t mean to have a console log , but let the
    Continue reading "Just keep it simple."

Open Source Software != Free Software

Open source software refers to software that is widely available. But it doesn’t stop there. With O.S.S. programmers and developers can modify and share it. And this is the most wonderful benefit from O.S.S. When software is open, people can distribute as much as they want to, but always giving credit to the author. ALWAYS. 

Open source projects, products, or initiatives embrace and celebrate principles of open exchange, collaborative participation, rapid prototyping, transparency, meritocracy, and community-oriented development.

While this doesn’t mean you can copy it and sell it as if it was yours, you can learn from it. You can grab a piece of code and use it (again, giving credit) freely. According to the ACM Code of Ethics, it is not fair to obtain a profit out of someone else’s work. You wouldn’t like,  or do you ?

Talking about profit, the fact that O.S.S. is widely available doesn’t mean that it is free. Don’t worry, it is a common misconception. Some developers charge for O.S.S. and you still get all benefits from O.S.S. You can see it as a way to credit the author.


Software Testing

bigstock-code-bug-13044284-300x225

Software Testing can be defined as the process of executing a program with the purpose of finding bugs, but the fact is that this process is just one part of what a complete Software Testing is. Besides of debugging, testing includes validating and verifying that a software meets the business and technical requirements, works as expected and can be implemented.

I’d like to list some important characteristics of software testing:

  • Testing is a process rather than a single activity.
  • To design tests early in the life cycle can prevent you from having defects in the code. That’s a reason why Agile Development is so cool!
  • Testing can be Static, it can test and find defects without executing code, it includes reviewing documents.
  • Or it can be Dynaminc, the code is executed to see the results of running tests.
  • From the beginning, it’s important to choose what testing we will do, by selecting test conditions and designing test cases.
  • We evaluate to check the results and the completion criteria.
  • Blackbox testing ignores the internal mechanism and focuses on the output generated.
  • Whitebox testing takes into account the internal mechanism.

There are many types of testing:

  • Unit Testing.
  • Integration Testing.
  • Functional Testing.
  • System Testing.
  • Stress Testing.
  • Performance Testing.
  • Usability Testing.
  • Acceptance Testing.
  • Regression Testing.
  • Beta Testing.

You can read more about them here.

Source:

 

 


Open source software

Open-source software (OSS) is computer software with its source code made available with a license in which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose.Open-source software may be developed in a collaborative public manner. Open-source software is the most prominent example of open-source development.

and example of this is Linux.


Software design patterns

 

software engineering, a software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.