What we have by now…

Hi again! Today I will talk with you about what we have learnt over the last month on this blog.

Photo by Janko Ferlic on Pexels.com

Last month has been a busy one, we’ve been trying to finish every chore we have, working in lots of projects at the same time makes this task almost impossible, but you know what? We are here, giving the best out of us to keep learning and getting better in everything we do. Let’s get to summarize every topic we have mastered.

First I think Pharo and Smalltalk are some new and hard things to understand in so little time, but I think we have been doing a great job in doing so, we even created a little game in this new Object-Based-Oriented Language, it’s really cool.

Photo by Todd Trapani on Pexels.com

Then we started learning about Life Cycles of Software, that topic was a really cool one because we got to understand how every part of the creation, maintenance and updates work.

Photo by Gelgas on Pexels.com

Then, Unified Software Process, in this post we talked about how to develop a software with some guidance of requirements, architecture and iterations for each little step.

Photo by Aleksejs Bergmanis on Pexels.com

After that, Use Cases, went strong, we learnt the importance of them and even how to draw one, we have a lot more to study, but it was a really good topic.

Photo by rawpixel.com on Pexels.com

More recently, we talked about Modeling Languages, these ones were a way of unifying all the other topics in one, because we need those last ones to make this one up, we even talked about tools to put into practice everything we’ve learnt.

Photo by Pixabay on Pexels.com

Yes, we have learnt a lot, but I think one of the most important things, was learning to manage the time to get everything done as quick and well as possible, that is a big task we’re on right now, let’s keep it up!

What’s next? Well, obviously more cool and interesting stuff, but I hope to understand a little bit more about UML and Code Revision since I think those are some of the most important things for students like us.

Come with me for the next month!

-RC

Like Models?

Photo by Jonathan Borba on Pexels.com

Don’t… please don’t think that we will talk about this kind of models, deal with it! Well at least for now…

Modeling Languages, these are some other kind of models, maybe not that attractive at this point, but lemme change your mind.

First, as always, we need to define our topic, what are those called «Modeling Languages»? According to Techopedia a «Modeling language is any graphical or textual computer language that provisions the design and construction of structures and models following a systematic set of rules and frameworks».

But in reality and common words, what are those? Well, Modeling Languages are the words or images used to describe what is happening in a program or system, as we see everyday in different models of reality, like maps, we can use them to understand every little part of their behavior.

Photo by Catarina Sousa on Pexels.com

Also, you know these guys have their own web page? Check it out!

Now that we know what a Modeling Language is, we can talk about some tools we have to use them.

First and foremost: UML, Unified Modeling Language, this particular language uses some kind of visual resources to explain the different parts of a program and the interconnection between those, we can see an example in the next video:

UML

So, what tools can we use UML with to explain our system? We have a lot of options:

  • Lucidchart.
  • GenMyModel.
  • Gliffy.
  • Draw.io.
  • Creately.
  • Cacoo.
  • UMLetino.
  • Diagramo.

Most of them are free, but in my personal opinion the best one is Lucidchart, because it has a great amount of resources for us to use, let’s see how to get started:

Lucidchart Introduction

See? Now a really complicated program turns into words and little images that can be understood by anyone, Modeling Languages and their tools aren’t that bad after all, huh?

Let’s keep learning in next posts, thanks for keeping up with me.

-RC

Should we actually get used to use the use cases?

As complicated as it sounds, the answer is YES!! We need to learn how to use and implement some requests from our clients, so we need to know what they will need, those, in a nutshell, are our use cases, let’s get down to business and start learning.

Photo by rawpixel.com on Pexels.com

Last time we talked about USP, we now know that getting our requirements well defined and organized is crucial for us to get good results, so use cases will help us.

Use Cases -according to TechTarget– «is a methodology used in system analysis to identify, clarify, and organize system requirements. The use case is made up of a set of possible sequences of interactions between systems and users in a particular environment and related to a particular goal».

Photo by rawpixel.com on Pexels.com

A use case has these characteristics:

  • Organizes functional requirements.
  • Models the goals of system/user interactions.
  • Describes one main flow of events, and possibly other ones, called exceptional flows of events.
  • Is multi-level, so that one use case can use the functionality of another one.

As we saw in the last definition, we need use cases in order to satisfy our client and get things done properly, now let’s see how we can draw a use case.

As seen in Visual Paradigm tutorial, we need these steps:

  1. Identify the Actors (role of users) of the system.
  2. For each category of users, identify all roles played by the users relevant to the system.
  3. Identify what are the users required the system to be performed to achieve these goals.
  4. Create use cases for every goal.
  5. Structure the use cases.
  6. Prioritize, review, estimate and validate the users.

So now you know what is a use case, why it is important and some crucial characteristics of them, if you want to know more, you can see this quick guide on how to draw them:

Use Case Tutorial

-RC

Is Software Development always ordered?

Photo by luis gomes on Pexels.com

Unified Software Process (USP). What? Okay, let’s start, imagine you have a project and start creating content for it, yet you do not have the amount of people you want knowing your project, what do you do? You start by hiring people to create a tool for you to approach your potential clients, but… do you just want to see the finished product, or want to see some phases?

If you opt to see phases, you would be going by the basis of the USP, last mentioned is -as mentioned in study.com– «an iterative, incremental, architecture-centric, and use-case driven approach to software development».

We have different approaches for different types of projects, let’s see some:

Use Case Driven Approach: This approach takes into account what the client wants, first we get the requirements and questions asked, then they start working.

Architecture Centric Approach: In this case people start by thinking what technologies we may use, you begin to structure the company who wants the service.

Architecture of an Enterprise

Iterative and Incremental Approach: Here we divide each project into smaller ones and each one of those into iterations, so every time we finish a small part of the project, we have an iteration that can be presented to the clients so they can approve and let us know we’re in the right direction.

Photo by Alex Andrews on Pexels.com

In this process we have 4 phases, let’s get to know each one:

Inception: The primary goal of the Inception phase is to establish the case for the viability of the proposed system. We have some activities here:

  • Defining the scope of the system (that is, what’s in and what’s out)
  • Outlining a candidate architecture.
  • Identifying critical risks and determining when and how the project will address them.
  • Starting to make the business case that the project is worth doing.

Elaboration: The primary goal of the Elaboration phase is to establish the ability to build the new system given the different constraints. The key activities are:

  • Capturing the majority of the functional requirements.
  • Expanding an internal release of the system focused on describing the architecture.
  • Addressing significant risks on an ongoing basis.
  • Finalizing the business case for the project and preparing a project plan that contains sufficient detail to guide the next phase of the project.

Construction: The primary goal of the Construction phase is to build a system capable of operating successfully in beta customer environments. In this phase we do all the tasks regarding to the actual creation of the system.

Transition: The primary goal of the Transition phase is to roll out the fully functional system to customers. Here we just open and update our programs to all the clients.

One example of USP usage is Rational Unified Process, this is an agile software development methodology. The phases previously defined are used by this kind of method.

The main goal of RUP is to create high quality software with a predictable budget and time frame. Each of the life cycle phases can be repeated, if needed, until the main objectives are met. Once the transition stage is completed successfully, the project is finished.

We also have Agile Scrum, which is also a common unified software process which originates from the waterfall model cycle, here, each stage should be finished before we start another one.

At the end we can say that USP is a way of distributing work for better results and easier ways of obtaining what we want our project to be, so… would you like to see just the finished product, or some phases?

Photo by Startup Stock Photos on Pexels.com

-RC

Talking Small or Smalltalk?

Smalltalk is difficult, yeah it is, but that is not a way of saying you shouldn’t try it (or should you?), anyways, in some developing projects we were required to use Pharo and obviously Smalltalk; using Binary Search, we made a game that finds a number, this process is defined as the search of an element in an array by diving in sub-arrays in order to keep making the array smaller until we get to the desired element.

First we cut the element in half and we check if the desired value is the element in the middle and return it if this is true, if not we check another thing, if it is higher then we go to the right portion of the array, if not we go to the left side and so on until we get what we wanted.

Image result for binary search

I should say that some other languages are easier for this kind of problems, but surely this is something you want to know in order to start conceiving problems and analysis in other ways.

– RC

Is it the Circle of Life?

Every software has a life cycle, so let’s start learning what a life cycle is: In Software a Development Life Cycle (SDLC) is, as mentioned in a Stackify article, a «process that produces software with the highest quality and lowest cost in the shortest time».

A Software Development Life Cycle (SDLC) comprehends of several stages such as planning, creation, test and deployment of the software; these stages may vary depending on the kind of SDLC model we are using, there are a lot of them, such as spiral, waterfall or agile models.

Now let’s get to know a little bit more about the stages:

Planning: We should identify what problem we’re trying to solve, that way we may start our developing course through the right path, then we should start asking the right questions so we can get towards our goals.

Creation: In this stage, as it’s name recalls, we need to start with the actual work of coding and creating the architecture that our software will have; we will make our way now through lots of problems that we might not see right away, that’s the reason for the next stage.

Testing: Here we need test… yes… test… a lot.

Deployment: Finally… here we are, we should be done by now, huh? Well… not exactly, sure we have finished testing and correcting errors, but we should make this software public so everyone can see it and use it, after that, we need to keep track of what has been happening with the public’s response so we can get some feedback, correct new things, update new versions and keep developing.

Let’s keep learning our way to new topics in a new post coming right away…

-RC

Diseña un sitio como este con WordPress.com
Comenzar