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.
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:
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
As 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.
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…
Every single software developer talks about Open Source Software. They say, I love Open Source, Have you changed that program?, I’m installing Linux! But what the hell is Open Source?! Sometimes things are hard to explain and life is better with LEGOs, so here is an explanation of what open source is…
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.
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.
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.
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”.
Although 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:
If 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:
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:
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:
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:
Private Class Data
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:
Accordingly 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.
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.
I 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