Department of Information Engineering 1 IEG3080 Software Engineering About this course –Object-oriented programming –C# –Design Patterns –Software Methodologies.

Slides:



Advertisements
Similar presentations
Alter – Information Systems 4th e d. © 2002 Prentice Hall 1 Moving Towards E-Business As Usual.
Advertisements

Chapter 10 Architectural Design.
Chapter 7 System Models.
Copyright © 2003 Pearson Education, Inc. Slide 8-1 Created by Cheryl M. Hughes, Harvard University Extension School Cambridge, MA The Web Wizards Guide.
Chapter 6 Structures and Classes. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 6-2 Learning Objectives Structures Structure types Structures.
© 2008 Pearson Addison Wesley. All rights reserved Chapter Seven Costs.
Chapter 1 The Study of Body Function Image PowerPoint
1 Copyright © 2013 Elsevier Inc. All rights reserved. Chapter 1 Embedded Computing.
1 Copyright © 2013 Elsevier Inc. All rights reserved. Appendix 01.
© 2010 Pearson Addison-Wesley. All rights reserved. Addison Wesley is an imprint of Chapter 11: Structure and Union Types Problem Solving & Program Design.
18 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Introduction to Web Services.
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
FACTORING ax2 + bx + c Think “unfoil” Work down, Show all steps.
Year 6 mental test 10 second questions
For Translators and Translation Editors Note-Taking presents... by Riccardo Schiaffino CTA 3rd Annual Conference Boulder, May © Riccardo Schiaffino,
Communicating over the Network
REVIEW: Arthropod ID. 1. Name the subphylum. 2. Name the subphylum. 3. Name the order.
Week 2 The Object-Oriented Approach to Requirements
Computer Literacy BASICS
Our Digital World Second Edition
Electric Bus Management System
Configuration management
Information Systems Today: Managing in the Digital World
1 The phone in the cloud Utilizing resources hosted anywhere Claes Nilsson.
NI LabVIEW Object-Oriented Programming
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 31 Slide 1 Service-centric Software Engineering.
Database Design Process
Microsoft Access.
Chapter Information Systems Database Management.
Legacy Systems Older software systems that remain vital to an organisation.
The Modular Structure of Complex Systems Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
By Waqas Over the many years the people have studied software-development approaches to figure out which approaches are quickest, cheapest, most.
IP Multicast Information management 2 Groep T Leuven – Information department 2/14 Agenda •Why IP Multicast ? •Multicast fundamentals •Intradomain.
VOORBLAD.
Factor P 16 8(8-5ab) 4(d² + 4) 3rs(2r – s) 15cd(1 + 2cd) 8(4a² + 3b²)
Basel-ICU-Journal Challenge18/20/ Basel-ICU-Journal Challenge8/20/2014.
1..
Lecture 1: Software Engineering: Introduction
Problem Solving and Algorithm Design
31242/32549 Advanced Internet Programming Advanced Java Programming
© 2012 National Heart Foundation of Australia. Slide 2.
Lecture 6: Software Design (Part I)
Chapter 10 Software Testing
1 © 2004, Cisco Systems, Inc. All rights reserved. CCNA 1 v3.1 Module 2 Networking Fundamentals.
Understanding Generalist Practice, 5e, Kirst-Ashman/Hull
آزمایشگاه مهندسی نرم افزار
Executional Architecture
How creating a course on the e-lastic platform 1.
25 seconds left…...
H to shape fully developed personality to shape fully developed personality for successful application in life for successful.
Januar MDMDFSSMDMDFSSS
Copyright © 2003 by Prentice Hall Computers: Tools for an Information Age Chapter 15 Programming and Languages: Telling the Computer What to Do.
Chapter 10: The Traditional Approach to Design
Systems Analysis and Design in a Changing World, Fifth Edition
©Brooks/Cole, 2001 Chapter 12 Derived Types-- Enumerated, Structure and Union.
Intracellular Compartments and Transport
PSSA Preparation.
Chapter 11 Component-Level Design
Essential Cell Biology
RefWorks: The Basics October 12, What is RefWorks? A personal bibliographic software manager –Manages citations –Creates bibliogaphies Accessible.
The tool that could change everything 1 The Tool that could for Employees Change Everything.
Introduction Peter Dolog dolog [at] cs [dot] aau [dot] dk Intelligent Web and Information Systems September 9, 2010.
Modeling Main issues: What do we want to build How do we write this down.
From Model-based to Model-driven Design of User Interfaces.
User Security for e-Post Applications Dr Chandana Gamage University of Moratuwa.
0 WPI First Experience Teaching Software Testing Lessons Learned Gary Pollice Worcester Polytechnic Institute and Rational Software Corp.
IEG 3080 Tutorial 1 Wilson Ip. Outline Lecture reviews: Some basics of Software Engineering principle Some basics of OOP How to use Visual Studio.NET.
Presentation transcript:

