Midterm Review

You should carefully study the book and my classnotes. The following are some, but not all, of the important topics. Always study my classnotes first, then the following important topics, then the whole book. (The following are based upon 4th Edition)

Chapter 1: Why Software Engineering
C1.6 An Engineering approach, C1.7 Development team, C1.8 How has software engineering changed?

Chapter 2: Modeling the Process and Life Cycle
C2.2 Software Process models (Fig 2.1 waterfall, 2.3 waterfall with prototyping, 2.5 prototyping model, 2.7 transformational model, 2.9 incremental model, 2.10 spiral model) You must know all software lifecycle models, why do we use a particular model, the pros and cons. Extreme Programming (task, pair programming,client representative, agile methods)

Chapter 3: Planning and Managing the Project
C3.1 Tracking progress (schedule, milestone, activity graph Fig 3.2) C3.2 Personnel (Fig. 3.9 communication paths on a project, project organization) C3.3 Effort estimation (COCOMO constructive cost model) C3.4 Risk managemnet (what is risk? How to deal with it?) C3.5 Project plan (what is it? why do we need it?)

Chapter 4: Capturing the requirements
C4.5 Modeling notations (this is the heart of this chapter) ER diagrams, UML diagrams (class/object diagrams and use case diagrams only), Petri nets (Petri nets are for graduate students only), Data flow diagrams, Use cases, Decision tables

Chapter 6: Designing the Modules
5.1 What is design? 6.2 Decomposition and modularity (this section is important. Notions of coupling, Fig. 6.2 range of coupling, Fig. 6.3 content coupling, Fig 6.4 common coupling. Notion of cohesion, Fig 6.5 types of cohesion, Fig 6.6 logical cohesion)