Showing posts with label software development. Show all posts
Showing posts with label software development. Show all posts

Dec 15, 2009

Design Patterns

In one of the last classes, we talked a bit about design pattern. Design pattern is "is a general reusable solution to a commonly occurring problem in software design". It is not specific code but it describes the solution to the problem. This makes it compatible with different programming languages.

Design patterns became popular after the release of the famous book "Design Patterns: Elements of Reusable Object-Orientated Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, which are usually only known as the "Gang of Four (GoF)". This book describes Design Patterns and the advantages of using them as well as that it gives examples of 23 classic design pattern.



Design Pattern are usually described with their name and classification other names, a description of the goal and the reason why using it, scenario or context in which this pattern can be used, class / interaction diagrams, participating classes or modules and the way they interact, results, side effects or trade offs that can happen while using this pattern, a description of the implementation as well as a sample code, real usage and related pattern.

I think that everybody who wants to have some knowledge in programming or software development should have worked with Design Pattern. Using well-known code reduces the costs for development, reduces errors and makes the code easier to maintain.
Luckily, I gained some experience through my first software development class with the following Patterns: Singleton, Factory method, Facade.

Nov 14, 2009

Oxygen XML Editor 11.0

While working with XML files, received from a server, I was looking for a tool to help me. Until now I worked with around nine different APIs and their XML responses. After the implementation of ebay, my third API, I desperatly wished a good XML tool.

After some research I found the Oxygen XML Editor. This editor features syntax highlighting, debugging, validation, xpath to address seperate tags,xquery to search the document and much more nice features.



This tools makes it easier to read xml-files. You can copy the content from your server's response into a new xml document. With one click, the xml will be organzied that you can read it. Marking a tag and just clicking on "copy xpath", you will get the exact path, with childnode and so on. The best thing, you can use it 30 days for free!
Update: Sorry, I forgot. Here is the link!

Sep 28, 2009

Web 3.0 is out there!

In my last blog post, The Cool World of Web 2.0, I asked what a web 3.0 would look like thinking it was more of a rhetorical question. This week I was surprised to discover that the next evolution of the Internet and Web applications, Web 3.0, is in development and that the concepts are out there

Chariman of the Board and Chief Executive Officer of Google provides a quick and simple comment on Web 2.0 vs. Web 3.0 in this video found on YouTube.
Time: 1 min 50 seconds



Based on all that I read, Web 3.0 is all about a highly personalized experience and a more advanced search experience. Semantic Web for the advanced search experience is the hot topic for this version. The definition of Semantic from computer.howstuffworks.com is, “The Semantic Web proposes to help computers "read" and use the Web. The big idea is pretty simple -- metadata added to Web pages can make the existing World Wide Web machine readable." The beauty of this kind of search is that you can enter text such as, “what is the best website for buying mountain bikes and tell me where in Michigan I can find a mountain bike trail”. This makes for a more efficient and effective search.

Here’s another great presentation on the topic of Web 3.0(28 slides) which is worth checking out. It comments on who is in the forefront (Google is on the list of course) and provides a simple overview comparing each iteration of the Web:


Additionally, here is a nice break down of the main differences between the three versions found at www.labnol.org (CLICK ON GRAPHIC TO ENLARGE):


The evolution of the World Wide Web is incredibly fascinating when you think of it. I am typically so busy using it that I don't really think about how it will improve. Web 3.0 will be an exciting new world.

Sep 23, 2009

API

A few days after we had the class I start thinking about the APIs. I did see what they are but I never had a clear view on what really an API is, or who how and why it is created. Since we began thinking about the project. I found out that it is really important to know that there is a developed API that can support our idea. We already had several ideas, but since we could not find an API for it, we had to leave them. That is why we began our project of finding what APIs are there, and what they are used for. But as I sad earlier I wanted to know what an API is, so I went to the following link to find out more http://en.wikipedia.org/wiki/Application_programming_interface.
As defined on Wikipedia an Application programming interface (API) is an interface in computer science that defines the ways by which an application program may request services from libraries and/or operating system. An API determines the vocabulary and calling the programmer should employ to use the services. It may include specifications for routines, data structures, object classes and protocols used to communicate between the requesting software and the library.
But when used in the context of web development, an API is typically a defined set of Hypertext Transfer Protocol request messages along with a definition of the structure of response messages, usually expressed in an Extensible Markup Language or JavaScript Object Notation format. While "Web API" is virtually a synonym for web service, the recent trend (so-called Web 2.0) has been away from Simple Object Access Protocol based services towards more direct (REST) style communications. Web APIs allow the combination of multiple services into new applications known as mashups.
The interesting thing is that in order to use APIs we must fallow certain policies Companies do not release API information to anybody outside of the company.
Companies protect information on their APIs from the general public. For example, Spny used to make its official Play Station 2API available only to licensed PlayStation developers. This enabled Sony to control who wrote PlayStation 2 games. Such control can have quality control benefits and potential license revenue.
Companies make their APIs freely available. For example, Microsoft makes the Microsoft Windown API public and Apple releases its APIs Carbon and Cocoa so that software can be written for their platform.

Sep 14, 2009

Agile development

After reading several blogs, I have realized that most of the technical terms were introduced successfully. However, no one has mentioned the Agile software development and I thought I would touch on that. To be honest, my knowledge is not great in Agile but I have read about it before. Since I haven't had a job that requires implementing this methodology, I wont be technical; instead I will use simple terms of what I have understood. In the following paragraphs, a simple introduction of Agile development and a highlighting of the most important terms will be provided.

As defined in Wikipedia.org, agile development is a group of development methodologies based on iterative development with great dependence on effective cross functional teams communication. Even though this sounds like a great definition, it appears to be a little but broad. Because many resources refuse to provide a solid definition, instead they state that the agile development definition is basically any process that follows specific principles. Another definition that seems to be well directed is the mentioned in Agilemodeling.com; it's an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework with "just enough" ceremony that produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders. Of course, since there are an enormous amount of resources that each has different definitions, one cannot conform to one. The best way is to take the best of each definition and utilize that to help your understanding.

The Agile development process has several key terms that should be highlighted. first, Cross functional; it's apparent from the definition that Agile development should have a number of teams from various backgrounds/departments that align together during the process. second, frequent changes; perhaps the capstone of the Agile development because it relates to flexibility which is a rising requirement in system development. Third, customer satisfaction; because customers may not know what they want, being able to change conforms to customer satisfaction. Lastly, communication should be present all time because the Agile development process emphasizes on the ability to effectively engage both the cross functional teams and the customers into expressing and delivering their views.

In conclusion, Agile development is one of the most effective business practices around the world and is gaining a lot of attention since the manifesto. Hopefully by the end of the course, a clear understanding of the process will formed.