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.

Software Review

The last time we talked bout the Validation and Verification process, the diference between these two and how to select and do a V&V planning, this time is going to be a little different it is going to be about software review.

  • Definitions and characteristics of software review
  • Activities and roles in each review
  • How to retrieve the key work products, plans, requirements, design and code

Defining software review

In software there are some features that must be analized as a part of the software review, software review is a process that ensures that all the measurements of the system are on top, which means that reviewing our code.

  • Software quality: We have talked about software quality before, and in this definition we explained that software quality goes with the client, the more satisfied the client the higher the quality, but even the proceddures and funtionalities implementes play an important role in software quality.
  • Software quality assurance, this is a methodology to ensure that a software at the end of its life cycle it is now considered software of quality
This is a picture of a man holding a magnifying glass-PM Majik

Types of review

  • Internal review: the old classic review method, in which the software is distributed to many people and tell them to try the system and review the proyect to get feedback.
  • Walkthrough: In this process all of the involved participate in each of the phases to make sure that most of the posibilities are considered
  • Inspection: isnpection is kinda similar to walkthrough but a little more rigorous
  • Testing: Testing is the most basic type of review, because everyona can do it, it helps to know what the system is capable of, where does the system break and get information about how does the system works.
  • Peer: Focuses on the tecnical content and quality of the system, this review is worked with other developers
  • Management: Evaluates the level of work status, where all the future descisions of the systems are taken
  • Audit: In which people not related to the system try the system and evaluate possible scenarios about the system, with purpose of getting new ideas of the system
This is a project review squema – NCBarBlog
  • Objectives and Scope: In order to ensure tha idea becomes sucessful
  • Project Planning: To ensure that the selected objectives follow the plan selected to do a good review
  • Executing the plan: In this phase all procedures of the plan are executed, all the reviews and analisis needed for the system.
  • Measuring and Monitoring: Now wih the evaluation of the plan is time to meassure the level of quality and V&Vness of the system, to make sure it has reached the desired level
  • Post Project Review: At the end of the cycle it is documented the results of the review to check wheter another review is needed or if we have finally reached our goal.

During the inspection phase there are some aspects:

  • The average preparation effort per unit of material
  • The average examination effort per unit of material
  • The average defect number found per unit of material
  • The average hours spent to find a defect
  • The average number of serious defects found per unit of material
  • The average number of hours required finding a serious defect

During inspection process there are six main steps:

  • Planning
  • Presentation
  • Preparation
  • Meeting
  • Rework
  • Follow-up
  • Objectives
  • Inspection Staff
  • Rules

With these considerations now you must be able to do a fully review of the system, to check wheter it fulfills the quality, V&V levels desired, with their proper standars. Software review is important because it helps to make sure that the system not only it is considered as quality system but you make sure that every posible case of the system is now checked and the system can be runnable with no issues, distributed and ready to life its life.

Most addictive game in this quarantine

Genshin Impact: This is probably one of the few games that traps the user as soon as they enter the game, genshin is an open world game in which you can play with many characters as you explore the two different regions that are available in the game, defeating bosses, exploring dungeons, using elemental powers such as: electro, geo, hydro, cryo, pyro, and anemo, there are so many things and combos than can be perfomed withing the game, the only problem is that is a gacha game, this means that if you want yo can pay to the game, because most of the characters are obtainable through loot boxes, which are not easy to obtain inside the game, adicitive, fun and really good.

This is a gif of the game – Tenor

Verification and Validation of Software

Hi everyone and wellcome back, I know that it has been a while since the last time we talked but now we have another topic to discuss and know about, and this time is going to be about how to properly do a V&V in every proyect, about the methodology and step by step on how to niceli finish a V&V process.


V&V in the life cycle of software development

At this point if you were reading my blog you’ll probably know about the life cycle, which is the flow of life in every system, it determines the objective of a system, when it was born, when it develops and when it is expected to end its life, in other words when the system has already completed its purpose of existing.

Of couse if we talk about Verification and Validation first we need to describe what are these:

  • Verification: when the product is being built right
  • Validation: when people are building the right project

In other words Verification checks if that they are building the system the right way, and Validation checks that the product that they are building is the one who si going to complete the main objective

To describe its aplications to this topic fist we are going to use a life cycle model as an example:

This is a picture of a life cycle model – Invensis Learning

In this model the life cycle of the system is descibred in 4 phases

  • Initiacion
  • Planning
  • Execution
  • Closing

