SWE 6843: Embedded Systems Construction and Testing
Instructor: Dr. Andy Ju An Wang
School of Computing and Software Engineering
Southern Polytechnic State University
Course Description
Catalog Description:
This project-oriented course focuses on the use of current software building technology, testing, reliability analysis, and benchmarking. Topics include component-based development (CBD), implementation technologies, and real-time operating systems (RTOS), with emphasis on the use of measurement tools, and domain libraries. The course also covers issues in hardware software co-design.
Additional Description:
Fundamental principles and techniques for embedded software engineering are discussed. Major topics include: Stand-alone embedded systems (SES) and networked embedded systems (NES), Enabling technologies, Self-configuration and adaptive coordination, Building trustworthy NES, Models of NES computation, Common software architectures, Component-based construction and testing, Dependability of NES, and embedded software development tools. C/C++/Java will be used as major programming languages for this course.
Course Objectives
The course covers a wide range of embedded software development skills, from analyzing a problem to implementing a solution. Emphasis will be on the later stages of development, such as testing, integration, performance tuning, reliability analysis, etc. On completion of the course, students should be able to
- Appreciate embedded software engineering as a discipline;
- Master fundamental principles and methodologies of embedded software development;
- Appreciate engineering issues in the development of embedded software, such as the importance of addressing the user’s concerns, working with limited resources, maintainability, dependability, and division of labor.
- Analyze a software development problem and express its essence succinctly and precisely;
- Design a module structure to solve a problem, and evaluate alternatives;
- Implement a module so that it executes efficiently and correctly;
- Learn systematic approaches for embedded system testing and integration;
- Conduct performance tuning, reliability analysis, and security enhancement;
- Construct networked embedded systems with component-based approach;
- Work in a small team, cooperating on these aspects of software development, and exchanging ideas in a constructive and organized fashion;
- Utilize effectively the computing environment including operating systems, CASE tools, languages, etc.
- Master the basic knowledge about software requirements, software design, software construction, software management, and software quality.
- Understand the scope, roles, uses, and development trends of the most widely used embedded software engineering standards.
Course Outline
- Introduction to Embedded Systems Analysis and Design
- Complex systems and microprocessors
- Characteristics of embedded computing applications
- Challenges in embedded computing system design
- The embedded system design process
- Requirements
- Specification
- Architecture design
- Designing hardware and software components
- System integration
- Formalisms for system design
- Structural description
- Behavioral description
- Semi-formal languages versus formal languages
- Analysis and design examples
- Overview of Embedded Systems Construction and Testing
- Differences between embedded systems and generic computing systems
- Difficulties in embedded systems construction and testing
- From hardware and software co-design to co-testing
- Ad hoc approaches: microprossor-based and platform dependent
- Object-orientation in embedded programming and testing
- Component-orientation in embedded programming and testing
- Product-line approaches in embedded system development
- Performance analysis
- Reliability analysis
- Quality of services in embedded systems
- Networked Embedded Systems (NES) Overview
- Understanding NES
- How NES differ from traditional systems
- Why NES are important
- Why NES are difficult
- SES and other NES
- Enabling technologies
- Real-time and performance-critical aspects of embedded operating systems
- MEMS (microelectromechnical systems)
- Self-configuration and adaptive coordination
- Challenges for configuration and adaptive coordination
- Building Trustworthy Networked Embedded Systems
- Reliability
- Safety
- Security
- Privacy
- Usability
- System and software dependability
- Probabilistic program analysis
- Domain analysis
- Component-based approach to NES dependability
- Models of NES Computation
- What are models of computation?
- Distributed computing models: current practice
- New models for NES
- Models with resource constraints
- Models dealing with failures
- New data models
- Models of trust
- Models for concurrency
- Models of location
- Advanced topics on models and abstractions
- Component-Oriented Programming for Embedded Systems
- Devices, device drivers, and device beans
- Component infrastructure for DeviceBeans
- DeviceBeans component development
- Connection model for DeviceBeans
- Deployment model for DeviceBeans
- Device access
- Permission-based security and administration
- User administration and configuration management
- Validation and Verification of Networked Embedded Systems
- Defect testing
- Integration testing
- Object-oriented testing
- Component-oriented testing
- Testing workbenches
- Verification and software inspection
- Automated static analysis
- Formal methods and NES
- Reliability validation
- Safety assurance
- Security assessment
- Case Studies in Networked Embedded Systems
- Smart Card Applications in NES
- Smart Sensor Networks
- OSGi-based Residential Networks
- FleetNet for Vehicle Networks
- Windows Embeded Case Studies
- Java Embedded Case Studies
- Interactive Digital TV Applications
- Mobile Device Applications
- Xlets and MIDlets
- RFID and Smart Dusts
Note: Each semester will probably emphasize a specific technology 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.
- This is from an email message related to this course sent from a former student:
"Right before my wedding on April 17th I received two simultaneous offers and I accepted both. One is a full time position working with a GPS/GIS equipment reseller for which I will eventually be programming custom applications. At the moment I am still learning this embedded technology. My second position (which is part-time/my-own time) started with doing some investigative program analysis for a small local company. To make a long story short my investigation and resulting report has now landed me with the opportunity to re-develop their business application.
"... First of all I wish to thank Dr. Wang for teaching such a "hands on" embedded systems class that has helped me greatly with the GPS/GIS units and the software I am working with. The Component Object Models make a lot of sense and the class notes have helped a lot."
- Here is a letter from a former student to our department chair:
"I have hopefully graduated this semester from the MSSE program and I would like to take a few minutes to share some thoughts with you regarding the faculty. Not only did I complete my graduate degree at SPSU, but I also completed my undergraduate degree at SPSU. Along the way I had some pretty good professors, but I also had quite a few lousy professors. Over the course of my graduate degree I was able to take about 7 courses from Dr. Tsui and Dr. Wang. From my experience with these professors and comments from my peers, I feel that these professors are extremely important to the SE program.
Dr. Wang is one of the few professors that I have had that I feel was able to challenge me technically. I have a few years of architecture and implementation experience in corporate American and Dr. Wang's courses have given me technical knowledge that I feel I can apply to my projects. I have not had many other professors who have the enthusiasm to teach the latest technologies (Java, CBE) like Dr. Wang. Dr. Wang also is compassionate towards his students and really relies on there feedback to shape his teachings.
I feel both the professors deserve a pat on the back. From my experiences, many professors do not really care if the students really learn anything and do not provide more than regurgitation of the textbook. Dr. Wang and Dr. Tsui are able to teach from their experiences and portray a passion for the subject that they are teaching."
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