240 likes | 449 Views
CS466: Tools and Processes for Software. Gio Wiederhold Dorothea Beringer Anca-Juliana Stoica. Goals, Lectures. Goal: Overview of some important topics of software engineering Basis for future studies - ongoing education UML modeling Design patterns Software development process models
E N D
CS466: Tools and Processes for Software Gio Wiederhold Dorothea Beringer Anca-Juliana Stoica Overview Software Engineering
Goals, Lectures Goal: • Overview of some important topics of software engineering • Basis for future studies - ongoing education • UML modeling • Design patterns • Software development process models • Software reuse, component-oriented software development • Software cost estimation • ... • Different views, invited speakers Overview Software Engineering
Sign Up • check out http://www-db.stanford.edu/cs446 Overview Software Engineering
Assignments • Modeling with UML • Assignment 1: Actors and Use Cases, Domain Model, for an electronic bookstore • Assignment 2: Design Model and Interaction diagrams for same problem as in assignment 1 • Assignment 3 (reverse engineering): Given a small software package and an incomplete use case model, make the interaction diagrams, the class diagram, a state chart, and try to model two additional features • Design Patterns • Assignment 4: apply and detect design patterns while modeling two (three) smaller problems • Cost Estimation • Assignment 5: Develop an estimate for a software product using tools and models: getting problem solution, analysis of results, option analysis, opportunity analysis, personnel impact, addressing the risks, model calibration Overview Software Engineering
Books for Assignments UML modeling: • "UML distilled", by Martin Fowler, 1997/1999 or another UML book Design Patterns: • "Design Patterns", by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 1994or another book containing the GoF design patterns Overview Software Engineering
Assignments: how to • Teams of two allowed for some assignments • Assignment 4 and 5: plan ahead! • Due dates: mostly Monday, yet plan for previous Friday!No late days! • Modeling assignments: require thinking and redoing. Goal is not to have just a model, but to have a good model! Overview Software Engineering
Reading for specific lectures • "No Silver Bullet: Essence and Accidents of Software Engineering", for Sept. 27 • "A Spiral Model of Software Development and Enhancement", for Oct. 6 • A case study for the lecture on software reuse organizations, for Oct. 13 • "Risk Management for Software Development", for Oct. 16 • "Software Cost Estimation", "Estimating work with use cases", for Nov. 17 Overview Software Engineering
NO Silver Bullet... Why no easy remedies? • Progress in hardware and thus possibilities for ever more complex software • Inherent characteristics of software (essence): • invisibility, many dimensions, hard to visualize • complexity, non-linear in scaling up • conformity, arbitrary complexity, interfaces • changeability, no classic production, glue, takes over soft parts of processes • Accidental difficulties: • ... Overview Software Engineering
Tools and Processes for Software (1) What do we need to develop a software system? • Basictools: Languages, Compilers, Debuggers • Basic know how: Basic tools, Language features, Algorithms, ... • More advanced tools: Libraries, Databases, Window-systems, Distribution-systems, … • More advanced know how: Features of advanced tools and their languages, Distributed architectures, Solutions to specific problems, … Let’s start developing the new baggage-control system for the next new airport…. or do we need something else? Overview Software Engineering
Processes and Tools for Software (2) n o c o n t r o l, i.e. for larger projects ( > a few hours): - results not predictable - schedule unknown - organizational chaos - random communication p r o j e c t m a n a g e m e n t Overview Software Engineering
Processes and Tools for Software (3) d a m a g e d g o o d s unpredictable and unexpected behavior q u a l i t y a s s u r a n c e Overview Software Engineering
Processes and Tools for Software (4) a d h o c h a n d c r a f t i n g e n g i n e e r i n g- planning- documenting- testing Overview Software Engineering
Silver Bullets Risk analysis Life-cycles Reuse Design Patterns Use-case driven Maintenance IEEE standards Evolutionary Prototyping SEI PMM Iteravite User acceptance ISO 9000 Spiral Paradigms Quality assessment Waterfall Requirements engineering Frameworks Component-management Reviews Participative development Objectory Configuration-management Inspection Activities Analysis Object-oriented Requirements elicitation UML Design Booch Phases Team building Process models Testing Walkthroughs RAD CASE-tools Software metrics Reliability Viewpoints Milestones Modeling techniques Project metrics Cost estimation TQM Overview Software Engineering
Standards (1) There exist many standards: • Process models, e.g. Spiral model of Boehm, Objectory of Rational • SEI Capability Maturity Model • IEEE standards, e.g. requirements document, • ISO standards, e.g. ISO 9000 - 9001 Many companies have in-house standards: • complementing public standards (e.g. ISO 9000) • adaptations of public standards, methods and models Booch UML SEI CMM IEEE standards ISO 9000 Overview Software Engineering
Standards (2) Standards describing overall Software Process Maturity http://www.software.org/quagmire/ Overview Software Engineering
Standards (3) http://www.ansi.org/catalog, search for software engineering • 1: IEEE 610.12-1990 : Standard Glossary of Software Engineering Terminology • 3: IEEE 1348-1995 : Recommended Practice for the Adoption of CASE • 4: IEEE 1219-1993 : Software Maintenance • 5: ANSI Z94.7 -1998 : Engineering Economy • 7: IEEE 1008-1987 : Software Unit Testing • 8: IEEE 1028-1988 : Software Reviews and Audits • 9: IEEE 1063-1989 : Software User Documentation • 10: ANSI/AIAA R-013-1992 : Software Reliability • 11: IEEE 1045-1993 : Software Productivity Metrics • 12: IEEE 1044-1994 : Classification for Software Anomalies • 15: ANSI/ANS 10.3-1995 : Documentation of Computer Software • 16: IEEE 828-1990 : Software Configuration Management Plans • 17: IEEE 829-1983 (R1991) : Software Test Documentation • 18: IEEE 1042-1987 : Guide to Software Configuration Management • 19: IEEE 1058.1-1987 : Software Project Management Plans • 20: IEEE 1061-1993 : Software Quality Metrics Methodology • 21: ANSI/NISO Z39.67-1993 : Computer Software Description • ………………... Overview Software Engineering
Dividing up the time-scale • having milestones, phases, activities • having models describing it (life-cycle models, process models) • having standards describing or requiring these models Evolutionary Process models Life-cycles Iterative Prototyping Spiral Waterfall Milestones Phases Objectory Activities Inception Req. elicitation Elaboration IEEE standards Analysis Construction Design ISO 9000 Transition Implementation Maintenance Overview Software Engineering
Modeling How do I catch and communicate my thoughts, concepts, and plans? Patterns Modeling techniques Paradigms Design patterns Booch Architecture patterns UML Object-oriented Frameworks VDM Use-case driven Z Data driven Risk driven Architecture driven CASE-tools Overview Software Engineering
What - When? Activities Modeling techniques Analysis Risk analysis Booch Design UML Implementation VDM Testing Project reviews Z Process models Milestones Phases Prototypes Inception Elaboration wwwwhh when, what, who, where, how, how much Construction Transition Overview Software Engineering
Money - People A software development project costs money. A software development project is carried out by people. Viewpoints Project metrics RAD Team building Cost estimation Prototyping Paradigms Milestones Object-oriented Process models Use-case driven Overview Software Engineering
Supermen Requirements engineering User acceptance • What is the problem? • What is the best, yet appropriate solution? • Bugs, bugs, Participative development Viewpoints Reviews Walkthroughs Prototyping Inspection Testing Quality assessment Reliability Phases Milestones Design Patterns Frameworks Analysis Design Overview Software Engineering
Order Standards Configuration-management Modeling techniques CASE-tools Standards Component-management Components Process model Frameworks Cost estimation Design Patterns Teambuilding Reuse Overview Software Engineering
Risk analysis Life-cycles Reuse Design Patterns Use-case driven Maintenance IEEE standards Evolutionary Prototyping SEI PMM Iteravite User acceptance ISO 9000 Spiral Paradigms Quality assessment Waterfall Requirements engineering Frameworks Component-management Reviews Participative development Objectory Configuration-management Inspection Activities Analysis Object-oriented Requirements elicitation UML Design Booch Phases Team building Process models Testing Walkthroughs RAD CASE-tools Software metrics Reliability Viewpoints Milestones Modeling techniques Project metrics Cost estimation TQM Quality Assurance Project Management quality personnel project leader programmers, developers Software Engineering Overview Software Engineering
Risk analysis Life-cycles Reuse Design Patterns Use-case driven Maintenance IEEE standards Evolutionary Prototyping SEI PMM Iteravite User acceptance ISO 9000 Spiral Paradigms Quality assessment Waterfall Requirements engineering Frameworks Component-management Reviews Participative development Objectory Configuration-management Inspection Activities Analysis Object-oriented Requirements elicitation UML Design Booch Phases Team building Process models Testing Walkthroughs RAD CASE-tools Software metrics Reliability Viewpoints Milestones Modeling techniques Project metrics Cost estimation TQM Business Sciences Engineering Sciences Social Sciences Overview Software Engineering