Initiation: In this phase the idea of the product that is going to be built is being processed, Verification in this phase is going to be in charge of making sure that the model the idea of making the product is right. Validation makes sure that the product must fullfill the main objective

Planning:In this phase how the model is going to be built is being processed. Verification the going to check that the procedure that is goign to be followed is the correct one. Validation: is going to check that the procedure taken keeps following the main objective.

Execution: In this phase the system is now being built, following the procedure previously established. Verification checks that the procedure is following the objective of the system. Validation checks that the procedure is going to finish a project that fulfulls the main requirements.

Closing: in this phase the end of the system finally is reached. Verification checks that the product was built right. Validation checks that the final project fulfills the objective established in the first phase.

With this example you now probablly know a little bit more about how to implement V&V during a lyfe cycle of a system.

Black mirror recomendation

White bear: In this episode a woman awakes in an abandoned house with no memories at all, aparently she is in her house but she remembers nothing at all, while the episode develops the memories of the woman star to comeback but there a some people who are trying to kill her, and everyone in the world just records how she is being chased with no help at all.

This is a gif of a dangerous sign in the episode – Zonared

International standars for V&V of software

Because V&V are models to evaluate the levels of goodness there are some standars that describes a level of quality for some saying, and these standars rely on rules that need to be followed and level of achieveness acomplished.

Some of the standars implemented in V&V are:

  • ISO/TS 17033
  • ISO 14021
  • IEC 17029
  • IEEE
  • ISO 9000
  • ISO/IEC 15408
  • IEC27001

These standars describe the level of achieveness of a system, every one of these standars descibre a diferente level of achieveness, if you want to knoe a little more about the standars pleas check out this link.

Black mirror recomendation

Shut up and dance: In this episode our main character gets blackmailed because some hacker caught him doing some bad things, our main character needs to follow some orders if he wants to keep his secret, secret, as the story goes our main character meets an adult man in the same situation as him, little did they know that hackers have some different plans for them.


This is a gif of the episode – Giphy

How to plan V&V

In order to do a correct planning about V&V some phases needs to be analyzed and described to finally do a V&V process.

This process is kinda similar to a lyfe cycle, but with more in deph about what needs to be planned before or to be prepared to do the V&V planning.

  • Requirements: Validate the requierements of the system and verify that are acomplisable
  • Architecture and Design: Validate that the sistem is well designed and runs according the objective of the system. Verification to check non functional requirements
  • Implementation: in each procedure implemented check that follows that the software must suceed and do some testing about in each implementation
  • Testing: checks that all functionalities of the system meets the requiremens previously established and to make sure that everything works as expected
  • Deployment: comfiguration and instalation must run as expected with no bugs and errors

Following these phases when building you ensure that your system is optimal to do a V&V implementation of the system, and now it is time to select one or more standars to meassure the level of V&Vness.

Black Mirror recomendation

Hang the dj: Imagine in a world in which there is an app that will show you who your perfect partner for life is, this is the story about two people who gets matched by the aplication, just for one night, and in that night they felt more for each other than for anyone in the world that they have met before or will met, is an app more powerfull than true love?


This is a gif of the episode – Revista Kuadro

Administrating the V&V Plan

This is probably one of the easiest topics to discuss because in the previous entry we discussed about the diferenece, how to implement, and measure the level of V&Vness which results in a very easy way to administrate the V&V plan.

Procedure to administrate the V&V plan:

  • Explain the objetives of the project
  • Document all the implemented functions and sequences
  • Make sure to test all cases to avoid bugs
  • Make sure to aproeach the system in a way that nothing stays outside the evaluations
  • If bugs found make sure to document which bugs occurs, under which circumstances and if corrected the way to corrected, to make sure that if some kind of similar bug occurs now there is a way to correct it
  • Make sure that procedures can run under any enviroment, if not make sure to run on at least most of them, and to acknowlegde which requieremnts are needed.
  • To ensure a bidirectional comunication with the customer, to keep updated all of the involved
  • Run updates to the system and maintenance
  • ALLWAYS document everything that happens in the system, bugs, errors, implementations, everything.
  • Make sure that the end of the system is defined and to redo the planing until a level of V&Vness is adquired.

With this procedure now we can make sure that you are now ready to do a good V&V implementation in your systems, I only recomend doing this if your project is big enough or if you want your project to be as clean as posible.

Black mirror recomendation

