Swiss army for software

In this last section we will discuss some tools we can use to improve and have a better organization in different parts of software quality and testing. We will talk about tools for versioning controlling, which allow us to have control and see the differences between each version this way we can see who made specific changes and see what and who broke parts of the project. We will also talk about tools for testing and automatic tests for example validate specific parts of the project then uploading the changes to a version controlling tool. In the end we will discuss about some tools we can use for process and administration of V&V (Verification and validation)

Version controlling tool

Tools to administrate and keeping track of changes in the code or project

  • Git
    • Free
    • Open Source
    • Provides strong support for non-linear development.
    • Compatible with existing systems and protocols like HTTP, FTP, ssh.
    • Capable of efficiently handling small to large sized projects.
    • Cryptographic authentication of history.
    • Cross platform support
  • BitBucket
    • Has a free version
    • Not Open Source
    • Cross platform support
    • Git repository hosting
    • APIs
    • Clustering
    • Wiki
    • Issue tracking
  • CVS
    • Free
    • Open Source
    • Cross platform support
    • Allows good web browsing of the source code repository
    • Helpful support from vast CVS community
  • SVN
    • Free
    • Open Source
    • Client-server repository model. However, SVK permits SVN to have distributed branches.
    • Directories are versioned.
    • Copying, deleting, moving and renaming operations are also versioned.
    • Supports atomic commits.
  • Mercurial
    • Free
    • Open Source
    • High performance and scalability.
    • Advanced branching and merging capabilities.
    • Fully distributed collaborative development.
    • Decentralized

In my opinion git is one or the most used version controlling tool, it should be your standard choice, the most popular cloud hosting provider for git repositories is Github, which is a very important tool which is required in some jobs.

Testing

  • Selenium
    •  Testing framework to perform web application testing across different browsers and platforms works in different operative systems. Mostly used testing Java, PHP, C#, Python, Groovy, Ruby, and Perl
    • Free
  • TestingWhiz
    • Software used for testing web applications, software testing, database testing, API testing, mobile app testing, automatization and optimization.
  • HPE Unified Functional Testing
    • Testing automation for functional and regression testing for software applications, it can be integrated with mercury
  • TestComplete
    • Offers various solutions to automate testing for desktop, web, and mobile applications 
  • Ranorex
    • Ranorex Studio offers various testing automation tools that cover testing all desktop, web, and mobile applications.

V&V

Last but not least we will show some tools for verification and validation, we will focus on newer, collaborative tools that helps us in different parts of V&V process.

  • Trello
    • Collaboration tool where users can set and organize tasks, responsables can be selected, deadlines and much more. Different sections for different types and status of each task.
  • Notion
    • Is an application that provides components such as databases, boards, wikis, calendars and reminders. Users can connect these components to create their own systems for knowledge management, note taking, data management, project management, among others
  • Monday
    • It’s a simple, but intuitive, Work OS for teams to shape workflows, adjust to shifting needs, connect collaboratively, and administrate different tasks and work environments.
  • Zenkit
    • Is an advanced project management application featuring progressive web apps and public API that allow you to publish your projects in myriad ways, including a wiki view

Positive for bad software (software testing)

Testing is a critical step of software creation and validation, this way we can validate the correct functionality and behavior of our projects. Imagine buying a calculator that doesn’t work how its suppose to for example, when you press the number one the calculator ads a two instead.

Testing process is divided into different steps, types and levels. First we are going to talk about the stages and parts of testing process.

1.Planning

This is the stage where we select the scope of the test and we manage the risks involved in these tests. We also select team leaders people in charge of different areas and all the material an assets available

2.Creation of scenarios

It is the stage where “expected” and “realized” outputs are prepared according to the content of the project to be tested. In this step is where the scenarios are written, for example what we expect to happen when certain input is used, or what should be the behavior of the project.

3.Preparation of test environment

This is the stage where prepare all de assets we need in order to run the tests, for example in most of the cases we will need a specific environment with specific characteristics in order to control or manipulate the behavior of the project according to our needs.

The project can be connected to this testing environment and when all tests are approved the project can go back to development or deployment environment

4.Run the scenarios

This is the stage where the tests are run. Test scenarios that have been written are applied in this step.

5.Reporting of result

