You have a privilege to create a quiz (QnA) related to this subject and obtain creativity score...
What is software architecture?
We might talk about this before, but let us make sure, that this knowledge has not been lost.
Software Architecture is the highest system description focusing on WHAT with very little of HOW, implementation details, which are gradually added in the Design and Development phases.
The simplest way to describe the Internet and Web communications is to present it as Client ? Server architecture. There is a client or many clients, each is represented by a client program.
What is a client program for Web communications?
It is a web browser! Internet Explorer or Firefox, Ghrom or Safari, it does not matter. All of them are compliant to the web standard ? Hypertext Transfer Protocol (HTTP). All of them sent an HTTP Request to a server and get an HTTP Response from a server. They all understand HTTP headers and can interpret HTML into wonderful pages filled with text and images, sound and video.
There is also a server side of the story
The server side includes a Web server, such as Apache, Tomcat, IIS, etc. with static HTML pages or/and a server program that can generate dynamic web pages in response to a client request.
The server program evolved from a single software unit, which was responsible for data processing and web page generation, to a web application with several distinguished pieces of software, which architecture was named after the Design Pattern Model-View-Controller.
At the illustration below we can see the stages of the evolution.
Common Gateway Interface (CGI)
In this implementation the request targeted a program on the server, often with the extension .cgi. This program managed did everything at once: getting parameters from the request, retrieving data from a database, processing the data, and generating the response in HTML.
A programmer must be a master of all trades, understanding data access and processing, as well as web design with HTML, CSS and Java Script. The most painful in CGI architecture was the performance problem. Each time a client sent a request to the server, a new process has been created to run this CGI program. Ten clients hit the server ? ten processes are created, twenty clients ? twenty processes, hundred clients ? and the server goes down.
Implementation of the Model-View-Controller design pattern made a split between the Web Tier and Data Tier of the web application. The Web Tier in the beginning were based on Java Server Pages (JSP) in Java world and Active Server Pages (ASP) in the world of .NET applications.
In both cases JSP and ASP became tiny threads (not full-blown processes) running in a single Web Server process. This solution made possible thousands and millions clients to access the same web application.
In the beginning the most of processing happened directly in the JSP or ASP including the calls to data processing units.
Model-View-Controller ? 2 with Better Separation of Business and Presentation Layers
The next implementation of the MVC Design Pattern made a better separation between Business and Presentation layers. In this implementation, JSP became mostly the View portion, while the Model or data processing part was implemented in a separate service layer of Java Bean and service classes.
Was it clear so far?
Where is the Controller in MVC?
The Controller is the part of the application that handles user interaction: reads user input and send input data to the model, receives prepared HTML and sends the response to the client.
In Java world a Controller is implemented as a Java Servlet. We will learn more about Java Servlets and JSP a bit later.
Design Patterns, Enterprise Web Applications and Web Application Frameworks
Design Patterns are known solutions for common problems. Following design patterns we can reuse key algorithms, key structures, and sometimes key blocks of code. MVC is a very popular design pattern, which gave birth many popular frameworks successfully reused by web application developers.
Enterprise applications are often designed for multiple client devices. Following the MVC design pattern, developers reuse most of the application and only slightly modify the View layer to deliver optimized views to different clients.
The most popular Enterprise Web Application Frameworks in Java world include Struts, Spring and Hibernate. A bit later we will learn more about these frameworks, as well as the Data Service Semantic framework.
It is about time to come from the highest view of architecture down to Earth and learn basic HTML.
We will also learn basic Java Script and Angular JS library that allows creating one-page web applications.
Assignments:
1. Research and email to dean@ituniversity.us the links to the best Youtube presentations on the subject.
Check these links and find better:
Software Architecture vs Code
https://www.youtube.com/watch?v=9noJwoIivV8
MVC: Model View Controller: An Introduction: Software Architectural Pattern
https://www.youtube.com/watch?v=4Qfk8MhtZJU
2. Based on your study write a brief summary on the subject and email to dean@ituniversity.us
Useful links:
https://www.youtube.com/watch?v=pCvZtjoRq1I ? More on MVC for beginners
https://www.youtube.com/watch?v=dTVVa2gfht8 ? MVC Java tutorial. This author makes good tutorials in general.