Use cases not only to store things

The most difficult part of any software project is to get what the client wants. Every mind is a whole different world, and this could cause miscommunication problems or giving something by understood without having in mind the discrepancies between the developer and client ideas. Thus, the engineers had to manage to find some way in which the client requirements could be completely understood by the developer; mostly, to represent the software-human interaction, we use the “Use case” technique.

Photo by Chris Lawton on Unsplash. Nature interactions!

So, What are the use cases?

The use case is a paradigm which describes how a user uses a system to accomplish a particular goal. The goal is to create a model of the system based on the user interactions, in order to define the features to be implemented.  You can find the use cases as plain text or a diagram, but the most common one is the diagram so let’s go deep into it.

Use case diagram

The use case diagram is composed by 3 or 4 elements: Actor, use case, system and package (this one is optional).

Actor

Actor

Any entity that performs a role in one given system. This could be a person, organization or an external system and is usually drawn like this.

Use case

Use case

Represents a function or an action within the system. It’s drawn as an oval and named with the function.

System

System

The system is used to define the scope of the use case and drawn as a rectangle.

Package

Package

The package is another optional element that is extremely useful in complex diagrams. Similar to class diagrams, packages are used to group together use cases.

Now that you know how to interprete the diagram, check out this example, is so simple that it needs no explanation.

Use case restaurant model by Wikimedia commons.

Unifying Anything

Unified Zebras by me

At the beginning, when God brought software to the world, the IT crowd started to create big and complicated systems. But there was a problem; due to the lack of uniformity, the project in development could be compared to a tangled spaghetti because of every aspect but the code.

Thus, Some crazy computer people started to design a framework that allowed us as developers, to get productivity, an enhanced project structure and better results for the clients in the process. This people came out with the Unified Process. So, What is the unified process? Let’s talk about it.

First things first, the unified process is not a a software development process, it’s an extensible framework. This means that it should be customized for every project or organization, always having in mind the main characteristics of the UP, which i’m about to explain.

The  Unified Process is a framework for an iterative and incremental software development process.
Main bass loop of Chameleon, a masterpiece by Herbie Hancock. Image by Ethan Hein

Iterative and incremental

The Unified Process is like an endless loop, until the project is finished; let’s go deep about it. The Elaboration, Construction and Transition phases are divided into a series of timed iterations. Each iteration results in an increment, which is a new release of the system that contains added or improved functionality.

Architecture-centered

Architecture sits at the heart of the project team’s efforts to shape the system.

Risk Focused

The Unified Process requires the project team to focus on addressing the most critical risks early in the project life cycle.

Phases

  • Inception
  • Elaboration (milestone)
  • Construction (release)
  • Transition (final production release)

Inception

Inception is the smallest phase in the project, and ideally it should be quite short. You should develop an approximate vision of the system, make the business case, define the scope, and produce rough estimate for cost and schedule.

Elaboration

At this time, the project team is expected to capture the system requirements. However, the main goals of Elaboration are addressing known risk factors and to establish and validate the system architecture.

Construction phase

Construction is the largest phase of the project. In this phase, the remainder of the system is built on the foundation laid in Elaboration. System features are implemented in a series of short, time-boxed iterations. Each iteration results in an executable release of the software.

Transition phase

The final project phase is Transition. In this phase the system is deployed to the target users. Feedback received from an initial release may result in further refinements to be incorporated over the course of several Transition phase iterations. The transition phase also includes system conversions and user training.

Everything is born to die.

After this nihilist title, i'm about to tell you something that you may be not conscious about.
maiden voyage
Maiden voyagae by Yumikrum. Check out its amazing work.

As a software student, i have been involved in many projects. Most of them are for educative purposes, but in some cases, i enrolled in some commercial solutions. Thanks to previous experiences, I can assure you that following a good scheme in how you develop your product will save you a lot of time, so, let’s talk about life cycles.

In the software business, a life cycle is not more than the software development process. Now, i bet you are thinking: “Come on, man, just code what the client wants and you are done”. Yeah, that works most of the time, but only when you are working alone. First, you need to think that there will be a lot of engineers involved in a big project, and last, once the software is deployed, there will be the need of making enhancements, add features and fix bugs. because of that, we are in the need of implementing a software development process.

Let’s say that any software product that you are developing is like your son, and its life cycle is how you are going to raise it. If you choose the right methodology, the project will flow better. For instance, if you are working in a website for a client, you should use any agile methodology so you can show functionalities to the client once they are ready, adding it to the project and making changes faster than in a once finished deploy. If you are developing an embedded system for some health equipment, you should use like a spiral method, where you are always conscious of risks and in every stage you will reduce them. My point is that choosing the right life cycle for your software will make your life and work better. Basically, the life cycle of any software project will tell you how it will be born, how is going to be maintained and how is going to die. This post is about the concepts of life cycles, but if you want to learn more about methodologies, you should stay tune!

Yoda says: Always pass on what you have learned

#Mastery00 – An introduction to the course.

This is the first post on my new blog. I’m just getting started, so I’d like to introduce me.

My name is Oscar; i’m studying a BS in Computer science. I’m in love with music and the life! and I think that if you put enough effort on something, you always will get what you want. Also, I love photography, thats one of the things that I think makes this life better, because it gives me the opportunity to share with others how I can see the world, and sometimes, you can share emotions too. I have a meme page with over 70k followers, and yes, I do memes, but also i take it from other pages, the watermark is always there, so our followers can know where is the meme coming from. I have a little dog, his name is Pirata; he’s always making my days better and its more effective than a home alarm! For me, mathematics are present in everything, and if something has todo with numbers or patterns, i’m gonna be as focused as possible.

I took this picture when the wildfires were going on along Jalisco . Thats one of my favorite pictures because the message it carries.

But let’s get back to the topic

I think that this kind of courses (the ones that use modern educative methods) are the greatest because education has evolved based on its reasons. This “connected courses” thing will let us learn in a different way by reading what our classmates have concluded, and by interchanging opinions and perspectives, making our criteria and concepts better. I’m Trying to connect my own website with this blog, but I think that will have to wait until the next week, because i have a lot of projects going on. I’m hoping to give the best of me in this course and to get the most knowledge that I can.