Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance.

Slides:



Advertisements
Similar presentations
Building Bug-Free O-O Software: An Introduction to Design By Contract A presentation about Design By Contract and the Eiffel software development tool.
Advertisements

Addressing the Challenges of Current Software. Questions to Address Why? What? Where? How?
INSE web pages u Please explore them! – – u EVERYONE: please follow the “ minilecture.
Basic Concepts in Component-Based Software Engineering
PVK-HT051 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Software Maintenance.
Software Engineering and Design Principles Chapter 1.
1 Specifying Object Interfaces. 2 Major tasks in this stage: --are there any missing attributes or operations? --how can we reduce coupling, make interface.
1 SYSTEM and MODULE DESIGN Elements and Definitions.
1 Introduction to Software Engineering Lecture 42 – Communication Skills.
Department of Computer Science University of Maryland, College Park
CS189A/172 - Winter 2008 Lecture 7: Software Specification, Architecture Specification.
Chapter 1 Principles of Programming and Software Engineering.
1 CS 691z / 791z Topics on Software Engineering Chapter 17: Interfaces and Subsystems [Arlow & Neustadt, 2002] March 6, 2007.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
1 REQUIREMENTS ENGINEERING and SYSTEMS ANALYSIS Elements and Definitions.
 QUALITY ASSURANCE:  QA is defined as a procedure or set of procedures intended to ensure that a product or service under development (before work is.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Project Execution & Termination Life Cycle Execution Presented by: Basker George.
Data Structures and Programming.  John Edgar2.
Introduction SWE 619. Why Is Building Good Software Hard? Large software systems enormously complex  Millions of “moving parts” People expect software.
Ranga Rodrigo. Class is central to object oriented programming.
1 Shawlands Academy Higher Computing Software Development Unit.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
Chapter 3 Introduction to Collections – Stacks Modified
Introduction Ellen Walker CPSC 201 Data Structures Hiram College.
Eng. Mohammed Timraz Electronics & Communication Engineer University of Palestine Faculty of Engineering and Urban planning Software Engineering Department.
1 Abstraction  Identify important aspects and ignore the details  Permeates software development programming languages are abstractions built on hardware.
University of Toronto Department of Computer Science CSC444 Lec05- 1 Lecture 5: Decomposition and Abstraction Decomposition When to decompose Identifying.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SWE 619 © Paul Ammann Procedural Abstraction and Design by Contract Paul Ammann Information & Software Engineering SWE 619 Software Construction cs.gmu.edu/~pammann/
111 Protocols CS 4311 Wirfs Brock et al., Designing Object-Oriented Software, Prentice Hall, (Chapter 8) Meyer, B., Applying design by contract,
Low-Level Detailed Design SAD (Soft Arch Design) Mid-level Detailed Design Low-Level Detailed Design Design Finalization Design Document.
Design Concepts By Deepika Chaudhary.
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.
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.
Introduction to Classes and Objects. Real Life When a design engineer needs an electrical motor he doesn’t need to worry about –How a foundry will cast.
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.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 11 Object-Oriented.
ANU COMP2110 Software Design in 2003 Lecture 10Slide 1 COMP2110 Software Design in 2004 Lecture 12 Documenting Detailed Design How to write down detailed.
PROGRAMMING PRE- AND POSTCONDITIONS, INVARIANTS AND METHOD CONTRACTS B MODULE 2: SOFTWARE SYSTEMS 13 NOVEMBER 2013.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 COS 260 DAY 12 Tony Gauvin. 2 Agenda Questions? 5 th Mini quiz –Chapter 5 40 min Assignment 3 Due Assignment 4 will be posted later (next week) –If.
Object-Oriented Design Concepts University of Sunderland.
1 Using const in C++ Classes In the presence of pointers we must take steps to ensure the integrity of the object Can use const method definitions The.
CSE 240 Lecture 7. © Lethbridge/Laganière 2001 Chapter 5: Modelling with classes2 Overview Hopefully return and discuss test 1 A brief discussion of Java.
Chapter 2 Principles of Programming and Software Engineering.
Chapter 3 Part II. 3.8 Placing a Class in a Separate File for Reusability.cpp file is known as a source-code file. Header files ◦ Separate files in which.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
CSCE 240 – Intro to Software Engineering Lecture 3.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Principles of Programming & Software Engineering
Modular Decomposition, Abstraction and Specifications
SWEN421 – Lecture 3 Building High Integrity Software with SPARK Ada
Chapter 11 Object-Oriented Design
Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
About the Presentations
Component Based Software Engineering
Specifying Object Interfaces
Objects First with Java
Introduction to Components and Specifications Using RESOLVE
CSE 303 Concepts and Tools for Software Development
Chapter # 1 Overview of Software Quality Assurance
Chapter 2. Problem Solving and Software Engineering
Software Reviews.
Formal Methods Lecture 16 March 22, 2011 CS 315 Spring 2011
Presentation transcript:

Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Analysis Design Testing Coding Operation and Maintenance Installation Require- ments Requirements Specification Planning

Detailed Design Activities Choose specific data structures and algorithms Refine the components from architectural design Define HOW Comments are NOT enough: Give sufficient information, so that the implementation teams can do a good job. procedure replaceText( var text: TextFile; oldWords, newWords: WordList); (* Replace in the text text all occurrences of the i-th word in oldWords by *) (* the i-th word in newWords ; oldWords and newWords must have the same*) (* length*)

Open Questions What are the word delimiters? oblank, EOL, EOF, TAB o`.´, `,´, `;´, `:´,...`_´, `&´,... Is the matching case sensitive? Must replacements have the same length? How to solve conflicts? oSeveral different replacements for the same old word oSome words in newWords appear also in oldWords oAssume the following: text :... ABC... ; oldWords: AB, BC ;newWords: X, Y alternative1:... XC... alternative2:... AY...

Approaches to Detailed Design Informal oStructured English Semi-formal oProgram Design Languages (PDLs) oDiagrammatical techniques Formal oFormal Specifications (e.g. Z, VDM,...) oPre-/postconditions & invariants (sometimes called programming by contracting)

Programming by Contracting Clients and servers of services “sign” contracts, i.e. servers guarantee the effects of their services offered, if and only if clients use these services correctly. function getPosition( a: array of Element; el: Element) return integer ; (* Returns the relative position of el in a *) precondition  i  [a`First..a`Last]: a[i] = el (* such an element exists *) postcondition a[getPosition( a, el)] = el and a = a.old (* getPosition really returns the position of el in a and a is unchanged *) You could even specify that the array must be sorted in ascending order to allow for a faster algorithm by adding the following to the precondition: and  i,j  [a`First..a`Last]: i < j  a[i] < a[j]

Implementation Transform the detailed design into concrete programming language code Ensure that this code correctly implements the detailed design OOPS! Many modern programming languages contain detailed design elements, e.g. Eiffel

Programming Style... Remember that programs are for people to read oAlways choose the simpler alternative oReject clever code that is hard to understand oShorter code is not necessarily better Choose good names oMake them highly descriptive oDo not worry about using long names

Programming Style … Comment extensively oComment whatever is non-obvious oDo not comment the obvious oComments should be 25-50% of the code Organize class elements consistently oVariables, constructors, public methods then private methods Be consistent regarding layout of code

Programming Style … Avoid duplication of code oDo not ‘clone’ if possible Create a new method and call it Cloning results in two copies that may both have bugs –When one copy of the bug is fixed, the other may be forgotten

Programming Guidelines Use separate files for each module, class, macro, inline,... definition Use separate files for the definition/specification and implementation when possible Call operations only when all preconditions are satisfied (this is the caller´s responsibility) Do not mix user interface code with non-user interface code oInteract with the user in separate classes This makes non-UI classes more reusable Avoid pointers to pointers Commit to effective naming conventions

Coding Standards Java coding standards: oThe Elements of Java Style; Vermeulen et.al. SIGS Books. ohttp://java.sun.com/docs/codeconv/html/CodeCon vTOC.doc.html Smalltalk Best Practice Patterns by Kent Beck Recommended C Style and Coding Standards by David Keppel C Programming Guidelines by Thomas Plum Ada Quality and Style: Guidelines for Professional Programmers by Software Product Consort

What is a Good Low Level Module? Black box aspects: Fulfilled functionality Fulfilled characteristics Easy to use Integratable Reusable Testable Traceable White Box Aspects: Deductable Understandable Modifiable