CISC 323 Introduction to Software Engineering
Week 3 OOP, UML, Software Process Lecture 1: Software Process
CISC 323 Introduction to Software Engineering Week 3 OOP, UML, - - PowerPoint PPT Presentation
CISC 323 Introduction to Software Engineering Week 3 OOP, UML, Software Process Lecture 1: Software Process
Week 3 OOP, UML, Software Process Lecture 1: Software Process
process that codifies the activities of software design, development and validation
correct depends on the desired quality attributes of the system under construction.
– Microsoft
…
programmer
foundation for next step
flows, errors, problems earlier in development
those steps
preliminary design, interface design, final design, test plan/test results, operating instructions
20 40 60 80 100 120 140 160 Req Code Accept Test Large Project Small Project
requirements, design stages
– determine order of stages in software development – set transition requirements from one stage to another
– document (or task) driven – better than ad-hoc process – most widely used process model in standards and industry
– emphasis on fully elaborated documents before going
– only works for well defined, mature, predictable types
– doesn’t work for highly interactive software, new technology, research – real projects rarely follow sequential flow of model
– difficult for customer to state all requirements explicitly at start of project – working version of program not available until very late in project life-span – major blunder may not be discovered until very late – sequential style leads to bottlenecks and doesn’t lend itself to parallel activities
traditional understanding of “prototype”: mock-up of a newly engineered product – prototype aircraft to test flying, check systems – make refinements before going into production – have to build nearly whole thing (airframe, engines, cockpit controls, hydraulics, landing gear, electronics, etc.) before test
– try out on customers
✁ ✂ ✄ ☎ ✆ ✝ ✞ ☎ ✟✠ ✝ ✄ ☎ ✟ ✆ ✟✡ ☛✌☞ ✍ ✞ ✄✏✎ ☛ ✝ ☎ ✟ ✑ ✒ ☎ ☛ ✓ ✔ ✕ ✕ ✕ ✑ ✒ ☎ ✖ ☞ ✗ ✘ ✡ ✒ ✂ ✝ ✡ ✎ ☛ ✄ ✒ ✡☞✚✙ ✛ ✝ ☞ ☛ ☞ ✜ ✟ ✢ ✟ ☛ ✒ ✡ ✙ ✡ ✒ ☞ ✞ ✟ ✎ ✄✏✣ ✢ ✎ ✣ ☞ ✟ ☞ ✘ ✣ ☛ ✟ ✤ ☛ ☎ ✟ ✆ ✟ ✙ ✆ ✣ ✥ ✣ ✞ ✞ ✟ ✣ ☎ ☛ ✒ ✑ ✒ ☎ ✜– try out possible trouble areas
✘ ✞ ✟ ☎ ✂ ✒ ☎ ✆ ✣ ✡ ✎ ✟ ✦ ☛ ✄ ✆ ✟ ✣ ✡ ✖ ☎ ✟ ☞ ✒ ✝ ☎ ✎ ✟ ☞ ✘ ✣ ✎ ✓ ✄ ✟ ✧ ✣ ★ ✢ ✟ ✦ ✡ ✟ ✑ ☛ ✟ ✎ ✓ ✡ ✒ ✢ ✒✩ ✥ ✘ ✄ ✡ ✧ ✟ ☞ ☛ ✄ ✩ ✣ ☛ ✄ ✡ ✩ ✖ ✄ ✂ ✂ ✟ ☎ ✟✡ ☛ ✒ ✞ ☛ ✄ ✒ ✡ ☞clearly established
NOT mean hacking)
and analyzed before decision on how to proceed
starting next iteration
purpose?
increment
partially specified, working model of primary aspects of a proposed system”
discovering the true and complete set of system functional requirements that will optimally satisfy the legitimate business needs of the user”
place
first***
ahead***
last
✤ ✸ ✰ ✰ ✿ ✬ ✳ ✧ ★ ★ ✮ ✬ ✦ ✵ ✲ ✸ ✮ ✰ ✸ ✬ ✯✱✰ ✧ ✮ ✮ ✳ ✬ ✦ ✦ ✯ ✫✭✬ ✦ ✬prototyping
✤ ✰ ✾ ✬ ✳ ✧ ✯ ✵✹✸ ✲ ✦ ✩ ✦ ✯ ✬ ✺ ✦✂✁ ✯ ✬ ★✭✬ ✷ ✰ ✺ ✺ ✦ ✰ ❄ ✯ ✴ ✧ ✳ ✬ ✁ ✳ ✬ ✧ ★ ✯ ✵ ✺✬ ✦ ✩ ✦ ✯ ✬ ✺ ✦✂✁ ✮ ✻ ✺ ✦ ✩ ✦ ✯ ✬ ✺ ✦✂✁ ✦ ✷ ✵ ✬ ✸ ✯ ✵ ❄ ✵ ✷ ✳ ✬ ✦ ✬ ✧ ✳ ✷ ✫ ✦ ✰ ❄ ✯ ✴ ✧ ✳ ✬ ✤ ✳ ✧ ✾ ✵ ✮ ✾ ✳ ✰ ✯✱✰ ✯ ✩ ✾ ✵✹✸ ✲ ❄ ✰ ✷ ✥ ✦ ✵ ✦ ✰ ✸ ✥ ✦ ✬ ✳ ✦ ✧ ✯ ✵ ✦ ❄ ✧ ✷ ✯ ✵ ✰ ✸Week 3 OOP, UML, Software Process Lecture 2: The Microsoft Process
Schuster Inc., 1995
and Selby, Communications of the ACM, June 1997 (not required reading)
technical wizards" hacking away at coding. Creative, very good at getting code up and running quickly.
stifling creativity and talent
requirements constantly evolving
work in small groups, fairly independent
diverging
code
quality in the end product: – Functions supported – Time to Market – Implementation defects remaining
Planning (3-12 months) Stabilization (3-8 months) Development (6-12 months) Stabilization (3-8 months) Milestone 0 Subproject 1 Subproject 2 Subproject 3 Feature Complete Visual Freeze Release Code Complete
Release Planning (3-12 months) Stabilization (3-8 months) Development (6-12 months) Stabilization (3-8 months) Milestone 0 Subproject 1 Subproject 2 Subproject 3 Code, test,
(6-10 weeks) Integration test, debug (2-5 weeks) Buffer time (2-5 weeks)
– no more high-severity bugs have been found – decision to postpone fixing all remaining bugs until next release
– after check in deadline – build master generates complete build of product from master version
✤ ✥✦ ✧✩★ ✪ ✫ ✪ ✦ ✬ ✧✮✭ ✯✮✰ ✬ ✧ ✪✱ ✤ ✦ ✲ ✳ ★ ✴ ✵ ✰ ✥ ✥ ★ ✵ ✵ ✲ ✰ ✧✯✮✰ ✬ ✧ ✪ ✶ ✷ ✸ ✷✹ ✺ ✻ ✷✼ ✼ ✷ ✽ ✾ ✷ ✼ ✿ ❀ ❁ ✺ ✻ ✿ ❂ ❁ ✻ ✷ ❃ ✻ ✷✼ ✻ ✼ ✶ ❁ ✼ ✼ ✺ ✽ ✷✼ ❄ ❁ ✼ ✾ ✹ ❀ ✺ ❅ ✹ ✻ ✾ ✿ ❅ ❁ ❆ ✾ ✻❈❇ ❉ ✿ ✽ ❊ ✼ ✹ ✿ ✽ ✽ ✷✹ ✻ ❆ ❇ ✶ ❂ ❁ ❊ ✷✼ ❃ ❁ ✾ ❆ ❇ ❄ ✺ ✾ ❆ ❃ ❁ ❋ ❁ ✾ ❆ ❁ ❄ ❆ ✷ ✻ ✿ ❁ ❆ ❆– managers make all design decisions: structure of code and how to divide tasks – developers follow instructions & turn design into code
– developers involved in design – manager organizes, keeps records, makes sure decisions get made – success depends on personalities
– lab with “people off the street” – user interfaces tested
– to testing group for thorough testing – use highly structured scripts – “guerrilla” testing
✤ ✬ ✵ ✪ ✬✮✭ ✿ ✵ ✱ ★ ✾ ✬ ✽ ✱ ✺ ✵ ✭ ✶ ✦ ✷ ✬– work side by side with developers – developer shares private release with his testing buddy – do private release testing before code goes to daily build
– performance testing – internal usage – beta testing
– source code is one main document – try to keep code as simple as possible – compartmentalize code
– uses “Hungarian” rules for variable naming
✁ ✂☎✄ ✆ ✄✝ ✞✟ ✠ ✡☞☛ ✌✍ ✎✏✑ ✒✓ ✔✕ ✖ ✒ ✗ ✏ ✘ ✗ ✕ ✙ ✏ ✘ ✕ ✗ ✏ ✘ ✎ ✖ ✒ ✑ ✗ ✏ ✚ ✓ ✗ ✘ ✖ ✒ ✆– half life of source code is as little as 18 months
– more use of metrics
– design and code reviews
customer feedback through development
Excel)
interactive video are more "tightly coupled"
✁ ✂☎✄ ✆ ✝☎✞ ✆ ✟✡✠ ☛ ✆ ✞ ✄ ☞ ✌ ✍ ✟✡✠ ✌ ✍ ✝☎✞ ✎ ✞ ✍ ✝☎✞ ✍ ✟ ✏ ✂✒✑ ✍ ☞☎✓planning
Week 3 OOP, UML, Software Process Lecture 3: Last Details, Review
Many API classes implement Comparable Example: String implements Comparable
One way to show interface in Java: class box as before, with <<Interface>> stereotype note: no attributes compartment
Use a dashed generalization arrow from a class to an interface it implements
Interface is represented by a small circle with name of interface Solid line between interface and implementing class
Interfaces are very useful for writing generic (general-purpose) code Example: sorting Method to sort array of Employees useful
Another kind of object: must write a new sorting method Much better: general method for sorting Objects
problem: need to know how to compare pairs of objects no general answer solution: we will only sort arrays of objects that have a compareTo method – i.e. objects that implement Comparable now signature is void sort(Comparable arr[]) inside method, we can say
This is legal because the Employee class implements Comparable Sorts the array according to compareTo method in Employee So person owed the least money comes first, person owed the most money comes last
as first statement
Topics: – OOP (some review, some new) – UML – Software Process Logistics: – Monday in section where you are registered – will be 2 different versions – may bring a "cheat sheet" (8.5x11", both sides) – we will be strict about noise & movement – policy: we will not review papers with
Arrows:
✁ ✂ ✄✆☎ ✁ ✝ ✄ ✞ ✄ ✟ ✠ ✡☛ ☞✌ ☛✍ ✄ ✟ ✄ ☛Abstract Classes & Methods: use italics or write "abstract" Interface: use <<interface>> stereotype or represent by small circle (no methods shown)