Designing framework for web development

Size: px
Start display at page:

Download "Designing framework for web development"

Transcription

1 Designing framework for web development Mohammad Hafijur Rahman Department of Informatics and Media Degree project 30 credits. Autumn term 2011 Supervisor: Dr. Jonas Sjöström

2 Abstract In this software development era it is a key point to make software in such a good way so that it earns reliability and stability with a satisfactory level of standard that enhances easy modification and tailoring. By definition in the context of software development a framework is a tool for developing any software quickly and to gain most architectural advantages. However to use any framework developers or programmers who are just starting-out will find it difficult to use as it requires a descent level of understanding of various Object Oriented Programming (OOP) techniques and principles. Never the less, frameworks improve quality, consistency and even allow junior programmers to have good contribution in a large scale project with minimal guidance. So it is very important that frameworks are understood by the developers to promote good practices for maintaining a better structure of the software. The aim of this thesis is to develop a full functional Model View Controller (MVC) driven framework (PHPWebPad) based on Object Oriented Programming in PHP5. This research is categorized as Design Science Research (DSR) and I use a subset of Hevner s evaluation method to explore different design artifacts in PHPWebPad. I explain several distinguishing differences and improvements in PHPWebPad compare to other well-known frameworks. Further this project is released as open source program under General Public License (GPL). Keywords: PHP, PHP5, PHPWebPad, Web development framework, MVC, ORM, Abstract design patterns, Load by demand, Design science.

3 Acknowledgement I am glade to make my research from Uppsala University, Sweden. This is one of the prestigious universities in the world. I am very thankful to my supervisor Jonas Sjöström who helped me through various means. It is my honor to learn from him. I would also like to thank specially one of my favorite teachers Anneli Edman for her great help at the end. This thesis is an effort of collective knowledge that I have learned from my great teachers, friends, and colleagues. I am grateful to everyone.

4 Table of Contents 1. Introduction Problem relevance Research questions Thesis outline Research method Literature Review General thoughts about frameworks Characterization of frameworks MVC architecture Object relational modeling by OOP Description of PHPWebPad PHP implementation of MVC Abstract design pattern How it works Load by demand Error handling Convention over configuration Scenario-based Evaluation of PHPWebPad Controller Action View Layout Element Model AJAX Object-relational mapping Store a user Load all users Load all users with filter Update a user Database transaction, rollback, commit Special route Render action Concluding discussion Summary of results...32

5 6.2. Re-visiting the research questions Design science artifacts as contributions Implication for research and practice References Appendix List of Figures Figure 1: Hevner's Information Science Research Framework Figure 2: Use of abstraction of the Controller class Figure 3: Sequence diagram of how request works in PHPWebPad Figure 4: Simple login flowchart List of Tables Table 1: Examples of frameworks in different languages... 2 Table 2: Hevner's Desing Evaluation Methods Table 3: Hevner's Design-Science Research Guideline Table 4: List of abstract methods of Controller class Table 5: List of methods of controller class Table 6: One abstract method of model class Table 7: PHPWebPad resources

6 1. Introduction Many software developers today are still following the old traditional way of "write your own code" strategy. This can work well in some cases depending on programmer s skill and originality in the field, especially when the application volume is fairly small. So it may seem feasible from a developer's perspective in terms of his own skill, expertise and originality. But when it comes to develop large-scale applications on a tight schedule, this may not be the best approach. Often in a large scale application several developers work together with the same code. Since the application volume may increase over time more developers may join at different times and in different faces of the project. So the developers feel the necessity of structuring the program in such a way so that the application can still be manageable over time. There are other benefits of such approach which enables developers to work faster since most of the repetitive tasks can be handled. So this is how the term framework appears that gives opportunities to minimize the development time, maximize the software delivery and maintain a good structure of the software. It also gives organization a skeleton to start from and acquire most architectural advantages which can be understood by the wide range of developers. A framework emphasizes on the basic notion of "Write less, do more" by reusing the common patterns of code and structuring the program. So in the long run we get more manageable and structured code to maintain the software and to add more functionality easily. As a result we see lots of wellestablished frameworks for different purposes and different languages. In this research I focus on the web application frameworks because of the growing needs of worldwide users in web applications. In Table 1, I mention some of the frameworks those are broadly used in these days for developing web applications. Programming Languages PHP Frameworks Zend, CodeIgniter, CakePHP C# MVC / MVC2 in Visual Studio ASP.NET [16] JAVA Struts / Struts 2 [17], Spring, Play Ruby Rubyonrails [18] Table 1: Examples of frameworks in different languages These frameworks abstract are commonly used in software functionality requirements. The good examples are database connection, CRUD (Create, Retrieve, Update, and Delete) operations, input validations, error-handling, configuration etc. In every framework most of the repetitive tasks are easily handled in a way so that developers or programmers can focus more on the business logic of the application. Also, these frameworks (From Table 1) are designed by following a solid structure of Object-Oriented techniques and design patterns which ensure that the code are well structured and confront with a certain level of software standard. 2

7 1.1. Problem relevance In the article Object-Oriented Frameworks, Michael Mattsson discusses several advantages and disadvantages in adopting frameworks [8]. According to Mattsson, frameworks support the organization to keep knowledge about the application domain because the organization has a design to start from. These help to minimize the amount of code needed while implementing similar applications in the domain. These offer not only reusability of design but also code and make the organization efficient enough to deploy any software which may not be possible to develop within a normal project budget and schedule [8]. He also states that frameworks help developers to focus more on area of expertise, and focus less on area of system compatibility. One realistic problem when using frameworks is that developers or programmers who are just startingout will find it difficult to use frameworks as it requires a descent level of understanding of various Object Oriented Programming (OOP) techniques and principles. But overall, for most developers who are aiming to deploy more in less time, frameworks are the best choice. Besides the choice of frameworks the resistance from any development team can be vital. As we study the successive maturity levels of Capability Maturity Model (CMM) [22] for any organization we see that the standardization of software development actually affect the process rather than the developers [4]. But according to a recent CMM maturity profile, almost half of all companies assessed are at Level-1 [19]. This indicates that there are many immature software organization in which development is inconsistent and lacks common software development processes (i.e., methodologies are not used) [4]. So the lack of standardization of development process often becomes a problem due to shortage and high turnover of developers into these days. The lack of documentation of any framework may also become a problem since it is crucial to the framework users. Also the backward compatibility [23] of any framework can be difficult to maintain. The debugging process may lead to confusion to distinguish bugs in the framework from bugs in the application code [8]. 3

8 1.2. Research questions Frameworks are designed to create various advantages in software development. While the term framework appears to be used widely, the first aim of this thesis is to answer the research questions: RQ1: How can we understand the concept of framework in software development? The second research question is phrased with the intention to develop a full functional framework for web development by using PHP5 programming language. RQ2: How can we design a web development framework in terms of current design practices, and principles that can be easily understood by the developers [implemented in software development]? 1.3. Thesis outline Chapter one explains how frameworks may become useful for the developers to work with. It also tries to find out different consequences that developers feel while choosing any framework. Here I also determine my research questions to focus on overall goal of this thesis. The next chapter explains the research method of my thesis. Here I mention Information Science (IS) research framework proposed by Hevner. This thesis aims to Design Science (DS) research within the IS framework. The overreaching mission is to develop a Model View Controller (MVC) driven web application framework by following Object Oriented Programming (OOP). Further there are several evaluation processes take place to examine the project (PHPWebPad) by following Hevner s Design Evaluation methods [15]. Chapter three explains the general thoughts and characterization of frameworks that helps to construct some core concepts about different terms related to framework development. Chapter four contains the descriptive analysis of the PHPWebPad project. Chapter five is also a part of descriptive analysis explaining a complete practical example of using PHPWebPad. Chapter six presents the summary of results, the research contributions and some distinguishing improvements in the project compare to other web application frameworks. 4

