CSE 219 COMPUTER SCIENCE III PROPERTIES OF HIGH QUALITY SOFTWARE.

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

What is MVC? At the very least it’s just another computer acronym…Model-View-Controller It might be new to you but it’s been around for 30 years In varying.
Apache Struts Technology
CS0004: Introduction to Programming Visual Studio 2010 and Controls.
An Introduction to Java Programming and Object- Oriented Application Development Chapter 8 Exceptions and Assertions.
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
Java Programming, 3e Concepts and Techniques Chapter 4 Decision Making and Repetition with Reusable Objects.
Fall 2007CS 225 Introduction to Software Design Chapter 1.
Graphical User Interface (GUI) Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
Reasons to study concepts of PL
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Graphical User Interface (GUI) Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne, office K115A. –
Spring 2009CS 225 Introduction to Software Design Chapter 1.
Evaluating Architectures Quality control: rarely fun, but always necessary
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 16 Slide 1 User interface design.
Lesson 46: Using Information From the Web copy and paste information from a Web site print a Web page download information from a Web site customize Web.
Struts 2.0 an Overview ( )
UNIT-V The MVC architecture and Struts Framework.
UNIT 21 Software Engineering.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
People: Usability IS 101Y/CMSC 101Y November 5, 2013 Marie desJardins Amanda Mancuso University of Maryland Baltimore County.
MVC pattern and implementation in java
Using the Multiple Choice Template Copy this presentation to your hard drive. Open up slide sorter, copy slides #3, 4, and 5 each time you are going to.
Software Quality Chapter Software Quality  How can you tell if software has high quality?  How can we measure the quality of software?  How.
WorkPlace Pro Utilities.
1 Shawlands Academy Higher Computing Software Development Unit.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
1 BTEC HNC Systems Support Castle College 2007/8 Systems Analysis Lecture 9 Introduction to Design.
1 UNIT 20 Software Engineering Lecturer: Ghadah Aldehim.
© 2006 IBM Corporation IBM WebSphere Portlet Factory Architecture.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
System Development Life Cycle. The Cycle When creating software, hardware, or any kind of product you will go through several stages, we define these.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 7: Focusing on Users and Their Tasks.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
University of Virginia Software Development Processes (CS340 John Knight 2005) 1 Software Development Processes.
Introduction of Geoprocessing Topic 7a 4/10/2007.
Software Engineering Quality What is Quality? Quality software is software that satisfies a user’s requirements, whether that is explicit or implicit.
CSE 219 Computer Science III Program Design Principles.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
Cohesion and Coupling CS 4311
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
National Diploma Unit 4 Introduction to Software Development Human Computer Interaction – HCI.
The Software Development Process
Introduction of Geoprocessing Lecture 9. Geoprocessing  Geoprocessing is any GIS operation used to manipulate data. A typical geoprocessing operation.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
1 Java Servlets l Servlets : programs that run within the context of a server, analogous to applets that run within the context of a browser. l Used to.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Evaluating Architectures. Quality Control Rarely fun, but always necessary 1.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 9 Software Quality Assurance.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
MVC WITH CODEIGNITER Presented By Bhanu Priya.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Programming Logic and Design Fourth Edition, Comprehensive Chapter 14 Event-Driven Programming with Graphical User Interfaces.
Introduction of Geoprocessing Lecture 9 3/24/2008.
Rapid Prototyping: An Alternative Instructional Design Strategy S. D. Tripp and B. Bichelmeyer (1990)
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
CSE 219 Final exam review.
Leverage your Business with Selenium Automation Testing
Coupling and Cohesion 1.
Software Design and Architecture
Business System Development
Web Engineering.
Design and Maintenance of Web Applications in J2EE
CHAPTER 9 (part a) BASIC INFORMATION SYSTEMS CONCEPTS
Error Handling in Java Servlets
Presentation transcript:

CSE 219 COMPUTER SCIENCE III PROPERTIES OF HIGH QUALITY SOFTWARE

