Entradas

The 4+1 View Model

The 4+1 View Model Developed on 1995 by Philippe Krunchten. This model break down the whole into sets of related parts. Is composed of the Logical View, the Process view, the Physical view, the Development view and the Use Case View. Logical view: Shows the parts that comprise the system it describes the system object model. And it has the following UML's: Class diagrams, state diagrams, object diagrams, sequence diagrams and communication diagrams. Process view: Describes as system´s processes it's UML is the Activity diagram. The Physical view: Maps software artifacts onto the hardware that hosts them. It has the deployment UML diagram. Development view: Gives a building-block view of the system which is composed of  system's modules, or components, including packages, subsystems, and class libraries. It uses the component UML diagram and the package diagram. Use case View: Show the system functionality, is helpful in defining and explaining the structure and

Understanding the SOLID Principles

Understanding the SOLID principles SOLID  is an acronym that stands for five widely accepted principles of object-oriented programming and design. These principles are: ➜ S Single Responsibility Principle ➜ O Open/Closed Principle ➜ L Liskov Substitution Principle ➜ I Interface Segregation Principle ➜ D Dependency Inversion Principle Th solid principles seek to avoid dependence, the more things you depend on, the greater the chance something will go wrong. The Single Responsibility Principle  (SRP) declares a class should have exactly one responsibility. Here is a violation of the principle extracted from the article: var myReport = new CashflowReport (); formatReportHeader ( myReport ); printReport ( myReport ); void formatReportHeader ( Report report ) { report . Header . Bold = true ; if ( report is CashflowReport && report . Content . Profit < 10000 ) { SendAlertToCEO ( "Profit warning

Microservices

Imagen
Microservices The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services.  "The microservice architecture  is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API." Enterprise Applications are built in three main parts:  A client-side user interface A database  A server-side application. The server-side application will handle HTTP requests, execute domain logic, retrieve and update data from the database, and select and populate HTML views to be sent to the browser.  Monolithic applications vs Microservices Monolithic applications have some disadvantages just as: "A change made to a small part of the application, requires the entire monolith to be rebuilt and deployed." In a simi

Software Craftsmanship

Agile software development and software craftsmanship. "Uncle Bob" Bob Martin who has being a software developer for 4 decades,  has a company object mentory where he helps teams accept and addapt agile process.  Had tried being an Architect but after a while he had realized he likes writing code as much he can. Through a podcast he had a conversation with Markus to reveal some truths about programming, craftsmanship, designing, agile programming, etc. In search of efficiency coding, producing quality code fast is vital. In this podcast Bob Martin introduce us with the notion of craftsmanship and declares a big statement about documentation, sometimes we believe an agile team does not produce any documentation, this is false there is no reason why they can´t produce documentation, if they need an UML diagram they used it. Bob states "The main documents it´s code itself, all other documents are reflections of this main document." The relation between programme

Hidden Figures

Hidden Figures For me was unexpected to watch this movie on class, it surprised me a lot the way that address several topics that happened on the USA around 1960: the racism , the cold war, the launch of the Apollo 11 and of course the arriving of men on the Moon. I decided to divide this blog in three sections, to tell from my point of view this topic and how it's related with the movie. It's not a mystery the United States have always suffered of racism, an evil they have never being able to eradicate. The situation today is really different from the one lived on 1960, hidden figures portrait it in a close look on how those years were. Imagine being a woman and black in the late 1960, just 12 years have passed since women can vote, sexism is still predominant. Here is where Katherine Johnson, Dorothy Vaughan and Mary Jackson going against all adversities achieve individual success contributing directly on the success of the USA and of humanity itself. The cold war was

Is Design Dead?

It seems that XP calls for the death of software design.  Planned vs Evolutionary Design  Evolutionary design: "The design of the system grows as the system is implemented".  The benefits of Planned design are varied just like the disadvantages that some XPers use to justify choosing XP instead of Planned. The author mentions the following disadvantages: You can't think all the issues you'll encounter when programming.  Designers are so busy designing they don't get much time to code any more.  Changing requirements. You can deal with the changing adding flexibility into the design to enable an easy change of requirements. One reason in favor to simplicity is economic. Doing work that's only used for a feature needed for tomorrow means loss of effort and so of money. Another reason is that a complex design is more difficult to understand than a simple design.  In  XPE  Kent gives four criteria for a simple system. Runs all the Tests  No

Who needs an Architect?

What is architecture? The author defines architecture as "a word we use when we want to talk about design but want to puff it up to make it sound important". The RUP, working off the IEEE definition, defines architecture as “the highest level concept of a system in its environment. The architecture of a software system (at a given point in time) is its organization or structure of significant components interacting through interfaces, those components being composed of successively smaller components and interfaces.” What makes a component significant? "It is significant because the expert developers say so". “In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called ‘architecture.’ This understanding includes how the system is divided into components and how the components interact through interfaces. These components are usually composed of sma