dsharman's picture
From dsharman rss RSS  subscribe Subscribe

Software Engineering [6th Edition] Ian Sommerville 

Software Engineering [6th Edition] Ian Sommerville

 

 
 
Tags:  cheap  domain  register 
Views:  572
Downloads:  3
Published:  April 27, 2010
 
0
download

Share plick with friends Share
save to favorite
Report Abuse Report Abuse
 
Related Plicks
bla bla blackjack

bla bla blackjack

From: attasito
Views: 377 Comments: 0

 
web hosting - hosting services - hosting providers - 09843767636

web hosting - hosting services - hosting providers - 09843767636

From: sdiderid
Views: 1104 Comments: 0
web hosting - hosting services - hosting providers - 09843767636
 
Uses in bulk domain registrations

Uses in bulk domain registrations

From: brianm
Views: 539 Comments: 0

 
Get Cheap Domain Names for Sale

Get Cheap Domain Names for Sale

From: kasagani
Views: 40 Comments: 0

 
Facts, Fiction and Domain

Facts, Fiction and Domain

From: yvont1
Views: 145 Comments: 0
For More Information About Domain...

I Highly Recommend that You Visit This Link Right Now:
https://online.itslife.com.au
 
See all 
 
More from this user
Is There A Free Reverse Cell Phone Directory

Is There A Free Reverse Cell Phone Directory

From: dsharman
Views: 274
Comments: 0

Business cases for software security

Business cases for software security

From: dsharman
Views: 491
Comments: 0

O%27reilly Java%20&%20xslt

O%27reilly Java%20&%20xslt

From: dsharman
Views: 467
Comments: 0

Cheap Travellers Auto Insurance

Cheap Travellers Auto Insurance

From: dsharman
Views: 267
Comments: 0

ITS 2007 Conference Paper Abstract

ITS 2007 Conference Paper Abstract

From: dsharman
Views: 140
Comments: 0

Oracle eBusiness Suite Primer for PeopleSoft Users and Implementers

Oracle eBusiness Suite Primer for PeopleSoft Users and Implementers

From: dsharman
Views: 129
Comments: 0

See all 
 
 
 URL:          AddThis Social Bookmark Button
Embed Thin Player: (fits in most blogs)
Embed Full Player :
 
 

Name

Email (will NOT be shown to other users)

 

 
 
Comments: (watch)
 
 
Notes:
 
Slide 1: Introduction l Getting started with software engineering ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1
Slide 2: Objectives l l l To introduce software engineering and to explain its importance To set out the answers to key questions about software engineering To introduce ethical and professional issues and to explain why they are of concern to software engineers ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 2
Slide 3: Topics covered l l FAQs about software engineering Professional and ethical responsibility ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 3
Slide 4: Software engineering l l l l The economies of ALL developed nations are dependent on software More and more systems are software controlled Software engineering is concerned with theories, methods and tools for professional software development Software engineering expenditure represents a significant fraction of GNP in all developed countries Software Engineering, 6th edition. Chapter 1 Slide 4 ©Ian Sommerville 2000
Slide 5: Software costs l l l Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs Software engineering is concerned with costeffective software development ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 5
Slide 6: FAQs about software engineering l l l l l l What is software? What is software engineering? What is the difference between software engineering and computer science? What is the difference between software engineering and system engineering? What is a software process? What is a software process model? ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 6
Slide 7: FAQs about software engineering l l l l l What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? What are the key challenges facing software engineering? ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 7
Slide 8: What is software? l l l Computer programs and associated documentation Software products may be developed for a particular customer or may be developed for a general market Software products may be • • Generic - developed to be sold to a range of different customers Bespoke (custom) - developed for a single customer according to their specification ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 8
Slide 9: What is software engineering? l l Software engineering is an engineering discipline which is concerned with all aspects of software production Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 9
Slide 10: What is the difference between software engineering and computer science? l l Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software Computer science theories are currently insufficient to act as a complete underpinning for software engineering ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 10
Slide 11: What is the difference between software engineering and system engineering? l l System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process System engineers are involved in system specification, architectural design, integration and deployment ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 11
Slide 12: What is a software process? l l A set of activities whose goal is the development or evolution of software Generic activities in all software processes are: • • • • Specification - what the system should do and its development constraints Development - production of the software system Validation - checking that the software is what the customer wants Evolution - changing the software in response to changing demands ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 12
Slide 13: What is a software process model? l l A simplified representation of a software process, presented from a specific perspective Examples of process perspectives are • • • Workflow perspective - sequence of activities Data-flow perspective - information flow Role/action perspective - who does what l Generic process models • • • • Waterfall Evolutionary development Formal transformation Integration from reusable components Software Engineering, 6th edition. Chapter 1 Slide 13 ©Ian Sommerville 2000
Slide 14: What are the costs of software engineering? l l l Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability Distribution of costs depends on the development model that is used Software Engineering, 6th edition. Chapter 1 Slide 14 ©Ian Sommerville 2000
Slide 15: What are software engineering methods? l l Structured approaches to software development which include system models, notations, rules, design advice and process guidance Model descriptions • Descriptions of graphical models which should be produced l Rules • Constraints applied to system models l Recommendations • Advice on good design practice l Process guidance • What activities to follow Software Engineering, 6th edition. Chapter 1 Slide 15 ©Ian Sommerville 2000
Slide 16: What is CASE (Computer-Aided Software Engineering) l l Software systems which are intended to provide automated support for software process activities. CASE systems are often used for method support Upper-CASE • Tools to support the early process activities of requirements and design l Lower-CASE • Tools to support later activities such as programming, debugging and testing ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 16
Slide 17: What are the attributes of good software? l l The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable Maintainability • Software must evolve to meet changing needs l Dependability • Software must be trustworthy l Efficiency • Software should not make wasteful use of system resources l Usability • Software must be usable by the users for which it was designed Software Engineering, 6th edition. Chapter 1 Slide 17 ©Ian Sommerville 2000
Slide 18: What are the key challenges facing software engineering? l l Coping with legacy systems, coping with increasing diversity and coping with demands for reduced delivery times Legacy systems • Old, valuable systems must be maintained and updated l Heterogeneity • Systems are distributed and include a mix of hardware and software l Delivery • There is increasing pressure for faster delivery of software ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 18
Slide 19: Professional and ethical responsibility l l l Software engineering involves wider responsibilities than simply the application of technical skills Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals Ethical behaviour is more than simply upholding the law. ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 19
Slide 20: Issues of professional responsibility l Confidentiality • Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. l Competence • Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwith their competence. ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 20
Slide 21: Issues of professional responsibility l Intellectual property rights • Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected. l Computer misuse • Software engineers should not use their technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses). ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 21
Slide 22: ACM/IEEE Code of Ethics l l l The professional societies in the US have cooperated to produce a code of ethical practice. Members of these organisations sign up to the code of practice when they join. The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession. Software Engineering, 6th edition. Chapter 1 Slide 22 ©Ian Sommerville 2000
Slide 23: Code of ethics - preamble l Preamble • The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code. Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: Software Engineering, 6th edition. Chapter 1 Slide 23 • ©Ian Sommerville 2000
Slide 24: Code of ethics - principles l 1. PUBLIC • Software engineers shall act consistently with the public interest. l 2. CLIENT AND EMPLOYER • Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. l 3. PRODUCT • Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. Software Engineering, 6th edition. Chapter 1 Slide 24 ©Ian Sommerville 2000
Slide 25: Code of ethics - principles l JUDGMENT • Software engineers shall maintain integrity and independence in their professional judgment. l 5. MANAGEMENT • Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. l 6. PROFESSION • Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 25
Slide 26: Code of ethics - principles l 7. COLLEAGUES • Software engineers shall be fair to and supportive of their colleagues. l 8. SELF • Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 26
Slide 27: Ethical dilemmas l l l Disagreement in principle with the policies of senior management Your employer acts in an unethical way and releases a safety-critical system without finishing the testing of the system Participation in the development of military weapons systems or nuclear systems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 27
Slide 28: Key points l Software engineering is an engineering discipline which is concerned with all aspects of software production. Software products consist of developed programs and associated documentation. Essential product attributes are maintainability, dependability, efficiency and usability. The software process consists of activities which are involved in developing software products. Basic activities are software specification, development, validation and evolution. Methods are organised ways of producing software. They include suggestions for the process to be followed, the notations to be used, rules governing the system descriptions which are produced and design guidelines. l l l ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 28
Slide 29: Key points l CASE tools are software systems which are designed to support routine activities in the software process such as editing design diagrams, checking diagram consistency and keeping track of program tests which have been run. Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues. Professional societies publish codes of conduct which set out the standards of behaviour expected of their members. l l ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 29
Slide 30: Systems Engineering l Designing, implementing, deploying and operating systems which include hardware, software and people ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 1
Slide 31: Objectives l l l l To explain why system software is affected by broader system engineering issues To introduce the concept of emergent system properties such as reliability and security To explain why the systems environment must be considered in the system design process To explain system engineering and system procurement processes ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 2
Slide 32: Topics covered l l l l l Emergent system properties Systems and their environment System modelling The system engineering process System procurement ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 3
Slide 33: What is a system? l l l l A purposeful collection of inter-related components working together towards some common objective. A system may include software, mechanical, electrical and electronic hardware and be operated by people. System components are dependent on other system components The properties and behaviour of system components are inextricably inter-mingled Software Engineering, 6th edition. Chapter 2 Slide 4 ©Ian Sommerville 2000
Slide 34: Problems of systems engineering l l Large systems are usually designed to solve 'wicked' problems Systems engineering requires a great deal of co-ordination across disciplines • • Almost infinite possibilities for design trade-offs across components Mutual distrust and lack of understanding across engineering disciplines l Systems must be designed to last many years in a changing environment Software Engineering, 6th edition. Chapter 2 Slide 5 ©Ian Sommerville 2000
Slide 35: Software and systems engineering l l l The proportion of software in systems is increasing. Software-driven general purpose electronics is replacing special-purpose systems Problems of systems engineering are similar to problems of software engineering Software is (unfortunately) seen as a problem in systems engineering. Many large system projects have been delayed because of software problems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 6
Slide 36: Emergent properties l l l Properties of the system as a whole rather than properties that can be derived from the properties of components of a system Emergent properties are a consequence of the relationships between system components They can therefore only be assessed and measured once the components have been integrated into a system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 7
Slide 37: Examples of emergent properties l The overall weight of the system • This is an example of an emergent property that can be computed from individual component properties. l The reliability of the system • This depends on the reliability of system components and the relationships between the components. l The usability of a system • This is a complex property which is not simply dependent on the system hardware and software but also depends on the system operators and the environment where it is used. Software Engineering, 6th edition. Chapter 2 Slide 8 ©Ian Sommerville 2000
Slide 38: Types of emergent property l Functional properties • These appear when all the parts of a system work together to achieve some objective. For example, a bicycle has the functional property of being a transportation device once it has been assembled from its components. l Non-functional emergent properties • Examples are reliability, performance, safety, and security. These relate to the behaviour of the system in its operational environment. They are often critical for computer-based systems as failure to achieve some minimal defined level in these properties may make the system unusable. ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 9
Slide 39: System reliability engineering l l l l Because of component inter-dependencies, faults can be propagated through the system System failures often occur because of unforeseen inter-relationships between components It is probably impossible to anticipate all possible component relationships Software reliability measures may give a false picture of the system reliability Software Engineering, 6th edition. Chapter 2 Slide 10 ©Ian Sommerville 2000
Slide 40: Influences on reliability l Hardware reliability • What is the probability of a hardware component failing and how long does it take to repair that component? l Software reliability • How likely is it that a software component will produce an incorrect output. Software failure is usually distinct from hardware failure in that software does not wear out. l Operator reliability • How likely is it that the operator of a system will make an error? ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 11
Slide 41: Reliability relationships l l l Hardware failure can generate spurious signals that are outside the range of inputs expected by the software Software errors can cause alarms to be activated which cause operator stress and lead to operator errors The environment in which a system is installed can affect its reliability ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 12
Slide 42: The ‘shall-not’ properties l l Properties such as performance and reliability can be measured However, some properties are properties that the system should not exhibit • • Safety - the system should not behave in an unsafe way Security - the system should not permit unauthorised use l Measuring or assessing these properties is very hard ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 13
Slide 43: Systems and their environment l l l l Systems are not independent but exist in an environment System’s function may be to change its environment Environment affects the functioning of the system e.g. system may require electrical supply from its environment The organizational as well as the physical environment may be important ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 14
Slide 44: System hierarchies T own Street Building Heating system Security system Power system Lighting system Water system Waste system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 15
Slide 45: Human and organisational factors l Process changes • Does the system require changes to the work processes in the environment? l Job changes • Does the system de-skill the users in an environment or cause them to change the way they work? l Organisational changes • Does the system change the political power structure in an organisation? ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 16
Slide 46: System architecture modelling l l l l An architectural model presents an abstract view of the sub-systems making up a system May include major information flows between subsystems Usually presented as a block diagram May identify different types of functional component in the model ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 17
Slide 47: Intruder alarm system Movement sensors Door sensors Alarm controller External control centre Siren Voice synthesizer Telephone caller ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 18
Slide 48: Component types in alarm system l Sensor • Movement sensor, door sensor l Actuator • Siren l Communication • Telephone caller l Co-ordination • Alarm controller l Interface • Voice synthesizer Software Engineering, 6th edition. Chapter 2 Slide 19 ©Ian Sommerville 2000
Slide 49: Radar system Transponder system Data comms. system Aircraft comms. Telephone system Position processor Backup position processor Comms. processor Backup comms. processor Aircraft simulation system Flight plan database ATC system architecture W eather map system Accounting system Controller info. system Controller consoles Activity logging system ©Ian Sommerville 1995 Software Engineering, 5th edition. Chapter 31. Slide ##
Slide 50: Functional system components l l l l l l Sensor components Actuator components Computation components Communication components Co-ordination components Interface components ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 21
Slide 51: System components l Sensor components • Collect information from the system’s environment e.g. radars in an air traffic control system l Actuator components • Cause some change in the system’s environment e.g. valves in a process control system which increase or decrease material flow in a pipe l Computation components • Carry out some computations on an input to produce an output e.g. a floating point processor in a computer system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 22
Slide 52: System components l Communication components • Allow system components to communicate with each other e.g. network linking distributed computers l Co-ordination components • Co-ordinate the interactions of other system components e.g. scheduler in a real-time system l Interface components • Facilitate the interactions of other system components e.g. operator interface l All components are now usually software controlled Software Engineering, 6th edition. Chapter 2 Slide 23 ©Ian Sommerville 2000
Slide 53: Component types in alarm system l Sensor • Movement sensor, Door sensor l Actuator • Siren l Communication • Telephone caller l Coordination • Alarm controller l Interface • Voice synthesizer Software Engineering, 6th edition. Chapter 2 Slide 24 ©Ian Sommerville 2000
Slide 54: The system engineering process l Usually follows a ‘waterfall’ model because of the need for parallel development of different parts of the system • Little scope for iteration between phases because hardware changes are very expensive. Software may have to compensate for hardware problems l Inevitably involves engineers from different disciplines who must work together • Much scope for misunderstanding here. Different disciplines use a different vocabulary and much negotiation is required. Engineers may have personal agendas to fulfil Software Engineering, 6th edition. Chapter 2 Slide 25 ©Ian Sommerville 2000
Slide 55: The system engineering process Requirements definition System design Sub-system development System integration System installation System decommissioning System evolution ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 26
Slide 56: Inter-disciplinary involvement Software engineering Electronic engineering Mechanical engineering Structural engineering ATC systems engineering User interface design Civil engineering Electrical engineering Architecture ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 27
Slide 57: System requirements definition l Three types of requirement defined at this stage • • • Abstract functional requirements. System functions are defined in an abstract way System properties. Non-functional requirements for the system in general are defined Undesirable characteristics. Unacceptable system behaviour is specified l Should also define overall organisational objectives for the system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 28
Slide 58: System objectives l Functional objectives • To provide a fire and intruder alarm system for the building which will provide internal and external warning of fire or unauthorized intrusion l Organisational objectives • To ensure that the normal functioning of work carried out in the building is not seriously disrupted by events such as fire and unauthorized intrusion ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 29
Slide 59: System requirements problems l l l Changing as the system is being specified Must anticipate hardware/communications developments over the lifetime of the system Hard to define non-functional requirements (particularly) without an impression of component structure of the system. ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 30
Slide 60: The system design process l Partition requirements • Organise requirements into related groups l Identify sub-systems • Identify a set of sub-systems which collectively can meet the system requirements l Assign requirements to sub-systems • Causes particular problems when COTS are integrated l l Specify sub-system functionality Define sub-system interfaces • Critical activity for parallel sub-system development Software Engineering, 6th edition. Chapter 2 Slide 31 ©Ian Sommerville 2000
Slide 61: The system design process Partition requirements Identify sub-systems Define sub-system interfaces Specify sub-system functionality Assign requirements to sub-systems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 32
Slide 62: System design problems l l l Requirements partitioning to hardware, software and human components may involve a lot of negotiation Difficult design problems are often assumed to be readily solved using software Hardware platforms may be inappropriate for software requirements so software must compensate for this ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 33
Slide 63: Sub-system development l l l l Typically parallel projects developing the hardware, software and communications May involve some COTS (Commercial Off-theShelf) systems procurement Lack of communication across implementation teams Bureaucratic and slow mechanism for proposing system changes means that the development schedule may be extended because of the need for rework Software Engineering, 6th edition. Chapter 2 Slide 34 ©Ian Sommerville 2000
Slide 64: System integration l l l l The process of putting hardware, software and people together to make a system Should be tackled incrementally so that sub-systems are integrated one at a time Interface problems between sub-systems are usually found at this stage May be problems with uncoordinated deliveries of system components ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 35
Slide 65: System installation l l l l l Environmental assumptions may be incorrect May be human resistance to the introduction of a new system System may have to coexist with alternative systems for some time May be physical installation problems (e.g. cabling problems) Operator training has to be identified ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 36
Slide 66: System operation l l l Will bring unforeseen requirements to light Users may use the system in a way which is not anticipated by system designers May reveal problems in the interaction with other systems • • • Physical problems of incompatibility Data conversion problems Increased operator error rate because of inconsistent interfaces ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 37
Slide 67: System evolution l l Large systems have a long lifetime. They must evolve to meet changing requirements Evolution is inherently costly • • • • Changes must be analysed from a technical and business perspective Sub-systems interact so unanticipated problems can arise There is rarely a rationale for original design decisions System structure is corrupted as changes are made to it l Existing systems which must be maintained are sometimes called legacy systems Software Engineering, 6th edition. Chapter 2 Slide 38 ©Ian Sommerville 2000
Slide 68: System decommissioning l l Taking the system out of service after its useful lifetime May require removal of materials (e.g. dangerous chemicals) which pollute the environment • Should be planned for in the system design by encapsulation l May require data to be restructured and converted to be used in some other system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 39
Slide 69: System procurement l l Acquiring a system for an organization to meet some need Some system specification and architectural design is usually necessary before procurement • • You need a specification to let a contract for system development The specification may allow you to buy a commercial off-the-shelf (COTS) system. Almost always cheaper than developing a system from scratch ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 40
Slide 70: The system procurement process Off-the-shelf system available Adapt requirements Survey market for existing systems Issue request to tender Bespoke system required Select tender Negotiate contract Let contract for development Choose system Issue request for bids Choose supplier ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 41
Slide 71: Procurement issues l l l Requirements may have to be modified to match the capabilities of off-the-shelf components The requirements specification may be part of the contract for the development of the system There is usually a contract negotiation period to agree changes after the contractor to build a system has been selected ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 42
Slide 72: Contractors and sub-contractors l l l The procurement of large hardware/software systems is usually based around some principal contractor Sub-contracts are issued to other suppliers to supply parts of the system Customer liases with the principal contractor and does not deal directly with sub-contractors ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 43
Slide 73: Contractor/Sub-contractor model System customer Principal contractor Sub-contractor 1 Sub-contractor 2 Sub-contr actor 3 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 44
Slide 74: Key points l l l System engineering involves input from a range of disciplines Emergent properties are properties that are characteristic of the system as a whole and not its component parts System architectural models show major subsystems and inter-connections. They are usually described using block diagrams ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 45
Slide 75: Key points l l l System component types are sensor, actuator, computation, co-ordination, communication and interface The systems engineering process is usually a waterfall model and includes specification, design, development and integration. System procurement is concerned with deciding which system to buy and who to buy it from ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 2 Slide 46
Slide 76: Conclusion l l l Systems engineering is hard! There will never be an easy answer to the problems of complex system development Software engineers do not have all the answers but may be better at taking a systems viewpoint Disciplines need to recognise each others strengths and actively rather than reluctantly cooperate in the systems engineering process Software Engineering, 6th edition. Chapter 2 Slide 47 ©Ian Sommerville 2000
Slide 77: Software Processes l Coherent sets of activities for specifying, designing, implementing and testing software systems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1
Slide 78: Objectives l l l l To introduce software process models To describe a number of different process models and when they may be used To describe outline process models for requirements engineering, software development, testing and evolution To introduce CASE technology to support software process activities ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 2
Slide 79: Topics covered l l l l l l l Software process models Process iteration Software specification Software design and implementation Software validation Software evolution Automated process support ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 3
Slide 80: The software process l A structured set of activities required to develop a software system • • • • Specification Design Validation Evolution l A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective Software Engineering, 6th edition. Chapter 1 Slide 4 ©Ian Sommerville 2000
Slide 81: Software process models ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 5
Slide 82: Generic software process models l The waterfall model • Separate and distinct phases of specification and development l Evolutionary development • Specification and development are interleaved l Formal systems development • A mathematical system model is formally transformed to an implementation l Reuse-based development • The system is assembled from existing components ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 6
Slide 83: Waterfall model Requirements definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 7
Slide 84: Waterfall model phases l l l l l l Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance The drawback of the waterfall model is the difficulty of accommodating change after the process is underway ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 8
Slide 85: Waterfall model problems l l l Inflexible partitioning of the project into distinct stages This makes it difficult to respond to changing customer requirements Therefore, this model is only appropriate when the requirements are well-understood ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 9
Slide 86: Evolutionary development l Exploratory development • Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements l Throw-away prototyping • Objective is to understand the system requirements. Should start with poorly understood requirements ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 10
Slide 87: Evolutionary development Concurrent activities Initial version Specification Outline description Development Intermediate versions Validation Final version ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 11
Slide 88: Evolutionary development l Problems • • • Lack of process visibility Systems are often poorly structured Special skills (e.g. in languages for rapid prototyping) may be required l Applicability • • • For small or medium-size interactive systems For parts of large systems (e.g. the user interface) For short-lifetime systems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 12
Slide 89: Formal systems development l l l Based on the transformation of a mathematical specification through different representations to an executable program Transformations are ‘correctness-preserving’ so it is straightforward to show that the program conforms to its specification Embodied in the ‘Cleanroom’ approach to software development ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 13
Slide 90: Formal systems development Requirements definition Formal specification Formal transformation Integration and system testing ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 14
Slide 91: Formal transformations Formal transformations T1 T2 T3 T4 Formal specification R1 R2 R3 Executable program P1 P2 P3 P4 Proofs of transformation correctness ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 15
Slide 92: Formal systems development l Problems • • Need for specialised skills and training to apply the technique Difficult to formally specify some aspects of the system such as the user interface l Applicability • Critical systems especially those where a safety or security case must be made before the system is put into operation ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 16
Slide 93: Reuse-oriented development l l Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems Process stages • • • • Component analysis Requirements modification System design with reuse Development and integration l This approach is becoming more important but still limited experience with it Software Engineering, 6th edition. Chapter 1 Slide 17 ©Ian Sommerville 2000
Slide 94: Reuse-oriented development Requirements specification Component analysis Requirements modification System design with reuse Development and integration System validation ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 18
Slide 95: Process iteration ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 19
Slide 96: Process iteration l l l System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems Iteration can be applied to any of the generic process models Two (related) approaches • • Incremental development Spiral development ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 20
Slide 97: Incremental development l l l Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality User requirements are prioritised and the highest priority requirements are included in early increments Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve Software Engineering, 6th edition. Chapter 1 Slide 21 ©Ian Sommerville 2000
Slide 98: Incremental development Design system architecture Define outline requirements Assign requirements to increments Develop system increment Validate increment Integrate increment Validate system Final system System incomplete ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 22
Slide 99: Incremental development advantages l l l l Customer value can be delivered with each increment so system functionality is available earlier Early increments act as a prototype to help elicit requirements for later increments Lower risk of overall project failure The highest priority system services tend to receive the most testing ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 23
Slide 100: Extreme programming l l New approach to development based on the development and delivery of very small increments of functionality Relies on constant code improvement, user involvement in the development team and pairwise programming ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 24
Slide 101: Spiral development l l l l Process is represented as a spiral rather than as a sequence of activities with backtracking Each loop in the spiral represents a phase in the process. No fixed phases such as specification or design loops in the spiral are chosen depending on what is required Risks are explicitly assessed and resolved throughout the process Software Engineering, 6th edition. Chapter 1 Slide 25 ©Ian Sommerville 2000
Slide 102: Spiral model of the software process Determine objectives alternatives and constraints Evaluate alternatives identify, resolve risks Risk analysis Risk analysis Risk analysis Prototype 3 Prototype 2 Operational protoype REVIEW Requirements plan Life-cycle plan Risk analysis Prototype 1 Simulations, models, benchmarks Concept of Operation S/W requirements Product design Development plan Integration and test plan Requirement validation Design V&V Detailed design Code Unit test Plan next phase Integration test Acceptance test Develop, verify Service next-level product ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 26
Slide 103: Spiral model sectors l Objective setting • Specific objectives for the phase are identified l Risk assessment and reduction • Risks are assessed and activities put in place to reduce the key risks l Development and validation • A development model for the system is chosen which can be any of the generic models l Planning • The project is reviewed and the next phase of the spiral is planned Software Engineering, 6th edition. Chapter 1 Slide 27 ©Ian Sommerville 2000
Slide 104: Software specification l l The process of establishing what services are required and the constraints on the system’s operation and development Requirements engineering process • • • • Feasibility study Requirements elicitation and analysis Requirements specification Requirements validation ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 28
Slide 105: The requirements engineering process Feasibility study Requirements elicitation and analysis Requirements specification Requirements validation Feasibility report System models User and system requirements Requirements document ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 29
Slide 106: Software design and implementation l l The process of converting the system specification into an executable system Software design • Design a software structure that realises the specification l Implementation • Translate this structure into an executable program l The activities of design and implementation are closely related and may be inter-leaved ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 30
Slide 107: Design process activities l l l l l l Architectural design Abstract specification Interface design Component design Data structure design Algorithm design ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 31
Slide 108: The software design process Requirements specification Design activities Architectural design Abstract specification Interface design Component design Data structure design Algorithm design System architecture Software specification Interface specification Component specification Design products Data structure specification Algorithm specification ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 32
Slide 109: Design methods l l l Systematic approaches to developing a software design The design is usually documented as a set of graphical models Possible models • • • • Data-flow model Entity-relation-attribute model Structural model Object models ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 33
Slide 110: Programming and debugging l l l Translating a design into a program and removing errors from that program Programming is a personal activity - there is no generic programming process Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 34
Slide 111: The debugging process Locate error Design error repair Repair error Re-test program ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 35
Slide 112: Software validation l l l Verification and validation is intended to show that a system conforms to its specification and meets the requirements of the system customer Involves checking and review processes and system testing System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system Software Engineering, 6th edition. Chapter 1 Slide 36 ©Ian Sommerville 2000
Slide 113: The testing process Unit testing Module testing Sub-system testing System testing Acceptance testing Component testing ©Ian Sommerville 2000 Integration testing User testing Slide 37 Software Engineering, 6th edition. Chapter 1
Slide 114: Testing stages l Unit testing • Individual components are tested l Module testing • Related collections of dependent components are tested l Sub-system testing • Modules are integrated into sub-systems and tested. The focus here should be on interface testing l System testing • Testing of the system as a whole. Testing of emergent properties l Acceptance testing • Testing with customer data to check that it is acceptable Software Engineering, 6th edition. Chapter 1 Slide 38 ©Ian Sommerville 2000
Slide 115: Testing phases Requirements specification System specification System design Detailed design Acceptance test plan System integration test plan Sub-system integration test plan Module and unit code and tess Service Acceptance test System integration test Sub-system integration test ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 39
Slide 116: Software evolution l l l Software is inherently flexible and can change. As requirements change through changing business circumstances, the software that supports the business must also evolve and change Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new Software Engineering, 6th edition. Chapter 1 Slide 40 ©Ian Sommerville 2000
Slide 117: System evolution Define system requirements Assess existing systems Propose system changes Modify systems Existing systems New system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 41
Slide 118: Automated process support ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 42
Slide 119: CASE l l Computer-aided software engineering (CASE) is software to support software development and evolution processes Activity automation • • • • • Graphical editors for system model development Data dictionary to manage design entities Graphical UI builder for user interface construction Debuggers to support program fault finding Automated translators to generate new versions of a program ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 43
Slide 120: Case technology l Case technology has led to significant improvements in the software process though not the order of magnitude improvements that were once predicted • • Software engineering requires creative thought - this is not readily automatable Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 44
Slide 121: CASE classification l l Classification helps us understand the different types of CASE tools and their support for process activities Functional perspective • Tools are classified according to their specific function l Process perspective • Tools are classified according to process activities that are supported l Integration perspective • Tools are classified according to their organisation into integrated units Software Engineering, 6th edition. Chapter 1 Slide 45 ©Ian Sommerville 2000
Slide 122: Functional tool classification Tool type Planning tools Editing tools Change management tools Configuration management tools Prototyping tools Method-support tools Language-processing tools Program analysis tools Testing tools Debugging tools Documentation tools Re-engineering tools ©Ian Sommerville 2000 Examples PERT tools, estimation tools, spreadsheets Text editors, diagram editors, word processors Requirements traceability tools, change control systems Version management systems, system building tools Very high-level languages, user interface generators Design editors, data dictionaries, code generators Compilers, interpreters Cross reference generators, static analysers, dynamic analysers Test data generators, file comparators Interactive debugging systems Page layout programs, image editors Cross-reference systems, program restructuring systems Slide 46 Software Engineering, 6th edition. Chapter 1
Slide 123: Reengineering tools Testing tools Debugging tools Program analysis tools Language-processing tools Method support tools Prototyping tools Configuration management tools Change management tools Documentation tools Editing tools Planning tools Specification Design Implementation Activity-based classification Verification and Validation
Slide 124: CASE integration l Tools • Support individual process tasks such as design consistency checking, text editing, etc. l Workbenches • Support a process phase such as specification or design, Normally include a number of integrated tools l Environments • Support all or a substantial part of an entire software process. Normally include several integrated workbenches ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 48
Slide 125: Tools, workbenches, environments CASE technolo gy Tools Workbenches Environments Editors Compilers File comparators Integrated environments Process-centred environments Analysis and design Programming Testing Multi-method workbenches Single-method workbenches General-purpose workbenches Language-specific workbenches ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 49
Slide 126: Key points l l l l Software processes are the activities involved in producing and evolving a software system. They are represented in a software process model General activities are specification, design and implementation, validation and evolution Generic process models describe the organisation of software processes Iterative process models describe the software process as a cycle of activities Software Engineering, 6th edition. Chapter 1 Slide 50 ©Ian Sommerville 2000
Slide 127: Key points l l l l l Requirements engineering is the process of developing a software specification Design and implementation processes transform the specification to an executable program Validation involves checking that the system meets to its specification and user needs Evolution is concerned with modifying the system after it is in use CASE technology supports software process activities Software Engineering, 6th edition. Chapter 1 Slide 51 ©Ian Sommerville 2000
Slide 128: Project management l Organising, planning and scheduling software projects ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 1
Slide 129: Objectives l l l l To introduce software project management and to describe its distinctive characteristics To discuss project planning and the planning process To show how graphical schedule representations are used by project management To discuss the notion of risks and the risk management process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 2
Slide 130: Topics covered l l l l Management activities Project planning Project scheduling Risk management ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 3
Slide 131: Software project management l l Concerned with activities involved in ensuring that software is delivered on time and on schedule and in accordance with the requirements of the organisations developing and procuring the software Project management is needed because software development is always subject to budget and schedule constraints that are set by the organisation developing the software ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 4
Slide 132: Software management distinctions l l l l l The product is intangible The product is uniquely flexible Software engineering is not recognized as an engineering discipline with the sane status as mechanical, electrical engineering, etc. The software development process is not standardised Many software projects are 'one-off' projects ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 5
Slide 133: Management activities ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 6
Slide 134: Management activities l l l l l l Proposal writing Project planning and scheduling Project costing Project monitoring and reviews Personnel selection and evaluation Report writing and presentations ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 7
Slide 135: Management commonalities l l l These activities are not peculiar to software management Many techniques of engineering project management are equally applicable to software project management Technically complex engineering systems tend to suffer from the same problems as software systems ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 8
Slide 136: Project staffing l May not be possible to appoint the ideal people to work on a project • • • Project budget may not allow for the use of highly-paid staff Staff with the appropriate experience may not be available An organisation may wish to develop employee skills on a software project l Managers have to work within these constraints especially when (as is currently the case) there is an international shortage of skilled IT staff ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 9
Slide 137: Project planning ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 10
Slide 138: Project planning l l l Probably the most time-consuming project management activity Continuous activity from initial concept through to system delivery. Plans must be regularly revised as new information becomes available Various different types of plan may be developed to support the main software project plan that is concerned with schedule and budget ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 11
Slide 139: Types of project plan Plan Quality plan Validation plan Configuration management plan Maintenance plan Staff development plan. Description Describes the quality procedures and standards that will be used in a project. Describes the approach, resources and schedule used for system validation. Describes the configuration management procedures and structures to be used. Predicts the maintenance requirements of the system, maintenance costs and effort required. Describes how the skills and experience of the project team members will be developed. ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 12
Slide 140: Project planning process Establish the project constraints Make initial assessments of the project parameters Define project milestones and deliverables while project has not been completed or cancelled loop Draw up project schedule Initiate activities according to schedule Wait ( for a while ) Review project progress Revise estimates of project parameters Update the project schedule Re-negotiate project constraints and deliverables if ( problems arise ) then Initiate technical review and possible revision end if end loop ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 13
Slide 141: Project plan structure l l l l l l l Introduction Project organisation Risk analysis Hardware and software resource requirements Work breakdown Project schedule Monitoring and reporting mechanisms ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 14
Slide 142: Activity organization l l l l Activities in a project should be organised to produce tangible outputs for management to judge progress Milestones are the end-point of a process activity Deliverables are project results delivered to customers The waterfall process allows for the straightforward definition of progress milestones ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 15
Slide 143: Milestones in the RE process ACTIVITIES Feasibility study Requirements analysis Prototype development Design study Requirements specification Feasibility report Requirements definition Evaluation report MILESTONES Architectural design Requirements specification ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 16
Slide 144: Project scheduling ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 17
Slide 145: Project scheduling l l l l Split project into tasks and estimate time and resources required to complete each task Organize tasks concurrently to make optimal use of workforce Minimize task dependencies to avoid delays caused by one task waiting for another to complete Dependent on project managers intuition and experience Software Engineering, 6th edition. Chapter 4 Slide 18 ©Ian Sommerville 2000
Slide 146: The project scheduling process Identify activities Identify activity dependencies Estimate resources for activities Allocate people to activities Create project charts Software requirements Activity charts and bar charts ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 19
Slide 147: Scheduling problems l l l l Estimating the difficulty of problems and hence the cost of developing a solution is hard Productivity is not proportional to the number of people working on a task Adding people to a late project makes it later because of communication overheads The unexpected always happens. Always allow contingency in planning ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 20
Slide 148: Bar charts and activity networks l l l l Graphical notations used to illustrate the project schedule Show project breakdown into tasks. Tasks should not be too small. They should take about a week or two Activity charts show task dependencies and the the critical path Bar charts show schedule against calendar time ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 21
Slide 149: Task durations and dependencies Task T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 ©Ian Sommerville 2000 Duration (days) 8 15 15 10 10 5 20 25 15 15 7 10 Dependencies T1 (M1) T2, T4 (M2) T1, T2 (M3) T1 (M1) T4 (M5) T3, T6 (M4) T5, T7 (M7) T9 (M6) T11 (M8) Slide 22 Software Engineering, 6th edition. Chapter 4
Slide 150: Activity network 14/7/99 8 days T1 4/7/99 start 15 days T2 10 days T4 18/7/99 M5 25 days T8 19/9/99 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 23 15 days T3 5 days T6 20 days T7 4/8/99 M4 15 days T9 25/8/99 M6 7 days T11 10 days T5 11/8/99 M7 15 days T10 5/9/99 M8 10 days T12 M1 25/7/99 M3 25/7/99 M2 Finish

   
Time on Slide Time on Plick
Slides per Visit Slide Views Views by Location