It is the stage in which the situation that occurs after all specified scenarios are applied is communicated to the person concerned. The report should use as simple a language as possible.

Those are all the steps involved in the testing process, now we will talk about the different types of software testing and a little description of each one.

Unit testing

Unit Testing refers to test individual and small portions of the code, for example testing a simple function, single module or single process, the rest of the code is isolated from this test. The objective is to check the correct functionality or behavior of that specific section. This way we can test small parts of the code and be sure that everything is working as it should. Also this way we can know which specific part of the project is not working or have a problem. Good unit testing should follow the next affirmations

Integration testing

The integration test is testing the operation of two or more slave modules as a group, for example a group of inputs in a screen or a couple of buttons that need to work in specific way when one of the is presses. This way we can test the integration of different units or small parts of the code in order to verify the correct behavior of these group of elements

System testing

System testing is verifying the correct functionality of a whole system, for example a group of different modules or screens. This is done from the user perspective, and shouldn’t be automated with data mocks or fake requests. This type of testing is the most involved and time-consuming.

Acceptance testing

Acceptance Tests refers to the testing of end-user scenarios. In other words is the final thought or decision of the end-user wether he approves the project or not.

At last we will talk about the different roles in the testing process, basically we only have 2 different roles and each role is divided into smaller roles, depending on the project testing is done by small groups of people.

Test lead/manager

  • Defining the testing activities for subordinates – testers or test engineers.
  • All responsibilities of test planning.
  • To check if the team has all the necessary resources to execute the testing activities.
  • Prepare the status report of testing activities.
  • Required Interactions with customers.

Tes engineers/QA testers/QC testers

  • To read all the documents and understand what needs to be tested.
  • Based on the information procured in the above step decide how it is to be tested.
  • Inform the test lead about what all resources will be required for software testing.
  • Develop test cases and prioritize testing activities.
  • Execute all the test case and report defects

Review my software please

As always we will start defining what is software review and why is important. Software review is a systematic examination of a project made by one or more individuals to find, detect and make sure the platform or project is working as it should. Constantly reviewing the project in different areas give us the following advantages:

  • It improves the productivity of the development team.
  • Fewer defects are found in the final software, which helps reduce the cost of the whole process.
  • The reviews provided at this stage are found to be cost effective
  • As a matter of fact, this process results in dramatic reduction of time taken in producing a technically sound document.

Types of software review

Software Peer Review: Peer review is the process of evaluating the technical content and quality of the product and it is usually conducted by the author of the work product, along with some other developers.

Software Management Review: These reviews take place in the later stages by the management representatives. The objective of this type of review is to evaluate the work status.

Software Audit Reviews: Is a type of external review, where one or more auditors, who are not a part of the development team conduct an independent examination.

Characteristics of a good peer review

Time: Good reviews are made on time and respecting the deadlines, this way the author have the opportunity to make the right changes and choices.

Intention: Make reviews with a willing attitude sometimes more work and time is needed and can get difficult thats why maintaining a positive attitude and doing it with a good intention is important.

Guidelines and Scope: Before starting to review a project, reading the guidelines is important this way we can now the functionalities and aims of the project, this way we can really test and review the true functionalities and meaning of the project, making important and valuable reviews.

Be Constructive: Be bold and constructive, threat everyone as equals and make reviews that will help the project improve not just judging and pointing the bad aspects of it.

Say No: Sometimes its better to deny an offer to review a project, if you feel you are not the right person for the job, this way we can leave the path open for a better person who will make the project better.

Process of Software Review:

  1. Entry Evaluation
  2. Management Preparation
  3. Review Planning
  4. Preparation
  5. Examination and Exit Evaluation

Roles in software review

  • The moderator
  • Also known as review leader
  • Performs entry check
  • The author
  • The responsable of making the project
  • The scribe:
  • He is the one writing the logs of the review and tests made.
  • The reviewers:
  • Also known as checkers or inspectors
  • Check any material for defects and error
  • The managers:
  • Makes the decisions and manages the time, schedules and priority of the tests that will be made.

How to know if my software is valid?

First of all lest define what is V&V (Verification and Validation) and why it is important. According to IEEE Standard Glossary of Software Engineering Terminology, V&V is defined as a process used to determine wether

  • Requirements for a system or component are complete and correct.
  • Products of each development phase fulfill the requirements or conditions imposed by the previous phase.
  • Final systems or components comply with specified requirement