9 2. Research method Every design science research offers an extension of the boundaries of human or organizational capabilities by creating new and innovative artifacts as mentioned by Alan R.Hevner in his article MIS Quarterly (Design Science in Information Systems Research) [15]. The two basic paradigms in Information Systems (IS) research as suggested by Hevner are behavioral science and design science. Behavioral science seeks to explain the world, often through the use of quantitative methods, where correlations between various variables are tested. Design science, on the other hand, seeks to develop knowledge to support design. Design science thus seeks to bring changes to the world, rather than just describe it. Hevner suggests a research framework for IS in order to achieve a good understanding of and appreciation for design since as an IS research paradigm. Figure 1: Hevner's Information Science Research Framework. Hevner explains the relation (See Figure 1) of IS research with the progressive environmental needs caused by people in one side and advancements of knowledge on the other side by gaining theories, models, instruments, methods, etc. The two paradigm (Design science research & Behavioral science research) of IS research is the medium to help constructing business needs identified from the environment due to strategic, cultural or technological advancements demanded by people and organizations. The knowledge base on the other hand is the cumulative knowledge that may inform the design researchers in attempting to solve the problems defined in the relevance cycle. At the end IS research contributes to the environment by offering new technology, and strategy. It also helps gain more knowledge through design and evaluation of design science artifacts. 5

10 This thesis focuses on the design science research. Since the aim of this thesis is to identify the business needs and offer utility (or design artifact) as design science research is supposed to differ from behavioral science research according to Hevner [15]. In the first chapter we discuss the background and the problem relevance which reasonably explains the business needs (see Figure 1) which the developer communities (People) are facing now a day. The primary concern of this thesis is the design mechanism (Develop / Build) of a web development framework. In this thesis an MVC driven framework (PHPWebPad) has been developed by using PHP5 programming language which I also try to evaluate (Justify/Evaluate) by following Hevner s design evaluation methods. There are five approaches or methods for evaluation in Design-Science proposed by Hevner. Evaluation type Evaluation method Appropriation Observational Case study. Not in details but there are some comparisons and discussions about PHPWebPad with other types of frameworks. Analytical Field study. Static analysis which examine the structure of artifacts for static quality [15]. No field study is appropriated since the aim is to motivate developers towards using framework. So in that effort I build MVC driven object oriented framework in PHP5. See chapter 3. Architectural analysis. See chapter 3. Optimization. Dynamic analysis. There are several examples in this project which shows some optimize solution (i.e., Object Relational Mapping (ORM), MVC, Auto load of classes and models) compare to other frameworks. This framework is very lightweight and covers most of the necessary needs for web development. Not appropriated. Experimental Controlled experiment. There are some control experiments by which the framework has been tested and further developed. Testing Simulation. Functional testing or black box testing. The framework is simulated on different stage in the development of PHPWebPad. Done, but in a non-systematic manner. The expected behavior of the framework has been tested through the development and 6

11 execution of example applications, which is comparable to black box testing. Structural testing or white box testing. Descriptive Informed arguments. Use information from the knowledge base to build a convincing argument for the artifact s utility Done, but in a non-systematic manner. The code has been subject to continuous inspection and re-factoring in a number of design iterations. See chapter 4. Table 2: Hevner's Desing Evaluation Methods. Scenario. See chapter 5. This thesis aims to conduct several evaluation methods (See Table 2). In the static analysis the aim is to explain the general proposition of framework design, and emphasize the core concepts about different terms related to framework development. The architectural analysis gives the basic building block of design principals and techniques to develop such framework (PHPWebPad). The descriptive evaluation has been divided into two sections (Informed arguments and Scenario). In case of informed arguments, the common knowledge, trends, practices and design patterns have been discussed rigorously. It shows the use of common design principals implemented in this framework (PHPWebPad). In case of scenario section, a complete example of using PHPWebPad has been shown. 7

12 According to Hevner Design-Science Research he also mentions some guidelines in order to conduct the research. Guideline Description Appropriation Design as an Artifact Problem Relevance Design Evaluation Research Contribution DS (Design Science) must provide a viable artifact. The objective of DSR (Design Science Research) is to develop technology based solution to some real world problem. A design artifact must be rigorously demonstrated via well executed evaluation methods. Must provide verifiable contribution in the area of design artifacts. This research has led to an open-source MVC framework and a straightforward mechanism for automated ORM mapping. In the introduction section, we discuss the need for frameworks to improve software processes. I evaluate the framework using several methods proposed within DSR. See Chapter 6. Research Rigor See Chapter 6. Design as a Search process See Chapter 6. Communication of Research See Chapter 6. Table 3: Hevner's Design-Science Research Guideline. According to Table 3, all the chapters of this thesis follow these guidelines. This thesis tries to design artifacts based on current practices, design patterns which can enhance develop applications in object oriented manner. PHPWebPad has another agenda of motivating the developer s communities to drive development in a professional way compare to typical approach where developers write their own code but doesn t follow any common architecture or techniques. The relevant problems for trying to motivate other programmers are also mutually beneficial in order to find out the best and easy approaches to application development. It tries to strengthen the evaluation processes of the framework. According to the guideline of Hevner s Design Science Research (DSR) the main objective of DSR is to develop technology based solution. 8

13 3. Literature Review This chapter focuses on how other scholars have researched regarding the core concepts and their propositions about framework design. I try to construct some ideas about frameworks and observe the core concepts regarding framework design. I also find some classification of framework that may help to imagine other context for using different frameworks for different needs. Further I specially focus on MVC (Model View Controller) architecture and introduce ORM (Object Relational Modeling) in this chapter General thoughts about frameworks Here I focus on the architectural development of any framework researched by others. The architectural development of any framework is just simply a necessity to make processes reusable, easily modifiable, and structuring code with acceptable standard. Further framework enforces design mechanism to handle each developer to convey some important aspects like maintaining interfaces, avoiding high couplings, etc. Also the design mechanisms won t provide free room for unintended problems. At the end framework may ensure more stable applications, fewer bugs, and more flexibility. A properly designed framework frees developers from figuring out some basic tasks and promotes creativity for the better use of writing well performing methods, classes, designing interfaces, processes, etc. A framework is a set of common and prefabricated software building blocks that programmers can use, extend or customize for specific computing solutions. With frameworks developers do not have to start from scratch each time they write an application. Frameworks are built from collection of objects so both the design and code of the framework may be reused. Java Framework [1] A framework tries to hold different building blocks or processes that can be easily used or tailored according to the nature of the problem. It also motivates to follow a standard to make any process extendable and reusable. In order to achieve reusability of any process it needs to be less dependent on other processes. Framework also provides great advantages while starting out any new project since most of the common tasks can be managed by a framework. In this given proposition of defining a framework it can be observed that the reusability of processes or components can be used by different techniques followed by a standard architecture. A skeleton of an application into which developers plug in their code and provide most of the common functionality. E. Gamma, "Design Patterns", Addison-Wesley, 1995 [2] Frameworks provide a skeleton by which the developers can design the interfaces to plug in their code and use the common functionalities. Since a skeleton is a template or roadmap for developing any application and the developer s aim is always to make difference processes reusable. So the developers 9

14 use their code by setting up some standard parameters and develop a plugin so this can be used in similar applications. An object-oriented framework is a set of collaborating object classes that embody an abstract design to provide solutions for a family of related problems. The framework typically consists of a mixture of abstract and concrete classes. The abstract classes usually reside in the framework, while the concrete classes reside in the application. Design Patterns in Object-Oriented Frameworks by Savitha Srinivasan IBM [3] This definition shows the techniques while developing any framework. The abstract classes are often used to serve purpose depending on the abstract methods overridden by the extended class. The very basic concept in object oriented programing is polymorphism which can be achieved by overriding an abstract class or abstract methods. Another important aspect of any framework is the simplicity. It allows developer to use different plugins or components easily. So developers can better concentrate on the business logic rather than the technical difficulties. Now a day any good framework provides different facilities to let the developers do something quickly. But it is important how easy it is to use those components and plugins. The authors of design patterns define application design as bellow. "If applications are hard to design and toolkits are harder, then frameworks are hardest of all. A framework designer gambles that one architecture will work for all applications in the domain. Any substantive change to the framework s design would reduce its benefits considerably, since the framework s main contribution to an application is the architecture it defines. Therefore it s imperative to design the framework to be as flexible and extensible as possible. " Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides [21] Frameworks provide a basic layout which needs to be very simple and easy to understand to work with. Because when a design gets harder it leads to a loss of more benefits. So it is very important that the design has to be more simple and consistent. Actually frameworks make the development easier while working with complex technologies. It holds a set of objects together into something more meaningful and useful. It forces any development team to maintain the standard provided by the framework. Eventually it helps to reduce bugs and bring more consistency. Moreover anyone with a meaningful expertise can join the team and start working with minimal guidance. 10

