Software engineering Facts. CSC Compiler Construction Software Engineering Topics. What is software engineering? What is software?

Similar documents
Part 1. Software engineering Facts. CSC 4181 Compiler Construction Software Engineering Lectures. What is software engineering? What is software?

Lecture 5. Software Processes CSC 4700 Software Engineering. Software Development Processes. The software process

Software Engineering Lecture 5 Agile Software Development

Software Processes. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 4 Slide 1

Lecture 1. Topics covered. Rapid p development and delivery is now often the most important requirement for software systems.

Software Processes 1

Lecture 1. In practice, most large systems are developed using a. A software process model is an abstract representation

Software Processes. Objectives. Topics covered. The software process. Waterfall model. Generic software process models

Objectives. The software process. Topics covered. Waterfall model. Generic software process models. Software Processes

Lectures 2 & 3. Software Processes. Software Engineering, COMP201 Slide 1

REQUIREMENTS ENGINEERING

The software process

Chapter 3 Agile Software Development. Part 1b

Software Engineering Chap.3 - Agile Software Development

Topics covered. Software process models Process iteration Process activities The Rational Unified Process Computer-aided software engineering

Agile Manifesto & XP

Chapter 3 Agile Software Development

Agile Development Processes. CSCE Lecture 3-08/31/2017

Based on Software Engineering, by Ian Sommerville Coherent sets of activities for specifying, designing, implementing and testing software systems

II. Software Life Cycle. Laurea Triennale in Informatica Corso di Ingegneria del Software I A.A. 2006/2007 Andrea Polini

8/30/2010. Lecture 1. Topics covered. Functional and non-functional requirements The software requirements document Requirements specification

CMSC 435: Software Engineering Section Back to Software. Important: Team Work. More Resources

Lecture 8 Agile Software Development

Objectives. Rapid software development. Topics covered. Rapid software development. Requirements. Characteristics of RAD processes

Agile Software Development:

Chapter 9 Software Evolution and Maintenance. Chapter 9 Software evolution

SWE 211 Software Processes

Extreme Programming, an agile software development process

Software Engineering

Agile Projects 7. Agile Project Management 21

Introduction to Software Engineering

Software Engineering & Project Management Engr. Abdul-Rahman Mahmood MS, PMP, MCP, QMR(ISO9001:2000)

Chapter 6: Software Evolution and Reengineering

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

Chapter 8 : Informatics Practices. Software engineering- Process activities and Agile methods. Class XII ( As per CBSE Board) New Syllabus

Software Engineering

Agile Software Development. Agile Software Development Basics. Principles of the Agile Alliance. Agile Manifesto. Agenda. Agile software development

An Overview of Software Process

Software Engineering QUESTION BANK

Software Engineering Part 2

MODULE Explain briefly the different types of system models that might be created during the system analysis phase. 2. Write short notes on

Tuesday, October 25. Announcements

Foundations of Software Engineering. Process: Agile Practices Michael Hilton

By: Ronny Trefftzs CSCI 5828: Foundations of Software Engineering Spring 2012 Professor: Kenneth Anderson

Systematic Testing#1. (adapted from lecture notes of the CSCI 3060U - Software Quality Assurance unit, J.S. Bradbury, J.R.

CS350 Lecture 2 Software Dev. Life Cycle. Doo-Hwan Bae

18-642: Software Development Processes

Software Process. Overview

Software Design COSC 4353/6353 D R. R A J S I N G H

CS 5704: Software Engineering

FIT2101 Software Engineering Process and Management

CTC/ITC 310 Program Management California State University Dominguez Hills First Exam Answer Key November 20, 2018 Instructor: Howard Rosenthal

This document is copyrighted, the distribution of this document is punishable by law.

Sample Exam ISTQB Agile Foundation Questions. Exam Prepared By

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Processes and Life- Cycles. Kristian Sandahl

CTC/ITC 310 Program Management California State University Dominguez Hills Final Exam Answer Key December 13, 2018 Instructor: Howard Rosenthal

Plan-driven and agile specification. 3 rd Stage. Subject: Software Engineering. Lecture time: 8:30 AM-2:30 PM. Class room no.: Lecture No.