Department of Information Engineering 1 IEG3080 Software Engineering About this course –Object-oriented programming –C# –Design Patterns –Software Methodologies 4 assignments + 1 project No mid-term Open-note exam (one A4 paper) Homepage:

Department of Information Engineering 2 Project – 30% Assignment –10% Exam – 60% Instructor:Prof. M. Chang Reference text –Design patterns by Gamma et al (Addison Wesley ) –

Department of Information Engineering 3 No plagiarism –Penalties includ failing the course and receiving demerits. Read this web site –

Department of Information Engineering 4 Disclaimer Put the following disclaimer in all your work and signed "I understand the University guidelines on academic honesty as shown in the web page and I agree to comply with the guidelines. I declare that I do not plagiarize or cheat in any way that violates the spirit of the guidelines. I understand the severity of disciplinary action should the guidelines be violated. Signed (Student _____________________)"

Department of Information Engineering 5 What is software engineering? How to build large-scale software by a large team of people efficiently? The problem –Software is complex The consequences –Software is expensive –Delivery is always late –Software is unreliable –Software is difficult to maintain the code is written by other people –Software is difficult to adapt to future change –Difficult to manage a large team

Department of Information Engineering 6 Technical solution Reusable software (reliable, low-cost, fast) –Source code reuse But vendors give the source code away –Binary code reuse How to add things to binary code? –Implementation and interface reuse Interface reuse – flexible software –Design pattern reuse Solutions to common programming problems

Department of Information Engineering 7 Management solution Effective communication How to manage a team –People has different skills –Turnover –Communicate in a large team –Quality of the software How to manage the customers –How to collect the requirements –Are we building the system that the customers want?

Department of Information Engineering 8 Management tools Software methodologies –Traditional methods –Rational Unified Process –Extreme Programming (XP) CASE tools –UML - schematic diagram for software –NUnit – for regression testing of software

Department of Information Engineering 9 Software is complex How to deal with complex system? Universal solution - Divide and conquer –Divide a complex system into meaningful parts Each part can be developed and modified independently from each other Big question –How to divide a system into meaningful parts Main issue –The interface between parts

Department of Information Engineering 10 疱丁解牛

Department of Information Engineering 11 To divide a system into meaningful parts A decomposed cow Head Body Front Leg Read Leg

Department of Information Engineering 12 Is software easy to change? Good software will be used for many years Must be able to extend/add/modify the software in order to cater for future needs Is software easy to change? –Look easy, but in fact difficult !! Why? –Too many dependencies between different modules – 牽一發而動全身

Department of Information Engineering 13 Solution? Reduce dependency between parts –The key to flexible and extensible software –Related concepts Modularity, loose coupling, encapsulation, information hiding, etc Reduce dependency is a general principle in many fields –In mathematics - Eigen value decomposition –In database – normalization of tables

Department of Information Engineering 14 Hardware is inherently modular –e.g. a hardware chip Software is NOT ! –Data spreads all over the system, rather than located in one place –Spaghetti code What should be done –Locked the data and functions in one place –Object = function + data

Department of Information Engineering 15 Interface – so that parts can be changed independently Head Body Front Leg Read Leg Interface

Department of Information Engineering 16 To replace a head New Head Body Front Leg Read Leg Interface

Department of Information Engineering 17 Interface and Implementation Interface is a specification, describing how parts should be joint Implementation is the real stuff (the code) Interface is MORE IMPORTANT than implementation –Why? –Interface, once decided, is hard to change e.g. the size of the thread of screws –Implementation can be easily changed, e.g. the screw

Department of Information Engineering 18 Inheritance Inheritance is fundamental in OOP. What does it mean? –“the inheritance of an interface by an implementation” OOP is about interface inheritance, not implementation inheritance Interface inheritance –Reuse of the interface specification Implementation inheritance –Reuse of code –Useful but not the most important principle in OO

Department of Information Engineering 19 Inheritance Example –Interface USB specification (just a piece of paper, totally abstract) –Implementation MP3 player Digital camera Mobile phone

Department of Information Engineering 20 Inheritance and implementation USB MP3 Digital Camera Mobile Phone Rest of the System Interface Implementation

Department of Information Engineering 21 Interface and implementation Interface promotes the following related design concepts –Modularity Divide a system into modules –Encapsulation Hide the complexity of module, expose only the interface –Abstraction Intellectual simplification, e.g. USB is an abstraction of devices (existing or yet to be invented) Reduce the amount of learning –Loose coupling change in one module won’t affect others

Department of Information Engineering 22 The key to LARGE SCALE DEVELOPMENT Different parts are manufactured by different companies from different places in the world Modularity, encapsulation, abstraction, and loose coupling are boiled down to one important principle in good engineering design –The Interface

Department of Information Engineering 23 Example of good interface World-wide web –Network level interface – HTTP protocol –Human level interface – HTML/XML Internet –Interfaces - TCP, IP Airplane, plumbing, car,...

Department of Information Engineering 24 The high input impedance / small output impedance principle in circuit design For circuit B, if the input impedance is high, and the output impedance is low, can change B without affecting the rest of the system Essential ideas are the same –Divide and conquer –With good interface, one can change a part without affecting the rest of the system Box A Box BBox C

Department of Information Engineering 25 The most important principle in (software) engineering Separation of Interface and Implementation

Department of Information Engineering 26 Interface and implementation Disk drive CDROM Printer Digital camera Future products... USB bus Interface versus implementation

Department of Information Engineering 27 USB is an abstraction of the hardware –Design the PC system around the USB interface, not to a particular device The first principle in OOP (in Gamma’s Design Pattern) programming to an interface, not an implementation

Department of Information Engineering 28 Why is the use of header file in C? Interface versus implementation.h file int foo(int x);.c file int foo(int x) {... }

Department of Information Engineering 29 The reason of using header file Separation of interface and implementation Rest of the system Can only see the header file, so that the implementation can be changed freely.h file.c file

Department of Information Engineering 30 The advantage of the separation Can change the implementation (.c file) without affecting the rest of the system Rest of the system Can only see the header file, so that the implementation can be changed freely.h file.c file A new.c file

Department of Information Engineering 31 The essential idea of OO Base class provides the interface (function) declaration The subclass provides the implementation The subclass inherits the interface of the base class Rest of the system Can only see the base class (interface), so that the subclass (implementation) can be changed freely Base class (.h file) Subclass (.c file)

Department of Information Engineering 32 From C, C++ to C# Can argue that the fundamental principle has never been changed –All adhere to the principle of the separation of interface from implementation The differences –On granularity C – separation at sub-system level (larger scale) C++, C# - separation at object level (finer scale) –C++ is complicated –C# (and Java) is better because it is simpler

Department of Information Engineering 33 Which one is a more successful design from OO point of view? Twins Morning Musume