340 likes | 466 Vues
This lecture focuses on classical specification techniques and service discovery, particularly looking at informal, semiformal, and formal methods. It covers the role of specifications in the software development process, including defining contracts between clients and developers, acceptance criteria, and the overall solution strategy. Additionally, the discussion includes insights on service discovery mechanisms like LDAP and DNS, highlighting their importance in modern software systems. The lecture aims to equip students with a comprehensive understanding of how to effectively document requirements and manage service interactions.
E N D
COMS W3156:Software Engineering, Fall 2001 Lecture #9: Classical specification, service discovery Janak J Parekh janak@cs.columbia.edu
Administrativia • v0.9 of the requirements out – we’ll talk about it shortly • New specification document – better? • Rose will be installed by Friday • Homework 1 submission instructions up • Webboard – use it! • http://groups.yahoo.com – private webboards • On asymmetric groups…
Next class • Planning and Estimation • Read Schach 9, second part of MMM • HW2 will probably include a little of MMM • MS Project • Amazingly useful little program
Today’s class • Talk a little about classical specifications • Informal techniques • Semiformal techniques • Formal techniques • Talk about service discovery, especially LDAP • Continue project discussion
Specification document • Contract between client and developer • Acceptance criteria • Solution strategy • Keep track of which solutions are kept and those discarded for later justification • Cost-benefit analysis
Informal specifications • Xhosa!? • Mostly prose • Easy to screw up and make ambiguous: English sucks • My MTA example from second class
Structured systems analysis • Start with Data Flow Diagrams (DFD’s) • Show what happens, not how • Use stepwise refinement: start with high-level DFD and work down from there • UML state diagram generalization of this
DFD • After several iterations, quite detailed, but customer can still understand • Less data-hiding than object-oriented mechanisms • Still useful for formalized contracts
Remaining structured systems analysis steps • Decide, from DFD, what to computerize • Determine details of data flows • Define process logic • Define data stores • Define physical resources (files, organization, storage medium, etc.) • Determine I/O specs • Determine sizing (CPU, size) • Determine hardware requirements
Other semiformal techniques • PSL (problem statement language) and PSA (problem statement analyzer) – computer-aided • SADT (box-and-arrow-based structural analysis and design technique): more refinement than DFD • SREM (Software Requirements Engineering Method, pronounced “shrem”): specify conditions for actions to occur; based on finite state machines; has been used for C3I applications by the air force
Entity-relationship modeling (ERM) • Looks like a class diagram, no? • Predecessor, in a sense
Finite state machines • Precursor of UML state diagrams • Still used in many low-level specification areas • Notion of states and transitions formally specified • Useful in menu-driven UI’s, system design • Above refers to 3-position combo lock • Huge example in Schach for elevators • Comp Org…
Petri nets • Problem: state machines are weak at handling timing issues • Can use state charts (or state diagrams) • Petri nets are state-based, but have tokens in states to allow multiple transitions to happen at the same time (concurrency modeling)
Z • Zed, not zee! • Rather formalized specification language • Difficulty outside the scope of this class • Utilizes set theory, functions, and first-order logic • We’re not covering this, but take a peek in the book
Other formal techniques • Event-based specification: Communicating Sequential Processes [Hoare, 1985] • A little too complex for us • Nevertheless, we want to consider event models; they’ve become very common • Many others (Anna, Gist, VDM) • Active theoretical research (woohoo!)
Miscellany • Testing • Walkthroughs • Inspection against checklist • Correctness-proving for formal specifications • Metrics • Size of DFD, data dictionary, etc. • Challenge • Find something that the customer understands yet is good enough for a contract • Sometimes this is impossible: need technical people at customer
Service Discovery • It’s no longer just the web anymore • Abstraction of service from network node (or computer) • Goal: find a service without hardcoding where it is • Use DNS, LDAP, others
DNS: Domain Name Service • Primary purpose: “discover” machines • “Address record”: for example, www.cs.columbia.edu = 128.59.16.149 • Equivalent to an address book • Secondary purpose: advertise mail servers • “Mail server”, or MX record: cs.columbia.edu’s mail is primarily handled by ober.cs.columbia.edu
DNS (II) • More recent: user-definable services, using SRV records • Domain controllers • Telephony servers • Generally done on a domain basis: “here’s the service provider for domain X” • Tools for DNS • nslookup • host • numerous API’s (resolver built into sockets)
Others (I) • SIP: Session Initiation Protocol: Invented Here!* • http://www.cs.columbia.edu/~hgs/sip • Basic idea: how to find someone to communicate with • Primarily for telephony applications (Caller-ID, Call-Forwarding, etc.) • Jini: distributed object-level service discovery • Appliance-aware services: embedded Java
Others (II) • SLP (Service Location Protocol) • IETF attempt, generalized SIP • Less successful so far: maybe IPv6? • NIS (Network Information Service) • Primarily user authentication, but can generalize • “Mirror” /etc files
Challenges for service discovery • Running out of IP addresses to host these services on • IPv6 • Lack of a standardized mechanism • Each service discovery mechanism has its own target applications • Mobile services • Wireless technology: “find” the service physically
LDAP: Lightweight Directory Access Protocol • One popular solution to general discovery requirements • Very generalized white-pages mechanism • User-definable “schemas” • Common applications are network nodes and users • Based on DAP, X.500 • Extremely popular • ldap.columbia.edu: try it out… • Lookups are very fast
LDAP (II) • We will be using LDAP for several purposes • Discovering server and AI programs on the network • Keeping track of basic user authentication and information • LDAP server already set up on softe.cs.columbia.edu • Code examples will be covered in next week’s recitation • Don’t need the code for specification document
LDAP 4 U • We have three schemas (directories) in our LDAP setup: • Services • Actors • Actor-world state settings
Services • Allow servers and AI’s to be discovered • Fields • Map ref: string – unique identifier, based on group # • World name: string • Server IP: string • Server port: integer • Extensions field: string • Server type: char • 0 = world, 1 = AI, 2 = ?
Actors • Only game servers can read/write (special password) • Fields • ActorRef: string – user ID • ImageURL: string • HP: integer • XP: integer • Gold: integer • Encrypted password: string
Actor states per world • Separate table/schema: multiple entries per actor • Fake relational database • Servers read/write on entry/exit • Fields • ActorRef: string • WorldRef: string • LocationX: int • LocationY: int • Status: long • WorldInstance: long – unique timestamp
What does this mean for you? • Basic understanding of what “contacting LDAP server” means • Looking up data from and writing data to a table • You’re not doing much of any of the classical specification models • Be aware of them, however: still part of curriculum
Project update • “v0.9” of requirements out • XML schema near-finalized • examples now available • actual document still being worked on • Not really use cases in there… don’t copy them! • Almost done with v0.99 • Schema changes…
Schema changes • Reduced number of update messages, combined them into the MapDelta • Instances can have different ImageURL’s: custom “avatars” for players • Talking and attacking are separate now • Attacked gives result of an assault • ReplaceObject, ChangeStats, StatusMessage are gone: now embedded in MapDelta
Frequently asked questions (I) • Objects • All have a unique ID: text followed by integer • World-specific, but see example • Have default URL for image • Clients may cache or request them all on startup • Components • All talk to LDAP • Talk XML (should I cover JDOM?) • Talk over network (sockets) • Will be multithreaded (design issue)
FAQ’s (II) • GameEvent: turn-to-turn data • Clients/AI’s request moves • Server processes them, sends MapDeltas back • MapDelta sequence numbers • Yes, the full map does have “last sequence number” as part of it