Software Review

Software review is an essential part to maintain software quality. Before, the processes, standards and models for assuring software quality were presented, but now, it is time to delve into the actual tasks for verification and validation. Starting with the title of this blog post. As always, the definiton of the topic will be needed in order to continue. Software Review can be defined as:

“It is a systematic inspection of code in order to find errors, enhance the product, and to validate its vital features and components”

This serves the purpose of checking if the software is meeting its requirements, and to adjust development accordingly. There are many benefits that come with applying software reviews to all the stages of the Software Development Life Cycle (SDLC), including the necessary software quality, reduction in the time of production and making testing time & cost effective.

There are three main types of software review, that have different roles and are applied in different stages of the SDLC.

Software Peer Review

These reviews are done by the creator of the code, along with other developers. This helps to check the quality of the software, to find defects and solve then. It is the most basic model of review, and that is why is the most used one. There many types of software peer review.

  • Code Review: a systematic evaluation of the code structure is done, against software standards and procedures.
  • Pair Programming: two or more developers work together, and review each other’s code.
  • Informal: a review that is conducted without the need of a large group or the documentation.
  • Walkthrough: this is a well structured review conducted by a lead team member, usually from the quality assurance department. It is done to detect errors in the code. There are diffetent roles in this review:
    • Author: the creator of the code, acts as an observer and answers questions
    • Presenter: is the one that presents the product, and usually develops the agenda.
    • Moderator: the one that in charge of making everyone follow the agenda, and encourages participation from reviewers.
    • Reviewers: they evaluate the work, to make sure that the standards and guidelines are followed, the requirements are met, and the product is on the right track.
    • Scribe: in charge of taking notes, record the detected errors, comments, suggestions, and unsolved questions.
  • Technical Review: a team of qualified personnels examine the software.
  • Inspection: a formal type of peer review, where defined processes are used in order to review the code.
Software Management Review

This review is applied at the later stages of the development by the management representatives. This is to check the work status, and it is done in order to decide the next major steps of the project.

Software Audit Reviews

It is an external review , where auditors that are not part of the development team do an examinatio of the code. This is done by managerial level people.

Process of Software Review

The IEEE defined a standard for the steps that are required in order to create a complete software review process:

  • Entry Evaluation: a check-list by entry criteria tha ensures that all conditions are met to have a successful review.
  • Management Preparation: a management representative checks that the software review has all the required resources.
  • Review Planning: an objective is set, and the team of resources is formed based on it.
  • Preparation: the reviewrs prepare the reviewing tasks.
  • Examination nad Exit Evaluation: the evaluation is done, and reviewers share their results, and verify that all review tasks are done.
Review Key Products

There are important parts of the software development process that should be evaluated: plans, requirements, design, and code. For these for key work products exist different standards that can be applied to each one of them. Although eviews can be distributed diffetently for each key product:

Key ProductPeer to Peer ReviewWalkthrough ReviewInspection ReviewManagement Review
Plans✔✔✔✔
Requirements✔✔
Code✔
Design✔✔
References

Software Review. (2020). Software Review. ProfessionalQA. Retrieved from https://professionalqa.com/software-review

Melo, W., Shull, F., Travassos, G. (2001). Software Review Guidelines. Coppe/UFRJ. Retrieved from https://www.cos.ufrj.br/uploadfile/es55601.pdf

LalSingh, A. (2009). Guidelines to review Work Products. Rass Tools Limited. Retrieved from https://es.slideshare.net/AshokKumar1213/guidelines-to-review-work-products

Software Review

And for our last topic of this partial we haaaaave… sooftware review!!! *claps*

  1. Definition and characteristics of review
  2. Activities and roles for each review
  3. How to review the key work products: plans, requirements, design, and code

Software review is an important part of the software life cycle, assisting engineers in validating quality, functionality and other vital features and components in the sofware. It can be seen as a systematic examination of a document by one or more individuals who try and find any mistakes in it, specially during the early stages of this cycle, some examples of this documents are “test plans” or “test cases”.

We can pinpoint the main objective of software review and it’s characteristics by understanding what is the purpose or the objectives of using this process:

  1. Improve the productivity of the development team.
  2. Make the testing process time and cost effective.
  3. Finish our product with as few defects as possible, reaching the definition listed in our requirements as close as we can.
  4. Eliminate inadequacies, garbage code and anything which is not listed as a requirement

Productivy guys!!!

Finally, we can say there are 3 main types of software reviews:

Software Peer Review:

Focuses on the process of assessing the technical content and quality of the product, conducted by the author of the work product along with some other developers.

Software Management Review:

Software Management Review evaluates the work status. In this section decisions regarding downstream activities are taken.

Software Audit Review:

It’s a type of external review in which one or more critics, not part of the development team, organize an independent inspection of the software product and its processes to assess their compliance with stated specifications and standards.

