Software Design? Let´s Take It One Step Ahead

Level up your software design

Today, I will briefly explain what software architecture is. Basically software architecture is just software design for a larger proyect, on a bigger scale.

If you remember, the basic part of software design was the algorithm design, well when you have a really big project with thousands of lines of code, suddenly algorithm design doesn´t seem as viable and yo see software architecture winking his eye at you.

Of course there are some differences in characteristics for being a bigger plan. Some of the characteristics that differ are:

  • Multitude of stakeholders: Usually clients who ask for big proyects are big companies or have a big name themselves, so you will have more pressure, but also better equipment and a better pay check.
  • Separation of concerns: Because these programs are so massive(remember, thousands of lines) they usually divide into small chunks to make them more manageable, and apply software design to them to transform them into architecture once together again.
  • Recurring styles: In order to make it easier, a pattern has been made(just like in real architecture) that we can all do. This is actually the birth of design patterns.

Resultado de imagen para design vs architecture

Image by Hendrix

Just A Little Inner Thoughts On The Art Of Learning

This is not the usual post

No, today I want to share a thought that came up to me.

So today I didn´t have lot of homework so I took the time to slack and watch some Youtube videos, and I found this great video by Core-A Gaming called “Why Fighting Games Are Hard”(yeah, I´m a HUGE fighting games fan) if you haven´t seen it and are somewhat interested go here, it is really quite interesting.

But I watch fighting game videos a lot of the time. What struck me as interesting is that just yesterday professor Ken(Hi Ken) told us about learning, that it is not a thing of just memorization, but of understanding and knowing how to apply that memorization, and that it´s not easy and IT´S OKAY TO FAIL. And that´s exactly what the video is about(in it´s own terms, of course).

The thing to understand is that as Gerald(Core-A Gaming´s narrator) said “learning is about pushing forward despite the obstacles, ´cause you won´t be able to avoid them” but then, if learning is so hard why do we go through it? Well, that´s what I think fighting games are able to teach you.

I think that we as people are just curious by nature, curiosity has been a consequence of evolution, because when you learn something new, it´s not readilty noticable so I don´t think we do it for vanity. And not every knowledge is useful, that´s why trivia exist.But it is a natural desire to differentiate ourselves, and even more in this age where overpopulation is a real problem. Because when we know something we differentiate ourselves from someone who doesn´t, and really learning something is the easiest way to do it, you don´t require natural skill or features.

Isaac Asimov once said

Resultado de imagen para fighting games
Continue reading "Just A Little Inner Thoughts On The Art Of Learning"

When Science Meets Art. Software Design

Is that even possible?

If you´ve been here long enough, some time ago I talked about mixing science and art. This is one of the best examples(Notice how I said ONE, spoilers for next post).

First let´s make things clear. Software design usually refers to the problem solving through an algorithm design(software solution). This is caused because on paper it sounds so nice(it always does) but in real life, machines have physical limitations(Memory, RAM, processing power, etc.) and a lot of times, careful planning is needed in order to make efficient what we have.

Resultado de imagen para software design

And that is what software design is at a basic level. The planning of how to implement software into a problem and create a solution.

That sounds so good, how do I do it?

Well first, it is expected that when you are in this phase you should already have done the analysis of the problem at hand(actually software design is part of the implementation step). With that in mind the first suggested step is to build a “prototype that works” meaning something either really simple or really complex that solves the problem.From there on it´s just adjusting you prototype to the limitations you have. As a sort of guideline, it is recommended that one process should not take more than 15% of the resources. Actually, there are quite a lot of suggestions, the best of them being Davis´s principles for software design which are as follows:

  • The design process should not suffer from “tunnel vision.” A good designer should consider alternative approaches, judging each based on the requirements of the problem, the resources available to do the job.
  • The design should be traceable to the analysis model. Because a single element of the design model can often be traced back to multiple
    Resultado de imagen para art vs science
    Resultado de imagen para art vs science
    Continue reading "When Science Meets Art. Software Design"

What Do You Need?

Resultado de imagen para meme what do you need

(forgive the horrible syntax) Yeah…more box! that is the answer 98% of the time. Unfortunately, in software development that is not the case. So today we are going to talk about the real requirements and specifications in order to develop.

First, the technical requirements. According to the IEEE Standard Glossary of Software Engineering Terminology, a requirement is:

  1. A condition or capability needed by a user to solve a problem or achieve an objective.
  2. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document.
  3. A documented representation of a condition or capability as in 1 or 2

So basically, it is something that is needed, either by the programmer or the user, in order to do the software. It can range from hardware requirements, such as a certain processing power, or knowledge requirements.

 

 


About A Book…What?!?!?!

So, recently I read about a book called “The Cathedral And The Bazaar” by Eric S. Raymond. Don´t let the name fool you, it´s not a story(or not the main focus), but about programming.

Resultado de imagen

Summary

It is mostly the author´s ideas about programming and a comparison between merchants in the past.

From what I could understand it compares owned programming with the cathedral, where everything is organized and largely comprehensible, with clear rules and owners. Whereas the bazaar is more unorganized, everyone can get there, they are all shouting, but since anyone can be there, it is usually richer in the products it offers, just like an open source.

It has a little bit of story in order for you to understand the comparisons, but not much.

My opinion

First, I want to say that you should take my opinion with a grain of salt, I´m not someone who enjoys reading a whole lot nor programming, which makes this kind of hard to find interesting. However I have spoken to some ISCs who really liked it, and thoght his explanations were easy to understand, and some of his conclusions very interesting.

Overall, I´d recommend to only read it if you are interested in programming, because if you are just a normal bibliophile, it will be hard and probably not worth it.

 

 


Time For A New Beginning

