Entradas

Summary Second Period

Imagen
So far we have been seeing a lot of different things this second period. So it is important to make a summary of all that topics that covered this second period. In this occasion the second record exam will cover the following topics: Design Patterns covered in the theory book. Microservices. SOLID principles. The 4+1 view model. As I said earlier, this blog entry will be a summary of all these topics but I encourage you to see all your notes, programming activities and even read again the theory book of Olsen. Design Patterns Design Patterns are typical solutions to commonly occurring problems in software design. These patterns were proposed by the Gang of Four: Erich Gamma, John Vlissides, Ralph Johnson and Richard Helm. Template Method Pattern The Template Method Pattern is a behavioral design pattern that defines a skeleton of an algorithm in the superclass but lets subclasses override specific steps of the algorithm without changing its structure. In this kind o

2-5: The 4+1 View Model

So, in order to understand the 4 + 1 view model we need first to define the components of this view model. In this case, the components of this view model are the following ones: Logical view, Process view, Physical view, Development view and the +1, the Use Case view. Having this in mind, let me define each one of these views in order to fully understand this view model: Logical View: Shows the parts that comprise the system, as well as their interactions. It also represents a set of abstractions and emphasizes classes and objects. This view can be represented with the following UML diagrams: class diagrams, state diagrams, object diagrams, sequence diagrams. Process View: Describes a system's processes. It also shows any communication between those processes, explores what needs to happen inside the system. It is particularly helpful when your system will have a number of simultaneous threads or processes. This view can be represented with the following UML diagrams: ac

2-4: Understanding the SOLID Principles

The first thing that came to my mind when I read the title of the lecture was, what does SOLID stands for? So, first let me contextualize what is SOLID and then explain the meaning of all the letters in this acronym. As I said before, SOLID is an acronym that stands for five principles of object-oriented programming and design. The objective of these principles is the avoidance of dependencies, because the more things you depend on, the greater the chance something will go definitively wrong; these 5 principles are the following ones: S => Single Responsibility Principle (SRP): States that a class should have exactly one responsibility. This means, that it should have exactly one reason (or one class of reasons) that cause it to be changed; nevertheless, many programmers have the superstition about the systems they maintain things like "Don't touch this module" or the difficult task of selecting that single responsibility. O => Open/Close Principle (OCP): St

2-3: Microservices

We can define Microservices as an architectural style which approach is to develop a single application as a suite of small services, each of them, running its own processes and communicating via lightweight mechanisms, often Microservices uses an HTTP resource API. We also need to compare a traditional monolithic application in order to compare and to give a better explanation of what is a Microservice. A monolithic application puts all its functionality into a single process and scales by replicating the monolith on multiple servers. But, microservices do not work like this, a microservices architecture puts each element of functionality into a separate service and scales by distributing these services across servers, replicating as needed. Having this context, we can have a better idea of what is a Microservice. Now, it is time to enumerate the important characteristics of a Microservice Architecture, have in mind that it does not exist a silver bullet in development so, no

2-2: Software Craftmanship

Bob Martin (also known as Uncle Bob) starts the podcast by saying that architecture is an activity that we need to do because of all the benefits that this activity carry with them; nevertheless, he mention that the only thing that he does not like about software architecture is the separation that exists in the world between coders and the architects (the leaders of the projects), those who made the important decisions. This thing raises the question: But why this is bad?; the answer to this question (at least in my opinion) is that this kind of practice is bad because not in all projects the software architects are involved enough in order to make the best decisions about x or y topic. So, I think that good architects are the ones that propose the idea to the coding crew and both of them, make the best decision based on all the different perspectives that exist, because the perspective of the architect will not be same as the perspective of the coder crew. In this topic, Bob Martin s

2-1: "Hidden Figures"

I  think it is pertinent to cite the catchphrase of Auguste Gusteau (character from Ratatouille Disney film) "Anyone can cook". Now, why I start the entry of this blog with that catchphrase, the reason is simple in the film Hidden Figures the director show to all of us that anyone, any person (it does not matter its race, the skin color, the nationality) can do any task in this world. Specifically, the movie told us the story of 3 black women that works at the NASA as colored computer machines, then this woman starts to grow up in the field. One of them, her boss encourages her to study engineer (she had all the knowledge and expertise of an engineer but the simple fact that she was black she did not have the right to study in a school of white people in order to attend the courses in order to become a NASA engineer. The second of them, she was working as manager of the colored computer machine, she asked to her employer to be the manager of that area (she was workin

Summary First Period

Imagen
Summary First Period The topics that will be covered in the exam of the first period are the next ones: What is architecture? Object Oriented Basics. Patterns covered in the first period. Refactoring. Code snippets like the ones of the quizzes (Study them, they will not be covered in this blog entry). Bad smells in code. What is architecture? Architecture of a complex system is a function of its components as well as the hierarchic relationship among these components. Now we also talk about components, but what is a component. A component is an encapsulated part of a software system that serves as a building block for the structure of a system and it has the following properties: They are deployable entities. They are usually not a complete application. They might be used in unanticipated combinations. They have a well defined interface. Object Oriented Basics There are some concepts that we need to remember when we talk about Object Oriented Programming