CS3500 Software Engineering How does a “program” differ from a “software system”? Program System Tens to hundreds of lines of code Thousands to millions.

Slides:



Advertisements
Similar presentations
System Integration Verification and Validation
Advertisements

10 Software Engineering Foundations of Computer Science ã Cengage Learning.
Chapter 2 – Software Processes
CS3500 Software Engineering Legacy Systems (1) Legacy systems are software (and sometimes hardware) systems that have been developed sometime in the past.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 2 Slide 1 Systems engineering 2.
1 / 24 CS 425/625 Software Engineering Software Evolution Based on Chapter 21 of the textbook [SE-8] Ian Sommerville, Software Engineering, 8 th Ed., Addison-Wesley,
1 Software Engineering II Presentation Software Maintenance.
Introduction to Databases Transparencies
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
CS CS 5150 Software Engineering Lecture 20 Acceptance and Delivery.
1 Software Requirements Specification Lecture 14.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
1 CS 501 Spring 2005 CS 501: Software Engineering Lecture 26 Delivering the System.
Introduction to Software Testing
©Ian Sommerville 2006Critical Systems Slide 1 Critical Systems Engineering l Processes and techniques for developing critical systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Design, Implementation and Maintenance
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 2 Slide 1 Systems engineering 1.
Introduction to Information System Development.
Chapter 7 Requirement Modeling : Flow, Behaviour, Patterns And WebApps.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
1 Building and Maintaining Information Systems. 2 Opening Case: Yahoo! Store Allows small businesses to create their own online store – No programming.
Managing Software Quality
Software Engineering Reuse.
3- System modelling An architectural model presents an abstract view of the sub-systems making up a system May include major information flows between.
Name Hometown Program Employer/Student Fun Fact 1.
Topics Covered: Software requirement specification(SRS) Software requirement specification(SRS) Authors of SRS Authors of SRS Need of SRS Need of SRS.
Socio-technical Systems
CS3100 Software Project Management Week 26 - Quality Dr Tracy Hall.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2Slide 1 Chapter 2 Computer-Based System Engineering As modified by Randy Smith.
CS 425/625 Software Engineering Legacy Systems
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Cluster Reliability Project ISIS Vanderbilt University.
Software – Acquisition & Testing. ICT5 How to acquire software There are several options: The software may be written by the end-user; A specialist department.
ERP. What is ERP?  ERP stands for: Enterprise Resource Planning systems  This is what it does: attempts to integrate all data and processes of an organization.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Modeling Chapter 10 CSCI CSCI 1302 – Object-Oriented Modeling2 Outline The Software Development Process Discovering Relationships.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Requirements as Usecases Capturing the REQUIREMENT ANALYSIS DESIGN IMPLEMENTATION TEST.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Systems Life Cycle A2 Module Heathcote Ch.38.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 24 Delivering the System.
Software Requirements: A More Rigorous Look 1. Features and Use Cases at a High Level of Abstraction  Helps to better understand the main characteristics.
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Software Prototyping Rapid software development to validate requirements.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
What is a level of test?  Defined by a given Environment  Environment is a collection of people, hard ware, software, interfaces, data etc.
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
Reverse Engineering. Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates.
IS2210: Systems Analysis and Systems Design and Change Twitter:
Requirements Engineering Requirements Validation and Management Lecture-24.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Tom Dietterich 2001 Slide 1 System prototyping l Prototyping is the rapid development of a system l In the past, the developed system.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
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.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 6 Slide 1 Software Requirements (utvalgte foiler fra Kap 6 og 7 i Sommerville)
CS 425/625 Software Engineering Software Evolution
Introduction to Software Testing
“Would I have to do this all by myself …….?”
CS385T Software Engineering Dr.Doaa Sami
Presentation transcript:

CS3500 Software Engineering How does a “program” differ from a “software system”? Program System Tens to hundreds of lines of code Thousands to millions of lines of code Limited, easily acquired and unchanging specification Specifications complex, detailed and often change Usually implement single or few functions Multi-functional Usually written by 1 person in short time Designed/developed by many over months/years (Problems of teamwork, communication and conflict resolution) Limited/zero interface with other software Usually interfaces with other software (Problems of integration, different languages & standards, security issues, political ownership) Usually single-user Usually multi-user System testing much more difficult and time-consuming than program testing

A System & its Components A d f e B Controll -er c I1I1 I2I2 O1O1 O2O FBC FBC 1 FBC 2 FBC = Feedback Control I = Input O = output CS3500 Software Engineering

