20 February Detailed Design Implementation. Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration.

Slides:



Advertisements
Similar presentations
Revealing the Secrets of Self-Documenting Code Svetlin Nakov Telerik Corporation For C# Developers.
Advertisements

Use Case Model. C-S 5462 Use case model describes what the user expects the system to do –functional requirements may describe only the functionalities.
Software Construction
Documentation 1 Comprehending the present – Investing in the future.
Software Reuse Building software from reusable components Objectives
Software Testing and Quality Assurance
Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Software Requirements
CSE1301 Computer Programming: Lecture 13 Documentation.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Algorithm Programming Coding Advices Bar-Ilan University תשס " ו by Moshe Fresko.
Software Configuration Management
1 Functional Testing Motivation Example Basic Methods Timing: 30 minutes.
Chapter 24 - Quality Management Lecture 1 1Chapter 24 Quality management.
Computer Science 340 Software Design & Testing Design By Contract.
Chapter 7 Software Engineering Objectives Understand the software life cycle. Describe the development process models.. Understand the concept of modularity.
1 Shawlands Academy Higher Computing Software Development Unit.
1 BTEC HNC Systems Support Castle College 2007/8 Systems Analysis Lecture 9 Introduction to Design.
Chapter 5 Design Principles II: Flexibility, Reusability, and Efficiency.
Lecture # 06 Design Principles II
Planning for the Solution
Chapter 5 Design Principles II: Flexibility, Reusability, and Efficiency.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
COP 3530 PROGRAM, FILE & DATA STRUCTURES Syllabus Syllabus Lab Information Lab Information Overrides Overrides Questions? Questions?
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Lesson 3 McManus COP  You have to tell them ◦ what to do ◦ what to use ◦ in what order to do itand ◦ what to do if your user does not do what.
SE: CHAPTER 7 Writing The Program
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
1 CSC 222: Computer Programming II Spring 2004 See online syllabus at: Course goals:
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Software Engineering 1 Some Definitions Lesson 2.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Chapter 8 Lecture 1 Software Testing. Program testing Testing is intended to show that a program does what it is intended to do and to discover program.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Introduction to Software Design by A.Surasit Samaisut Copyrights : All Rights Reserved.
Intermediate 2 Computing Unit 2 - Software Development.
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Lecture Videos will no longer be posted. Assignment 3 is due Sunday, the 8 th, 7pm. Today: –System Design,
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
People and Teams Design.  For me ◦ Team meetings ◦ Next week’s demos  For client ◦ Your responsibility to schedule ◦ Can invite to next week’s presentation.
CSCI 161 Lecture 3 Martin van Bommel. Operating System Program that acts as interface to other software and the underlying hardware Operating System Utilities.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
Software Design. Introduction Designing engineering encompasses the set of principles concepts and practices that lead to the development of a high quality.
Software Design and Development Development Methodoligies Computing Science.
Maitrayee Mukerji. INPUT MEMORY PROCESS OUTPUT DATA INFO.
Implementation Topics Describe –Characteristics of good implementations –Best practices to achieve them Understand role of comments Learn debugging techniques.
CSC 222: Computer Programming II
Coupling and Cohesion 1.
Chapter 8 – Software Testing
CSE 403 Software Engineering
About the Presentations
Lecture 2 of Computer Science II
Design and Maintenance of Web Applications in J2EE
Lecture 09:Software Testing
Software Design CMSC 345, Version 1/11.
Chapter 1 Introduction(1.1)
Software Design Lecture : 9.
Software Development Chapter 1.
Chapter 9: Implementation
Presentation transcript:

20 February Detailed Design Implementation

Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration System test Maintenance

What do you think about this design? Mystery site

Design Principles Correctness Robustness Flexibility Reusability Efficiency

Correctness Always a goal. Others may be negotiable. Definition: satisfies all of the application’s requirements How do we know the requirements are correct? Approaches Inspections Readable (“I didn’t have time to write a short letter, so I wrote a long one instead.”) Modular Formal verification Invariants, pre- and post-conditions Usually used only in critical components

Robustness Ability to handle anomalous situations Techniques Verifying input Initialization Parameter checking Range Constraints Husk and kernel

Importance of Robustness: USS Yorktown (1998) Guided missile cruiser that suffered widespread system failure off the coast of Virginia Dead in the water for more than two hours Crew member mistakenly entered a zero in a data field of an application Divide by zero Buffer overflow Shut down the propulsion system

Flexibility Requirements changes Adding more of the same function New type of member, account, question or game Adding new type of function Printing what was only displayed, withdrawing when only depositing was allowed, creating a new game Changing function Allowing reverse as well as forward, overdraft protection

Using XML Design issues Encapsulating things that may change Late binding Separation of instruction and data Examples Layout of your interface Description of changeable data More detail Thursday

Reusability How to make it reusable Match real world concepts Avoid unnecessary coupling Document Complete specification (assertions, constraints) Explanation of function and algorithm Generic names

Efficiency All about trade-offs What do you care about being efficient? Time Memory usage External storage Download Start-up Shutdown Usage Development How important? Fundamental requirement Nice enhancement

Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration System test Maintenance

Coding Tips: Class Exercise Write down your favorite programming tip Not a coding trick A big item that helps across systems Examples Use meaningful variable names Use indentation and spacing

Start Small A lesson from agile programming Don’t design every class that you can think of Don’t design every feature

Documentation No such thing as a self-documenting program Things that can be generated helpful but give no insights Explain alternatives not used Explain why you are doing it Same line comments: saying enough to be useful? Your comments are prose and should read accordingly

Do you write… code interspersed with comments? or prose interspersed with executable lines?

Documentation Example “Use a string search to find the requested protein.” “A binary search turned out to be slower than a string-matching algorithm for the most interesting data sets. Despite the need for preprocessing, this more complex Boyer-Moore algorithm is a better choice for finding the requested protein string.”

Error Handling Black list vs. white list Should you identify what is good or what is bad? When is each appropriate? Which is easier to maintain?

Tools Version Management Build Systems Integrated Development Environments

Version Management There is nothing permanent except change. Heraclitus 500 BCE

Version Management Both during and after development Both code and documentation Uses Multi-developer change control Releases Support for different environments Computers Operating systems