Swiss army for software

--Originally published at Blog Oliver

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

Positive for bad software (software testing)

--Originally published at Blog Oliver

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

Continue reading "Positive for bad software (software testing)"

Review my software please

--Originally published at Blog Oliver

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

Continue reading "Review my software please"

How to know if my software is valid?

--Originally published at Blog Oliver

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

Continue reading "How to know if my software is valid?"

Models and Standards for Software (yes software)

--Originally published at Blog Oliver

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

Continue reading "Models and Standards for Software (yes software)"

Software quality 101

--Originally published at Blog Oliver

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

Continue reading "Software quality 101"

I am rich

--Originally published at Blog Oliver

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

--Originally published at Blog Oliver

This 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 Bulgary. 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

--Originally published at Blog Oliver

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 Continue reading "She is back"

The most important part of software development

--Originally published at Blog Oliver

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 Continue reading "The most important part of software development"

css.php