This semester I intend to brainwash you Important Principles for creating a Software Solution: First Define the Problem Design, then Code Always Provide Feedback First Define the Problem Design, then Code Always Provide Feedback First Define the Problem Design, then Code Always Provide Feedback First Define the Problem Design, then Code Always Provide Feedback First Define the Problem Design, then Code Always Provide Feedback First Define the Problem Design, then Code Always Provide Feedback

Do you remember why we’re here? To learn a methodology for constructing software systems of high quality Do you remember: –what makes software high quality? –the Software Development Life Cycle?

What properties make a software system high quality? Correctness Efficiency Ease of use –for the user –for other programmers using your framework Reliability/robustness Reusability Extensibility Scalability Maintainability, Readability, Modifiability, Testability, etc.

Correctness Does the program perform its intended function? –And does it produce the correct results? This is not just an implementation (coding) issue –Correctness is a function of the problem definition A flawed Requirements Analysis results in a flawed Design A flawed Design results in a flawed program

Garbage In – Garbage Out Ever see This is Spinal Tap?

Efficiency Plan for efficiency –wisely choose your data structures & algorthms, O(N), in the design phase –tools & technologies too Does the program meet user performance expectations? If not, find the bottlenecks –done after implementation –called profiling

Ease of Use for End User Is the GUI easy to learn to use? –a gently sloped learning curve What makes a GUI easy to use? –familiar GUI structures –familiar icons when possible instead of text –components logically organized & grouped –appealing to look at colors, alignment, balance, etc. –forgiving of user mistakes –help, tooltips, and other cues available –etc.

Ease of Use for other Programmers In particular for frameworks –think of the Java API developers Should you even build a framework? What makes a framework easy to use? –logical structure (should mirror problem) –naming choices (classes, methods, etc.) –flexibility (usable for many purposes) –feedback (exceptions for improper use) –documentation (APIs & tutorials) –etc.

Reliability/Robustness Does your program: –anticipate erroneous input? –anticipate all potential program conditions? –handle erroneous input intelligently? again, think about this in the design stage –provide graceful degradation? What’s graceful degradation?

Graceful Degradation An error condition occurs in your program Should your program: –crash? –exit? –notify the user and exit? –provide an approximated service? not always possible Web Browsers –What does they do with poorly formatted HTML?

Feedback, Feedback, Feedback, Feedback Feedback

Feedback to whom? End user due to: –bad input, equipment failure, missing files, etc. How? –popup dialogs, highlighting (red x in Web form), etc. Other programmers using your framework due to: –passing bad data, incorrect initialization, etc. How? –exception throwing, error value returning, etc.

Flexibility in a Framework Programmers need to know: –when and why things in a framework might go wrong AND –When and why things in a framework do go wrong Why? –customized response –Ex: System.out.println notification JOptionPane notification Web page generated and sent via Servlet notification use alternative services etc.

Applications Using Frameworks Note, making a framework is much more difficult than making an application. Why? Framework Application #1Application #2 App1 calls methods of Framework objects App2 calls methods of Framework objects Framework calls methods of App1 & App2 objects

Reusability Code serving multiple purposes Who cares? –management does avoid duplication of work (save $) –software engineering does avoid duplication of work (save time & avoid mistakes) How can we achieve this? –careful program decomposition –separate technology-dependent components

Extensibility Can the software easily be extended? Huh? –can it be used for other purposes Ex: –plug-ins –exporters –add-ons –etc

Extensibility Example In NetBeans, try Tools → Plugins Anyone can make a plugin Download, install, and use

Scalability How will the program perform when we increase: –# of users/connections –amount of data processed –# of geographic locations users are from A function of design as well as technology

And More Maintainability Readability Modifiability Testability etc. All of these, as with the others, must be considered early in design

How can these properties be achieved? By using well proven, established processes –preferably while taking advantage of good tools Software Development Life Cycle Requirements Analysis Design & Document CodeTest Debug Profile Deploy Evaluate Design

Hopefully, the point of no return Correctness, Efficiency, Ease of use, Reliability/robustness, Reusability, Maintainability, Modifiability, Testability, Extensibility, Scalability When should we consider these properties? –the requirements analysis & design stages How about the implementation stages? –too late to make a big impact