Rapid software development

SOFTWARE ENGINEERING SOFTWARE-LIFE CYCLE AND PROCESS MODELS. Saulius Ragaišis.

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

AGILE SOLUTIONS. Agile Basics

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

Agile-R. intecs Solutions. A new approach to combine Agile and EN for Railway software development. Agile-R. Trademark registered

Chapter 16 Software Reuse. Chapter 16 Software reuse

Agile Architecture how much is enough?

Software Development Life Cycle

Chapter 16 Software Reuse. Chapter 16 Software reuse

CONTENTS. Introduction to Software Engineering. Software Process and Life Cycle Models. Software Life-Cycle Model-2. Chapter 1. Chapter 2.

Chapter 4 Document Driven Approach for Agile Methodology

Processes and Life- Cycles. Kristian Sandahl

User-centered System Design. Agile

Introduction to Agile/Extreme Programming

Improving the Test Process

Agile. How would you implement agile methodologies and tools for web projects? What do you see as the benefits and challenges to doing this?

2. True or false: In Scrum all the requirements for the project are known prior to the start of development.

Introduction To Software Testing. Brian Nielsen. Center of Embedded Software Systems Aalborg University, Denmark CSS

The Software Life Cycle

Planning and the Software Lifecycle. CSCE Lecture 2-08/26/2015

Agile/Lean & Safety: Perfect Match or Impossible Combination?

Darshan Institute of Engineering & Technology for Diploma Studies Rajkot Unit-1

Mike Vincent. mvasoftware.net

Configuration management. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 29 Slide 1

8 th of April 2015 Bucharest, Romania Vlad Gabriel Sorin Agile PM/Scrum Master

Management by Consensus

Software Engineering COMP 201

Objectives. Topics covered. Software project management. Management activities. Software management distinctions. Project management

Chapter 3. Information Systems Development. McGraw-Hill/Irwin. Copyright 2007 by The McGraw-Hill Companies, Inc. All rights reserved.

Configuration management. Configuration management. Objectives. Configuration management. Topics covered. System families

Chapter 3 Prescriptive Process Models

The Software Life Cycle

Succeed with Agile at Scale

Agile Certified Professional

Volume 8, No. 1, Jan-Feb 2017 International Journal of Advanced Research in Computer Science RESEARCH PAPER Available Online at

Chapter 2 Objectives. Pfleeger and Atlee, Software Engineering: Theory and Practice (edited by B. Cheng) Chapter 2.

Improving Agile Execution in the Federal Government

Functional and non functional requirements. Requirements elicitation Requirements analysis Requirements validation Requirements management

13. Team evolutionary developement

Transcription:

Software engineering Facts CSC 4181 - Compiler Construction Software Engineering Topics Fact: The economies of ALL developed nations are dependent on software. Fact: More and more systems are software controlled Fact: Expenditure on software represents a significant fraction of GNP in all developed countries. Fact: Software often costs more than the computer it runs on. Fact: Software costs more to maintain than to develop Dr. Tom Way CSC 4181 Slide 1 Dr. Tom Way CSC 4181 Slide 2 Software is: What is software? Computer programs Source code Executables, binaries, runtimes Associated documentation Requirements Design models User manuals What is software engineering? Software engineering (SE) is the design, development, and documentation of software by applying technologies and practices from computer science, project management, engineering, application domains, interface design, digital asset management and other fields. Term was invented in 1968 Used to be called programmer or systems analyst Dr. Tom Way CSC 4181 Slide 3 Dr. Tom Way CSC 4181 Slide 4 Why do we need Software Engineering? Software is big business Bad software is expensive to a company Stakes are very high Having a good plan and good process improves chances for success Lots of high paying jobs in software Software Development Processes Dr. Tom Way CSC 4181 Slide 5 Dr. Tom Way CSC 4181 Slide 6