So – a system is a complex network of components which interact, directly and/or indirectly, in such a way that the stability of the parts and of the whole system is maintained over a set period of time. We can distinguish between Natural systems (e.g. solar system, ecosystems, physiological systems) and Man-made systems (e.g. political, legal, administrative systems. and information systems.) We automatically assume that all man-made systems should be designed to deliver certain defined objectives.

CS3500 Software Engineering System Properties: Man-made systems have five abstract properties: 1.Hierarchical structure - within a system we can see a hierarchy of levels of organisation, each more complex than the one below it 2.Emergent properties - systems have characteristics which are meaningful only when attributed to the whole, not to the individual parts 3.Communication - all systems exhibit the phenomenon of information transfer 4.Control - systems exist in environments whose conditions fluctuate.The control features of a system use the end-results of communication to maintain steady-state conditions as far as this is possible. 5.Objectives - man-made systems are designed to serve a purpose and so must have well- defined objectives

CS3500 Software Engineering Information Systems Information systems have these 5 general system properties. In addition, in an information system –  the components are data and processes which effect data  communication is achieved by the flow (movement) of data from one part of the system to another  control is achieved by the triggering of actions as a result of a data flow So – Components = data + processes acting on data Communication = flows of data from one component to another Control = pre-designed actions triggered by data flows

CS3500 Software Engineering Important! It follows from the slides so far that a body of software code and its associated hardware can only be considered to be a true “system” when the key characteristics of  hierarchy  emergent properties  communication  control and  objectives have been incorporated into the design before any coding begins It follows that a competent software engineer should consider themself, first and foremost, to be a designer of robust stable systems. The role of the software engineer as a programmer is a secondary and subsequent one (although when you are racing to meet a deadline in your Team Software Project then it is just possible that you may forget this!)

CS3500 Software Engineering Software as a Product? If we regard the end-result of the SD effort to be a “product” then what characteristics would we expect it to have?  Specification of what product can and cannot do and conditions under which it will work properly – product capability  “How to use” ( anything from detailed user manual to label on package)  Warranty and related conditions  After-sales service (support, e.g. helpdesk, training, etc)  Design documentation (technical specifications used for servicing/modifying product during its life)  Test documentation (what tests were performed, test data, test results). (Test performance provides measures of product quality)

CS3500 Software Engineering Engineering We know that physical products are: designed, manufactured and assembled using methods, a plan and a schedule tested to ensure and prove quality The focus is QUALITY ! The challenge that faces every software engineering effort is to develop a software product that is truly engineered in this way.

CS3500 Software Engineering The Traditional Engineering Sequence Analyse user needs Design product Build product Test product Supply to customer Service & maintenance

CS3500 Software Engineering The Traditional Way Because software engineering tried to copy the view of traditional physical engineering, it followed that it adopted a very linear/sequential approach to all of the activities involved in bringing a large piece of software and associated hardware to an end user.

CS3500 Software Engineering The Traditional Way Because software engineering tried to copy the view of traditional physical engineering, it followed that it adopted a very linear/sequential approach to all of the activities involved in bringing a large piece of software and associated hardware to an end user. This failed to recognise that with software systems -  user requirements are neither quickly or easily acquired  software needs to change as the needs of users change

CS3500 Software Engineering Product Life-expectancy (1) Initial high number of faults Faultsreduced &keptto low level by servicing Over time, faults rise due to material fatigue (wear out) End of product life

CS3500 Software Engineering Product Life-expectancy (2) Initial high number of bugs (faults) Bugsreduced to a fairly low level by servicing Over time, bug level rises and good structure breaks down due to changes in successive versions Further maintenance of software not cost- effective

CS3500 Software Engineering Software – the Cost of Change The longer a “fault” * remains embedded in the developing system, the more expensive it is to remove it! * Fault = bug, error, misunderstanding, omission, inconsistency or any failure to match what is being designed & developed with user requirements

CS3500 Software Engineering Software System Origin (1) Organisations acquire new software systems in 2 basic ways: 1.Designing & developing to suit the precise needs of users 2.Purchasing off-the-shelf software and then configuring the components to fit with organisational processes

CS3500 Software Engineering Software System Origin (2)

CS3500 Software Engineering Software System Origin (3) Which Option?  Off-the-shelf systems/components do not usually match user requirements precisely. This may mean requirements must be modified. This can have very serious knock-on effects on people, on processes within the organisation and on other related sub-systems.  Custom-built software usually takes longer to build and costs more but is likely to give a more precise fit to user requirements.

CS3500 Software Engineering Software System Origin (4) Large complex systems usually consist of a mixture of off-the-shelf components and specially built components. (These may be designed and coded in-house or contracted to a software developer.) “Glueing” these different elements together to provide an operational system is unpredictable in terms of the difficulties encountered and the time and effort costs involved.