Object-Oriented Software Quality Engineering Fall 2008 © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 1 Course Overview © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 2 Logistics • • • • Instructor: Soheila Bashardoust Office hours: Wednesdays 2:30-4:30PM @ HP5270 E-mail: sbtajali@scs.carleton.ca Any relevant material to be put in: www.scs.carleton/~sbtajali/4004 – slides will refer to (but not include) pictures of the textbook: bring it to each lecture! – slides will be posted on the course web-site every week © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 3 Warnings!! • Prereqs: – you MUST have taken COMP 2004 and COMP 3004 » this course involves MODELING and Java expertise • model creation will be VERY time consuming! • there is fixing more than programming per se • November 7'th: deadline to drop... • Paul Menton Centre: – Students with disabilities requiring academic accommodations in this course are encouraged to contact a coordinator at the Paul Menton Centre for Students with Disabilities to complete the necessary letters of accommodation. After registering with the Paul Menton Centre, make an appointment to meet and discuss your needs with ME at least two weeks prior to the inclass final exam. This is necessary in order to ensure sufficient time to make the necessary arrangements. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 4 Books • Compulsory: – R. Binder, Addison-Wesley, 2000 » Testing Object-Oriented Systems » I repeat, I will be referring to BUT NOT POSTING the figures of the book! • Other useful design references: – Hassan Gomaa, Addison-Wesley, 2000 » Designing concurrent, distributed real-time applications with UML – B. Douglass, Addison-Wesley, 1999 » Doing Hard Time © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 5 Objectives of this Course At the end of this course, you should: • Have a good understanding of how to build testable models. – Roughly put, testable models are models from which tests can be derived • Have a basic understanding of the techniques used to derived tests from testable models. • Understand the issues involved in: – testing classes (esp. in Java) – maintaining traceability between testable models, code and tests. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 6 Learning Method • In the assignments, you will: – develop testable models for a specific case study supplied by the instructor – study the Java code corresponding to the supplied models and augment it with assertions (discussed late in the term) – generate tests and execute test cases in order to validate this code and verify it against the models you will have produced » more on tests vs. test cases, validation vs. verification later! – document traceability between models, code, tests and test cases – investigate support for SQE in Eclipse – time permitting: » make necessary corrections and link them to previous versions • In class, we will: – study Binder ’s material – ATTEMPT TO relate his material to the assignments! © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 7 Course Deliverables • Iteration 1: (test model creation and use) due Oct 20 – study models and code supplied for the J-Unit case study – develop a suite of testable models » this will require augmenting/correcting some of the supplied models as well as developing other testable models – produce a suite of tests for the validation and verification of the system as a whole, as well as for a specific class – select some test cases from these tests • Iteration 2: (model/code-based testing) due Nov 20 – develop a partial contract for specific classes – investigate support for contracts, test cases, test models, test strategies and traceability in Eclipse – use all what you have learnt to test as much as possible the supplied system: document tests and try to find faults!! • Final Exam: open book exam on all material discussed in the course... © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 8 More Logistics • Marking scheme: – – – – 25% for the first iteration 25% for the second iteration 5% for presentation 45% for the final • About marking: – marking in this course is admittedly subjective: » the responsibility is YOURS to provide all necessary explanations… A posteriori arguments are not accepted! » debates about marks will NOT be allowed » marking will be relative to others and to ‘ planted ’ errors in the material supplied by the instructor! • Assignments may be done alone or preferably in pairs or triples! – No consideration for vanishing members, work distribution, etc. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 9 And in the rest of this lecture We shall: • Motivate the importance of Software Quality Engineering • Give you an idea of what the viewpoint of this course will be • Overview what you should already have a basic understanding of © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 10 Crisis? What Crisis? Quality? What Quality? © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 11 Hardware vs Software • Hardware costs are decreasing: – hardware is fast and generally reliable • Complexity is now mostly introduced at the software level • And software is constantly maintained and evolved. • Zero-defect programming is still a pious wish! – only 0.3% faults on parachutes does not cut it... – Formal (i.e., math based) approaches (in terms of completeness and proofs) are used for safety-critical applications. • How are we doing with respect to quality in general? © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 12 Yourdon: The Reality of Software • Software is commonly delivered late, way over budget, and with unsatisfactory quality • Software technologies are seldom evaluated • Software development processes are unstable and uncontrolled • Software quality is poorly measured, monitored, and controlled. • Famous software failures are frequent: – … read on …. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 13 Famous Software Bugs • Therac-25 (1985-1987) – Six people were overexposed during radiation treatments for cancer by Canada's Therac-25 radiation therapy machine. Three of these patients were believed to have died from the overdoses. The root cause was a lack of quality assurance, which lead to an over-complex, inadequately tested, under-documented system developed, and subsequently to the failure to take adequate corrective action. (Pooley & Stevens, 1999) • London Ambulance System (1992) – A succession of software engineering failures, especially in project management, caused 2 failures of London's (England) Ambulance dispatch system. The repair cost was estimated at £9m, but it is believed that people died who would not have died if ambulances had reached them as promptly as they would have done without the failures. • Denver baggage handling system – The Denver airport baggage handling system was so complex (involving 300 computers) that the development overrun prevented the airport from opening on time. Fixing the incredibly buggy system required an additional 50% of the original budget - nearly $200m. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 14 Famous Software Bugs • Taurus (1993) – Taurus, the planned automated transaction settlement system for the London Stock Exchange was canceled after 5 years of failed development. Losses are estimated at £75m for the project and £450m to customers. (Pooley & Stevens, 1999) • Ariane 5 (1996) – The Ariane 5 rocket exploded on its maiden flight in June [4], 1996 because the navigation package was inherited from the Ariane 4 without proper testing. The new rocket flew faster, resulting in larger values of some variables in the navigation software. Shortly after launch, an attempt to convert a 64-bit floating-point number into a 16-bit integer generated an overflow. The error was caught, but the code that caught it elected to shut down the subsystem. The rocket veered off course and exploded. It was unfortunate that the code that failed genereated inertial reference information useful only before lift-off; had it been turned off at the moment of launch, there would have been no trouble. (Kernighan, 1999) © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 15 Famous Software Bugs • E-mail buffer overflow (1998) – Several E-mail systems suffer from a "buffer overflow error", when extremely long e-mail addresses are received. The internal buffers receiving the addresses do not check for length and allow their buffers to overflow causing the applications to crash. Hostile hackers use this fault to trick the computer into running a malicious program in its place. • USS Yorktown (1998) – A crew member of the guided-missile cruiser USS Yorktown mistakenly entered a zero for a data value, which resulted in a division by zero. The error cascaded and eventually shut down the ship's propulsion system. The ship was dead in the water for several hours because a program didn't check for valid input. (reported in Scientific American, November 1998) • Mars Climate Orbiter (September 23rd, 1999) – The 125 million dollar Mars Climate Orbiter is assumed lost by officials at NASA. The failure responsible for loss of the orbiter is attributed to a failure of NASA’s system engineer process. The process did not specify the system of measurement to be used on the project. As a result, one of the development teams used Imperial measurement while the other used the metric system of measurement. When parameters from one module were passed to another during orbit navigation correct, no conversion was performed, resulting in the loss of the craft. http://mars.jpl.nasa.gov/msp98/orbiter/ © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 16 • Books to read by Ed Yourdon : – Death March: The Complete Developer’s Guide to Surviving “Mission Impossible” Projects. Prentice-Hall, 1997 – Rise and resurrection of the American programmer, Prentice-Hall, 1996 © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 17 Yourdon’s Death March Projects • Definition 1: Project parameters exceed the norm by >50% because of: – Schedule compression (most common) – Staff reduction – Budget/resource constraints – Functionality/performance demands • Definition 2: risk assessment (technical, legal, political, etc.) indicates >50% chance of failure... • Observation: this is now the norm, not the exception!! © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 18 Yourdon’s Explanations • • • • • • • • • Politics, politics, politics: lack of culture of quality!! Naive promises made by marketing, senior executives, project managers, etc. Naive optimism of youth: “we can do it over the weekend” “Startup” mentality: we’ll go berserk for a few years “Marine Corps” mentality: “real men don’t need sleep” Intense competition caused by globalization of markets Intense competition caused by appearance of new technologies: CORBA and Java as complexity enabling… Intense pressures caused by unexpected government regulations Unexpected and/or unplanned crises — e.g., your vendor went bankrupt, or your 3 best programmers just died of Bubonic Plague © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 19 Why Software Engineering? • We are always looking for recipes and tools for software development. • “It’s better than nothing” is a standard excuse to downplay the flaws of current notations, methods and tools: – there are some serious issues (e.g., the layout of statecharts, R. Castello et al., Software - Practice and Experience, 2001) that should question what the dominant paradigm suggests as a solution... • In theory, we want to: » do the right things » do things right » know that we have done the right things » know that we have done things right – In practice, first-to-market software will often gain acceptance, then will condition its users to expect less, and finally will be eventually improved to a point that is almost the right thing. – In practice, most often, code IS the only reality, with models, if any, quickly falling out of sync. And code and error fixing are usually still the basis for your performance evaluation. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 20 About Software Engineering • A huge field: – “Software Engineering”, IEEE Computer Society, 1997 • A possible definition for Software Engineering from Tim Lethbridge (UofO): : – “Solving problems by the development of quality software within cost, time and other constraints.” • B. Douglass (“Doing Hard Time”) has a detailed OO development process for real-time systems but has nothing to directly say with respect to quality. Similarly, H. Gomaa has a wonderful book about the design of OO real-time systems but ignores quality issues altogether... • D’Souza and Wills (“UML,components and framekworks: The Catalysis Approach”) refer to the integrity of software as meeting business requirements. They also value team development and flexibility as key requirements for software. • We are concerned in this course with what quality means and how to achieve it? © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 21 About Software Development • Types of constraints: – – – – Limited cost, time, supply of people, abilities of people Inherent complexity of the task we tackle Limitations of hardware, of compilers, of algorithms, etc. Legacy code, processes, habits • Human factors in quality emphasize the fact that software development has a engineering and a social side: – specific engineering decisions are often permeated by human biases (wrt notation, use of patterns, use of O-T-Shelf components…, etc.) • Software development as an investment: – There are expected benefits, but also potential risks – Pious wish: We should not compromise on quality even though we do have constraints: » But in fact, this compromise is omnipresent in the software industry… • The questions remain: – What is quality software? – What to do in order to obtain quality s/w? © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 22 Definitions • S/W Quality Engineering (SQE): The discipline of specifying and controlling the quality of software products • S/W Management: The discipline of managing projects to achieve quality within time constraints and budget • S/W (Quality and Productivity) Improvement: The discipline of identifying weaknesses in current S/W development practices and implement improvements. • Only SQE is the topic of this course! – And in fact, we are even more specifically looking at the use of test(able) models for testing code. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 23 About Quality Software • According to Lethbridge: – “Quality software is software that is sufficient in various aspects such that utility over the maximum reasonable life-span is maximized.” – Utility is informally defined in terms of cost and productivity… – Is this a useful definition? Sufficiency? Productivity? • For Bob Probert (UofO): – Quality should be defined using customer-directed terms – Quality attributes must be measurable to some useful degree during design, development and test. • Aspects (or attributes) of quality include: completeness, correctness, understandability, usability, efficiency, reusability, maintainability, etc. • If we had no constraints, we could, at least in theory, achieve infinite quality… – In reality, testing is almost unavoidably incomplete… » see quote at the very beginning of Binder’s book... © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 24 SQE and Measurement • Usual ‘goals’ of SQE: – – – – Monitor and control quality and productivity Predict and estimate quality and productivity Understand and evaluate software development practices Evaluate the impact of new technologies • Monitoring, estimating, evaluating all depend on the ability to measure... © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 25 Typical Focus in SQE Most authors concerned with quality emphasize the importance of metrics and measurement: • “You cannot control what you cannot measure”, Tom DeMarco • “Projects without clear goals won’t achieve their goals clearly”, Tom Gilb • “Measurement is the process by which numbers or symbols are assigned to attributes of entities in the real world in such a way to describe them accordingly to clearly defined rules” Norman Fenton © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 26 Focus in this Course • We will emphasize product quality engineering, and downplay process issues and measurement. – We will emphasize code testing against testable models. • We will not emphasize: – Software maintenance and evolution » “Software Evolution”, L.J. Arthur, John Wiley & Sons, 1988 • Change management; impact analysis; corrective, adaptive, perfective maintenance; reengineering, maintenance testing, configuration management, managing maintenance – Software release » “Software release methodology”, M. Bays, PH, 1999: • Source code control, builds, defect tracking, system integration, change control, product release classification and numbering, release distribution, service strategies, release management and planning – The mathematics of the art of measurement: » “The art of measurement”, R. Potter, HP, 2000 – Software Management and Software Improvement © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 27 Pervasive SQE • It is well documented that late errors can be extremely expensive to fix. – We will emphasize pervasive SQE via the use of testable models » conversely, the dominant culture still reduces SQE to testing as a phase at the end of the process… » in practice, a lot of testing occurs after the product has been released… SIGH! • >65% (and up to 80%)of the software lifecycle is spent in maintenance (ie testing, fixing, evolving…) – The more statements need to be modified, the less successful the fix or evolution will be… – Some companies force rewrites when faced with hard-to-find, hard-to-fix bugs… • We will promote SQE activities in parallel with design and code: » design for testability and code for testability are NOT dominant ideas at this point in time… Alas... © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 28 SQE Texts (1) • Software Verification and Validation – S. Rakitin, Artech House, 1997 » Talks about the software crisis, the economic justification of SQE, why a process for quality. » Promotes an inspection process for requirements, design, code and tests » Addresses software quality metrics, configuration management, testing, validation metrics and reliability very concisely! – Reflects what most companies will do at best… • Customer Oriented Software Quality Assurance – F. Ginac, PH, 1998 » Another short book that addresses SQE from a practical viewpoint » Touches on quality attributes and metrics; test methods, types and tools; CMM and ISO 9000 appraisal of processes © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 29 SQE Texts (2) • Metrics and Models in Software Quality Engineering – S. H. Kan, Addison-Wesley, 1995 » Excellent discussion of process models and process quality standards » Good introduction to fundamentals of measurement theory, software quality metrics, complexity metrics » Includes more advanced and specific topics, such as defect removal effectiveness, reliability growth models, analyzing customer satisfaction – Please note that Prof. Lionel Briand in Systems and Engineering has a graduate course (94.579) on measurement. He uses: » N. Fenton, S. Pfleeger, Software Metrics: A Rigorous and Practical Approach, PWS, 1996 » B. Kitchenham, Measurement for Process Improvement, 1995, out of print © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 30 Course Topics • Introduction to the fundamental concepts, terminology and techniques of SQE • Exposure to the models and test derivation techniques used in industry for object-oriented testing: – we are concerned with testable models and how to use them to get tests and test cases » why testable models? Because it is well documented that most ( > 80%) errors are design-related errors… » And code must be tested against models… rather than by itself! – we are concerned with code testing – we are concerned with traceability (eg for regression testing) © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 31 Quality • What do we mean by Quality? © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 32 The Timeless Way of Building • Christopher Alexander, Oxford University Press, 1979, (Detailed Table of Contents, ix-xv) • The Timeless Way • A building or town will only be alive to the extent that it is governed by the timeless way. – 1. It is a process which brings order out of nothing but ourselves; it cannot be attained, but it will happen of its own accord, if we will only let it. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 33 The Quality • To seek the timeless way we must first know the quality with out a name – 2. There is a central quality which is the root criterion of life and spirit in man, a town, a building or a wilderness. This quality is objective and precise, but it cannot be named. – 3. The search which we make for this quality, in our own lives, is the central search of any person, and the crux of any individual person's story. It is the search for those moments and situations when we are most alive. – 4. In order to define this quality in buildings and in towns, we must begin by understanding that every place is given its character by certain patterns of events that keep on happening there. – 5. These patterns of events are always interlocked with certain geometric patterns in space. Indeed, as we shall see, each building and each town is ultimately made out of these patterns in the space, and out of nothing else; they are the atoms and the molecules from which a building or town is made. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 34 The Quality • 6. The specific patterns out of which a building or a town is made may be alive or dead. To the extent they are alive, they let out inner forces loose, and set us free; but when they are dead, they keep us locked in inner conflict. • 7. The more living patterns there are in a place - a room, a building, or a town - the more it comes to life as an entirety, the more it glows, the more it has that self-maintaining fire which is the quality without a name. • 8. And when a building has this fire, then it becomes a part of nature. Like ocean waves, or blades of grass, its parts are governed by the endless play of repetition and variety created in the presence of the fact that all things pass. This is the quality itself. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 35 The Gate • To reach the quality without a name we must then build a living pattern language as a gate. 9. This quality in buildings and in towns cannot be made, but only generated, indirectly, by the ordinary actions of people, just as a flower cannot be made, but only generated from the seed. – 10. The people can shape buildings for themselves, and have done it for centuries, by using languages which I call pattern languages. A pattern language gives each person who uses it the power to create an infinite variety of new and unique buildings, just as his ordinary languages gives him the power to create an infinite variety of sentences. – 11. These patterns languages are not confined to villages and farm society. All acts of building are governed by a pattern language of some sort, and the patterns in the world are there, entirely because they are created by the pattern languages which people use. – 12. And, beyond that, it is not just the shape of towns and buildings which comes from pattern languages - it is their quality as well. Even the life and beauty of the most awe-inspiring great religious buildings came from the languages their builder used. – 13. But in our time the languages have broken down. Since they are no longer shared, the processes which keep them deep have broken down; and it is therefore virtually impossible for anybody, in our time, to make a building live. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 36 The Gate – 14. To work our way towards a shared and living language once again, we must first learn how to discover patterns which are deep, and capable of generating life. – 15. We may then gradually improve these patterns which we share, by testing them against experience; we can determine, very simply, whether these patterns make our surroundings live, or not, by recognizing how they make us feel. – 16. Once we have understood how to discover individual patterns which are alive, we may then make a language for ourselves for any building task we face. The structure of the language is created by the network of connections among individual patterns: and the language lives, or not, as a totality, to the degree these patterns form a whole. – 17. Then finally, from separate languages for different building tasks, we can create a larger structure still, a structure of structures, evolving constantly, which is the common language of a town. This is the gate. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 37 The Way • Once we built the gate, we can pass through it to the practice of the timeless way. • – 18. Now we shall begin to see in detail how the rich and complex order of a town can grow from thousands of creative acts. For once we have a common pattern language in our town, we shall all have the power to make our streets and buildings live, through our most ordinary acts. The language, like a see, is the genetic system which gives our millions of small acts the power to form a whole. – 19. Within this process, every individual act of building is a process in which space gets differentiated. It is not a process of addition, in which preformed parts are combined to create a whole, but a process of unfolding, like the evolution of an embryo, in which the whole precedes the parts, and actually gives birth to them, by splitting. – 20. The process of unfolding goes step by step, one pattern at a time. Each step brings just one pattern to life; and the intensity of the result depends on the intensity of these individual steps. – 21. From a sequence of these individual patterns, whole buildings with the character of nature will form themselves within our thoughts, as easily as sentences. – 22. In the same way, groups of people can conceive their larger public buildings, on the ground, by following a common pattern language, almost as if they had a single mind. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 38 The Way – 23. Once the buildings are conceived like this, they can be built, directly, from a few simple marks made in the ground - again within a common language, but directly, and without using drawings. – 24. Next, several acts of building, each one done to repair and magnify the product of the previous acts, will slowly generated a larger and more complex whole than any single act can generated. – 25. Finally, within the framework of a common language, millions of individual acts of building will together generate a town which is alive, and whole, and unpredictable, without control. This is a the slow emergence of the quality without a name, as if from nothing. – 26. And as the whole emerges, we shall see it take that ageless character which gives the timeless way its name. This character is a specific, morphological character, sharp and precise, which must come into being any time a building or a town becomes alive: it is the physical embodiment, in buildings, of the quality without a name. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 39 The Kernel of the Way • And yet the timeless way is not complete, and will not fully generate the quality without a name, until we leave the gate behind. – 27. Indeed this ageless character has nothing, in the end, to do with languages. The language, and the processes which stem from it, merely release the fundamental order which is native to us. They do not teach us, they only remind us of what we know already, and of what we shall discover time and time again, when we give up our ideas and opinions, and do exactly what emerges from ourselves. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 40 Appendix Some Review Material (with an angle for testing) (From 95.304…) © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 41 Divide and Conquer Strategy Faced with a complex problem our usual strategy is to Divide and Conquer • Break the problem into smaller, more manageable sub-problems and solve them separately. • There are different ways for dividing complex problems into simpler problems: -as steps or tasks to be carried out -as assignment of responsibility © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 42 SA/SD Modeling • Modeling tackled the system or a subsystem – testing was oriented towards testing of procedures (see next slide) • Three kinds of models were used: – ER, DFD, FSM • Each model being used offered a view of the (sub)system being modeled as a whole: – e.g., Hatley/Pirbhai and Ward/Mellor advocated one FSM for the whole system – FSMs are apparently excellent for testing… » see Figure 7.3 p.182 for different FSM notations • Semantically, it was not clear how the different models being used should be integrated – e.g., were your DFD and FSM consistent? © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 43 Procedure Abstraction Programs = Data Structures + Algorithms Data Procedure Procedure Procedure Procedure Procedure Procedure Procedure © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 44 Data Abstraction Procedures and Encapsulated Data Stack Procedure Procedure Queue Procedure Procedure Employee Procedure Procedure Procedure © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 45 Modular Abstraction Objects Vehicle subclass: Car start() choke() brake() injectFuel() accelerate() unlockBrake() steer() serialNumber engine © Adapted from Dr. Deugo, Fall 2008 wheels COMP 4004 – Lecture01 46 Interacting Modules Object-Orientation Traffic Light Procedure Procedure Car Driver Procedure Procedure Procedure Procedure © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 47 Main Models for OO Requirements Capture Analysis Design © Adapted from Dr. Deugo, Fall 2008 Requirements Models Analysis Models Design Models Requirements Doc. Scenario Descriptions Domain Objects Structure Model Object Diagrams CRC Cards Scenario Model Interaction Diagrams Behavior Model Finite State Machines COMP 4004 – Lecture01 48 A Few Facts • Notations are merely syntax: they don’t say how. – UML (Unified Modeling Language) is the dominant notation. – We will study Binder ’s criticism of UML wrt testability! • Methods edict rules: – no heuristic, let alone no rule, holds for all situations – OO system modeling is not a science but the realm of heuristics and patterns – Existing methods downplay validation and verification and generally ignore traceability • OO Assertional/Formal methods exist but: – are not very user-friendly – don’t necessarily scale up – are not very object-oriented » The semantics of inheritance complicates things! – and yet are at the basis of a multitude of testing papers... © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 49 Aiming for Traceability • Boehm insists that a development process must not only be iterative but also incremental. • Traceability is required to achieve convergence: – we must document the continuity that must exist between the workproducts of different activities. – in turn, continuity enables completeness and consistency checks, which are at the basis of validation and verification. • Verification: Within a particular activity, the work-products must be consistent: – e.g., the structural, scenario and behavior models must be consistent » For example, if an interaction diagram shows an object receiving a message, then the FSM of this object must reflect this possibility • Validation: Work-products must also be complete with respect to the current requirements. • Traceability is key to successful change impact analysis, root cause analysis and regression testing. © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 50 About Decoupling Encapsulation: • The right (??) responsibilities must be encapsulated, and encapsulation must be respected • Encapsulation should expose interface and hide implementation: – is this good or bad news wrt testing?? More facets of Decoupling: - Areas of responsibility should be decoupled from each other so changes in one do not require changes in others - this is good for testing - Inheritance used in combination with dynamic binding for subtyping SHOULD decouple an interface (parent) from its implementations (subclasses). It may not… - inheritance introduces challenges wrt testing... - OO Design Patterns propose solutions to common OO design problems. These solutions systematically emphasize decoupling. But there is little to no consideration of testing... © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 51 Testing and OOPLs Detailed testing will have to address specifics of an OOPL. For example, in Java/C++: – You must declare the type of every variable » Some type relaxation: base class pointer or reference can refer to a derived class object and… there is casting... – Fast and ‘safe’ (?) compilation » Compile time error detection » but can you debug it? And should it be a run-time feature: this is a design error… – Programmers allocate and de-allocate memory » Implies a distinction between pointers and non-pointers » Memory leaks and dangling references are frequent errors... – C++ offers both static and dynamic method binding: don’t confuse with dynamic typing! » Dynamic binding introduces its own set of errors... © Adapted from Dr. Deugo, Fall 2008 COMP 4004 – Lecture01 52