Hey there, long time no see.

Resultado de imagen para Ibuki sakura

Image by: Hendriw

Is it more waterfall method?

Well, yes and no, as I explained a lot of methods are derivated from there. But today we´re learning about Agile software development.

Agile software development is a method based on teamwork where work is relegated to a team specialized on a specific area. So basically, it´s the equivalent of letting the engineer do the maths while the LAF worries about money and the LIN…does nothing(it´s just a joke, I´m sorry please don´t kill me).

It was invented(or at least coined) in 2001 with the “Agile Manifiesto” by Kent Beck. And strives on the idea that by splitting the work into specialized areas, specially for smaller projects, will allow a more efficient work while maintaining the quality of the final product.

Some of the sub-divisions are:

  • Dynamic Systems development method
  • Kanban
  • Scrum

So do it quick, do it well and good luck with everything.

Resultado de imagen para flash


Software verification and validation

software-verification-and-validation

Validation: Are we building the right system?. Verification: Are we building the system right?

Validation is concerned with checking that the system will meet the customer’s actual needs. Verification will help to determine whether the software is of high quality, but not if it is useful.

VandVtoolbox.jpg

Many different V&V tools are already in use at most climate modelling labs, but there is room for adding more tools to the toolbox, and for sharpening the existing tools. But the question of how best to do this must proceed from a detailed analysis of current practices and how effective they are.

V&V tasks during different phases of development lifecycle:

  • Planning:
    –  Verification of contract
    –  Evaluation of Concept document
    –  Performing risk analysis
  • Requirement phase
    –  Evaluation of software requirements
    –  Evaluation / analysis of the interfaces
    –  Generation of systems test plan
    –  Generation of Acceptance test plan
  • Design Phase
    –  Evaluation of software design
    –  Evaluation / Analysis of the Interfaces (UI)
    –  Generation of Integration test plan
    –  Generation of Component test plan
    –  Generation of test design
  • Implementation Phase
    –  Evaluation of source code
    –  Evaluation of documents
    –  Generation of test cases
    –  Generation of test procedure
    –  Execution of Components test cases
  • Test Phase
    –  Execution of systems test case
    –  Execution of acceptance test case
    –  Updating of traceability metrics
    –  Risk analysis
  • Installation and checkout phase
    –  Audit of installation and configuration
    –  Final test of the installation candidate build.
    –  Generation of final test report
  • Operation Phase
    –  Evaluation of new constraint
    –  Assessment of the change proposed
  • Maintenance Phase
    –  Evaluation of the anomalies
    –  Assessment of migration
    –  Assessment of the retrial features
    –  Assessment of proposed change.
    –  Validating the production issues.

 

Conclude: V&V processes determine whether products of

Continue reading "Software verification and validation"

What is Cloud Computing?

cc

Cloud computing or just “the cloud” is the delivery of computing services over the Internet on a pay-for-use basis.

It enables companies to consume a compute resouce instead of havingo to build and mantaing hardware. It also provices self-service provisioning, elasticity and pay per use services.

Models

  • Private cloud: the services are delivered from a business’ data center to internal users.
  • Public cloud: a third-party provider delivers the cloud service over the Internet.
  • Hybrid cloud: companies run sensitive applications on the private cloud while using the public cloud for bursting workloads that must scale on demand.

Categories

  • Software-as-a-Service (SaaS): applications run on distant computers that are owned and operated by others and that connect to users via the Internet.
  • Platform-as-a-Service (PaaS): provides an environment with everything required to support the lifecycle of delivering web-based applications.
  • Infrastructure-as-a-Service (IaaS): it provides companies with computing resources including servers, networking, storage, and data center space.

There are a few arguments against cloud computing, such as: it represents a high cost for companies, it can generate many problems, intellectual property issues. This trend is very recent and we should wait and see what else it has to offer. In my opinion, so far so good.

Source:


A focused reminder of last week

Hey, remember last week we talked about some types of software development processes? Well, today we will focus on one of them: the waterfall method. If you don´t remember or don´t know about it, here´s a quick glance.

Okay simple…what about it?

Well, the thing is that this waterfall method, this simple method may very well be like the father of all the others. If you really think about it, makes a lot of sense. Just imagine yourself some decades ago, when there were no methods and software developments just kept growing and growing. When you´re the first one you need to heavily base on something that already exists, well this is that prototype.

I mentioned it was the most straightforward, because it is, just read it from top to bottom and it´s a normal process. But straightforward doesn´t always mean simple, those steps can have more depth than you think, let´s break them down.

1.- Requirements: Well, this is simple, right? Just make an analysis of what platforms you                                        need, and some technical stuff.                                                                                                                    WRONG! while it may be a big part of it, it´s not even the most                                                        important, remember you are working with

Resultado de imagen para cascadas de misol-ha
Continue reading "A focused reminder of last week"

Software Verification and Validation

slide_42.jpg

Verification and Validation are important during the Software Lifecycle because they help us to find and correct errors as soon as possible, thus preventing the delivery of a faulty product to a costumer. Is it a good product or not?

There are two aspects of V&V tasks:

  • Confirms to requirements
  • Fit for use

It’s important to outline the difference between these two terms:

  1. Verification:
    1. Process to evaluate the mediator products to check wheter the products satisfy the conditions imposed during the beginning of the phase.
    2. “Are we building the product right?”
    3. It uses static testing.
    4. A verifier stablishes that the product implements all the requirements documented in the SRS.
  2. Validation: 
    1. Process of evaluating the final product to check if it meets the business needs.
    2. “Are we building the right product?”
    3. It uses dynamic testing.
    4. The validator establishes that the SRS is a true reflection of the user’s needs.

Source: