Software Maintenance. Wait, What?

Accordingly to the NC State University, software maintenance is defined as the process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or even adapt to a changed environment.

There are mainly 4 types of maintenance listed below:

Corrective maintenance  is about including modifications and updates in order to correct and fix problems that are either discovered by user or concluded by user error reports.

Adaptive maintenance  includes modifications and updates applied to keep the software product up-to date  to everyone in the world of technology and business environment.

Perfective maintenance  are modifications and updates done in order to keep the software usable over long periods of time. It comes with new features, new user requirements for refining the software and improving its reliability and performance.

Preventive maintenance
 are modifications and updates to prevent future problems related to the software. It tends to attend problems, which are not significant at the moment but may cause serious issues in future.

So based on what we’ve discussed, I think that maintenance is really important when talking about software development since without it, programs can end up being obsolete. Having a well maintained piece of software will always be safe and healthy for the program itself.

User Interface Design

In my opinion, a high percentage of success that a piece of code can have is based on its user interface design. There might be great programs that are helpful by doing what they’re capable to do but people might just not feel attracted to these due to the lack of an interesting and design that makes users to take a look and try the program itself.

Users experience with technology must be neat and when talking about programming, our programs should have elements that are easy to access, easy to understand and should be useful for the ones that will be using it.

Some of the elements that can be involved when designing an interface could be:

  • Input Controls
  • Navigational Components
  • Informational Components
  • Containers

There are lots of more types of elements but the importance here is giving the users the ones that will let them achieve what you intend to, without making the process too complicated.

The US Government recommends the following practices for designing an interface:

  • Keep the interface simple
  • Consistent and common UI elements
  • Be purposeful in page layout
  • Strategically use of colors and textures
  • Hierarchy and clarity

pexels-photo1As I said before, success in a program can be achieved by great user interface designs. If the program itself works but isn’t attractive, organized and clear for the user, it won’t succeed as we would like to.

If you’d like to check more on the US Government’s recommendations, please click here.

Software Requirements…and stuff

Software Engineering

As easy as it sounds, software requirements are requirements for software. But let’s dig a little bit deeper. Requirements are not only the functions required, actually this might be the least of the concerns in terms of requirements.  Requirements must surpass all of the client’s expectations.

There’s even a science in charged of this analysis; and it is called Requirement Engineering  its goal is to develop a very very very special and important document called the System Requirements Specification.

It involves mainly four steps, although there are text that claim it to be more than that and they are:

  • Feasibility Study:  This is the initial stage. In this one, the requirement engineer must meet the client in order to talk about the general expectations. Then, he produces a very wide and thorough analysis on the possible constrains, implementation cost, and objectives. It also explores the technical aspects of the…

View original post 269 more words

Software Verification and Validation

Software Engineering Fundamentals

There is a big difference between the verification of Software and the validation it. Also, there are some similarities between both of them. First, verification is the process which checks if the software is functioning correctly. On the other side, validation is concerned with checking that the software actually satisfies the customer’s needs.

Verification checks the quality of the software such as testing, inspection, design analysis, specification analysis, etcetera. All the processes should be objective because there is needed to be a concise product. If the software is created with the correct specifications, there might not be subjective judgements to it.

Validation is the process of checking if the stages of the creation of the software are accomplishing the customers needs.Validation is a subjective process because analysis might vary between the people that are evaluating the project. It all depends on the evaluator and the different ideas between each evaluator.

They have differences, such…

View original post 85 more words

Software Architecture. What is It?

According to the Microsoft official developer site, software architecture is the process of defining and also stablising a structured solution that meets all of the technical and operational requirements, without having problems on the optimization of common quality attributes such as performance, security, and manageability. It also involves some series of decisions based on different factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application.

Official Site

As the Software Engineering Institute states, the software architecture of a program or computing system is a depiction of the system that aids in the understanding of how the system will behave. It is also an artifact for early analysis to make sure that a design approach will yield an acceptable system.

An example of how arquitecture defines how something is supposed to work, let’s take a look at UML diagrams.

The following video shows the main differences between the arquitecture and the design which I talked in a previous post, in software developent.

Bye Bye Note 7 ✌?️

Over the last month, Samsung has faced a tremendous problem regarding the exploding smartphones that they have created. Last Tuesday, Samsung announced that this year’s version of the “Note” series, the Samsung Galaxy Note 7, will be discontinued.

