Software architecture is the high level component design of the software. Eoin Woods defines that software architecture is the set of design decisions which, if made incorrectly, may cause your project to be canceled [1]. This definition shows clearly the importance of the software architecture in a software development project. Since architecture design is in the early stage of a software development process before the detailed design, a good design with less mistakes could save a lot of money and manpower in the software development.
One of the important tasks of the software architecture design is to decompose the whole system into components or subsystems. The software architecture discipline is centered on the idea of reducing complexity through abstraction and separation of concerns [2]. A good decomposition satisfies the principle of loose coupling between components (or pieces), facilitated by clean interfaces, simplifying the problem by dividing it into reasonably independent pieces that can be tackled separately [3].
There are a lot of kinds of software architectures that can be used when designing a software system, such as client-server, peer-to-peer, three-tier model, structured, service-oriented architecture, etc [2]. Software architects should make used of them when designing software architectures.
[1] http://www.sei.cmu.edu/architecture/definitions.html
[2] http://en.wikipedia.org/wiki/Software_architecture
[3] http://www.bredemeyer.com/whatis.htm
Thursday, February 15, 2007
Saturday, February 10, 2007
The Python Programming Language
I have learned the Python programming language in the lectures in the last week and this week in the Internet Application Development course. According to the Python tutorial, Python is an easy to learn, powerful programming language [1]. It can be used to implement CGI programs easily just like other scripting languages such as PHP and Perl.
Unlike some well known scripting languages, the grammar of the Python language is very different from the traditional C programming language. This makes it a little bit difficult to learn. One example is that Python uses indentation to represent block structure rather than using brackets or "begin...end" blocks. This may cause confusion when the indentation is a mix of spaces and tabs on some platforms.
Python implements some functions of Object-oriented programming. This makes it easy to write complex applications. Furthermore, Python provides a set of modules that extends its functionality.
[1] http://docs.python.org/tut/node1.html
Unlike some well known scripting languages, the grammar of the Python language is very different from the traditional C programming language. This makes it a little bit difficult to learn. One example is that Python uses indentation to represent block structure rather than using brackets or "begin...end" blocks. This may cause confusion when the indentation is a mix of spaces and tabs on some platforms.
Python implements some functions of Object-oriented programming. This makes it easy to write complex applications. Furthermore, Python provides a set of modules that extends its functionality.
[1] http://docs.python.org/tut/node1.html
Sunday, February 04, 2007
Advantages and Disadvantages of CGI
CGI is a standard protocol for interfacing external application software with a Web server [1]. It has been widely used for implementing dynamic generated pages on the Web.
There are advantages and disadvantages to CGI programs. One advantage of CGI programs is that they are language independent [2]. CGI programs can be written in any language that allows one to write normal programs since they are executed in the same way as the normal programs. Another advantage of CGI is that it's a very simple interface [3]. It's not necessary to have any special library to create a CGI program, or write programs using a particular API. Instead, CGI programs rely on the standard concepts of standard input, standard output, and environment variables to communicate with the Web server.
There are also disadvantages to CGI programs. One disadvantage is that CGI programs are slow since they need to fork a new process for every HTTP request and the database connection must be reopened for the next instance of the program, which is quite costly [4]. One solution is to use FastCGI instead of CGI. FastCGI implements a technique using which forking one process for every request is not necessary, therefore can improve the performance.
[1] http://en.wikipedia.org/wiki/Common_Gateway_Interface
[2] http://www.scit.wlv.ac.uk/~jphb/sst/basics/cgiintro.html
[3] http://proquest.safaribooksonline.com/0672324040/ch01lev1sec5
[4] http://proquest.safaribooksonline.com/1565923790/ch15-27259
There are advantages and disadvantages to CGI programs. One advantage of CGI programs is that they are language independent [2]. CGI programs can be written in any language that allows one to write normal programs since they are executed in the same way as the normal programs. Another advantage of CGI is that it's a very simple interface [3]. It's not necessary to have any special library to create a CGI program, or write programs using a particular API. Instead, CGI programs rely on the standard concepts of standard input, standard output, and environment variables to communicate with the Web server.
There are also disadvantages to CGI programs. One disadvantage is that CGI programs are slow since they need to fork a new process for every HTTP request and the database connection must be reopened for the next instance of the program, which is quite costly [4]. One solution is to use FastCGI instead of CGI. FastCGI implements a technique using which forking one process for every request is not necessary, therefore can improve the performance.
[1] http://en.wikipedia.org/wiki/Common_Gateway_Interface
[2] http://www.scit.wlv.ac.uk/~jphb/sst/basics/cgiintro.html
[3] http://proquest.safaribooksonline.com/0672324040/ch01lev1sec5
[4] http://proquest.safaribooksonline.com/1565923790/ch15-27259
Subscribe to:
Posts (Atom)