Who even needs models and standards for software processes? Ah, that’s right… us.

So, here we are again! This time to talk about a one teensy weensy but ever so crucial little tiny detail in software processes! Models and standards.

(have a cookie if you got the reference in that small paragraph before seeing the image)

These are the following topics i’ll try to cover in this blog:

  1. CMMI
  2. TSP/PSP
  3. ISO-15504
  4. MOPROSOFT
  5. IDEAL method

CMMI

Capability Maturity Model Integration (CMMI), is a processes model that helps an organization promote their members so that they can have a better performance. The questions this model ask are related to how good we work, our improvement and if our processes are as good as they should be and working as necessary, so we can call this model a book of ‘whats’ and ‘hows’, giving us a hint on what to work in.

TSP/PSP

Whenever we talk about time management, personal improvement on programmers, and guidance on organizations that use a CMMI model, then we’re either talking about PSP/TSP practices, or you’re somehow in an alternate universe where things are incredibly wrong.

something just doesn't add up - pondering retard | Meme Generator

PSP concentrates in work practices in a more individual manner, so that we can organize our day through day activities and handle product quality. This practice can be carried with a team, called the TSP (Team Process Software), which is in turn commanded by a gestion system, and of course, a team leader that evaluates the individual progress of each member of the team.

TSP, is insted, a method of stablishing teamwork and improving it, using two basic components:

  • Work team formation
  • Work team gestion

The major problems that are solved with this, are predicting time and cost in business, lack in productivity, and software development and cycles, along with product quality.

YAY TEAMWORK! - Yay Teamwork! | Meme Generator

ISO-15504

This new norm presents us the following objectives:

  • It’s necessary to propose and develop an evaluation stand in software processes.
  • Evaluate progress using experimentation.
  • Promote the evaluation techonlogy to a global state.

This specific standard evaluates software life cycles and requisites and evaluating each one of the evaluation steps in the ISO standard 15288.

MOPROSOFT

MOPROSOFT (in spanish, Modelo de Procesos para la Industria del Software de México) is a model for the development and maintenance of software, focused on the processes of a basic structure company, taking in mind three organization levels: High Direction, Gerency and Operation, looking to standarize all of what they do, both in effectivity and integrity.

I.D.E.A.L.

Initiating, Diagnosing, Establishing, Acting & Learning, this model serves as a roadmap to initiate, plan, and implementation of process improvement actions. As we can see, this has five main “steps”:

  • Initiating: Initiate the change, lay the groundwork for the changes that WILL happen in the next phases.
  • Diagnosing: Where are we? Was this the place we wanted to be at this point? Analysing in this phase is essential.
  • Establishimg: Plan what you’re gonna do, how are you gonna reach your goal? Prioritize tasks, change implementation and establish the teams.
  • Acting: Do what you planned, nothing more to say for this one.
  • Learning: Learn from the mistakes you made, improve and adapt new techniques for the future, so that the next IDEAL cycle will be better.
IDEAL Cycle — Initiating, Diagnosing, Establishing, Acting & Learning

And that’s all models we’re gonna see today, hope you enjoyed and learn something new (for I surely did), and if you care to answer, which one do you think is better? Or should all of them be implemented somehow? I wanna know!

Software Quality

Time to start with an actual mastery topic! So, in the following blogs, there are basically four sub-topics to follow:

  • Defining Software Quality
  • Focus on process
  • Ensuring Software Quality
  • The role of standards in Software Quality

What is software quality?

By definition, it’s the field of study and practice that describes the desirable aspects of software products. What do we mean by this? We can put it down as the part of software development dedicated to improving and designing all software products, trying to establish the minimum of what’s required in it.

Software Quality Assurance (SQA) ensures how we handle the quality in the processes of a software product, establishing and evaluating all of these in a “process-focused action”, so that in the end, we end up having a product completely functional, with the basic minimum quality being accomplished in all cases, and a happy user in most cases.

The challenge in ensuring quality

In this industry, even if we test an infinite amount of times, against all possible errors that we can think of, we developers can never actually declare that our software is free of defects, unlike how our counterpart, the product manufactures, can. We have some reasons as to why this happens:

Complexity, this one pretty much talks about how many possible paths we have when designing our software, if we first click this, and then that? If I use this button and then go back to click this other one? Imagine this but with a complete application that has many sections. Visibility, this one is pretty clear, manufacturers can see in their products if maybe there’s a splint in one side, or this one part isn’t reinforced enough, us, on the other side, we can’t physically see what’s wrong with what we’re doing, so we have a lot more troubles detecting errors.

Why do we have quality standards?

What happens when we need to work with people that have had a completely different way of learning development and work than we did? How are we supposed to keep a straight line of work to organize our software product and meet all standards that we know along those that the other person knows? That’s right, quality standards. By having a general rule and approach to how something should be built, we can establish a base for everyone to work in.


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!