Bandersnatch: This is a movie in which we are the main character as the story progresses the main character will face some desicions and we are the ones who decide which opcion the character chooses, each decision takes the character to a different scenario in which good or bad things could happen, we are now the true puppet masters.

This is a gif of the movie – Giphy

Models and Standards for Software Process Improvement

The last time we talked we discussed about software quality, how to define requierements, what quality is and which are some of the methods to follow in order to obtain a high level of quality in our projects, this time we are going to talk about models and standars, which are procedures to follow up in order to keep control of the results of our systems, and we are going to see some of the most used models and standars out in the field, so get ready.

Models: This procedures can differ between the objetive of its creator, some of the models helps to mantain and define a way to ensure better performance in our software, maintenance and operation of systems.

Standars: These are documents that provides specification of procedures that need to be followed in order to achive a certain goals, some of the goals are get a better organization of our systems, ensure the software adquires a high level of quality, a way to keep the maintenance of our systems, all of these with a step by step diagram which encourages developers to think about all of the posibilities when project building is on.

CMMI

CMMI is a process that focuses on the improvement of process and software development, it is usually used by companies who claim to be more productive, have a higher level of quality, a longer life cycle of software and more reachable investment and profit. This because the CMMI helps the organizations to optimize the improvement of proccess, making a more productive enviroment who reduces risks in software/product/servicios development, three of the main aspects of CMMI are.

This is an image of the CMMI diagram -Medium
  • An integrated process of improvement of process
  • Incrustation of better methods in bussiness states
  • Phase focus on administration and business optimization

CMMI is a model that has so much profit that can be divided into three main disciplines

  • Development
    • Focuses on practices who helps to develope products or services with standar quality who satifies customers needs
  • Services
    • Focuses on helping service providers companies
  • Adquisition
    • Focuses on offering the best practices on initialization, adquisition of products/services/tools/teams, which all of those bring some value to the company

It depends on what the builders are looking for their company, so they can decide which of the disciplines satifies the more their product or service, this method is mainly known on the field because of the amount of profit ir brings to a company.

If you would like to know more about CMMI check out this link

Videogame recomendation

Among us: A coperative online game, in which some tripulants of a ship need to finish some taskst in order to win, this because some of the tripulants are impostors whose objective is to kill you all, the game is divided into two teams, crew and impostors, is up to you who to kick out of the ship at the end of each round.

This is a gif of one of the impostors killing a crewmate – Tenor

TSP/PSP

TSP is a model who focuses on process, and products and teamwork, it follows the principles of PSP to implement its procedures, this process is strong because of:

  • Teams are not randomly builded
  • Streghts and weaknesses of team members are validated in order to bring the best team to work

This means that behind every team integration there is an strategy defined, this to ensure that working together and coordinated will be the best option when assigning responsabilities and check pointing, all of this by setting shor, medium and long term goals.

This is not some guide, this is one strategic way to put everyone into their respective role, in order to obtain the best of the people who are working on the project, this focuses more on giving everyone the best task for them instead of focusing on the process

This is an image of the TSP/PSP diagrams – Kernel

PSP is a model who focuses on proccess and guides developers to be autonomous, the main roles about psp are defined:

  • Define their process
  • Plan and give feedback about their work
  • Administrate the quality of their own products and results

Psp is a personal process who is based on the personal improvement principles, who helps people to stablish personal goals, identify which methods to use, when to use them, feedback their work and analyze to adjust to future improvements, a strong method that teaches people how to value by themselves.

The difference between these two methods is very clear, one of them focuses on personal improvement and the other one on giving everyone their best option to make the most optimal of results, definetely depending on what are you looking for in your proyect this can be really usefull.

If youd like to check more info about these models check this link

Videogame recomendation:

Spellbreak: This is a battle royale free-2-play game which is totally different from the battle royales we know, in this game instead of weapons you use magic, there are six main elements to use, lightning, rock, fire, wind, ice and poison, every element has their own unique power ups and elements can be combined, posibilites are unlimited.

This is a gif of a mage receiving a lightning attack – Tenor

ISO-15504

ISO is a standar who focuses on products and software aplications developement, created with the objective to evaluate the capabilities and strenghts of process in software development, in which the main characteristic of the method rely on:

  • Obtain an efficient tool for software process development improvement, so do services and products
  • International recognition about the capabilities and strenghs of software development products
This is an image of a tunner phase of ISO model – Normas ISO