In other words V&V helps us to know if our project satisfied all the specific requirements we set. The problem is that there are many perceptions of what V&V is and what is not, thats why V&V have so many different standards with different requirements and is one of the most difficult specialization you can follow in the area.

Example of V&V International Standards

P1012 – Standard for System, Software, and Hardware Verification and Validation by IEEE Computer Society – “This verification and validation (V&V) standard is a process standard that addresses all system, software, and hardware life cycle processes. This standard is compatible with all life cycle models”

IEEE 1012-2016/Cor 1-2017 – IEEE Standard for System, Software and Hardware by IEEE – “Verification and validation (V&V) processes are used to determine whether the development products of a given activity conform to the requirements of that activity and whether the product satisfies its intended use and user needs”

Steps of a project Validation

1. Create a validation plan: The first step in the validation process is to create a validation plan (VP) that identifies who, what, and where.

2. Define system requirements: defining what you expect the system to do

3. Create the validation protocol and test specifications: The test plan describes the objectives, scope, approach, risks, resources, and schedule of the software test.

4. Testing: Tests are executed based on the test plan and test cases.

5. Develop/Revise procedures and Final Report: Approval of this report is the final release for a system to go into production

Elements of a Successful Validation Plan

Introduction and scope: High level statements of the objectives of the system or project.

System overview: Business description of the system or project

Organization Structure: Roles and responsibilities of those involved

Quality Risk Manager: Description of the overall quality risk management approach

Validation Strategy: The identification of the validation lifecycle, inputs and outputs of each project stage, acceptance criteria and methods of traceability and design review.

Deliverables: Required deliverables and a responsibility assignment matrix

Change Control: Identify the relevant procedures and tasks required to change the scope

Standard Operating Procedures: standard Operating Procedures (SOPs) indicating how the system is operated and controlled

Glossary: Vocabulary of acronyms and initialisms.

Models and Standards for Software (yes software)

In my last post I talked a little about the introduction of software quality and some basic concepts and descriptions. This time we will talk more about specific standards and models used in the industry.

CMMI (Capability Maturity Model Integration), is a model that describes the best practices for a company to improve their processes. It was created thanks to the fast increment of popularity in software development, in the beginning this process was only used in defense programs. The government financed a two year program where more than 200 hundred experts in the area gathered and created the most known model nowadays.

CMMI helps companies to have better communication inside the organization because everyone use the same language. It helps to improve clients satisfaction and companies can create more efficient projects with better quality. CMMI works with different maturity levels, each layer helps our project to achieve continuous improvement and better performance. According to the official CMMI web site the five maturity levels are the following:

Maturity Level 0: Incomplete
Maturity Level 1: Initial
Maturity Level 2: Managed
Maturity Level 3: Defined
Maturity Level 4: Quantitatively Managed
Maturity Level 5: Optimizing

Next we will talk about TSP/PSP which are a set of practices to allow software developers and programmers to administrate their time and be more efficient. Team Software Process (TSP) is a process that helps to create and improve team work, it allows teams to establish objectives, create plan works, give feedback of completed objective and finally delivered efficient, reliable and quality software. It focuses mainly in two primary aspects, creating a good team and managing this team in order to allow a better performance. PSP (Personal Software Process) is just the antecesor of TSP and it was more focused in improving the personal aspect of every developer, TSP is more team orientated as we can see.

PSP-TSP-CMM

Next we have ISO/IEC 15504 (Software Process Improvement Capability Determination), is a model that allows us to evaluate the capacity of our process of software development. Using this model helps us to create a better and more efficient project.

The international ISO 15504 measures 9 attributes in order to qualify the specific processes we want to improve. Those 9 attributes are the following and can be rated with 4 different points depending on the level of achievement (0-15%), (15%-50%), (50%-85%), (85%, 100%)

  • Process performance
  • Performance management
  • Work product management
  • Process definition
  • Process deployment
  • Process measurement
  • Process control
  • Process innovation
  • Process optimization

As we can see each attribute is directly related with different part of the cycle of software development therefore ISO 15504 is a model that helps to improve all this processes, leading to a better software with more quality.

