CMSC 129 - Software Engineering II
Course Description
This course introduces students to the discipline of web programming including the
methods and techniques used in web-based system development.
Course Learning Outcomes
After completion of the course, the student should be able to:
- Discuss the process for developing large software;
- Demonstrate approaches, techniques, or methods for creating high-level and detailed designs, hierarchical
factoring of object systems;
- Develop verification plans and alternative solutions for the system; and
- Implement, test and validate a systems design.
Course Outline
UNIT 1. Design and Implementation
- Object-oriented design using the UML
- Design patterns
- Implementation issues
- Open-source development
UNIT 2. Software Testing
- Development testing
- Test-driven development
- Release testing
- User testing
UNIT 3. Software Evolution
- Evolution processes
- Legacy systems
- Software maintenance
UNIT 4. Dependable systems
- Dependability properties
- Sociotechnical systems
- Redundancy and diversity
- Dependable processes
UNIT 5. Reliability Engineering
- Availability and reliability
- Reliability requirements
- Fault-tolerant architectures
- Programming for reliability
- Reliability measurements
UNIT 6. Safety Engineering
- Safety-critical systems
- Safety requirements
- Safety engineering processes
- Safety cases
UNIT 7. Security Engineering
- Security and dependability
- Security and organizations
- Security requirements
- Secure systems design
- Security testing and assurance