Strenghts of ISO:

  • Adapts to the working enviroment of every organization, because it is not a serie of rules
  • Focuses on how well done process are made instead of their results
  • It can be double time evaluation, on process and quality of proceddure

If an organization decides to enroll their development using a model like ISO, a certification that validates internationally the quality of the product, proccedures and proccess in the proyect, certification who also does, but I did not mention is that lowers the risk rate by a considable amount, a really good standar to follow, who can be divided into six diferent phases to control in which phase of our validation are we:

  • Level 0: Incomplete, when we start
  • Level 1: Finished, when we «finish» for the first time
  • Level 2: Managed, when the process life cycle is defined
  • Level 3: Established, when the expected result of the software is established
  • Level 4: Predictable: when the behaviour of the system can be predicted because of how well the proyect is known
  • Level 5:Optimized, when the proyect was finished and validated but little details were covered

If you’d like to know a little more check out this link

Videogame recomendation

Fall guys: This is a battle royale, but with no weapons, or magic or anything that could do damage, this battle royale focuses on puzzles and minigames called rounds, in which only a small amount of playes will be able to get to the next stage, it is fun because the characters look a little dumb and makes the game really fun.

This is a gif of a player pushing another so it fals and loose – Tenor

MOPROSOFT

MOPROSOFT is a model based on process who is oriented to small and medium business or internal areas of development and software maintenance, who allows to access to worlide softwarer practicess, by using this model the organizations ensure to offer services with international quality level.

This is a diagram of the MOPROSOFT levels – Conogasi

This process divides into three levels:

  • High direction, this is the level in which business are worked
  • Gerency administration, proyect administration, process administration, resources administration and HR, Infraestructure and knowledge about the organization
  • Operation, in this level the administration and management of specific proyects are worked on, which includes development and maintenance of software products

This is a good method to implement because small to medium business can easily implement them, it is does not require a big amount of investment, whose benefits of the model can be adquired in a small amount of time, which high level of results.

So imagine that you run a small business, and you are really confident about the product or service you are offering , but you want people to trust your product and you do know know how to do that, implementing this method will help your company to elevate the capabilities to get people to know that your products are international level of quality and competitive

Videogame recomendation

Valorant: If you are not into battle royale games and like a little more tactical, then valorant is the game, it is a shooter just like the classic Counter Strike, where bullet recoil is hard to control, the only difference is that combines the most fun element in Overwatch, abilities, so imagine playing Counter Strike and Overwatch in the same game, that is valorant, and also is free to play.

This is a gif of three of the valorant characters – Pinterest

IDEAL

This method is totally different from the previous ones, because instead on focussing on the process or procedures or people or teamwork, focuses on problem solving, just as the name says IDEAL stands for

  • I
    • Identify the problem, this step focuses on identify what the problem is, share their feelings and express what they feel can be a good way to help others to identify the problems and understand it
  • D
    • Define your goals, now with the problem identified and the source of it known, you must define what do you expect from the problem, is not the solution but what you want to happend when the problem is solved
  • E
    • Explore solutions, defined what the expected result you are looking for then you need to explore different solutions, by answering questions like:
      • What are some solutions?
      • Which is the best solution?
      • Is it safe?
      • How migh people feel bout it?
      • Is it fair?
      • Will it work?
      • Is that what we really want?
  • A
    • Action, now when the best solution is selected what is left is to aply that solution and pray to that the expected result comes
  • L
    • Learn from your actions. This is the most important part of the model because in this part a reflection needs to be made, a reflection to understand the actions that brought the problem to the table, to understand what can or not be done by the people, at the end of the day this method aplies not only to people but to any kind of problem that is presented while working on a process
This is an image of a spotlight and the IDEAL phases – International Coach Academy

This is definetely my favourite of the standars and methods that were discussed in this topic, because it feels more human than the others, feels like a process that not only helps the process but the soul too.

If you’d like to know more about this method check out this link

Videogame recomendation

League of Legends: This is one of my favourites of all time, LoL is a moba in which the field is divided so that two teams, each of 5 members, fight agains each other, destroying turrets, monsters and using abilities, there are more than 130+ characters to play with, each one with 5 unique abilities and unlimited posibilities, definetely a game work trying. WARNING it can be a little adictive.

This is a gif of Ezreal and Kaisa, playable characters of the game fighting agains void spiders – Tenor

Thanks for reaching this far, I hope to see you on my next post, til nex time.

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.