ISO 15504 provides 5 different maturity levels that are abstracted from CMM, the predecesor of CMMI, those levels are the following:

  • Level 0: The process is incomplete;
  • Level 1 – The process is done.
  • Level 2: The process is manage.
  • Level 3: The process is establish.
  • Level 4: The process is predictable.
  • Nivel 5: The process is optimized.

Finally we have MoProSoft model to improve software, this is a specific model used in Mexico and was developed by the UNAM (Universidad Nacional Autónoma de México) and the Secretaria de Economía de México in the year 2001, it was created because non of the existing models could full-fill the national requirements. MoProSoft includes 7 lines of strategy in order to achieve an improvement of software development. The last one is designed to full-fill international capacities and the other six are the following ones.

Software quality 101

Quality standards are implemented or used in many areas for example in food chains, cloth or car industries, this allows different products or services to maintain certain qualities and specifications. Imagine you want to buy a car and you decide to buy the one you see in a specific exhibition, they will make another exactly the same just for you. The time has come and you go to see your new car but is not what you expected. The color is opaque, it feels slower and its not like the other even though you bought the same model, color and specifications. Thats why quality controls exist to ensure the standards and conditions that a product or service must meet in order to be delivered.

Diagram of software quality

Software industry is not the exception we must have strict regulations and standards of quality in order to develop the best software we can. Depending on the area it will be used it can cause severe damage or consequences. For example imagine a program used in a radiology device malfunctioning and exposing patients to more radiation than they should be. Or a problem in software used in air traffic control, leading to a crash. Now-days we depend on software to live our daily lives so its important to have a regulation to determine the characteristics and specifications software must have.

According to asq.org software quality focus mainly in the following 8 attributes:

  1. Functional suitability (Functional completeness)
  2. Reliability (Availability)
  3. Operability (Learnability)
  4. Performance efficiency (Resource use)
  5. Security (Integrity)
  6. Compatibility (Interoperability)
  7. Maintainability (Modularity)
  8. Transferability (Adaptability)

This 8 attributes focus on delivering a quality software with all the right specifications and standards. As we can see most of them involves more that just good coding or using the best programming practices, it also involves all the software development process from setting the focus of the project to the work plan and tests. Thats why we must have a quality process working in
parallel with our main objectives. We must register all the risks we are taking in the project and think more about the long term of our programs. Also we must implement unit tests, reviews and feedback of every objective completed of our project.

According to the QA PLATFORMS the most used international testing standards in software development industry are the following five:

  • ISO/IEC 29119-1: Deals with concepts and definitions of software (published: Sept 13).
  • ISO/IEC 29119-2: Deals with test processes in a product (published: Sept 13).
  • The ISO/IEC 29119-3: Deals with test documentation of the product (published: Sept 13).
  • ISO/IEC 29119-4: Deals with testing techniques and strategies (published: 2014).
  • ISO/IEC 29119-5: Deals with keyword-based software testing (published: 2015).

All this standards come with specific requirements we must meet in order to achieve this certification. Following this guidelines will help to prevent weaknesses in the process of developing software. Also it ensures our projects have al the specifications and attributes needed to work the best way posible. Thats why standards are important in the cycle of software development.

I am rich

giphy

In this chapter we finally see some of the projects finishing and before the imposible deadline imposed by Minister Belok. NNL was back and he asked Webster to see him with some urgency. Webster was a little nervous this could mean good or bad news. In the end it was a grateful surprise to Webster. Morovia was going public and the starting price for a share would be around 14 and 22 dollars. In the beginning Webster wasnt surprise until NNL remember him about the shares he earned when he signed for the job. So Webster is now rich. NNL asked  him if he wants to keep working in his job, because they had to renovate the contract because of politics. After thinking a little bit Webster declines the job and he points a person to be his succesor.

We learned that NNL name is Bill maybe related to Bill Gates the owner of Microsoft and xbox. He talks with Webster about finding a new country, maybe the United States, He thanked about Bulgaria, but someone has already bought it.

In the end of the chapter Minister Belok calls Webster by phone. He want to rent most of the building were Webster staff is working and move them to a smaller space. Minister Belok wants adopt a new business strategy called Lean and Mean, this formula is developed in failing companies and goes the opposite direction of Prosperous and Caring. So Webster hangs up, this is the first time we see him facing Minister Belok.

