Software Quality

Hi Everyone, it’s been a while since I talked to you, the truth is that the moment I finished the book we discussed in the previous posts, I felt a little empty, you know because of all the things that are going around the world right now, In case you are readind this post somewhere in the furute, by the time I am writting this we are still staying at home because of the COVID-19, but someway, somehow we have to keep moving forward.

Anyways, this time is going to be different from what we discussed on the previous posts, forget about project management, we already know that, this time we are going to talk about everything you need to become the greatest software engineer, from scratch to finish, from definitions to usable tools for your real life projects.

We are now going to be dividing the posts into one big post with little sub topics, to make sure that all relevant information to the sobject is directly connected to what you guys are looking.


Defining Software Quality

At this point on our field we have heard people saying that building a functional software is not the same as building a quality software, this is because when we are developing there is nothing that can stop us from thinking in new ways to solve problems, eventhough this new solutions may or not be as efficient as other ones, this is why making a software it actually harder than we use to think. This is why, in this subtopic are going to define what software quality is, and all of the attributes that englobes this topic.

Software quality is one ambiguous concept to define because there are many ways to determine wheter a software is or not quality qualified, this because some writers defines the quality of a software with its purpose, if the software does what the user wants it to do, then is a quality software, other writers define some software attributes that any software must own to be described as a quality software. In this post we are going to discuss about those attribues that a software must include in order to become quality software.

A new toy gave me a nice evening surprise!
This a picture of some geometrical structures floating on sky – Elif Ayiter

Some of the key aspects that a good software must fullfill are:

  • Portability: That the software can be executed efficiently in every platform or device it is ran
  • Good design: The software is atractive, easy to understand and use by any user regardless of the user
  • Durability: The software life time must be long enough
  • Maintainability: Bugs can be fixed, new implementations can be made, the capability to make the software great again regardles of time
  • Reliability: The software must be able to work without any issues
  • Money gain: The developers of the software must feel that the money they are investing will be worth every coin
  • Testability: The software must be able to be tested in order to discover new bugs than can be fixed
  • Efiiciency: The software must be able to solve problems in a efficient way
  • Flexibility: The software mus be able to evolve, to solve new problems and become a better version of itself
This is a picture of some of the software quality keys- Beningo

There are different ways to meassure the quality of a software, some different process that can be executed and different methods than can validate the level of qualityness of a software, anyways these new conceps are going to be discussed in the next entries, this was only the introduction to quality software, but if you like to know a little bit more I recommend you to check these links:

Software quality is important because is what is going to make the difference bertween doing a mediocre software and doing an usefull software that can be reused over and over again.

Please make sure to check on those links, some really usefull information is going to be found on those, and if you have any kind of questions remember that all my information is going to be found in my main page, thanks for reaching out this far, see you next time.

A netflix recomendation

I decided to implement in every post a netflix recomendation, this because I want to make the blog a little more dynamic.

Lucifer. If you like crime related series and you are not sensitive to religious topics then Lucifer is the serie for you, The devil himself was tired of living a boring life reigning in hell, so he decided to move to the funnies place on earth, where crime is more fun and exciting, drugs are the daily basis and latinos and mafia live together, LA, will Los Angeles be too much for the devil?

This is a gif of Lucifer transforming into the devil – Giphy

A focus on process

Once defined the first step of the software building system, we need to order things and to define which processes are we going to focus on, this methodoly is known as focus on process, in which developers put all fo the atention into the process instead of the outcome, at a first look this may seem a little nonsense, but once I describes the benefits of this process it will come clear to all of you.

We are human, and as a human we tend to set goals in the proyects we make, this because the automatic method that we use to validate wheter a software is funtional or not is through its result, this kind of method seems to be a little untrusty, because trust what we see as a result not the process as we are going to see next.

This is an image of a man who seems to be focusing – ThoughCo

Did you know that focusing on a process is much better than on the result? Well this is why

  • By focusing on a process you will achieve a level of mastery that will never be achieved if focusing on results, you will understand every detail of the process and predict future outcomes without testing them.
  • When focusing on results developers are less exeptical to try long process analysis, so this is why by using focus on process helps thedevelopers to produce better outcomes without looking for them
  • Focusing on the process will make people to worry about the present instead of the future, which will lead to earn experience faster.
  • Makes the people independent thinking, instead of thinking about an specific result and rely on that developers will be predicting results instead of mysteries
  • Will grow developer´s confidence, because the future is not your business you care about what you do at the time

How do we focus on process?

  • Forget about the rewards, they will come when the time is rightt, focus on what you are doing and nothing more
  • Do not care about what others think about what you do, be independent you do things for yourself
  • Learn but do not get stuck from the past
  • Rate your performance, based on what you are doing instead of the outcome
  • Always keep doing work, never stop what you are doing even when is done there is more
  • Remember that every process is unique, every process must be treated as so

