Course Review

This is the first time I take a course with Ken, I have to say that I really like this kind of teaching. We as students are able to choose what we want to know, how much do me want to know and when we want to learn it. And I think that learning should be like that, something enjoyable and not painful.

I studied eight years in a Montessori school, the method there was kind of the same as Ken’s Flipped Class method so I’m used to it. But I don’t think this is the right method for most of the people, especially because the other courses we’re taking are really demanding and not flexible, therefore time consuming.This is why some of us tend to put off all the assignments and activities.

I can say that I’ve learned a lot and I really liked the course and I feel like I complemented it with Ken’s Semanai course that I also took. I think this is the right way to learn and school should be like this.

But I didn’t like everything about it, I don’t feel like using social media, should be evaluated as part of our grades. I understand that it’s a powerful resource but I think is not fair. There are some people who is really introverted and find it hard to tweet or simply people that don’t have any questions or prefer to directly ask a classmate instead of tweeting his question. I like more being and learning alone, and it’s part of my personality but others’ opinion may differ from mine and that’s ok.

All I have left to say is thanks Ken I learned a lot.


Software Testing

In this stage of the project we’ve already finished the implementation and we test it to make sure that it works. In class I learned that writing the test before writing the code is a good idea, this might give you a hint of how important Software Testing is.

I’ll explain the kinds of testing in an infographic so you’ll read them eve if you’re lazy because they have colors and not so much text.

Software Testing.png

 

 

There are several tools you can use in this stage of the project, the one that we used in class is JUnit, it’s easy to use and there are a lot of tutorials out there.


Software Maintenance

Software Maintenance is also a part of the Software Development Lifecycle and is as important as getting the project done because change is constant and we have to make sure that our software is always useful and not outdated.

It is known that this is the most expensive part of the project but is also a must if you want your code to be useful when the client changes its mind or the market takes a turn. To explain the kinds of Software Maintenance I made another infographic, you can see it below.

Types of software maintenance.png

To complement what you just read you can watch this video, It’s a bit long but I liked it and you might like it too, it explains pretty well what SM is.


The Future of Software Engineering

I cannot but marvel at humanity’s struggle to synthesize his natural ability to think. In our case to forge a tool capable of imitating thought processes at very complex levels.

In our effort to unravel the growing number of mysteries somehow programmed into everything that we encounter in this universe we have built a curiosity that somehow reflects reality in a light never before seen.

The advancement of physics and program engineering have opened a new threshold impossible to even imagine, Quantum theory applied to the computer sciences and it’s respective programming needs are the new frontier, a door to an unimaginable fountain of discoveries.

Processing and memory chips so tiny and fast, working very near absolute 0 temperatures with what might be called 4 dimensional memory storage, in these terms even the concepts of programming acquire an enormous and novel range of possibilities.

The possibilities and  repercussions of these discoveries as exciting as they are do not come without its inherent risks and I’m eager to see, experience and obviously contribute to this awesome story.


Software Architecture

Software architecture might be my favorite part of the project. Why? Because is the stage in which the blueprints of the project are made. This means that you solve the problem without programming it, then you can have fun implementing it once you know it will work. The goal of software architecture is to meet all the requirements and spot possible problems before you start programming. For me this is the core of good software.

User (1).png

If you want to know more about this you should see this four minutes long video. The nice thing about it is that it shows the difference between software architecture and software design, so if you have problems telling one from another this will help you.


Software Design

This post is about the first step in the Software Development Lifecycle, I’ve already wrote about it so if you don’t know what that is you should read my post it’s really short. Software design is the process in which you listen to the user and transform their needs into something you can code.

Once again I made an infographic because they’re fun, I may write a post about why I love making graphics to explain things. This time is about the software design levels, I got that info from this page.

Software (1).png

I consider this a fundamental part of the project. Although I’m not really a long term planning person and I’m more into improvising, I understand the importance and transcendence of this step in the SDLC and now I see a relationship between all the topics we covered in this course but I think that the only way I’ll truly understand the whole process is to actually make a project and implement all the steps myself.


Software Design Patterns

After working in various projects software engineers noticed that there were some similarities between the solutions for different problems, that’s why they decided to introduce the concept of Software Design Patterns. SDP are reusable solutions that are made to help you optimize and make your software less time consuming.

If you read my posts I think you already know that I love adding other resources different from just text so I made another infographic to tell you more about SDP.

Kinds of software design patterns.png

I really think this is a great idea if you know when and which design pattern you use, otherwise it may be harmful for your project. I think it’s interesting how people came up with this idea and recommend you to read this article.


History of Software Engineering

For this post I decided to make an infographic because, in my opinion, that makes it easier to read this kind of information, or at least easier to organize /visualize it for me.I hope you like it. I used Canva, an online free tool I’m in love with.

SoftwareEngineering.png

I like the way this man explains the history of SE so I’ll share it with you. If you want to you can skip the first two minutes of the video, the important part starts at 2:36.

In case you want to go deeper in this topic you should also read this article.


Unified Modeling Language

UML is not a program language that where you can write code and create something that a computer will understand; but is a way to represent, build or record the elements of an oriented object software.

 

“Modeling is the designing of software applications before coding.”
Says UML.org

In UML you design diagrams that can contain different elements of the software, for example, the most common is the one where you write the name of the class, its attributes and its methods. But it all depends of the diagram you use. In UML there are many different diagrams with different uses and elements that you can write.

Is not necessary to become an expert of UML because is not actually a must for learning actual coding, but is important to know about it because it helps in the design part of software. Creating an UML diagram is like drawing a sketch, is not that important and is unnecessary to put much effort on it, just with understanding the idea is enough.

There are many UML diagrams (13 to be exactly) so in the next section there are only the three most important.

Activity Diagram

Activity Diagrams are used to design complex methods. It describes phases or activities done by the computer or an user. They are also used to describe business processes in a single usage scenario. They look a lot like flowcharts, actually, activity diagram is an upgraded version of flowcharts. Take a look at this example:

swimlane-activity-diagram by jean-louis zimmermann, on Flickr

This example describe a generic shop process. As you can see some task are only for a specific agent and reading it is really simple if you already know flowcharts. The diagram starts from the top and tells perfectly who

Class Diagram: Builder Pattern by beatak, on Flickr
Sequence diagram for synchronisation of by carol shergold, on Flickr
Continue reading "Unified Modeling Language"

Waterfall Method

This was the first process model to be introduced, it describes a development method that is linear and sequential. In the waterfall method all the steps are defined in the beginning and once a phase is completed there’s no way back.

 

Advantages of the waterfall method:

  • This model is simple and easy to understand and use.
  • It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • In this model phases are processed and completed one at a time. Phases do not overlap.
  • Waterfall model works well for smaller projects where requirements are very well understood.

 

Disadvantages of the waterfall method:

  • Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage.
  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Not a good model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Not suitable for the projects where requirements are at a moderate to high risk of changing.

I found a really nice video that explains the waterfall methodology in only two minutes.