1 / 24

CSE 303 Concepts and Tools for Software Development

Understand the key steps in building a system: requirements analysis, specification, design, implementation, testing, documentation, and maintenance. Learn the significance and intricacies of software specification and testing in the development process.

Download Presentation

CSE 303 Concepts and Tools for Software Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 303Concepts and Tools for Software Development Richard C. DavisUW CSE – 11/13/2006 Lecture 17 – Specification and Testing

  2. Administravia: Midterm • Lowest: 17.5 (30%) • Highest: 51.5 (89%) • Average: 36 (62%) • Std Dev: 9.6 (17%) CSE 303 Lecture 17

  3. Administravia: Midterm • Don't Panic! • This was a very hard exam • It's only 20% of your grade • We'll adjust scores • 4(b) will be extra credit • We'll make sure people who invested time won't be penalized • You can still pull up your score • Do well on homework • Final will be easier CSE 303 Lecture 17

  4. Administravia: HW4 • Many used .c and .h files improperly • .h • Contain function prototypes & typedefs • For a set of related functions • In C++, contain class definitions • .c • These are the files you compile • They include the ".h" files needed • We won't count off much for this on homework • Hard for you to understand why we use this structure • You'll understand more when we cover build scripting CSE 303 Lecture 17

  5. Administravia: Study Session • Struggled with C on midterm or HW4? • Come to study session tonight • Need to make sure you're not falling behind • We'll cover midterm and HW4 questions • Office hours today if you can't make it CSE 303 Lecture 17

  6. Administravia: HW6 • Repeat: Choose a partner now! • Send e-mail with choice to Lincoln Ritter • Team project directories will be created • This will take a day after Lincoln gets e-mail CSE 303 Lecture 17

  7. Where Are We? • Up to Now • Getting around Unix • Shell Scripting • C • C++ • From Now On • Good software development practices • Tools for managing larger projects CSE 303 Lecture 17

  8. Today • Basic Software Engineering • Development Process • Specification • Unit Testing and Stubs CSE 303 Lecture 17

  9. Software Development Process • Main steps in building a system • Requirements Analysis • Specification • Design • Implementation • Testing • Documentation • Maintenance CSE 303 Lecture 17

  10. Software Development Process • Requirements analysis • What are we supposed to build? What do our customers need? • Specification • Precise description of provided functionality • How Precise? Depends on what's being built • Design • Define the internal software architecture • Break system into components • Modules, interfaces, classes, etc. CSE 303 Lecture 17

  11. Software Development Process • Implementation • Write the code and perform simple tests • Testing • Extensive testing of parts and whole system • Documentation • All steps in the process must be documented • User guide, developer's guide, etc. • Maintenance • Fixing bugs, working on later releases CSE 303 Lecture 17

  12. Software Development Process • Main steps in building a system • Requirements Analysis • Specification • Design • Implementation • Testing • Documentation • Maintenance • Order of steps varies, frequent iteration • How formal? Depends on what you're building • The software process • Guides your efforts • Helps clarify thoughts • Helps you communicate ideas • You can view it as a tool! CSE 303 Lecture 17

  13. Specification • Writing a complete specification is hard • Often as difficult as writing code • Even worse when specification is formal • Partial specification is better than none • Specification helps later parts of process • Implementation • Test Development • Maintenance • Iterating is normal! Often need to fix spec. CSE 303 Lecture 17

  14. Specification Example • Let's write an informal specification for void insert(Node** head, char * val); CSE 303 Lecture 17

  15. Specification First Attempt /** * Inserts a value into the list * @param head : address of pointer to * the first element in the list * @param val : new string to insert * @return nothing */ void insert(Node** head, char * val); CSE 303 Lecture 17

  16. A Better Specification /** * Inserts a value into the list. * Does not check for duplicates. * Makes a copy of the inserted string. * Precondition: val is not NULL. * Postcondition: List is sorted in * alphabetical order * @param head : address of pointer to * the first element in the list * @param val : new string to insert * @return nothing */ void insert(Node** head, char * val); CSE 303 Lecture 17

  17. Minimum Specification • Describe what the function/method does • Describe parameters (are they modified?) • Describe what the function returns • State preconditions • Assumptions about parameter values • E.g., string not NULL, units are inches, x > 0… • Avoid trusting callers. Check preconditions. • Describe side effects • E.g., modifies global vars, reads/writes file CSE 303 Lecture 17

  18. Testing • Goal: Verification and validation • Does the system work? • Does it do what it is supposed to do? • Increase our confidence in the system • How do we know when we are done? • Coverage metrics exist • Execute each statement at least once • Execute each branch or path at least once • In Practice, you're never done testing CSE 303 Lecture 17

  19. Two Basic Types of Tests • Black Box Tests • Test without looking at implementation • Design test cases in terms of specification • Very useful in practice • Ideally, someone else should write them • White Box Tests (a.k.a. "Glass Box" tests) • Take implementation into account • Easier to ensure good coverage • Common sense: Test all branches once CSE 303 Lecture 17

  20. More Types of Tests • Unit testing • Test one class at a time • Integration testing • Test a number of classes together • System testing • Test an entire working system • Perform them all as you develop CSE 303 Lecture 17

  21. Regression Testing • Save tests as you develop • Tests exercise more and more features • Run all tests automatically • Every time you add a feature • Every time you fix a bug • Helps to verify that everything still works CSE 303 Lecture 17

  22. Stubs • How test a class when it uses classes that… • Do not exist? • Are buggy? • Are too large and slow? • Answer: create "fake classes" • One for each class that doesn't exist • Just good enough for the tests • As small as possible, so often called a stub CSE 303 Lecture 17

  23. Summary • Software devel. involves several steps • Carefully think about what you must build • Carefully think about how to build it • Prepare tests based on your specs • Implement, test, and document CSE 303 Lecture 17

  24. Next Time • Version Control Tools CSE 303 Lecture 17

More Related