Lectures

Announcements

  • Details about the exam and about the final grade computation
    • The exam questions will have the form of:
      • multiple-choice questions (in which a wrong answer will result in grading the question with 0; if only right choices are selected but not all of the right ones, partial points are given for that question)
      • questions asking for a very short answers in the form of a number/word
      • questions asking to discuss a problem / argument the validity or invalidity of a statement in the form of an essay (e.g., describing some theoretical concept, describing some use cases that you have to infer from a requirement description, etc).
      • topics asking to write some code (e.g., write the code starting from a class diagram, implementing a test case in jUnit, etc.)
      • any combinations of the previous alternative
    • Number of questions and time - TBD
    • Final grade for the discipline
      • K1 (Exam) 50%
      • K2 (Semester Activity) 50%
  • Do not forget about the UML chapter available on the lab page and the corresponding suggested reading

Chapter 1 - Introduction

Suggested reading

  • I. Sommerville - Software Engineering 8, Ch. 1 - Introduction
  • R. Pressman - Software Engineering 5th Ed., Ch. 2 - The Process

Chapter 2 - Software Development Processes

Suggested reading

  • I. Sommerville - Software Engineering 8, Ch.4 Software Processes (Intro; 4.1,4.1.1,4.1.2; 4.2; 4.4), Ch.17 Rapid Software Development (Intro; 17.1; 17.2)
  • R. Pressman - Software Engineering 5th Ed., Ch.2 The Process (2,4; 2.5; 2.7,2.7.1,2.7.2)
  • M. Fowler - UML Distilled, Ch.2 Development Process
  • P. Deemer & G. Benefield - SCRUM Primer

Chapter 3 - Requirements Engineering

Suggested reading

  • I. Sommerville - Software Engineering 8, Ch.4 Software Processes (4.3,4.3.1)
  • R. Pressman - Software Engineering 5th Ed., Ch.10 System Engineering (10.5), Ch.11 Analysis concepts and Principles (11.2)
  • M. Fowler - UML Distilled, Ch.9 Use Cases

Chapter 4 - Object-Oriented Analysis

Suggested reading

Chapter 5 - Software Design

Suggested reading

  • I. Sommerville - Software Engineering 8, Ch.4 - Software Processes (4.3.2), Ch. 11 - Architectural Design (Intro, 11.1, 11.2, 11.3)
  • R. Pressman - Software Engineering 5th Ed., Ch.14 - Architectural Design (14.3)
  • B. Meyer - Object-Oriented Software Construction, Ch.3 - Modularity (Intro, 3.1, 3.2)
  • A. Riel - Object-Oriented Design Heuristics (2.1)
  • R. Martin - The Open/Closed Principle
  • A. Hunt, D. Thomas - Pragmatic Programmer, Ch.5 - Section 1: Decoupling and the Law of Demeter

Chapter 6 - Advanced Implementation Mechanisms

Suggested reading

  • B. Eckel, Thinking in Java 4th Ed., Ch. Type information - The Class Object (Class literals, Generic class references, New cast), Checking before a cast (Using class literals, A dynamic instanceof), instanceof vs. Class equivalence, Reflection: runtime class information (A class method extractor)
  • B. Eckel, Thinking in Java 4th Ed., Ch. Generics - Simple generics (A tuple library, A stack class, RandomList), Generic Interfaces, Bounds, Wildcards (until contravariance but without it)

Chapter 7 - Software Testing

Suggested reading

  • R. Pressman - Software Engineering 5th Ed., Ch.18 - Software Testing Strategies (18.1.1-18.1.4; 18.3,18.4,18.5)
  • R. Pressman - Software Engineering 5th Ed., Ch.17 - Software Testing Techniques (17.2, 17.3, 17.4, 17.5.3, 17.6 Intro, 17.6.2, 17.6.3)
  • I. Sommerville - Software Engineering 8, Ch.4 - Software Processes (4.3.3), Ch 23 - Software Testing (23.3 Intro, 23.3.2, 23.3.3, 23.3.4)