The software process The old way A structured set of activities required to develop a software system Specification; Design; Validation; Evolution. A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. The way software is engineered has evolved over the years The new ways of software engineering resemble the old ways in a lot of ways See if you can make out the resemblance Dr. Tom Way CSC 4181 Slide 7 Dr. Tom Way CSC 4181 Slide 8 Waterfall Model Waterfall Model Inflexible partitioning into distinct stages makes it hard to deal with changing customer requirements. Only works when requirements are wellknown and few changes are expected which is rare! The waterfall model is still used for some large, multi-site projects, but used less and less Dr. Tom Way CSC 4181 Slide 9 Dr. Tom Way CSC 4181 Slide 10 Evolutionary development Evolutionary development Problems Throw-away prototyping might waste work Lack of process visibility Systems are often poorly structured, evolve Special skills (e.g. in languages for rapid prototyping) may be required Applicability For small or medium-size interactive systems; For parts of large systems (e.g. the user interface); For short-lifetime systems. Dr. Tom Way CSC 4181 Slide 11 Dr. Tom Way CSC 4181 Slide 12

Incremental development Process Iteration & Incremental Delivery System requirements ALWAYS evolve in the course of development Iteration can be applied to any of the generic process models Break down software into releases, deliver incrementally (version 1.0, version 2.0, etc.) Freeze requirements during a release Dr. Tom Way CSC 4181 Slide 13 Dr. Tom Way CSC 4181 Slide 14 Spiral model of the software process Spiral development Process is represented as a spiral rather than as a sequence of activities with backtracking. Each loop in the spiral represents a phase in the process. No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required. Risks are explicitly assessed and resolved throughout the process. Dr. Tom Way CSC 4181 Slide 15 Dr. Tom Way CSC 4181 Slide 16 The new way The Agile Approach (1) Agile it s Spiderman at the keyboard Extreme it s like totally radical Scrum what s rugby got to do with it? Continuous delivery of software Cycle is weeks rather than months Working software is the principal measure of progress Even late changes in requirements are welcomed Close, daily, cooperation between business people and developers Face-to-face conversation is the best form of communication. Dr. Tom Way CSC 4181 Slide 17 Dr. Tom Way CSC 4181 Slide 18

The Agile Approach (2) Extreme programming Projects are built around motivated individuals, who should be trusted Continuous attention to technical excellence and good design Simplicity Self-organizing teams Regular adaptation to changing circumstances From the Agile Manifesto (Google it) (HANDOUT) Perhaps the best-known and most widely used agile method. Extreme Programming (XP) takes an extreme approach to iterative development. New versions may be built several times per day New version delivered every 2 weeks All tests run with each build, all must pass Doesn t reinvent the wheel use COTS whenever possible and affordable Dr. Tom Way CSC 4181 Slide 19 Dr. Tom Way CSC 4181 Slide 20 The XP release cycle Extreme programming practices 1 Dr. Tom Way CSC 4181 Slide 21 Dr. Tom Way CSC 4181 Slide 22 Extreme programming practices 2 Problems with agile methods It can be difficult to keep the interest of customers who are involved in the process. Team members may be unsuited to the intense involvement that characterises agile methods. Prioritizing changes can be difficult where there are multiple stakeholders. Maintaining simplicity requires extra work. Contracts may be a problem as with other approaches to iterative development. Dr. Tom Way CSC 4181 Slide 23 Dr. Tom Way CSC 4181 Slide 24

Testing in XP Test-first or Test-driven development (TDD) For each and every component (class, module, whatever) you develop, add one or more tests at the same time Building means compiling the code and running all the tests, automatically Keeps software working all the time Pair programming In XP, programmers work in pairs, sitting together to develop code. This helps develop common ownership of code and spreads knowledge across the team. It serves as an informal review process as each line of code is looked at by more than 1 person. It encourages refactoring as the whole team can benefit from this. Measurements suggest that development productivity with pair programming is similar to that of two people working independently. Dr. Tom Way CSC 4181 Slide 25 Dr. Tom Way CSC 4181 Slide 26 SCRUM Approach SCRUM stuff Backlog list of all of the tasks to get done Sprint short iteration, get current backlog items done in this time Scrum short, daily stand-up meeting Planning session start of each sprint, plan which backlog items will be done Heartbeat retrospective end of sprint, reflect about the past sprint Scrum Master - removes impediments to the ability of the team to deliver the sprint goal, not the team leader Self organizing teams magically everybody gets organized Easily adapt to change major benefit Dr. Tom Way CSC 4181 Slide 27 Dr. Tom Way CSC 4181 Slide 28 Requirements engineering Software Requirements The process of establishing the services that the customer requires from a system and the constraints under which it operates and is developed. The requirements themselves are the descriptions of the system services and constraints that are generated during the requirements engineering process. Dr. Tom Way CSC 4181 Slide 29 Dr. Tom Way CSC 4181 Slide 30

