COMS W3156: Software Engineering, Fall 2001 Lecture #24: The End…? Janak J Parekh...
-
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...
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…
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
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)
Next class
• Final exam
Today’s class
• A bit more design patterns
• MMM review
• Final exam review
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
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
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”
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
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
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
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
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
Postmortem
• Did you learn anything?
• Did I learn anything?– Yes, never to teach a class on one week’s notice
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
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
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
RPIS
• Reusability
• Interoperability
• Portability
• Scalability
Requirements
• “Rapid” prototyping
• Requirements elicitation
OOA/UML
• Use-cases
• Class diagrams
• Sequence diagrams
• State diagrams
Design
• UML diagrams
• Stepwise refinement
• Data-flow analysis (eh…)– Cohesion vs. coupling
• Psuedocode, documentation
Implementation
• Languages– Java vs. C/C++
• Commenting code– Javadoc
• Testing– Black-box vs. glass-box– Integration vs. isolation
Integration
• Top-down, bottom-up, “sandwich”
• Stubs and drivers
• Testing: incremental
Maintenance
• Life sucks
• Techniques to simplify maintenance
• Formalize the process
Tools, advanced programming
• CVS• XML
– JDOM– Schema
• Concurrency– Threads
• Regular expressions• Databases• Swing (minimal)• C, OS (minimal)• Design patterns (minimal)
Networking
• TCP/IP basics: IP, TCP, DNS
• HTTP
• LDAP/JNDI
• Event models (Siena)
• Distributed objects (RMI)
• Socket programming
• Security/crypto
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…