15 3.2. Characterization of frameworks There are different types of framework that are suitable in different development contexts. Buschmann [10] classified architectural frameworks depending on overall principles for the internal structure of an object-oriented framework. The described architectural frameworks [10] are: The Layered architectural framework. The Pipes and Filters architectural framework The Model-View-Controller architectural framework The Presentation-Abstraction-Controller architectural framework The Reflective architectural framework The Microkernel architectural framework The Blackboard architectural framework The Broker architectural framework structures Each architectural framework has different meaning of structuring tasks, subtasks or processes in the application. Layered architectural frameworks classify tasks into different groups of subtasks with different levels of abstraction. The pipes and filters architectural frameworks classify the tasks into totally independent subtasks that can be done in parallel or sequential manner. The Model-View- Controller (MVC) architectural frameworks define a structure for interactive applications that decouples their user interfaces from their functional core [8]. This thesis pays attention to MVC frameworks, since they are commonly adopted in modern web development. Other architectural frameworks like the Presentation-Abstraction-Controller enable multiple controls and presentations of their abstraction models of the system [8]. The Reflective architectural frameworks consider future adaptation to the changes of environments, technologies but without explicit modification [8]. The Microkernel architectural framework provides different views upon their functionalities which need to be adapted to new system (i.e., operating systems) [8]. The Blackboard architectural frameworks help to structure complex applications that involve several specialized subsystems [8]. The Broker architectural framework structures distributed software systems in which decoupled components interact via remote operation calls in a client-server fashion [8]. 11

16 3.3. MVC architecture Model-View-Controller (MVC) is considered as a software architectural pattern used in software engineering. It isolates each layer (Model, View, and Controller) for different purpose permitting independent development, maintenance and testing. The model layer represents the business logic which is separated from the user interface (View). The controller layer controls the communication between the other two layers (Model and View). The Model is responsible for acting on certain logical conditions or rules by managing data from the application domain. It takes some information, possibly stores information, gives some new information and changes its current state according to the instructions given by the Controller. The View shows the Model s state in a suitable format so that the users can easily understand. The Controller maintains the state at any given time. It takes requests, receives inputs from the View and then responds by calling several Model objects to take care of those inputs or data. By doing so the Controller gives instruction to the Model and the View to perform actions based on the logical conclusion of those data. MVC architectural pattern is now often seen in web applications. In general, views consist of HTML or XHTML. The controller receives POST/GET/CURL [24] as inputs and determines what to do by making calls to the Model objects which contains the business rules. Then the Controller renders Views from the logical conclusion of the Model s state by using different techniques such as generating templates, XML pipelining, generating PDF, AJAX callbacks, etc Object relational modeling by OOP Object oriented programming is now commonly accepted by many programmers. Many programming languages especially for web application have now reached the level of giving OOP pattern. PHP5, C#, JAVA all are well matured languages to fulfill the OOP needs of the programmers. Object relational mapping or object role modeling (ORM) is a powerful software programming technique or method to query database models at the conceptual level and converts data between incompatible typed data system to object typed data system. In other words ORM translates the SQL query data to the conceptual level of object oriented data. So that ORM data models can be easily understood by object oriented programmers and even by the non-technical users. 12