What is a requirement? It may range from a high-level abstract statement of a service or of a system constraint to a detailed mathematical functional specification. This is inevitable as requirements may serve a dual function May be the basis for a bid for a contract - therefore must be open to interpretation; May be the basis for the contract itself - therefore must be defined in detail; Both these statements may be called requirements. Types of requirement User requirements Statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for customers. System requirements A structured document setting out detailed descriptions of the system s functions, services and operational constraints. Defines what should be implemented so may be part of a contract between client and contractor. Dr. Tom Way CSC 4181 Slide 31 Dr. Tom Way CSC 4181 Slide 32 Functional and non-functional requirements Functional requirements Statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. Non-functional requirements constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc. Domain requirements Requirements that come from the application domain of the system and that reflect characteristics of that domain. Functional requirements Describe functionality or system services. Depend on the type of software, expected users and the type of system where the software is used. Functional user requirements may be highlevel statements of what the system should do but functional system requirements should describe the system services in detail. Dr. Tom Way CSC 4181 Slide 33 Dr. Tom Way CSC 4181 Slide 34 Requirements imprecision Requirements completeness and consistency Problems arise when requirements are not precisely stated. Ambiguous requirements may be interpreted in different ways by developers and users. Consider the term appropriate viewers User intention - special purpose viewer for each different document type; Developer interpretation - Provide a text viewer that shows the contents of the document. In principle, requirements should be both complete and consistent. Complete They should include descriptions of all facilities required. Consistent There should be no conflicts or contradictions in the descriptions of the system facilities. In practice, it is impossible to produce a complete and consistent requirements document. Dr. Tom Way CSC 4181 Slide 35 Dr. Tom Way CSC 4181 Slide 36

Non-functional requirements System properties Reliability response time Storage requirements Constraints I/O device capability System representations, etc. CASE system, programming language or development method Important project could fail otherwise Non-functional classifications Product requirements Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc. Organizational requirements Requirements which are a consequence of organizational policies and procedures e.g. process standards used, implementation requirements, etc. External requirements Requirements which arise from factors which are external to the system and its development process e.g. interoperability requirements, legislative requirements, etc. Dr. Tom Way CSC 4181 Slide 37 Dr. Tom Way CSC 4181 Slide 38 Domain requirements Derived from the application domain and describe system characteristics and features that reflect the domain. Domain requirements can be new functional requirements, constraints on existing requirements or define specific computations. If domain requirements are not satisfied, the system may be unworkable. Problems with natural language Lack of clarity Precision is difficult without making the document difficult to read. Requirements confusion Functional and non-functional requirements tend to be mixed-up. Requirements amalgamation Several different requirements may be expressed together. Dr. Tom Way CSC 4181 Slide 39 Dr. Tom Way CSC 4181 Slide 40 Guidelines for writing requirements Invent a standard format and use it for all requirements. Use language in a consistent way. Use shall for mandatory requirements, should for desirable requirements. Use text highlighting to identify key parts of the requirement. Avoid the use of computer jargon. Verification and Validation Dr. Tom Way CSC 4181 Slide 41 Dr. Tom Way CSC 4181 Slide 42

