COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh...

28
COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh [email protected]
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    215
  • download

    0

Transcript of COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh...

Page 1: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

COMS W3156:Software Engineering, Fall 2001

Lecture #24: The End…?

Janak J Parekh

[email protected]

Page 2: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Administrativia

• Good seeing some of you last night…

• *cough* Course evaluations up and running

• HW’s here– Solutions have been posted

• HW4 is up– Must, must, must include a README

• Demo…

Page 3: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Demos

• Your entire team should sign up for one of the two scheduled final dates– Mon., Dec. 17th, 1:10pm-4:00pm– Thu., Dec. 20th, 4:10pm-7:00pm

• We’ll have signup forms available tomorrow, as well as details of what to demo

• If whole team can’t make either of the two final dates (or if you have little to demo) you can schedule for reading week instead

• I’ll buy pizza for everyone

Page 4: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Demos: Bonus Points!

• Up to 10 extra points for added functionality that was missing from the full implementation– Not extras…

• Integration bonus– +3 points if you use someone else code (max +6)

– +1 point if your code is used by someone else (max +4)

Page 5: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Next class

• Final exam

Page 6: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Today’s class

• A bit more design patterns

• MMM review

• Final exam review

Page 7: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Observer

• Very common GUI programming paradigm

• Leads directly to event programming (which in itself is a relatively recent construct)

• Define a one-to-many dependency between objects so that when the parent changes state, dependents are notified

Page 8: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Proxy

• Provide a “surrogate” or placeholder for another object to control access to it

• Useful for cost, abstraction• “Sophisticated pointer”• Can be extrapolated to the common

network programming paradigm– RMI, CORBA use “proxy” objects– Web proxy

Page 9: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Adapter

• Convert interface of a class into another interface

• Swing Adapters are actually a bit different from this: they’re partial implementations– Interestingly, other Swing classes can be

considered Adapters– JTextPane is an “adapter” from the

JComponent to a “Document”

Page 10: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

About Mythical Man-Month

• Fred Brooks wrote it in 1975, after his experiences in OS/360 design

• Which means that much of the book’s context is dated

Page 11: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Mythical Man-Month

• Major themes in chapters 1-15 (see Ch18):– Brooks’ Law

– The “black hole” of large project design: getting stuck and getting out

– Organizing large project teams, and communication

– Documentation, documentation, documentation

– When to keep and throw away code

– Dealing with limited machine resources (outdated?)

– Most supplemented with practical experience

Page 12: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

After 20 years… (Ch 19)

• Much of the book still applies– Conceptual integrity most important step towards product

quality– Brooks’ law still seems to apply

• Admissions– Hypocrisy between chapters 5 and chapter 11, but mostly

linguistic– Incremental build is better than throwing away the first

version entirely– Information hiding necessary (ch7)– Millions of computers today: much less timesharing,

much more shrinkwrap

Page 13: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

No Silver Bullet (Ch 16)

• Paper written in 1986, became huge• “There is no single development, in either

technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.”

• Why? The essence of software is that inherently complex, irrespective of accidental issues, such as language– Even autogenerating code isn’t enough

Page 14: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Still No Silver Bullet (Ch 17)

• Lots of people disagreed– No-one has come up with proof of a counterargument

• People are too pessimistic: Brooks’ point is that there is no revolution… but there is an evolution of software development– “Optimism is an occupational disease of our craft”

• OO: brass bullet– Does improve encapsulation and reuse, but still has its

own problems, and can still lead to complexity

Page 15: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Postmortem

• Did you learn anything?

• Did I learn anything?– Yes, never to teach a class on one week’s notice

Page 16: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Final exam review

• Probably around 4 questions, give or take

• One of them will be a set of true/false, short-answer

• The rest will be “medium-answer”: no essays

Page 17: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Course intro

• Inherent complexity of software– Bridges vs. operating systems

• Need to be able to organize a software project

• Numerous ways of doing this• Examples of success/failure:

– Mars Rover– Therac-25

Page 18: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Basic model

• 7 basic lifecycle model phases: name ‘em!

• Teams– Modern, chief programmer, democratic, XP,

MS

• Models– Build-and-fix, waterfall, rapid prototyping,

incremental, XP, synchronize-and-stabilize, spiral

Page 19: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

RPIS

• Reusability

• Interoperability

• Portability

• Scalability

Page 20: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Requirements

• “Rapid” prototyping

• Requirements elicitation

Page 21: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

OOA/UML

• Use-cases

• Class diagrams

• Sequence diagrams

• State diagrams

Page 22: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Design

• UML diagrams

• Stepwise refinement

• Data-flow analysis (eh…)– Cohesion vs. coupling

• Psuedocode, documentation

Page 23: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Implementation

• Languages– Java vs. C/C++

• Commenting code– Javadoc

• Testing– Black-box vs. glass-box– Integration vs. isolation

Page 24: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Integration

• Top-down, bottom-up, “sandwich”

• Stubs and drivers

• Testing: incremental

Page 25: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Maintenance

• Life sucks

• Techniques to simplify maintenance

• Formalize the process

Page 26: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Tools, advanced programming

• CVS• XML

– JDOM– Schema

• Concurrency– Threads

• Regular expressions• Databases• Swing (minimal)• C, OS (minimal)• Design patterns (minimal)

Page 27: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

Networking

• TCP/IP basics: IP, TCP, DNS

• HTTP

• LDAP/JNDI

• Event models (Siena)

• Distributed objects (RMI)

• Socket programming

• Security/crypto

Page 28: COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh janak@cs.columbia.edu.

What does this mean for you?

• I don’t think I need this slide anymore • Exam is open-book, but that doesn’t mean

you read the books during the exam

• Good luck

• See you on Thursday– and one more time…