Once you start focusing on the process you will inmediatly start to enjoy the work you are doing, because no distractions will be around, and you are now the one who takes control of the process, and after that you will notice that positive results came by themselves because of thw work you did.

If you´d like to know a little more about focusing on the process check out these links :
https://medium.com/swlh/learn-to-focus-on-the-process-more-than-the-results-419245011592
http://www.howtolive.com/focus-on-process-not-outcome/#.X2UCZGgzbIU

A netflix recomendation

Baby Driver, if you like cars, action, a romantic love story and like to dance when you hear any special song, then this is the movie for you, the story is about Baby, our main character who has hearing problems but drives insanely good and with a really good taste of music, a good boy who did bad things and who´s only scape from a bad life is through driving.

This is a gif from the movie Baby Driver, Tenor

Ensuring software Quality

Before talking on how to ensure the quality of the software first lest define the quality of a software, we will quote something that Abdullah Muntasir defines in its blog, «Quality in software is an art, software quality is the degree of conformance to explicit or implicit requirements and expectations», which he defines them as:

  • Explicit: clearly defined and documented
  • Implicit: not clearly defined and documented but indirectly suggested
  • Requirements: business/product/software requierements
  • Expectations: mainly end-user expectations

Now that software quality is defined we can talk about how to ensure the quality of our software, and this we can easily do it, because at our luck there is a process called Software Quality Assurance Plan, which is a serie of procedures and techniques that allows the developers to make sure that a specific product aligns with the requierements defined in the SRS, software requirements specification document, which is a document in which all the requierements must be delcared before building a proyect.

This is a diagram of the SQA method- Software Testing Help

The SQA is mainly dividen in four sections:

  • Development, in which Research and analysis are worked on
  • Baseline System, in which Prototype and design are worked on
  • Production, in which Testing and Planing are worked on
  • Release Market, in which Deliver and Support are worked on

Every section of the SQA is definen in the SQA document, which consists on:

  • Purpose
  • Reference
  • Software configuration management
  • Problem reporting and corrective action
  • Tools, technologies and methodologies
  • Code control
  • Records, collection and maintenance
  • Testing

This will help the developers to ensure the quality of a software, but in those cases where even the SQA was not enough to ensure the wuality of a software there is another process known as Software Quality Control, which goes side by side with SQA when SQA is not ensuring the quality. The main idea of the SQC is to focus on every requierement so that all of them adquire a high level of quality, this process is divided in some activities such as:

  • Reviews
  • Requirement Review
  • Design Review
  • Code Review
  • Deployment Plan Review
  • Test Plan Review
  • Test Cases Review
  • Unit Testing
  • Integration Testing
  • System Testing
  • Acceptance Testing
This is an image of the SQC method – Professional QA

Once makeing sure that all of the activies of SQA and SQC are followed then you can make sure that you have achieved a high level of software quality in your proyect, if after all this process you still think your software needs a little more what you can try is to divide the phases into little phases, and aply them to every requierement on the proyect, repeat until you feel the quality is excellent enough for you.

If you would like to know more about this, do not fotget to check this links:

A netflix recomendation

See you yesterday, this is an indepentent movie about two young kids who are about to discover how to time travel, injustice and discrimination will push them to travel, but time has another plans for them, a really good movie about sci-fi and unfairness.

This is a gif of the main characters of the movie preparing to trvael – Tumblr

The Role of Standars in Software Quality

Standars of software quality are models that categorizes the level desired of quality in software, there are many standars out there which everyone is specifically different from the other ones because they focus on different things.

These standars are actually divided on what their objetive is, there are testing standars which focuses on the testing area of the software, software quality standars, which focuses on the quality of the system, these kind of standars helps the user to get to know a structured model to follow depending on their desire of the software, there are so many standars in the field because each one satifies an specific need in the proyect.

These standars helps the user to answer the tipical questions when developing a software, How to, When to, What do we need to, which helps developers to bring a well designed system with all the requierementes needed and a little bit extra. These standars of software quality are going to be described deeply in the next post, thanks for reaching out.

Remember to check out this link to get more information about:

A netflix recomendation

The witcher, if you know about the witcher game series then you know about this netflix live action adaptation, if not, let me tell you what you were missing. The witcher narrates the story of three characters, Geralt, a withcer who kills monsters for money and has a destiny attached to, Ciri the princess of a land who has magic powers and who is connected to Geralt and finally Yennefer a powerfull witch whose desires are only to gain power but gets into Geralts life, these three characters will make their way into a world of magic, monstruous creatures and a lot of fights.

This is a gif of Geralt fighting a man – Giphy

This will do for software quality, the next topic that we are going to discuss is all the standars, how do they define and to learn when to use each standar in order to get the best profit of them, thanks for reading see you next time.

Deja un comentario