SWE 6813: Component Based Software Development
Instructor: Dr. Andy Ju An Wang
School of Computing and Software Engineering
Southern Polytechnic State University
Course Description
Catalog Description:
This course covers the concepts, foundations, and architectures of component-based software development (CBSD) and its related technologies. Component-based tools and languages, approaches for implementation of CBSD, including designing, building, assembling, and deploying reusable COTS and in-house software components are discussed in depth. The current concrete realizations of component technologies will be explored. Students will do projects focused on the life cycle of software components.
Course Objectives
The course covers a wide range of component-based software development skills, from analyzing and modeling a problem with component-based notations and architectures, to implementing a solution using a particular component technology. On completion of the course, students should be able to
- Appreciate component-based development as a new software engineering approach;
- Master fundamental principles and methodologies of constructing component software;
- Understand the theoretical issues in component-based software engineering such as component specification language syntax and semantics, component architecture description, and component validation and verification;
- Learn the common approaches solving the engineering issues in the component-based development of software, such as the component standards, component architectures, component interface, component implementations, and component integrations;
- Understand the differences between component oriented programming (COP) and object oriented programming (OOP);
- Analyze a component software development problem and express its essence succinctly and precisely;
- Design a component structure to solve a problem, and evaluate alternatives;
- Implement a component with an appropriate language so that it executes efficiently and correctly;
- Work independently and cooperate on various aspects of component-based software development, and exchanging ideas in a constructive and organized fashion;
- Utilize effectively the computing environment in COP including operating systems, CASE tools, languages, IDEs, builder tools, etc.
- Master the basic knowledge about component specification, component design, component construction, component management, and component quality.
- Understand the scope, roles, uses, and development trends of the most widely used component-based software engineering standards.
Course Outline
- State-of-The-Art of Component-Based Software Engineering
- What is CBSE?
- Why CBSE?
- CBSE with abstract components
- CBSE with off-the-shell components
- Components and markets
- Markets versus technology
- Fundamental properties of component technology
- Framework, components, contracts, and patterns
- Further research directions in CBSE
- What a Component Is and Is Not
- Components and objects
- Modules and interfaces
- White box versus black box abstraction and reuse
- Component dependencies
- Standardization and normalization
- Specification of software components
- Component Models and Technology
- Architecting component-based systems
- Component-driven architecture development
- Component interface and connections
- ACME ADL
- JavaBeans component model
- Enterprise JavaBeans (EJB)
- COM, DCOM, MTS, and COM+
- Corba Component Model (CCM)
- .NET component model
- The OSGi component model
- Component-Based Software Development Process
- Component-based software life cycle
- Semantic integrity in CBSD
- Formal semantics of components
- Role-based component engineering
- Frameworks and roles
- A model of frameworks
- Design for reuse
- Design with reuse
- Component Composition and Integration
- Component evaluation
- Component classification
- Component integration
- Prediction-enabled component technology
- Predicting system trustworthiness
- Component-oriented programming
- Component distribution and acquisition
- Subject-oriented programming
- Aspect-oriented programming
- Further research directions
- Components in Product Line Architecture
- Product families and product lines
- Product line architecture
- Object-oriented frameworks
- Component-oriented frameworks
- The Koala component model
- Managing versions and variants
- The OMG Way: CORBA and OMA
- ORB: the object request broker
- From CORBA to OMA
- Common object service specifications
- IDL: Interface Definition Language
- Push-model and pull-model applications
- Distributed exceptions
- The Microsoft Way: COM/DCOM and .NET Framework
- The COM model
- Interface and polymorphism
- From COM to DCOM
- Controls: from VB via OLE to ActiveX
- .NET framework
- .NET components and assembly
- SOAP and .NET
- The Sun Way: JavaBeans and Enterprise JavaBeans
- Events and connections
- Properties and methods
- Introspection and persistence
- Component software design with IDE tools
- Bean markup language
- Component software development with XML and Ant
- Component architecture description
- Component implementation
- Component composition and integration
- Device beans
- SOAP and component software
- The OSGi Way: Framework and Bundles
- Service oriented programming
- Open services and gateway
- The OSGi service based computing models
- Framework and bundles
- Security issues in OSG applications
- Web Services
- Web Services component infrastructure
- Component models for Web Services
- Connection models for Web Services
- Deployment models for Web Services
- UML Components
- Development process
- Applying UML
- Requirements definition
- Component identification
- Component Interaction
- Component specification
- Provisioning and assembly
Note: Each semester will probably emphasize a couple of technologies while go through others briefly.
Student Comments
At the end of each semester, students were asked to provide their feedbacks on this course by answering the question "What do you like most and what do you dislike most about this course?" Below is a list of some comments from students.
- "It is an excellant opportunity to get familiarize with the latest software development technilogy. The instructor is very helpful in class and helps to bring out the creative side of students by giving them various opportunities and stimulous questions during the course."
- "I definitely recommend this course to my fellow students because the content is very relevant to what software engineers will encounter. Dr. Wang is devoted to giving the students experience with applications, both theoretically and practically. He is always well prepared, even though the content was a little much to digest sometimes. Dr. Wang is very committed and experienced. I came away from his class very motivated.
"I would suggest future students to develop a component-based application with sufficient complexity. If time allows, deploy application or services for other students to interact with."
- "This course pushes you to the edge of where computing is now and is growing from. Web Services was an especially important part covered in this course. Dr. Wang is very student-centered in his teaching style. A few of the examples were hard to follow at first, but he persisted until the students were satisfied. He also values student input and inquiry. Dr. Wang is an excellent teacher. I honestly can say I learned something new and potentially valuable. I'll b[?]ow for sure when the topics come up in my career going forward."
Projects and Demos
Some projects and demos related to this course can be found here.
Course Web Site
The web URL for this course is: http://webct.usg.edu. Please log into your course web site following these directions exactly:
- Go to http://webct.usg.edu.
- Click on the "Log in to myWebCT" link (DO NOT CLICK ON CREATE myWEBCT).
- When asked, put in your user name and passwd following the format below:
- username: Firstname_Lastname_last4digits of SSN
(Example: John_Doe_1234)
- password: SSN (no dashes or spaces)
Or if you are a previous user with this ID, the password that you have been using.
Please note that these are case sensitive.
Note for Students:
- If you have registered to this course but have problems to log into the course web site, please let the instructor know immediately.
- If you registered later than the scheduled registration time, your web account will be created after the "Add-Drop" deadline.
- Your WebCT account is managed by the USG (University System of Georgia).
[Course Description] | [Course Objectives] | [Course Outline] | [Student Comments] | [Projects and Demos] | [Course Web Site]
© 2004 Andy J Wang
Last modified: Tuesday August 3, 2004