As for the processes and activities we usually have in software review:

  1. Entry Evaluation:A standard check-list is used by entry criteria in order to ensure an ideal condition for a successful review.
  2. Management Preparation:During this stage of the process, a responsible management ensures that the software review has all the required resources, which includes things like staff, time, materials, and tools.
  3. Review Planning:To undergo a software review, an objective is identified. Based on the objective, a recognized team of resources is formed.
  4. Preparation:The reviewers are held responsible for preparing group examination to do the reviewing task.
  5. Examination and Exit Evaluation:In the end, the result made by each reviewer is combined all together. Before the review is finalized, verification of all activities is done that are considered necessary for an efficacious software review.

Blog introduction

Hiya there! If you’re reading this, either you somehow got into this page by clicking in some weird place, or for some unknown reason you actually want to read what I’m writing in here. So, whatever the reason, welcome!.

So, might as well write some small introduction in here so you can at least know who I am. My name is Daniel Rubio, 20 years old (21 in a week, yay!), software engineer student in the ‘marvelous’ school that is Tec de Monterrey, here in Guadalajara. I’ll list a couple thing I like since that should help me go a little bit in depth about each of them:

  • Reading. One of the things I completely love to do. In this aspect I do have to clear a prejudice that a lot of people have, and that is that I only like to read the genders I enjoy, meaning that no, I’m not an expert in all themes or cultural stuff. For me, reading is about inmersing yourself in a whole new world (Aladdin vibes? anyone?), imagining yourself in the current place the characters are right now, feeling like you’re right next to them in whatever they’re doing, grieving for characters that have been with you throughout the entire book, but were killed just a couple pages ago. As you can maybe imagine now, my favorite gender for novels is science fiction, so I’mma throw a few recommendations for you to maybe read one of these days if you feel like it.
  • – Insignia (by S.J. Kincaid) – 3 books series
  • The Secrets of the Immortal Nicholas Flamel (by Michael Scott) – 6 books series
  • – Tunnels (Roderick Gordon and Brian Williams) – 6 books series. This one is a small hidden gem, slightly slow start for the first book but it has an amazing concept.
  • – Percy Jackson books (Rick Riordan) – 15 books, divided in 3 series of 5 books each. This might seem like a BIG amount of books, but believe me, they are completely worth it, you can learn a lot of mythology stuff, have a good time and enjoy a lengthy plot.
  • If you ever read one of these because of this blog, tell me how you liked them! I always enjoy talking about books i’ve read before.

  • Team sports. This is kind of general, and it doesn’t include all team sports, but I can safely say that I enjoy a lot of them, included amongst those are soccer, basketball, handball and water polo. I also enjoy some other individual stuff, but that’s mostly for the times I don’t have the time to spend some time with friends doing the other ones.
  • Videogames. This shouldn’t be all the way down here, since it’s pretty much one of my main things, but welp, I don’t really care. For this, I’m not sure how to go on detail, but I can say that my favorite genders are rpg’s, mmo’s, survival and adventure games, and sandbox, that’s not to say that I dont enjoy other gender’s, but I’m always gonna try a game if it’s in that list. I’ll throw a few personal favorites so you can try them out and tell me if you liked them!
    – Borderlands franchise (1 to 3, also try the telltale one).
    – Subnautica, survival game in the ocean, reaaaally scary but it’s amazing!

    – Modded minecraft (have you ever built a completely automated system that can create whatever item you want? It takes a lot of thinking and designing, even some small knowledge of networks! it’s amazing)

    – Albion Online, mmorpg, sandbox style that lets you do anything you want, you’ll need a guild to play the game to the fullest, tho.
    – Terraria, kind of the step-brother of minecraft, but on a more adventure-like environment.
    PERSONAL FAVORITE, Kingdom Hearts (there’s a lot of games in here, all part of the story), this one personally had me ever since I was a child, combining Disney and Final Fantasy characters doesn’t sound like a good idea, but believe me, it was a complete success. I mean, just look at how epic this looks!

    – Dark Souls, hard but incredibly enjoyable.
    – Dont starve together, another survival.
    – ARK survival evolved, once again, another survival, in a dinosaur island.
    – Final Fantasy XIII (there’s the normal one, part 2, and part 3), all three games really good, it’s an rpg.

    I could keep going, but I’ll just stick with those.
  • Programming. I guess this one comes a bit with the job of being a software engineering, but I mean, there IS some people that work in this industry and don’t like to do it, so there’s that. I still don’t have a lead on what I want to end up doing, but the only thing I can safely say I dislike, is web development, nope, nope and more nopes, that is not for me, i’d rather make some nice project making some sort of app or tool that helps you with something, like the car agency management that I did in Java, my videogame done in Unity with C#, a mobile app with Java and Android Studio (so far, I think the most complex project I’ve done), and some other smallish project done mostly with Java and a few tools like apex from oracle, and cisco packet tracer.

I’m kind of extending this a bit too long, so just to end it, I’ll add that I’m always happy to meet new people, so don’t hesitate to ever contact me, whatever the reason. Cheers!