Verification vs validation The V & V process Verification: "Are we building the product right. The software should conform to its specification. Validation: "Are we building the right product. The software should do what the user really requires. Is a whole life-cycle process - V & V must be applied at each stage in the software process. Has two principal objectives The discovery of defects in a system; The assessment of whether or not the system is useful and useable in an operational situation. Dr. Tom Way CSC 4181 Slide 43 Dr. Tom Way CSC 4181 Slide 44 V& V goals Verification and validation should establish confidence that the software is fit for purpose. This does NOT mean completely free of defects. Rather, it must be good enough for its intended use and the type of use will determine the degree of confidence that is needed. V & V confidence Depends on system s purpose, user expectations and marketing environment Software function The level of confidence depends on how critical the software is to an organization. User expectations Users may have low expectations of certain kinds of software. Marketing environment Getting a product to market early may be more important than finding defects in the program. Dr. Tom Way CSC 4181 Slide 45 Dr. Tom Way CSC 4181 Slide 46 Static and dynamic verification Program testing Software inspections. Concerned with analysis of the static system representation to discover problems (static verification) May be supplement by tool-based document and code analysis Software testing. Concerned with exercising and observing product behavior (dynamic verification) The system is executed with test data and its operational behavior is observed Can reveal the presence of errors NOT their absence. The only validation technique for nonfunctional requirements as the software has to be executed to see how it behaves. Should be used in conjunction with static verification to provide full V&V coverage. Dr. Tom Way CSC 4181 Slide 47 Dr. Tom Way CSC 4181 Slide 48

Types of testing Software inspections Defect testing Tests designed to discover system defects. A successful defect test is one which reveals the presence of defects in a system. Covered in Chapter 23 Validation testing Intended to show that the software meets its requirements. A successful test is one that shows that a requirements has been properly implemented. These involve people examining the source representation with the aim of discovering anomalies and defects. Inspections not require execution of a system so may be used before implementation. They may be applied to any representation of the system (requirements, design,configuration data, test data, etc.). They have been shown to be an effective technique for discovering program errors. Dr. Tom Way CSC 4181 Slide 49 Dr. Tom Way CSC 4181 Slide 50 Defect testing The goal of defect testing is to discover defects in programs A successful defect test is a test which causes a program to behave in an anomalous way Tests show the presence not the absence of defects System testing Involves integrating components to create a system or sub-system. May involve testing an increment to be delivered to the customer. Two phases: Integration testing - the test team have access to the system source code. The system is tested as components are integrated. Release testing - the test team test the complete system to be delivered as a black-box. Dr. Tom Way CSC 4181 Slide 51 Dr. Tom Way CSC 4181 Slide 52 Integration testing Black-box testing Involves building a system from its components and testing it for problems that arise from component interactions. Top-down integration Develop the skeleton of the system and populate it with components. Bottom-up integration Integrate infrastructure components then add functional components. To simplify error localization, systems should be incrementally integrated. Dr. Tom Way CSC 4181 Slide 53 Dr. Tom Way CSC 4181 Slide 54

Testing guidelines Use cases Testing guidelines are hints for the testing team to help them choose tests that will reveal defects in the system Choose inputs that force the system to generate all error messages; Design inputs that cause buffers to overflow; Repeat the same input or input series several times; Force invalid outputs to be generated; Force computation results to be too large or too small. Use cases can be a basis for deriving the tests for a system. They help identify operations to be tested and help design the required test cases. From an associated sequence diagram, the inputs and outputs to be created for the tests can be identified. Dr. Tom Way CSC 4181 Slide 55 Dr. Tom Way CSC 4181 Slide 56 Stress testing Test automation Exercises the system beyond its maximum design load. Stressing the system often causes defects to come to light. Stressing the system test failure behavior. Systems should not fail catastrophically. Stress testing checks for unacceptable loss of service or data. Stress testing is particularly relevant to distributed systems that can exhibit severe degradation as a network becomes overloaded. Testing is an expensive process phase. Testing workbenches provide a range of tools to reduce the time required and total testing costs. Systems such as Junit support the automatic execution of tests. Most testing workbenches are open systems because testing needs are organization-specific. They are sometimes difficult to integrate with closed design and analysis workbenches. Dr. Tom Way CSC 4181 Slide 57 Dr. Tom Way CSC 4181 Slide 58 Configuration management Configuration management New versions of software systems are created as they change: For different machines/os; Offering different functionality; Tailored for particular user requirements. Configuration management is concerned with managing evolving software systems: System change is a team activity; CM aims to control the costs and effort involved in making changes to a system. Dr. Tom Way CSC 4181 Slide 59 Dr. Tom Way CSC 4181 Slide 60

