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.


Google aims to tackle Black Friday crush

Black Friday bargain hunters are being courted by Google, which wants them to try out its latest search facility.

The tech company has made it possible to see how busy shops and other popular destinations are, in real time. A search for a shop now delivers a status update – such as “a little busy” – and information about how long people typically spend at the location. Google says it should help users navigate “Black Friday swarms”.

The new live information facility is based on information sent from Google app users, who share their location data with the company.

At present, there is no way for businesses to opt out of the service beyond deliberately blocking mobile phone signals.

References:

flickr photo by Neon Tommy https://flickr.com/photos/neontommy/5453704401 shared under a Creative Commons (BY-SA) license


Facebook ‘made China censorship tool’

Facebook worked on special software so it could potentially accommodate censorship demands in China.

The social network refused to confirm or deny the software’s existence, but said in a statement it was “spending time understanding and learning more” about China. The Electronic Frontier Foundation, a group which campaigns for better privacy online, told the BBC the project sounded “extremely disturbing”.

Censorship concessions

Since 2009, the only way to access Facebook in China has been via a virtual private network software designed to “spoof” your real location and avoid local internet restrictions.

Facebook, which has 1.8 billion active users, is aggressively looking to expand in parts of the world beyond its existing markets.

And in China, it appears the site is at the very least considering making concessions to China’s notoriously tightly-monitored internet.

According to employees quoted anonymously by the New York Times’ reporter Mike Isaac, Facebook founder Mark Zuckerberg was questioned about the plans in an all-staff meeting earlier this summer.

“It’s better for Facebook to be a part of enabling conversation, even if it’s not yet the full conversation,” he is reported to have said while stressing it was early days.

Mr Zuckerberg recently spent time with China’s leader, Xi Jinping, as well as taking time to learn Mandarin.

 

References:

flickr photo by Sarah.Marshall https://flickr.com/photos/sarahmarshall/8408366593 shared under a Creative Commons (BY) license

 


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.


Software Verification and Validation

Validation and verification are two different concepts in software engineering, each one can be abbreviated to the questions: are we building the right system? and are we building the system right?

vandv

Validation is concerned with checking that the software actually satisfies the customer’s needs and its objective is to demostrate that the product fulfills its intended use when placed in its intended enviroment, whereas verification is the process which checks if the software is functioning correctly and its objective is to ensure that work products meet their specified requirements.

Source:

The difference between Verification and Validation

Verification vs Validation


User Interface Design

User Interface Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand and use to facilitate those actions.

The reaction or the experience of the user when ising software doesn’t only depend on the functionality and the aesthetically design, what more influences the user to feel comfortable or not is the user interface.

 

Gestalt Design Principles

Similarity: occurs when objects look similar to one another.

Continuation: occurs when the eye is compelled to move through one object and continue to another object.

Closure: occurs when an object is incomplete or a space is not completely enclosed.

Proximity: occurs when elements are placed close together.

Figure and Ground: The eye differentiates an object from its surrounding area. a form, silhouette or shape is naturally perceived as figure, while the surrounding area is perceived as ground.

15857500937_0d43dc49fc_z

flickr photo by Isaac Kohane https://www.flickr.com/photos/52786697@N00/15857500937 shared under a Creative Commons (BY-SA) license

Best practices for User Interface Design

  • Keep the interface simple
  • Create consistency and use common UI elements
  • Be puposeful in page layout
  • Strategically use color and texture
  • Use typography to create hierarchy and clarity
  • Make sure the system communucates what’s happening
  • Think about the defaults

Sources:

https://www.usability.gov/what-and-why/user-interface-design.html

http://graphicdesign.spokanefalls.edu/tutorials/process/gestaltprinciples/gestaltprinc.htm


Software Maintenance

Software maintenance stands for all the modifications done after the delivery of a software product. A software maintenance is needed in order to mantain our software up to date.

Modifications in the software may be required because of changes in the market conditions, changes in the client requirements or even host modifications.

There are some types of maintenances based on their characteristics:

16382202136_375d300dbd_z

flickr photo by Pia https://www.flickr.com/photos/omgdolls/16382202136 shared under a Creative Commons (BY-SA) license

Corrective Maintenance:

This includes modifications and updates done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.

Adaptative Maintenance:

This includes modifications applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.

Perfective Maintenance:

This includes updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.

Preventive Maintenance:

It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

Sources:

http://swebokwiki.org/Chapter_5:_Software_Maintenance

https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm


Thank you Ken!

It is incredible that the semester is already over. Although I am happy because I was really tired, and I wanted it to finish, I am also sad. Why am I sad? Because I met one of the most wonderful teachers that I’ve known. Also, this course was one of the best experiences that I’ve had through college; furthermore, the course included tools that helped me to learn, and develop my skills in my professional area with help of amazing people, such as, Ken Bauer, and Kin Lane (API evangelist). Thank you for this incredible experience Ken.

The teacher

I would definitely recommend taking this course with professor Ken Bauer, simply because he is one of those teachers who actually care about their students development. He is very friendly, and will always try to encourage his students to learn in the most efficient way possible. He is an incredible person, and helps his students in every way he can. Of course, it is not easy; however, if you are responsible enough, you will certainly enjoy the course.

Evaluation

Something that I really liked about this course was the evaluation criteria. Students decide what their grade is going to be. However, this doesn’t mean that students are free passing the course. This grade that the student choose should be backed up with their work through the semester, their responsibility, and the students interest in learning. Obviously there are tasks and topics to study; however, students are provided with a guideline of topics to study and a due date, giving them free organization of their time.

Tools

Students were introduced to Kin Lane a.k.a. API evangelist, who talked about his experiences, solved students’ doubts, and gave them an explanation on the professional development of Software Engineers. This is an example of the tools provided in

Continue reading "Thank you Ken!"

Google investing in Snapchat

Google Capital added Snapchat to its list of investments as part of a brand refresh and website redesign.

Google Capital re-branded Friday as CapitalG. It was formed in 2014 to invest in more mature businesses. The goal, according to its website, is “to make returns-driven investments in leading companies around the world.”

An investment in Snapchat opens the door for a closer relationship with a buzzy startup that is expanding into several areas of interest for Alphabet.

Snapchat, which recently re-branded as Snap Inc., has raised more than $2 billion in funding and is widely rumored to be planning a public offering early next year at a valuation as high as $35 billion.

References:

http://money.cnn.com/2016/11/04/technology/google-snapchat-investment/index.html

flickr photo by AdamPrzezdziek https://flickr.com/photos/67683836@N02/16910572286 shared under a Creative Commons (BY-SA) license