We can see Webster changing and learning about his experiences in Morovia and this chapter is a reflect of that. We see him more self-confident and with more guts.

tenor

 

 

New NNL

gThis is the last chapter of the book, in the end everything works well for Webster. Finally its time to leave Morovia.  He managed to finish a few projects and the others are in the right track. Everything is set to his successor.

After a big party we se Webster in his room.  He was thinking about his journal until someone knocked at the door.  Alonso Davici one of the managers was working with the press and he wanted to interview Webster.  Morovia was going to publish a new Journal called Aidrivoli Software Magazine and they wanted to feature Webster in the first issue.  After a few questions Alonso asks Webster if he wrote anything related to what he had learned, this would help so much with the journal. After looking at his journal Webster decides to give ti to Alonso, this surprised me a lot because Lahksa gave him than journal and it represented all what he had faced and learned during his time in Morovia.

S2e11_journal_1

The next day before getting on the plane he was thinking about Lahksa he hadnt seen her for a while. She didnt show up to say goodbye. After a few hours he arrives to Bulgaria. And Someone bought the country just like Morovia, they also had  a NNL called BNNL. A car arrives and takes Webster to see the National Leader. After he arrives Lahksa surprises him. And we learn that Webster is the new BNNL his team and lahksa gather all the money and shares they had and they bought Bulgaria. Webster also propose marriage to her.

Who knows what new adventures will face Webster.

65e3b5d84bb746a23cd2d8ecb64da34d

She is back

project-manager-1030x579

In this two chapters we meet a new character, Mr. Winnipeg  who is a famous writer who has a lot of books under his name. He ended up in Morovia the same way as Webtster. Lahksa puts something in his drink and he woke up in an airplane landing  in Morovia. Mr Winnipeg helps Webster in two huge problems. The first problem is Webster angry manager in on of his projects. He solves the problem in a strange way. He demotes the manager and offers him to work in a different area. In the beginning I didnt understand this, but then I realize he was scared and I discovered this not because I read it but because I have been in that same position. Fighting to finish a product and being afraid of letting down your team, the guy in charge of all the project and most important yourself, this is pretty scary. So we tend to hide this emotions with anger, because anger is acceptable in a working environment.

The other problem Mr Winnipeg helps to solve is problems with long meeting where people dont get to an agreement and lose time sitting in a place where they are not needed. So he comes with a series of rules and standards in order to boost the efficiency of the meeting for example having an agenda and jus asking the essential personal to assist to those meetings.

download

In the next chapter wee se Lahksa returning from his long trip with NNL. She is one of my favorite characters so I really liked seeing she come back and being part of the main history again. And she helps Webster with the biggest problem he has faced in all the book, Minister Belok. Who will be in the United States for about a year receiving a treatment for Herpes. It sounds weird but Lahksa put a powder in his drink and voila he has herper. In this chapter we also see Webster facing Minister Belok when he talk to him by phone and Webster just hang up the phone.  In the end Webster disolves all teams A and assign the people to smaller teams in order to reduce the time needed to finish the projects.  Maybe he will accomplish to finish some project in the deadline after all.

The most important part of software development

source

I dint like this chapter so much because its not related to the main story, we just see Webster, Kenoros and Belinda talking about Kenoros grade of each project. This grade is bases on the amount of time dedicated to the designing of the project.  When we talk about design we refer to dividing the project into parts or modules not talking about UI, color, fonts, etc. We see lower grades in projects with more people. Trying to find an explanation Webster asks to Kenoros about this situation.

We learn that projects with a lot of people tend to write a political document and call it design. We just needs a few people for designing the project, you cant put most of the team in stan by until designing team finishes their job. Thats why this stage is skipped in large teams. But thats a big mistake, this is one of the most critical parts in creating software, its like the foundations and steps we need to follow in order to complete our job.

galshir

Belinda once again saves the day an explains how we need to divide the project in the design stage and what advices we can follow. First of all we need to divide the project in chunks of almost the same size this way we have a proportional distribution of all the work needed. Also this chunks must make sense and wee need to order them in a the correct way. We can divide big groups into smaller ones and assign a chunk to each small team. But all teams must know what the others have done and what are they woking on. This way we dont lose time explaining everything to each team.

In the end we cant skip designing. A good design can save a lot of time.