System families Frequent system building It is easier to find problems that stem from component interactions early in the process. This encourages thorough unit testing - developers are under pressure not to break the build. A stringent change management process is required to keep track of problems that have been discovered and repaired. Dr. Tom Way CSC 4181 Slide 61 Dr. Tom Way CSC 4181 Slide 62 Service-oriented architectures Service-centric Software Engineering A means of developing distributed systems where the components are stand-alone services Services may execute on different computers from different service providers Standard protocols have been developed to support service communication and information exchange Dr. Tom Way CSC 4181 Slide 63 Dr. Tom Way CSC 4181 Slide 64 Service-oriented architectures Benefits of SOA Services can be provided locally or outsourced to external providers Services are language-independent Investment in legacy systems can be preserved Inter-organisational computing is facilitated through simplified information exchange Dr. Tom Way CSC 4181 Slide 65 Dr. Tom Way CSC 4181 Slide 66

Software project management Project Management Concerned with activities involved in ensuring that software is delivered on time and on schedule and in accordance with the requirements of the organisations developing and procuring the software. Project management is needed because software development is always subject to budget and schedule constraints that are set by the organisation developing the software. Dr. Tom Way CSC 4181 Slide 67 Dr. Tom Way CSC 4181 Slide 68 Software management distinctions The product is intangible. The product is uniquely flexible. Software engineering is not recognized as an engineering discipline with the sane status as mechanical, electrical engineering, etc. The software development process is not standardised. Many software projects are 'one-off' projects. Dr. Tom Way CSC 4181 Slide 69 Management activities Proposal writing. Project planning and scheduling. Project costing. Project monitoring and reviews. Personnel selection and evaluation. Report writing and presentations. Dr. Tom Way CSC 4181 Slide 70 Management commonalities Project staffing These activities are not peculiar to software management. Many techniques of engineering project management are equally applicable to software project management. Technically complex engineering systems tend to suffer from the same problems as software systems. May not be possible to appoint the ideal people to work on a project Project budget may not allow for the use of highlypaid staff; Staff with the appropriate experience may not be available; An organisation may wish to develop employee skills on a software project. Managers have to work within these constraints especially when there are shortages of trained staff. Dr. Tom Way CSC 4181 Slide 71 Dr. Tom Way CSC 4181 Slide 72

Project planning Probably the most time-consuming project management activity. Continuous activity from initial concept through to system delivery. Plans must be regularly revised as new information becomes available. Various different types of plan may be developed to support the main software project plan that is concerned with schedule and budget. Dr. Tom Way CSC 4181 Slide 73 Refactoring Dr. Tom Way CSC 4181 Slide 74 Fowler s definition A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior (Martin Fowler, Refactoring, page 53) Composite Definition Changes made to the system that Do not change observable behavior (all the tests still pass) Remove duplication or needless complexity Enhance software quality Make the code simpler and easier to understand Make the code more flexible Make the code easier to change Dr. Tom Way CSC 4181 Slide 75 Dr. Tom Way CSC 4181 Slide 76 Why Refactor? Refactoring Flow Prevent design decay Clean up messes in the code Simplify the code Increase readability and understandability Find bugs Reduce debugging time Build in learning we do about the application Redoing things is fundamental to every creative process Ensure all tests pass Find code that smells Ensure all tests still pass Determine simplification Make simplification Dr. Tom Way CSC 4181 Slide 77 Dr. Tom Way CSC 4181 Slide 78

When to refactor When not to refactor All the time Rule of Three (2 s company, 3 s a crowd) When you add functionality When you learn something about the code When you fix a bug When the code smells When the tests aren t passing When you should just rewrite the code When you have impending deadlines Dr. Tom Way CSC 4181 Slide 79 Dr. Tom Way CSC 4181 Slide 80 Problems with refactoring Taken too far, refactoring can lead to incessant tinkering with the code, trying to make it perfect Refactoring code when the tests don t work or tests when the application doesn t work leads to potentially dangerous situations Databases can be difficult to refactor Refactoring published interfaces can cause problems for the code that uses those interfaces Dr. Tom Way CSC 4181 Slide 81