Software Engineering
Revised: August 2008 (Mark Holliday)
Course Description
An introduction to the processes, activities, and methodologies of software engineering. Activities will include experiences with a modern integrated development environment and its plug-ins that support the complete software life cycle including requirements specification, object-oriented design, change management systems, continuous testing, documentation, and maintenance. Activities also include team-based projects and pairwise programming and coverage of the unified modeling language and design patterns. 3 credit hours, required for major, prerequisite is CS 151.
Objectives
- Understand the activities of the software development process.
- Develop skill using tools that support the complete software life cycle.
- Develop skill using the unified modeling language and design patterns.
- Develop skill working in teams both in pairwise programming and larger teams.
Text
Roger S. Pressman, Software Engineering: A Practitioner's Approach, Sixth Edition, McGraw-Hill, 2005.
Grading Procedure
Grading procedures and factors influencing course grade are left to the discretion of individual instructors, subject to general university policy.
Attendance Policy
Attendance policy is left to the discretion of individual instructors, subject to general university policy.
Course Outline
Part 1: An Introduction To The Software Development Process
- What is Software Engineering?
Definitions, motivations; history; course overview. - The Software Process
Overview of the process (requirements, specification, ...); process maturity models; process improvement. - The Software Team
The Software Team; pairwise programming; personality styles, larger teams. - Lifecycle Models
Build-and-fix; waterfall; agile programming (extreme programming); rapid prototyping; incremental; spiral; OO models. - Verification and Validation
Lifecycle approach to V"V, testing, quality, correctness, and special testing issues.
Part 2: Phases of Software Development: First Iteration - Requirements
Requirements analysis techniques; Use stories and use cases; UML use case diagrams; rapid prototyping; testing issues - Specification and Analysis
Informal approaches; formal approaches; UML diagrams; 00 Analysis; modeling; testing issues. - Design
Design architectures; design analysis; design modeling; UML diagrams (class diagrams, sequence diagrams, state diagrams); design patterns; testing issues. - Implementation
Programming; module design and reuse; UML diagrams; module testing; walkthroughs and inspections; integration and integration testing; system-level testing. - Maintenance and Beyond
Why maintenance; testing issues.
Part 3: Phases of Software Development: Second Iteration
- The Software Team
Dealing with other human beings; team approaches; management issues; reviews. - Planning and Estimating
Plan development; metrics; cost-benefit. - Configuration Management
Versions; configuration control. - Tools
Management tools; development tools. - Requirements Elicitation
- Requirements Specification
- Design
- Implementation
Part 4: Current Issues and Course Wrapup
- The current Software Engineering landscape, including issues in management, process, ethics, and certification.
- Emerging Frameworks for Software Development
- Ethics in Software Engineering
- Other Issues
- Wrapup