17 4. Description of PHPWebPad In this chapter I focus on the PHPWebPad framework to describe the common terms and practices which are used. For example how MVC works in this framework and which design patterns is used. I also discuss about different techniques. For example, load by demand, error handling, and convention over configuration, etc PHP implementation of MVC In MVC structure the request URL (that we write in the address bar in any browser) always looks for any controller class. I.e., if the request is mysite.com/user/profile/2 then the controller class name is UserController. Then followed by the controller name, is the action name or function name which is Profile. So any request can be mapped by a controller class containing a function within that class. In this case the URL mysite.com/user/profile/2 has been mapped to a class call UserController which contains a function which is called profile. The request URL can also have some other information. In this example, 2 is the value which is passed to the Profile function of the User controller class. URL: mysite.com/user/profile/2 Responsible class and function: public class UserController extends Controller{ public function Profile($id){ /** * We are here by mapping the url mysite.com/user/profile/2 */ Now a view or output for the request should be rendered back to the user. Each method or function for the UserController class has a view file. The view file has the same name as the function name. So if the function name is Profile than the view file name will be profile.php. Besides the MVC structure developers also need to know how the files and folders are organized in PHPWebPad. There are three basic folders in PHPWebPad. These folders are Model, View, and Controller. In the Controller folder all the controller classes are placed. Similarly in the Model folder all the model classes are placed. And in the View folder all the view files are placed inside the folders according to the name of the controllers respectively. 13

18 URL: mysite.com/user/profile/2 Folder structure: + controller - UserController.php - model + view + user - profile.php So for the given example the folder structure looks like above. The UserController class is inside the controller folder. Since the action name is profile, the view file prfile.php is inside the user (since user is the controller name) folder. And this user folder is inside the view folder. However since there is no model class, the model folder is empty Abstract design pattern Abstract design pattern is one of the software engineering techniques to give some beneficiary behavior for the extended class and also restricting the children to accept the standard implementation of the abstract methods from the parent class. Figure 2: Use of abstraction of the Controller class. In this Figure 2, simple abstraction of a controller class has been explained to handle http requests. Each Request object is passed through the Router class to verify the http request. If the Request object is valid then the Router class looks for the Controller class which is abstract. Now this Controller class knows how to render a view (or give output) for any valid request. But it doesn t know which view file to render. However the Router class actually looks for a concrete controller class that must extend the Controller class. So the concrete controller class (ApplicationController in this case) feeds the abstract methods of the Controller class. As a result the Controller class knows which view file to render for any given request. 14

19 4.3. How it works In PHPWebPad there are three major classes that take care of all the requests and responses. The Request class receives the URL and converts it into Request object. The new Request object is then passed into Router class. Typically, Request object has several properties like controller name, action name, and so on. So the Router class then determines the validity of the Request object. If the Request object is valid, then the Router class reads the controller name from that Request object and creates a new Controller object. Below a simple example that explains how a request and response work in PHPWebPad. Figure 3: Sequence diagram of how request works in PHPWebPad Figure 3 explains the request and response by showing a simple sequence diagram. Let s consider a URL as /Application/index. From this URL a new Request object is created by the Request class. The Request object has several properties like controller_name, action_name, etc. In this case the controller_name is Application and the action name is index. So this new Request object is now passed into the Router class. The Router class reads the controller name from the properties of the Request object and creates a new Controller object (in this case ApplicationController which extends Controller). This newly created Controller object is passed into the Controller class. The Controller class is the parent of any controller object. In this case the Controller class is the parent of ApplicationController. The Controller class is responsible to call the appropriate action and view. Since the controller object is an instance of ApplicationController then Controller class calls renderaction method to execute the index method of ApplicationController object. Similarly Controller class calls the renderview method to execute the view of the index method of ApplicationController object. This is how the request and response work in PHPWebPad. 15

20 4.4. Load by demand PHPWebPad loads only the necessary files. Developers don t have to include files or packages at the top of the program or class. The reason is that any required class will be automatically be loaded by the framework. <?php... /** * autoload for model classes. * load by demand * Since we don t want to include our model class * by ourselves. This autoload($class) function will * do the magic for us. It will include all the require classes * automatically. string $class if the class not found. */ function autoload($class){ if(file_exists(orm.$class.'.php') == true) { include_once(orm.$class.'.php'); else if(file_exists(model.$class.'.php') == true) { include_once(model.$class.'.php'); else { throw new Exception('Class '.$class.' can not be found.');...?> 4.5. Error handling In this framework the default error handler of php has been modified. PHPWebPad is strict with the noticeable problems when developers write php scripts. So it will throw exceptions for the noticeable problems inside the php scripts by the framework even though php error handler ignores those. <?php... /** * We are strict with the noticeable problems * inside the script. So we are defining our * own error handler to throw exception when such * problems occur. */ function error_notice($num, $str, $file, $line) { echo("$str in $file line $line"); set_error_handler("error_notice", E_NOTICE);...?> 16

21 4.6. Convention over configuration Convention over configuration is a software design technique which helps developers to decrease the number of decisions they need to make. It brings simplicity but not necessarily losing flexibility. PHPWebPad has some convention for each type of files in this framework. The benefit is that developers don t need to include any class or package at the top of the php script. If all conventions are maintained by putting classes in the right folders then the framework includes the necessary classes automatically. Bellow some lists of conventions are mentioned for different types of files in this framework. Controller Any controller must extend the Controller class. The default controller name is Application. Allowable name : User, User_settings, Usersettings Not allowable name: UserSettings, User_Settings, usersettings The controller name is going to have 'Controller' suffix at the end of its name. So the controller class name become like these: UserController, User_settingsController File name: The class name should be the file name. e.g: UserController.php, User_settingsController.php File path: /application/controller/usercontroller.php or /application/controller/user_settingscontroller.php, etc. Action and view Any action name should be in small letters. The view file names should also be in small letters. Default action name is index. File path: e.g. If your action name is login then the view file should be in application/view/{controllername/login.php. Layout and element Default layout name is layout. Any layout or element file name should be in small letters. File path for layout: /application/layout/layout.php. File path for element: /application/element/{yourpage.php. Models Any model must extend the Model class and implement gettabledefination() method. Class name and the model name should be the same. File path: /application/model/{yourmodel.php. 17

22 5. Scenario-based Evaluation of PHPWebPad In this chapter a complete example of a simple use case scenario has been covered with detail code and explanation. Figure 4: Simple login flowchart This flow chart (Figure 4) explains a simple user login scenario. A User tries to login by sending his/her username and password. Then next process tries to find the username and password in the database. If the user is found into the database then the profile page for that user is shown otherwise an error message is shown. There are seven necessary sections of the PHPWebPad framework; those are explained as follows by showing the implementation of the example (given in the figure 4). 1. Controller: The aim is to write a controller class based on this example (Section 5.1). 2. Action: The aim is to write the logic for user to login into the system. This section also shows how to pass values in the view files. E.g. how to send an error message to the view file (Section 5.2). 3. View: This section shows how to present HTML page in the browser (Section 5.3). 4. Layout: Shows how to construct a page that contains a HTML header, footer, menu, etc. (Section 5.4). 5. Element: Shows how to use a common HTML code multiple times (Section 5.5). 6. Model: This is the most interesting part of the framework. The model section describes how to connect and communicate with the database in an object oriented manner (Section 5.6). 7. Ajax: This section shows the advance use of ajax technology in this framework (Section 5.7). 18

23 Then we also discuss some other sections (Database, Special route, Render action) apart from our example in order to show some advance use of (Database, Special route, Render action) PHPWebPad. 1. Database: This section shows the advance use of query database in object oriented manner (Section 5.8). 2. Special route: This is one of the advance sections of the framework which describes how to rewrite the route for some special request (Section 5.9). 3. Render action: Another advance technique to use a same section of HTML code to be used in several places with more control. Render action is different than rendering element (See section 5.10) Controller Any controller must extend the Controller class and implement five abstract methods. Controller is the main class that controls the communication between the models and the views. We will be doing a user login application throughout this example (See flow chart in Figure 4). Here I mention all the necessary methods for any controller class. Abstract methods actions() jsonations() catchunallowedactions($actionname) beforerender($actionname) afterrender($actionname) Purpose and rational Returns the allowable actions of this controller. Returns the allowable json actions of this controller. All the unallowable actions requests will call this function. This method will be called before the action render. This method will be called after the action render. Table 4: List of abstract methods of Controller class. These methods from Table 4 are all abstract. These abstract methods are very important to get necessary information from the extended class. Through these methods the abstract controller class knows all the actions and jsonactions from the extended class. Bellow some other methods of the abstract Controller class are also mentioned. Inherited methods setlayout() setview() setlayoutvar($name, $value) setviewvar($name, $value) Purpose and rational Set the layout file. Set the view file. Set the value for a variable in the layout file. Set the value for a variable in the view file. 19

24 afterrender($actionname) addlog($msg) getlog($msg) renderelement($path, $value) redirectandexit($path) This method will be called after the action render. Add some log message to the controller. Return all the log messages. Render an element. Redirect to a new URL. Table 5: List of methods of controller class. These methods (Table 5) are very useful and essential to work with any controller class. We will see some of the uses of these methods in the code section while implementing the example (See the flow chart in Figure 4). Now we focus on the code by implementing a controller. We name the new controller class as ApplicationController that extends Controller class. The ApplicationController class has six methods in which only one method (index) does not belongs to base class Controller. Other five methods are all extended methods from the base class. Please follow the comments in the code. Path: application/controller/applicationcontroller.php Controller name: Application <?php class ApplicationController extends Controller { /** * Start of implementing abstract methods of the controller class */ /** * Return the allowable actions in this controller. array */ public function actions() { return array('index'); /** * Return the allowable jsonactions in this controller. array */ public function jsonactions() { return array(); /** * Catch the un-allowed actions for advance use string $action_name void */ public function catchunallowedactions($action_name){ throw new Exception("FATAL: Action $action_name is not allowed."); /** * This function gets called before the action is rendered. * Mostly we set the layout file in here. void */ public function beforrender($action_name) { $this->setlayout('layout'); 20

25 /** * This function gets called after the action is rendered. void */ public function afterrender($action_name) { /** * End */ /** * The default action is index. */ public function index() { // Logic begins here.?> 5.2. Action In the action we do the logic part. Here we add two more methods login and submitlogin other than index. The view for login method shows the HTML content of a login form to the user. In case of submitlogin method we take certain information (username and password) from the request and we pass that information to the model. Then model checks whether the given information are correct. Depending on the logical conclusion of the information the submitlogin method decides what view should be returned to the user. Note that we set the value in the controller (more specifically in submitlogin method in this case) for the variables that will be used in the view file. In order to pass information to the view, we use the setviewvar method extended from the base class. Please follow the comments in the code. Path: application/controller/applicationcontroller.php Controller name: ApplicationController <?php... public function actions() { // Allow default actions. $actions = array('index', 'login', 'submitlogin'); // Check if any user has logged in to the system. // Only in that case allow loggedin action. if(user::currentuser()!= null) { $actions = array_merge($actions, array('loggedin')); return $actions; public function index() { // Redirecting default action to login action so that we can // see nice URL in the address bar. Controller::redirectAndExit('/application/login'); 21

26 public function login() { // Setting a msg variable to show the value in the view file. $this->setviewvar('msg', 'Please enter your username and password.'); public function submitlogin() { // Using the same view file as login. $this->setview('login'); // Check if we come from by submitting the login form. if(!isset($_post['username'])!isset($_post['password'])) { $this->setviewvar('msg', 'Secure authentication require'); return; $username = $_POST['username']; $password = $_POST['password']; if(empty($username) empty($password)) { $this->setviewvar('msg', 'Please fill up all the fields.'); return; // We are calling User model to check username and password. $status = User::tryLogin($username, $password); if(!$status) { $this->setviewvar('msg', 'Wrong username or password'); return; // Here we know the user is valid so redirecting to loggedin action. if(user::currentuser()!= null) { Controller::redirectAndExit('/application/loggedin'); // we should not reach to this line. So we are throwing an exception. throw new Exception('Something went wrong...'); public function loggedin() { // We are sure user is logged in......?> 22

27 5.3. View In the view file we put all the html contents. Here we are creating a simple login form. The action of the form is submitlogin which is a method in ApplicationController class. So the action should look like /application/submitlogin (action name followed by controller name). We also show the message by $msg variable that we set in our controller. Path: application/view/application/login.php <form action="/application/submitlogin" method="post"> <div id="showmsg" style="clear:both;">message: <?php echo($msg);?></div> <div style="clear:both;"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" name="submit" value="submit"> </div> </form> 5.4. Layout The layout file is the whole wrapper of the site. We include all the CSS or JAVASCRIPT files in here. Then we choose where to render our view file. The view file content is stored in a layout variable is named $ VIEW. In our current example we have a simple layout file and we echo or print the variable ($ VIEW ) into our html body tag. Path: application/layout/layout.php <html> <head> <title>login example</title> </head> <body> <?php echo($ VIEW );?> </body> </html> 5.5. Element Element is a standalone html content to be used, in as many places as we want. For our current example let s change something which we have already done. Let s make the login form as an element. And then we render the element from our view file. Path: application/element/form/login.php <form action="/application/submitlogin" method="post"> <div id="showmsg" style="clear:both;">message: <?php echo($msg);?></div> <div style="clear:both;"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" name="submit" value="submit"> </div> </form> 23

28 We can call this element from our login view page. Now we have an element that we can use any number of times from any view page. Path: application/view/application/login.php <?php // rendering the element and sending the $msg value that the element is required. echo Controller::renderElement('form/login', array('msg' => $msg));?> 5.6. Model Any model must extend the Model class and implement one abstract method. Model class is responsible for any communication needed to the database. Every model in this framework is a standalone model. In our example, we need to create a User model class that extends the Model class. To be real simple, we have only two columns in our user table and we set the username column as unique Inherited methods gettabledefinition() Purpose and rational return the TableDefinition object Table 6: One abstract method of model class. For our current example we have a User class that overrides a method is called gettabledefinition which returns a TableDefinition object. This TableDefinition object is used by the Model class to create or alter the table definition inside the database. The User class has another method trylogin which we call from our controller class. This trylogin method takes username and password as its parameter and check if the username and password can be found in the database. Please follow the comments in the code. Path: application/model/user.php <?php class User extends Model{ /** * implementing abstract method gettabledefinition. TableDefinition */ public function gettabledefinition() { // creating a TableDefinition object. $table = new TableDefinition('user'); $table->addcolumn('username', 'VARCHAR(255)'); $table->addcolumn('password', 'VARCHAR(255)'); // setting username as unique $table->adduniquekey('my_unique_key', array('username')); return $table; /** * Return true if the user exist. string $username string $password 24

29 if the username or password is empty. boolean */ public static function trylogin($username = null, $password = null) { if(empty($username) empty($password)) throw new Exception('username or password cannot be empty'); // Establishing database connection $database = Config::getDatabase(); // checking username and password exist or not. // sql function restrict from the danger of sql injection. $user = $database->loadonly('user', sql('username = %s and password = %s', $username, $password)); if($user) { // yes we have such user than storing the user object to the session. $_SESSION['current_user'] = $user; return true; // otherwise return false. return false; /** * Return the current logged in user object. null user object */ public static function getcurrentuser() { if(isset($_session['current_user'])) { return $_SESSION['current_user'];?> return null; 25

30 5.7. AJAX Modern frameworks for web site development need to support asynchronous server connections that do not reload the entire page in the web browser. Such actions are typically called Json actions. A Json action is not the same as a normal action. In a Json action there is no view file to be rendered. Every Json action returns a JSONResponse object. Let s change our normal submitlogin action to json action. Follow the comments of the code. We will be using jquery [25] post method from the client side. Path: application/applicationcontroller.php <?php... public function actions() { // Removing submitlogin action from here. // $actions = array('index', 'login', 'submitlogin'); $actions = array('index', 'login'); // Check if any user has logged in to the system. // Only in that case allow loggedin action. if(user::currentuser()!= null) { $actions = array_merge($actions, array('loggedin')); return $actions; public function jsonactions() { // adding submitlogin as jsonaction. return array('submitlogin'); public function index() { // Redirecting default action to login action so that we can // see nice url in the url bar. Controller::redirectAndExit('/application/login'); public function login() { // Setting a msg variable value in the view file. $this->setviewvar('msg', 'Please enter your username and password.'); /** * The logic of the code is same but we return * a JSONResponse object. JSONResponse. */ public function submitlogin() { // We don t need to set the view file since it s a json action. And // json action has no view file. // $this->setview('login'); $json = new JSONResponse(); // Check if we come from by submitting the login form. if(!isset($_post['username'])!isset($_post['password'])) { // Now we don t set the view variable here. // $this->setviewvar('msg', 'Secure authentication require'); 26

Developing ASP.NET MVC 4 Web Applications MOC 20486

Developing ASP.NET MVC 4 Web Applications MOC 20486 Developing ASP.NET MVC 4 Web Applications MOC 20486 Course Outline Module 1: Exploring ASP.NET MVC 4 The goal of this module is to outline to the students the components of the Microsoft Web Technologies

More information

Developing ASP.NET MVC 4 Web Applications

Developing ASP.NET MVC 4 Web Applications Course M20486 5 Day(s) 30:00 Hours Developing ASP.NET MVC 4 Web Applications Introduction In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5 tools

More information

Framework as a master tool in modern web development

Framework as a master tool in modern web development Framework as a master tool in modern web development PETR DO, VOJTECH ONDRYHAL Communication and Information Systems Department University of Defence Kounicova 65, Brno, 662 10 CZECH REPUBLIC petr.do@unob.cz,

More information

Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led

Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led Course Description In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5

More information

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note Text book of CPET 545 Service-Oriented Architecture and Enterprise Application: SOA Principles of Service Design, by Thomas Erl, ISBN

More information

How To Understand The Architecture Of Java 2Ee, J2Ee, And J2E (Java) In A Wordpress Blog Post

How To Understand The Architecture Of Java 2Ee, J2Ee, And J2E (Java) In A Wordpress Blog Post Understanding Architecture and Framework of J2EE using Web Application Devadrita Dey Sarkar,Anavi jaiswal, Ankur Saxena Amity University,UTTAR PRADESH Sector-125, Noida, UP-201303, India Abstract: This

More information

A Tool for Evaluation and Optimization of Web Application Performance

A Tool for Evaluation and Optimization of Web Application Performance A Tool for Evaluation and Optimization of Web Application Performance Tomáš Černý 1 cernyto3@fel.cvut.cz Michael J. Donahoo 2 jeff_donahoo@baylor.edu Abstract: One of the main goals of web application

More information

Bachelor Project System (BEPsys)

Bachelor Project System (BEPsys) Bachelor Project System (BEPsys) by Sarah Bashirieh - 1523259 Nima Rahbari - 1515659 Electrical Engineering, Mathematics and Computer Science Delft University of Technology October 2013 Abstract In this

More information

easyobject modern web applications made easy Project presentation

easyobject modern web applications made easy Project presentation easyobject modern web applications made easy Project presentation version 1.0 - December 2012 par Cédric Françoys http://www.cedricfrancoys.be/easyobject This document is released under the Attribution-NonCommercial-ShareAlike

More information

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications. 20486B: Developing ASP.NET MVC 4 Web Applications Course Overview This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications. Course Introduction Course Introduction

More information

Web Cloud Architecture

Web Cloud Architecture Web Cloud Architecture Introduction to Software Architecture Jay Urbain, Ph.D. urbain@msoe.edu Credits: Ganesh Prasad, Rajat Taneja, Vikrant Todankar, How to Build Application Front-ends in a Service-Oriented

More information

Web Development Frameworks. Matthias Korn <mkorn@cs.au.dk>

Web Development Frameworks. Matthias Korn <mkorn@cs.au.dk> Web Development Frameworks Matthias Korn 1 Overview Frameworks Introduction to CakePHP CakePHP in Practice 2 Web application frameworks Web application frameworks help developers build

More information

Design and Functional Specification

Design and Functional Specification 2010 Design and Functional Specification Corpus eready Solutions pvt. Ltd. 3/17/2010 1. Introduction 1.1 Purpose This document records functional specifications for Science Technology English Math (STEM)

More information

BEST WEB PROGRAMMING LANGUAGES TO LEARN ON YOUR OWN TIME

BEST WEB PROGRAMMING LANGUAGES TO LEARN ON YOUR OWN TIME BEST WEB PROGRAMMING LANGUAGES TO LEARN ON YOUR OWN TIME System Analysis and Design S.Mohammad Taheri S.Hamed Moghimi Fall 92 1 CHOOSE A PROGRAMMING LANGUAGE FOR THE PROJECT 2 CHOOSE A PROGRAMMING LANGUAGE

More information

Advanced Web Development SCOPE OF WEB DEVELOPMENT INDUSTRY

Advanced Web Development SCOPE OF WEB DEVELOPMENT INDUSTRY Advanced Web Development Duration: 6 Months SCOPE OF WEB DEVELOPMENT INDUSTRY Web development jobs have taken thе hot seat when it comes to career opportunities and positions as a Web developer, as every

More information

General principles and architecture of Adlib and Adlib API. Petra Otten Manager Customer Support

General principles and architecture of Adlib and Adlib API. Petra Otten Manager Customer Support General principles and architecture of Adlib and Adlib API Petra Otten Manager Customer Support Adlib Database management program, mainly for libraries, museums and archives 1600 customers in app. 30 countries

More information

Java Application Developer Certificate Program Competencies

Java Application Developer Certificate Program Competencies Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle

More information

Vector HelpDesk - Administrator s Guide

Vector HelpDesk - Administrator s Guide Vector HelpDesk - Administrator s Guide Vector HelpDesk - Administrator s Guide Configuring and Maintaining Vector HelpDesk version 5.6 Vector HelpDesk - Administrator s Guide Copyright Vector Networks

More information

Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON

Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, inemedi@ie.ase.ro Writing a custom web

More information

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA Enterprise Web 2.0 >>> FAST White Paper November 2006 Abstract Modern Rich Internet Applications for SOA have to cope with

More information

BDD FOR AUTOMATING WEB APPLICATION TESTING. Stephen de Vries

BDD FOR AUTOMATING WEB APPLICATION TESTING. Stephen de Vries BDD FOR AUTOMATING WEB APPLICATION TESTING Stephen de Vries www.continuumsecurity.net INTRODUCTION Security Testing of web applications, both in the form of automated scanning and manual security assessment

More information

Louisiana Department of Insurance. Software Development Standards

Louisiana Department of Insurance. Software Development Standards Louisiana Department of Insurance Software Development Standards Table of Contents EXECUTIVE SUMMARY... 3 LDI SOFTWARE DEVELOPMENT STANDARDS GOAL... 4 IMPLEMENTATION OBJECTIVES... 5 LDI SYSTEMS INTEGRATION...

More information

CrownPeak Java Web Hosting. Version 0.20

CrownPeak Java Web Hosting. Version 0.20 CrownPeak Java Web Hosting Version 0.20 2014 CrownPeak Technology, Inc. All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical,

More information

Modern Web Application Framework Python, SQL Alchemy, Jinja2 & Flask

Modern Web Application Framework Python, SQL Alchemy, Jinja2 & Flask Modern Web Application Framework Python, SQL Alchemy, Jinja2 & Flask Devert Alexandre December 29, 2012 Slide 1/62 Table of Contents 1 Model-View-Controller 2 Flask 3 First steps 4 Routing 5 Templates

More information

FileMaker Server 9. Custom Web Publishing with PHP

FileMaker Server 9. Custom Web Publishing with PHP FileMaker Server 9 Custom Web Publishing with PHP 2007 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker is a trademark of FileMaker,

More information

Certified PHP/MySQL Web Developer Course

Certified PHP/MySQL Web Developer Course Course Duration : 3 Months (120 Hours) Day 1 Introduction to PHP 1.PHP web architecture 2.PHP wamp server installation 3.First PHP program 4.HTML with php 5.Comments and PHP manual usage Day 2 Variables,

More information

DreamFactory & Modus Create Case Study

DreamFactory & Modus Create Case Study DreamFactory & Modus Create Case Study By Michael Schwartz Modus Create April 1, 2013 Introduction DreamFactory partnered with Modus Create to port and enhance an existing address book application created

More information

Electronic Ticket and Check-in System for Indico Conferences

Electronic Ticket and Check-in System for Indico Conferences Electronic Ticket and Check-in System for Indico Conferences September 2013 Author: Bernard Kolobara Supervisor: Jose Benito Gonzalez Lopez CERN openlab Summer Student Report 2013 Project Specification

More information

Elgg 1.8 Social Networking

Elgg 1.8 Social Networking Elgg 1.8 Social Networking Create, customize, and deploy your very networking site with Elgg own social Cash Costello PACKT PUBLISHING open source* community experience distilled - BIRMINGHAM MUMBAI Preface

More information

Specialized Programme on Web Application Development using Open Source Tools

Specialized Programme on Web Application Development using Open Source Tools Specialized Programme on Web Application Development using Open Source Tools Objective: At the end of the course, Students will be able to: Understand various open source tools(programming tools and databases)

More information

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6 The Researches on Unified Pattern of Information System Deng Zhonghua,Guo Liang,Xia Yanping School of Information Management, Wuhan University Wuhan, Hubei, China 430072 Abstract: This paper discusses

More information

ASP.NET Using C# (VS2012)

ASP.NET Using C# (VS2012) ASP.NET Using C# (VS2012) This five-day course provides a comprehensive and practical hands-on introduction to developing applications using ASP.NET 4.5 and C#. It includes an introduction to ASP.NET MVC,

More information

Example for Using the PrestaShop Web Service : CRUD

Example for Using the PrestaShop Web Service : CRUD Example for Using the PrestaShop Web Service : CRUD This tutorial shows you how to use the PrestaShop web service with PHP library by creating a "CRUD". Prerequisites: - PrestaShop 1.4 installed on a server

More information

Getting started with API testing

Getting started with API testing Technical white paper Getting started with API testing Test all layers of your composite applications, not just the GUI Table of contents Executive summary... 3 Introduction... 3 Who should read this document?...

More information

Social Media in the Process Automation Industry

Social Media in the Process Automation Industry Social Media in the Process Automation Industry Distributed Software Development Design Document Version 0.1 In co-operation with: Title: Social Media in the Process Automation Industry Product name: ABBConnect

More information

Acquia Introduction December 9th, 2009

Acquia Introduction December 9th, 2009 Acquia Introduction December 9 th, 2009 Agenda 1. Content Management 2. Web Application Framework 3. Architecture principles 1. Modular 2. Event driven 3. Skinnable 4. Secure 5. Accessible 4. Enterprise

More information

Web Presentation Layer Architecture

Web Presentation Layer Architecture Chapter 4 Web Presentation Layer Architecture In this chapter we provide a discussion of important current approaches to web interface programming based on the Model 2 architecture [59]. From the results

More information

http://msdn.microsoft.com/en-us/library/4w3ex9c2.aspx

http://msdn.microsoft.com/en-us/library/4w3ex9c2.aspx ASP.NET Overview.NET Framework 4 ASP.NET is a unified Web development model that includes the services necessary for you to build enterprise-class Web applications with a minimum of coding. ASP.NET is

More information

ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS

ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS Lech MADEYSKI *, Michał STOCHMIAŁEK Abstract. Architectural design is about decisions which influence characteristics of arising system e.g. maintainability

More information

DEPLOYMENT GUIDE Version 1.1. Deploying the BIG-IP LTM v10 with Citrix Presentation Server 4.5

DEPLOYMENT GUIDE Version 1.1. Deploying the BIG-IP LTM v10 with Citrix Presentation Server 4.5 DEPLOYMENT GUIDE Version 1.1 Deploying the BIG-IP LTM v10 with Citrix Presentation Server 4.5 Table of Contents Table of Contents Deploying the BIG-IP system v10 with Citrix Presentation Server Prerequisites

More information

Server-Side Scripting and Web Development. By Susan L. Miertschin

Server-Side Scripting and Web Development. By Susan L. Miertschin Server-Side Scripting and Web Development By Susan L. Miertschin The OOP Development Approach OOP = Object Oriented Programming Large production projects are created by teams Each team works on a part

More information

How To Build A Web App

How To Build A Web App UNCLASSIFIED Next Gen Web Architecture for the Cloud Era Chief Scientist, Raytheon Saturn 2013 28 Apr - 3 May Copyright (2013) Raytheon Agenda Existing Web Application Architecture SOFEA Lessons learned

More information

Webmail Using the Hush Encryption Engine

Webmail Using the Hush Encryption Engine Webmail Using the Hush Encryption Engine Introduction...2 Terms in this Document...2 Requirements...3 Architecture...3 Authentication...4 The Role of the Session...4 Steps...5 Private Key Retrieval...5

More information

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, 2015. Copyright 2015 MarkLogic Corporation. All rights reserved.

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, 2015. Copyright 2015 MarkLogic Corporation. All rights reserved. Reference Application Architecture Guide 1 MarkLogic 8 February, 2015 Last Revised: 8.0-1, February, 2015 Copyright 2015 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents

More information

Monitoring Infrastructure (MIS) Software Architecture Document. Version 1.1

Monitoring Infrastructure (MIS) Software Architecture Document. Version 1.1 Monitoring Infrastructure (MIS) Software Architecture Document Version 1.1 Revision History Date Version Description Author 28-9-2004 1.0 Created Peter Fennema 8-10-2004 1.1 Processed review comments Peter

More information

Skills for Employment Investment Project (SEIP)

Skills for Employment Investment Project (SEIP) Skills for Employment Investment Project (SEIP) Standards/ Curriculum Format for Web Application Development Using DOT Net Course Duration: Three Months 1 Course Structure and Requirements Course Title:

More information

Installing and Sending with DocuSign for NetSuite v2.2

Installing and Sending with DocuSign for NetSuite v2.2 DocuSign Quick Start Guide Installing and Sending with DocuSign for NetSuite v2.2 This guide provides information on installing and sending documents for signature with DocuSign for NetSuite. It also includes

More information

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT AGENDA 1. Introduction to Web Applications and ASP.net 1.1 History of Web Development 1.2 Basic ASP.net processing (ASP

More information

Service Oriented Architectures

Service Oriented Architectures 8 Service Oriented Architectures Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) alonso@inf.ethz.ch http://www.iks.inf.ethz.ch/ The context for SOA A bit of history

More information

Outline. Lecture 18: Ruby on Rails MVC. Introduction to Rails

Outline. Lecture 18: Ruby on Rails MVC. Introduction to Rails Outline Lecture 18: Ruby on Rails Wendy Liu CSC309F Fall 2007 Introduction to Rails Rails Principles Inside Rails Hello World Rails with Ajax Other Framework 1 2 MVC Introduction to Rails Agile Web Development

More information

A Comparative Study of Web Development Technologies Using Open Source and Proprietary Software

A Comparative Study of Web Development Technologies Using Open Source and Proprietary Software Available Online at www.ijcsmc.com International Journal of Computer Science and Mobile Computing A Monthly Journal of Computer Science and Information Technology IJCSMC, Vol. 4, Issue. 2, February 2015,

More information

Advantage of Jquery: T his file is downloaded from

Advantage of Jquery: T his file is downloaded from What is JQuery JQuery is lightweight, client side JavaScript library file that supports all browsers. JQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling,

More information

Braindumps.C2150-810.50 questions

Braindumps.C2150-810.50 questions Braindumps.C2150-810.50 questions Number: C2150-810 Passing Score: 800 Time Limit: 120 min File Version: 5.3 http://www.gratisexam.com/ -810 IBM Security AppScan Source Edition Implementation This is the

More information

CommonSpot Content Server Version 6.2 Release Notes

CommonSpot Content Server Version 6.2 Release Notes CommonSpot Content Server Version 6.2 Release Notes Copyright 1998-2011 PaperThin, Inc. All rights reserved. About this Document CommonSpot version 6.2 updates the recent 6.1 release with: Enhancements

More information

10CS73:Web Programming

10CS73:Web Programming 10CS73:Web Programming Question Bank Fundamentals of Web: 1.What is WWW? 2. What are domain names? Explain domain name conversion with diagram 3.What are the difference between web browser and web server

More information

Manage Workflows. Workflows and Workflow Actions

Manage Workflows. Workflows and Workflow Actions On the Workflows tab of the Cisco Finesse administration console, you can create and manage workflows and workflow actions. Workflows and Workflow Actions, page 1 Add Browser Pop Workflow Action, page

More information

Open Source Content Management System for content development: a comparative study

Open Source Content Management System for content development: a comparative study Open Source Content Management System for content development: a comparative study D. P. Tripathi Assistant Librarian Biju Patnaik Central Library NIT Rourkela dptnitrkl@gmail.com Designing dynamic and

More information

Performance Comparison of Persistence Frameworks

Performance Comparison of Persistence Frameworks Performance Comparison of Persistence Frameworks Sabu M. Thampi * Asst. Prof., Department of CSE L.B.S College of Engineering Kasaragod-671542 Kerala, India smtlbs@yahoo.co.in Ashwin A.K S8, Department

More information

zen Platform technical white paper

zen Platform technical white paper zen Platform technical white paper The zen Platform as Strategic Business Platform The increasing use of application servers as standard paradigm for the development of business critical applications meant

More information

Budget Event Management Design Document

Budget Event Management Design Document Budget Event Management Design Document Team 4 Yifan Yin(TL), Jiangnan Shangguan, Yuan Xia, Di Xu, Xuan Xu, Long Zhen 1 Purpose Summary List of Functional Requirements General Priorities Usability Accessibility

More information

New Web Application Development Tool and Its MDA-Based Support Methodology

New Web Application Development Tool and Its MDA-Based Support Methodology New Web Application Development Tool and Its MDA-Based Support Methodology V Yasuyuki Fujikawa V Takahide Matsutsuka (Manuscript received February 11, 2004) Web applications are ubiquitous on the Internet,

More information

How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip

How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip Load testing with WAPT: Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. A brief insight is provided

More information

Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys

Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph Client: Brian Krzys June 17, 2014 Introduction Newmont Mining is a resource extraction company with a research and development

More information

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof. Web Frameworks web development done right Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.ssa Anna Corazza Outline 2 Web technologies evolution Web frameworks Design Principles

More information

Course Name: Course in JSP Course Code: P5

Course Name: Course in JSP Course Code: P5 Course Name: Course in JSP Course Code: P5 Address: Sh No BSH 1,2,3 Almedia residency, Xetia Waddo Duler Mapusa Goa E-mail Id: ITKP@3i-infotech.com Tel: (0832) 2465556 (0832) 6454066 Course Code: P5 3i

More information

Final Design Document for Practicum Chat Program

Final Design Document for Practicum Chat Program Final Design Document for Practicum Chat Program Prepared by: Team Members: Raymond Chamberglain William Mason Jerrad Allen Elh Barry Franklin University CS Practicum April 12, 2008 Page 1 Purpose: This

More information

branddocs Technology edocument Solutions V.1.0.2013 V.11.0.2013

branddocs Technology edocument Solutions V.1.0.2013 V.11.0.2013 branddocs Technology V.1.0.2013 V.11.0.2013 edocument Solutions Contents 1.- Branddocs' Development Technology 03 2.- Development Technology Features 04 3.- Technical Architecture 05 4.- Description of

More information

Building A Very Simple Web Site

Building A Very Simple Web Site Sitecore CMS 6.2 Building A Very Simple Web Site Rev 100601 Sitecore CMS 6. 2 Building A Very Simple Web Site A Self-Study Guide for Developers Table of Contents Chapter 1 Introduction... 3 Chapter 2 Building

More information

Customer Bank Account Management System Technical Specification Document

Customer Bank Account Management System Technical Specification Document Customer Bank Account Management System Technical Specification Document Technical Specification Document Page 1 of 15 Table of Contents Contents 1 Introduction 3 2 Design Overview 4 3 Topology Diagram.6

More information

Why HTML5 Tests the Limits of Automated Testing Solutions

Why HTML5 Tests the Limits of Automated Testing Solutions Why HTML5 Tests the Limits of Automated Testing Solutions Why HTML5 Tests the Limits of Automated Testing Solutions Contents Chapter 1 Chapter 2 Chapter 3 Chapter 4 As Testing Complexity Increases, So

More information

White Paper On. Single Page Application. Presented by: Yatin Patel

White Paper On. Single Page Application. Presented by: Yatin Patel White Paper On Single Page Application Presented by: Yatin Patel Table of Contents Executive Summary... 3 Web Application Architecture Patterns... 4 Common Aspects... 4 Model... 4 View... 4 Architecture

More information

LAMP [Linux. Apache. MySQL. PHP] Industrial Implementations Module Description

LAMP [Linux. Apache. MySQL. PHP] Industrial Implementations Module Description LAMP [Linux. Apache. MySQL. PHP] Industrial Implementations Module Description Mastering LINUX Vikas Debnath Linux Administrator, Red Hat Professional Instructor : Vikas Debnath Contact

More information

J j enterpririse. Oracle Application Express 3. Develop Native Oracle database-centric web applications quickly and easily with Oracle APEX

J j enterpririse. Oracle Application Express 3. Develop Native Oracle database-centric web applications quickly and easily with Oracle APEX Oracle Application Express 3 The Essentials and More Develop Native Oracle database-centric web applications quickly and easily with Oracle APEX Arie Geller Matthew Lyon J j enterpririse PUBLISHING BIRMINGHAM

More information

Development of Content Management System with Animated Graph

Development of Content Management System with Animated Graph Development of Content Management System with Animated Graph Saipunidzam Mahamad, Mohammad Noor Ibrahim, Rozana Kasbon, and Chap Samol Abstract Animated graph gives some good impressions in presenting

More information

Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World

Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify

More information

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS In order to ease the burden of application lifecycle management,

More information

Web Development using PHP (WD_PHP) Duration 1.5 months

Web Development using PHP (WD_PHP) Duration 1.5 months Duration 1.5 months Our program is a practical knowledge oriented program aimed at learning the techniques of web development using PHP, HTML, CSS & JavaScript. It has some unique features which are as

More information

2/24/2010 ClassApps.com

2/24/2010 ClassApps.com SelectSurvey.NET Training Manual This document is intended to be a simple visual guide for non technical users to help with basic survey creation, management and deployment. 2/24/2010 ClassApps.com Getting

More information

How To Write An Ria Application

How To Write An Ria Application Document Reference TSL-SES-WP-0001 Date 4 January 2008 Issue 1 Revision 0 Status Final Document Change Log Version Pages Date Reason of Change 1.0 Draft 17 04/01/08 Initial version The Server Labs S.L

More information

Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2. Component 2.1 Component 2.2.

Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2. Component 2.1 Component 2.2. Architectural Patterns Architectural Patterns Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar Dr. David Robertson dr@inf.ed.ac.uk http://www.inf.ed.ac.uk/ssp/members/dave.htm

More information

DTWMS Required Software Engineers. 1. Senior Java Programmer (3 Positions) Responsibilities:

DTWMS Required Software Engineers. 1. Senior Java Programmer (3 Positions) Responsibilities: DTWMS Required Software Engineers 1. Senior Java Programmer (3 Positions) Responsibilities: Responsible to deliver quality software solutions using standard end to end software development cycle Collaborate

More information

A benchmark approach to analyse the security of web frameworks

A benchmark approach to analyse the security of web frameworks Radboud University Nijmegen Master Thesis Computer Science A benchmark approach to analyse the security of web frameworks Author: K. Reintjes, BSc. kreintjes@gmail.com Supervisor: Prof. dr. M.C.J.D. van

More information

SwiftScale: Technical Approach Document

SwiftScale: Technical Approach Document SwiftScale: Technical Approach Document Overview This document outlines a technology embodiment of the SwiftScale application including the technology, deployment and application architectures. Technology

More information

Drupal CMS for marketing sites

Drupal CMS for marketing sites Drupal CMS for marketing sites Intro Sample sites: End to End flow Folder Structure Project setup Content Folder Data Store (Drupal CMS) Importing/Exporting Content Database Migrations Backend Config Unit

More information

Enterprise Application Development In Java with AJAX and ORM

Enterprise Application Development In Java with AJAX and ORM Enterprise Application Development In Java with AJAX and ORM ACCU London March 2010 ACCU Conference April 2010 Paul Grenyer Head of Software Engineering p.grenyer@validus-ivc.co.uk http://paulgrenyer.blogspot.com

More information

An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0

An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0 An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0 September 2010 Copyright IBM Corporation 2010. 1 Overview Rational Application Developer, Version 8.0, contains

More information

What s really under the hood? How I learned to stop worrying and love Magento

What s really under the hood? How I learned to stop worrying and love Magento What s really under the hood? How I learned to stop worrying and love Magento Who am I? Alan Storm http://alanstorm.com Got involved in The Internet/Web 1995 Work in the Agency/Startup Space 10 years php

More information

GUI and Web Programming

GUI and Web Programming GUI and Web Programming CSE 403 (based on a lecture by James Fogarty) Event-based programming Sequential Programs Interacting with the user 1. Program takes control 2. Program does something 3. Program

More information

(Refer Slide Time: 01:52)

(Refer Slide Time: 01:52) Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This

More information

ThirtySix Software WRITE ONCE. APPROVE ONCE. USE EVERYWHERE. www.thirtysix.net SMARTDOCS 2014.1 SHAREPOINT CONFIGURATION GUIDE THIRTYSIX SOFTWARE

ThirtySix Software WRITE ONCE. APPROVE ONCE. USE EVERYWHERE. www.thirtysix.net SMARTDOCS 2014.1 SHAREPOINT CONFIGURATION GUIDE THIRTYSIX SOFTWARE ThirtySix Software WRITE ONCE. APPROVE ONCE. USE EVERYWHERE. www.thirtysix.net SMARTDOCS 2014.1 SHAREPOINT CONFIGURATION GUIDE THIRTYSIX SOFTWARE UPDATED MAY 2014 Table of Contents Table of Contents...

More information

Magento Extension Developer s Guide

Magento Extension Developer s Guide Magento Extension Developer s Guide Copyright 2012 X.commerce, Inc. All rights reserved. No part of this Guide shall be reproduced, stored in a retrieval system, or transmitted by any means, electronic,

More information

INTERNET PROGRAMMING AND DEVELOPMENT AEC LEA.BN Course Descriptions & Outcome Competency

INTERNET PROGRAMMING AND DEVELOPMENT AEC LEA.BN Course Descriptions & Outcome Competency INTERNET PROGRAMMING AND DEVELOPMENT AEC LEA.BN Course Descriptions & Outcome Competency 1. 420-PA3-AB Introduction to Computers, the Internet, and the Web This course is an introduction to the computer,

More information

Web Application Development

Web Application Development Web Application Development Approaches Choices Server Side PHP ASP Ruby Python CGI Java Servlets Perl Choices Client Side Javascript VBScript ASP Language basics - always the same Embedding in / outside

More information

A Comparison of Open Source Application Development Frameworks for the Enterprise

A Comparison of Open Source Application Development Frameworks for the Enterprise A Comparison of Open Source Application Development Frameworks for the Enterprise Webinar on March 12, 2008 Presented by Kim Weins, Sr. VP of Marketing at OpenLogic and Kelby Zorgdrager, President of DevelopIntelligence

More information

An introduction to creating JSF applications in Rational Application Developer Version 8.0

An introduction to creating JSF applications in Rational Application Developer Version 8.0 An introduction to creating JSF applications in Rational Application Developer Version 8.0 September 2010 Copyright IBM Corporation 2010. 1 Overview Although you can use several Web technologies to create

More information

INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 NAVIGATION PANEL...

INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 NAVIGATION PANEL... INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 CONTROL PANEL... 4 ADDING GROUPS... 6 APPEARANCE... 7 BANNER URL:... 7 NAVIGATION... 8

More information

City of Madison. Information Services. Crystal Enterprise Polices, Standards, and Guidelines

City of Madison. Information Services. Crystal Enterprise Polices, Standards, and Guidelines City of Madison Information Services Crystal Enterprise Polices, Standards, and Guidelines March 2006 City of Madison Crystal Enterprise Policies, Standards, and Guidelines Table of Contents Crystal Enterprise

More information

Web Application Security Part 1

Web Application Security Part 1 Web Application Security Part 1 Author : Treasure Priyamal Site : www.treasuresec.com E-mail : treasure@treasuresec.com Twitter :http://twitter.com/treasure_sec Introduction Today we are going to talk

More information

Application of MVC Platform in Bank E-CRM

Application of MVC Platform in Bank E-CRM Application of MVC Platform in Bank E-CRM Liancai Hao (School of Management, Harbin Institute of Technology, Harbin P. R. China 150001) Haolc@hit.edu.cn Abstract Customer relationship management (CRM)

More information

MVC Implementations Playbook. Version 0.92

MVC Implementations Playbook. Version 0.92 Version 0.92 Table of Contents Document History... 3 CrownPeak MVC Implementation Overview... 4 ASP.NET MVC Overview... 5 ASP.NET MVC Benefits... 6 Integrating MVC in CrownPeak... 7 Publishing Content

More information