“Taking our customer’s safety as our highest priority, we have decided to halt sales and production of the Galaxy Note 7”.

untitled-1-01Although the percentage of exploding Note 7’s is lower than 0.01 percent, the company cannot take the risk of this problem causing potential damages to their users since an explosion of this kind can expand to a whole car, airplane, or even a house. The smpartphone itself had huge chances of being one of the top selling smarphones in the world, but this problem marginated it from being even an option for the buyers, since it will no longer be for sale.

Here’s the official recall of Samsung, asking for Note 7 users to return their smartphones:

screen-shot-2016-10-12-at-19-08-28If you are one of the users, you should firstly maintain your Note 7 powered off, and then go to their official recall to follow their steps in order to return the failing smarphone. You can do so by clicking on the image taken from the official site on top.

Here are some pictures shot by users after their Note 7’s cought on fire:

Click to view slideshow.

Software Design: Patterns

As we know, software design isn’t the code itself but the way that code must be structured in order to have a higher level of control over it. Patterns themselves are repeatable solutions to problems that occur constantly in software design. These type of structured ways of designing software aren’t finished designs that can be already transformed into code but they are descriptions that show how to solve certain problems. They are normally templates used in order to have a richer idea on what it will be developed in the future.

There are mainly 3 types of design patterns:

  • Creational design

    These patterns approach design by the instantiation of classes. They are divided in class creation which inherit in the instantiation step and object creational patterns that use delegation as it should be in order to achieve certain task. Some of these are:

    • Abstract Factory
    • Builder
    • Factory Method
    • Object Pool
    • Prototype
    • Singleton
  • Structural design

    This type of pattern takes a look on how classes and objects are composed. The creation of compose interfaces is mainly by using iheritance. Some of these are:

    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Private Class Data
    • Proxy
  • Behavioral design patterns

    The interaction between objects inside a class happens in a behavioral pattern. These patterns are mainly focused with communication between objects. Some examples of these are:

    • Chain of responsibility
    • Command
    • Interpretre
    • Mediator
    • Memeto
    • Null Object
    • Observer
    • State
    • Strategy
    • Template method
    • Visitor

Bloggers involved in the creation of this post:

Carlos Pedraza

Miguel Cabral

Victor Najar

Juan Pablo Ramírez

All this information was taken from and all rights belong to them.

Lets Talk About Software Design

user_interfaceAccordingly to The UCAR (University Corporation for Atmospheric Research), software design is the process of defining methods, functions objects and the structure and interaction of the code in order to have fully functional programs and satisfaction of the users.

Your software design should include a description of the overall architecture. This should include the hardware, databases, and third party frameworks your software will use or interact with. This is the big picture of what is running where and how all the parts will interact.

Here’s a really clear video taken from TED x conferences with Jackson Stone showing the importance of S.D.

Software design is all about thinking in the users themselves and giving them the opportunity to have a full experience when approaching to technology by letting them have a nice experience.

As a User, What do You Prefer: Mac or PC?

When thinking about how I was introduced to computers, an old desktop computer with a huge monitor comes to my mind. I used to have some fun playing around with paint. After that old computer, I got my first  PC, made by Compaq. Having my own computer was already  big deal and it helped me realize that technology had more for me and motivated me to keep looking for new technologies and evolution.

More PCs came into my life but I felt I upgraded myself until I switched into a Mac. I got a MacBook Pro around 2010 and I found that Apple had a more simple but modern OS which made it more attractive to me.


So here is where I’ll answer my own question… What do I prefer: Mac or Pc?

In my personal opinion, in my short and mid term I will not switch from Mac to Pc. Having a Mac nowadays makes users fully capable of the same stuff and sometimes you might not know how to do something but getting to solve your problem might be easier in a Mac than in a PC. I also think that this descision is also made due to my other devices that are Apple branded and having all sycronized as I have them wouldn’t as simple and clean having a PC.

coffee-cup-mug-appleI also think that getting back to a Windows based computer wouldn’t be easy for me due to the lack of practice and use with Windows OS’s since the last one I used was Windows 7 and for what I’ve seen, it has changed a lot.

People that I know that have also been in the situation from switching from Pc to a Mac, also think that it’s easier and much more simple to learn new things

Continue reading "As a User, What do You Prefer: Mac or PC?"