Software
Engineering
The purpose of this course is to provide
students with knowledge of software development problems and the processes and
methods used to address them. The course will talk about software life cycle
models, goals and methods for requirements analysis and specification, software
design, implementation, integration and testing. This course also will try to
equip students with skills in programming techniques to support information
systems development, and modeling languages such as UML.
Administrative Details
Here you will find administrative information for the Winter 1397.
Textbook
The required textbook
for this course is:
Lecture material will
be drawn from the textbook, as well as from some of the recent software
engineering literature.
Course Syllabus and Lecture Notes
- Engineering!!,
Predictive versus Adaptive (Notes)
-
Software Lifecycles
(Notes)
- Methods,
Methodologies, Processes? – Agile modeling
(Methods) (Notes) (Design
Methods)
-
Agile Modelling
(Manifesto)(Principles)(Practice)
- Use
Cases (Notes)(Writing Effective Use Cases)
- More
Use Cases (Notes)
- Design Preliminaries (Software Programming Techniques) (ADT) (Objects vs Classes)
- Object Modeling, Classification and Generalization (Notes)(Code)
- Understanding Object Oriented Programming (Notes) Courtesy of Joseph Bergin
- Domain
Modeling (Notes) (Examples: Sale, Restaurant, Library, Video Store)
- More
Domain Modeling (Notes)
- Unified Modeling
Language (Notes) (Interaction diagrams) (Class diagrams)
- Coupling and Cohesion (Notes)
- From Design to Code (Notes)
- GRAS
Patterns 1 (Notes)
- GRAS
Patterns 2 (Notes)
- GRAS
Patterns 3 (Notes) (Polymorphism 1) (Polymorphism 2)
-
Object Relational Mapping (Notes)
- Design Patters (Creational Design Pattern)
- More Patterns (Decorator and Adapter Patterns)
- Acceptance and Unit Testing (Notes)
- Multi-tier
Architecture (Notes) (Technologies)
Course Work
- Team Project - Analysis (PDF)