SWE 645
Component-based Software Development

Spring Semester, 2015
Location: AB L008
Time: Wed 7:20-10:00pm

Instructor    Overview    Textbook and Readings    Grading    Schedule    Academic Integrity

Professor: Dr. Vinod Dubey
Email: vdubey@gmu.edu
Class Hours: Thurs 7:20-10:00, AB L008
Prerequisite: SWE 619, or CS 540 and CS 571, or permission of instructor.
Office Hours: Anytime electronically, or by an appointment
TA:Ms. Sunitha Thummala, sthumma3@masonlive.gmu.edu
TA Office Hours: Mondays: 2:30pm to 4:15pm or by appointment, Room: 4456 Engineering Bldg.


This class will be a detailed study of the concepts and engineering principles of software component and component-based software systems that include in-depth study of JavaServer Faces (JSF) framework, Enterprise JavaBean (EJB) component model, Messaging and Message Driven Beans, Java Persistance API (JPA)/Hibernate, and Web services (SOAP and RESTful). After the course, students should be prepared to create large-scale component-based software systems.

SWE 645 covers some of the topics related to the software development models that are used to support component-based software systems. We will be studying the software design and development side of component-based software. The course content will largely focus on server-side software design and development. We will learn technologies such as JavaServer Faces (JSF 2.2), PrimeFaces, Enterprise JavaBeans (EJB 3.1), Asynchronous Messaging and Message Driven Beans, Java Persistence API (JPA 2.0)/Hibernate, and Web services (SOAP, RESTful).

We will use a cloud computing platform: Amazon Elastic Compute Cloud (EC2) to deploy and host applications developed as programming projects for the course.

Though SWE 619 is the only required prerequisite, other topics such as web based Java programming (HTML, JavaScript, Servlets, JSPs) and database programming (JDBC) are going to be used throughout this course. Therefore, background knowledge will be helpful. SWE 642, though not a required prerequisite, is a great background course for these topics. The class will be very practical (how to build things) and require extensive programming assignments.


Textbook and Readings

In addition to above, we will read from various sources on the web, and slides that will be made available during the class. There are additional five recommended books for this couse, and can help with further understanding of the subjects. They are not at the Johnson Center Bookstore, but can be found online.


There will be a midterm and a final exam, both in class. The final exam will focus on material covered after the midterm.

Phone Use Policy: Phones should be switched off during the mid-term and final exams. No phone of any kind, especially smart phones with Internet access and camera is allowed to be on person during exams.

A number of homework assignments will be given. I will discuss each in class and make the assignment available on the Blackboard web site. You will submit your solutions by placing links to the executables on your class web sites and submitting the source files through blackboard. Your solution should contain a zip file containing all of your code and a readme file detailing any installation procedures, or dependencies. I reserve the right to deduct points if the readme and/or zip file is not included with the homework. Please read ALL of the assignment requirements, as they will contain important information, such as procedures, naming conventions, and how the assignment should be deployed. Points can, and will, be deducted from the assignments if it doesn't work, or if the source code is not supplied. Please review your submission before you submit it. Be sure that you are able to access Blackboard, as refinements and hints for the assignments will be posted there.

Changing an assignment after the due date without prior permission will be treated as a late submission. Late submissions carry an automatic 10 percent deduction in grade for each week that it is late. Late assignments will not be accepted after 2 weeks. No homeworks will be accepted after the start of the last lecture of the semester. Assignments will be graded on the correctness of the code and the adherence to the requirements. A more detailed description on the homework grading will be included with the homework requirements when assigned.

Since we will be focusing our efforts on EJB 3.1, it would be a good idea to be consistent with the software versions that will be used in class. Currently we will be using Java 6/7 and Jboss 7.1. It is your responsibility to have the homework assignments in working order. I also expect to be able to deploy your assignment on my local laptop. I highly recommend downloading and installing the JBoss Applcation Server on your own computer, so that you can still complete your assignments, even if your application server, or Internet connection, is down. More information regarding JBoss and its use will be covered in class.

Programs will be graded on style and formatting as well as correctness.

Unless arrangements are worked out in advance, missed tests cannot be made up, and 10 percent per class meeting will be deducted for late homework submissions. Under no circumstances will any assignment be accepted after the official end of classes (the start of finals week).

Grades will be (approximately): 25% the programming assignments, 37% the midterm, and 38% the final. Final averages are assigned a letter grade according to the following ranges:
Percentage Grade
[99,100] A+
[92, 98] A
[90, 91] A-
[88, 89] B+
[82, 87] B
[80, 81] B-
[78, 79] C+
[72, 77] C
[70, 71] C-
[60, 69] D
[0, 59] F

Schedule (subject to change; check regularly)

Week Date Lecture topic Readings Announcements
1 1/22 Course overview
Introduction to Component Model
Common Software Engineering Architecture Patterns
  • Chapters 1, 2, 3
2 1/29 Computing Platform
Amazon Web Services, Elastic Compute Cloud (EC2)
  • Class notes, http://aws.amazon.com/ec2/
 Programming Assignment 1
3 2/05 MVC-based Java EE Web Development Framework
JavaServer Faces (JSF 2)
  • Class notes, https://javaserverfaces.java.net/
4 2/12 MVC-based Java EE Web Development Framework
JavaServer Faces (JSF 2) (Contd.)
  • Class notes, https://javaserverfaces.java.net/

 Programming Assignment 2
5 2/19 Rich Internet Applications
  • http://primefaces.org/

6 2/26 Business Tier
Introduction to Enterprise JavaBeans (EJB 3)
  • Chapters 3, 4

 Programming Assignment 3
7 3/05 Business Tier
EJB3 Session Beans (Stateless, Stateful, Singleton)
Midterm Exam Review
  • Chapters 5, 6, 7

8 3/12 Spring Break
No Class
9 3/19 Midterm exam
(7:20 pm - 10:00 pm)
10 3/26 Persistence Layer
Java Persistence Model (JPA 2.0)
Entity Manager
  • Chapters 9, 10
 Programming Assignment 4
11 4/02 Persistence Layer
JPA Entitiy Relationships, Java Persistence API Query Language (JPA QL)
  • Chapters 11, 13
12 4/09 Service Tier
SOAP-based Web Services
  • Class notes, JHTP Chapter 31
 Programming Assignment 5
13 4/16 Service Tier
SOAP-based Web Services (Contd.)
  • Class notes, JHTP Chapter 31
14 4/23 Service Tier
REST Archtecture & RESTful Web Services
  • Class notes, JHTP Chapter 31

15 4/30 Business Tier (Contd.)
Messaging and Message Driven Beans
Final Exam Review
  • Chapter 8
16 5/07 Final exam
(7:20 pm - 10:00 pm)
Note: JHTP refers to chapters in Java How to Program book



Academic Integrity

George Mason's policy concerning student conduct applies.  Although students are encouraged to discuss the topics covered in class, all homework assignments, exams, and projects are to be completed individually, unless joint work is explicitly authorized by the instructor. If joint work is authorized, all contributing students must be listed on the submission. Any deviation from this is considered an Honor Code violation, and, as a minimum, will result in failure of the submission and, as a maximum, failure of the class.

Please note that there are two honor code policies: an abstract GMU policy and a more specific departmental policy with regard to code plagiarism, test-taking, etc. The students can find them here: Honor Code Policies



If you are a student with a disability and you need academic accommodations, please see me and contact the Disability Resource Center (DRC) at 993-2474. All academic accommodations must be arranged through the DRC.