2Administrivia T’Christopher Gardner Office Hours M,W 1900-2000--here socrates.coloradotech.edu/~tgardnerMirrored on turningwheel.net/ctuOfficeif you desperately need me :)
3Specification: Standard Gauge Train Tracks 4’ 8.5” They’re built that way in EnglandEngland makes much of the world’s Rail linesThey were built by the people who built the pre-railway TramwaysThe tram people used the same jigs and tools used for building Wagons
4Specification: Standard Gauge Train Tracks 4’ 8.5” Wagon wheels had to operate over rutted roadsRoads were built by the RomansTransportation system for LegionsRuts created by ChariotsChariots are the width of 2 horses/harnesses
5Any Unexpected Results of the Specification? SRBsThiokol, UtahA major design feature of, arguably, the most advanced transportation system in the world was defined by a horse’s bottom...
10Overview - Part One Software process, products, & models Chapter 1Computer-based EngineeringChapter 2Software ProcessesChapter 3
11The Problem Software projects late and over-budget Software does not meet the needs of the customerNew technology demands
12Problems of systems engineering Large systems are usually designed to solve 'wicked' problemsSystems engineering requires a great deal of co-ordination across disciplinesAlmost infinite possibilities for design trade-offs across componentsMutual distrust and lack of understanding across engineering disciplinesSystems must be designed to last many years in a changing environment
13Software EngineeringSoftware - “programs, routines, and symbolic language that control the functioning of hardware and direct its operation”Engineering - “application of science to practical ends such as the design, manufacture, and operation of structures, machines, and systems”American Heritage College Dictionary
14Software engineeringThe economies of ALL developed nations are dependent on softwareMore and more systems are software controlledSoftware engineering is concerned with theories, methods and tools for professional software developmentSoftware engineering expenditure represents a significant fraction of GNP in all developed countries
15Software costsSoftware costs often dominate system costs. The costs of software on a PC are often greater than the hardware costSoftware costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costsSoftware engineering is concerned with cost-effective software development
16What is the difference between software engineering and computer science? Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful softwareComputer science theories are currently insufficient to act as a complete underpinning for software engineering
17What is the difference between software engineering and system engineering? System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this processSystem engineers are involved in system specification, architectural design, integration and deployment
18What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usableMaintainabilitySoftware must evolve to meet changing needsDependabilitySoftware must be trustworthyEfficiencySoftware should not make wasteful use of system resourcesUsabilitySoftware must be usable by the users for which it was designed
19What are the key challenges facing software engineering? Coping with legacy systems, coping with increasing diversity and coping with demands for reduced delivery timesLegacy systemsOld, valuable systems must be maintained and updatedHeterogeneitySystems are distributed and include a mix of hardware and softwareDeliveryThere is increasing pressure for faster delivery of software
20Systems Engineering System collection of interrelated components that work together to achieve some objectivemore than the sum of its partsemergent propertiesexist in an environmentmakes a change to the environmenthas indirect relationships with the environment
23What is a system?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 componentsThe properties and behaviour of system components are inextricably inter-mingled
24Problems of systems engineering Large systems are usually designed to solve 'wicked' problemsSystems engineering requires a great deal of co-ordination across disciplinesAlmost infinite possibilities for design trade-offs across componentsMutual distrust and lack of understanding across engineering disciplinesSystems must be designed to last many years in a changing environment
25Emergent propertiesProperties of the system as a whole rather than properties that can be derived from the properties of components of a systemEmergent properties are a consequence of the relationships between system componentsThey can therefore only be assessed and measured once the components have been integrated into a system
26Examples of emergent properties The overall weight of the systemThis is an example of an emergent property that can be computed from individual component properties.The reliability of the systemThis depends on the reliability of system components and the relationships between the components.The usability of a systemThis 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.
27Types of emergent property Functional propertiesThese 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.Non-functional emergent propertiesExamples 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.
28System reliability engineering Because of component inter-dependencies, faults can be propagated through the systemSystem failures often occur because of unforeseen inter-relationships between componentsIt is probably impossible to anticipate all possible component relationshipsSoftware reliability measures may give a false picture of the system reliability
29Influences on reliability Hardware reliabilityWhat is the probability of a hardware component failing and how long does it take to repair that component?Software reliabilityHow 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.Operator reliabilityHow likely is it that the operator of a system will make an error?
30Human and organizational factors Process changesDoes the system require changes to the work processes in the environment?Job changesDoes the system de-skill the users in an environment or cause them to change the way they work?Organizational changesDoes the system change the political power structure in an organisation?
31Professional and ethical responsibility Software engineering involves wider responsibilities than simply the application of technical skillsSoftware engineers must behave in an honest and ethically responsible way if they are to be respected as professionalsEthical behaviour is more than simply upholding the law.
32Issues of professional responsibility ConfidentialityEngineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.CompetenceEngineers should not misrepresent their level of competence. They should not knowingly accept work which is outside their competence.
33Issues of professional responsibility Intellectual property rightsEngineers 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.Computer misuseSoftware 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).
34ACM/IEEE Code of Ethics The professional societies in the US have cooperated to produce a code of ethical practice.Members of these organizations 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.
35Code of ethics - 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:
36Code of ethics - principles 1. PUBLICSoftware engineers shall act consistently with the public interest.2. CLIENT AND EMPLOYERSoftware engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.3. PRODUCTSoftware engineers shall ensure that their products and related modifications meet the highest professional standards possible.
37Code of ethics - principles 4. JUDGMENTSoftware engineers shall maintain integrity and independence in their professional judgment.5. MANAGEMENTSoftware engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.6. PROFESSIONSoftware engineers shall advance the integrity and reputation of the profession consistent with the public interest.
38Code of ethics - principles 7. COLLEAGUESSoftware engineers shall be fair to and supportive of their colleagues.8. SELFSoftware engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
39System architecture modelling An architectural model presents an abstract view of the sub-systems making up a systemMay include major information flows between sub-systemsUsually presented as a block diagramMay identify different types of functional component in the model
41Component types in alarm system SensorMovement sensor, door sensorActuatorSirenCommunicationTelephone callerCo-ordinationAlarm controllerInterfaceVoice synthesizer
42The system engineering process Usually follows a ‘waterfall’ model because of the need for parallel development of different parts of the systemLittle scope for iteration between phases because hardware changes are very expensive. Software may have to compensate for hardware problemsInevitably involves engineers from different disciplines who must work togetherMuch scope for misunderstanding here. Different disciplines use a different vocabulary and much negotiation is required. Engineers may have personal agendas to fulfil
44System objectives Functional objectives Organisational objectives To provide a fire and intruder alarm system for the building which will provide internal and external warning of fire or unauthorized intrusionOrganisational objectivesTo ensure that the normal functioning of work carried out in the building is not seriously disrupted by events such as fire and unauthorized intrusion
45System requirements problems Changing as the system is being specifiedMust anticipate hardware/communications developments over the lifetime of the systemHard to define non-functional requirements (particularly) without an impression of component structure of the system.
46The system design process Partition requirementsOrganize requirements into related groupsIdentify sub-systemsIdentify a set of sub-systems which collectively can meet the system requirementsAssign requirements to sub-systemsCauses particular problems when COTS are integratedSpecify sub-system functionalityDefine sub-system interfacesCritical activity for parallel sub-system development
47System design problems Requirements partitioning to hardware, software and human components may involve a lot of negotiationDifficult design problems are often assumed to be readily solved using softwareHardware platforms may be inappropriate for software requirements so software must compensate for this
48Sub-system development Typically parallel projects developing the hardware, software and communicationsMay involve some COTS (Commercial Off-the-Shelf) systems procurementLack of communication across implementation teamsBureaucratic and slow mechanism for proposing system changes means that the development schedule may be extended because of the need for rework
49System integrationThe process of putting hardware, software and people together to make a systemShould be tackled incrementally so that sub-systems are integrated one at a timeInterface problems between sub-systems are usually found at this stageMay be problems with uncoordinated deliveries of system components
50System installation Environmental assumptions may be incorrect May be human resistance to the introduction of a new systemSystem may have to coexist with alternative systems for some timeMay be physical installation problems (e.g. cabling problems)Operator training has to be identified
51System operation Will bring unforeseen requirements to light Users may use the system in a way which is not anticipated by system designersMay reveal problems in the interaction with other systemsPhysical problems of incompatibilityData conversion problemsIncreased operator error rate because of inconsistent interfaces
52System evolutionLarge systems have a long lifetime. They must evolve to meet changing requirementsEvolution is inherently costlyChanges must be analysed from a technical and business perspectiveSub-systems interact so unanticipated problems can ariseThere is rarely a rationale for original design decisionsSystem structure is corrupted as changes are made to itExisting systems which must be maintained are sometimes called legacy systems
53System decommissioning Taking the system out of service after its useful lifetimeMay require removal of materials (e.g. dangerous chemicals) which pollute the environmentShould be planned for in the system design by encapsulationMay require data to be restructured and converted to be used in some other system
54System procurementAcquiring a system for an organization to meet some needSome system specification and architectural design is usually necessary before procurementYou need a specification to let a contract for system developmentThe specification may allow you to buy a commercial off-the-shelf (COTS) system. Almost always cheaper than developing a system from scratch
55Procurement issuesRequirements may have to be modified to match the capabilities of off-the-shelf componentsThe requirements specification may be part of the contract for the development of the systemThere is usually a contract negotiation period to agree changes after the contractor to build a system has been selected
56Software ProcessesCoherent sets of activities for specifying, designing, implementing and testing software systems
57The software processA structured set of activities required to develop a software systemSpecificationDesignValidationEvolutionA software process model is an abstract representation of a process. It presents a description of a process from some particular perspective
58Generic software process models The waterfall modelSeparate and distinct phases of specification and developmentEvolutionary developmentSpecification and development are interleavedFormal systems developmentA mathematical system model is formally transformed to an implementationReuse-based developmentThe system is assembled from existing components
60Waterfall model problems Inflexible partitioning of the project into distinct stagesThis makes it difficult to respond to changing customer requirementsTherefore, this model is only appropriate when the requirements are well-understood
61Evolutionary development Exploratory developmentObjective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirementsThrow-away prototypingObjective is to understand the system requirements. Should start with poorly understood requirements
63Evolutionary development ProblemsLack of process visibilitySystems are often poorly structuredSpecial skills (e.g. in languages for rapid prototyping) may be requiredApplicabilityFor small or medium-size interactive systemsFor parts of large systems (e.g. the user interface)For short-lifetime systems
64Formal systems development Based on the transformation of a mathematical specification through different representations to an executable programTransformations are ‘correctness-preserving’ so it is straightforward to show that the program conforms to its specificationEmbodied in the ‘Cleanroom’ approach to software development
65Formal systems development ProblemsNeed for specialised skills and training to apply the techniqueDifficult to formally specify some aspects of the system such as the user interfaceApplicabilityCritical systems especially those where a safety or security case must be made before the system is put into operation
66Reuse-oriented development Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systemsProcess stagesComponent analysisRequirements modificationSystem design with reuseDevelopment and integrationThis approach is becoming more important but still limited experience with it
67Process iterationSystem 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 systemsIteration can be applied to any of the generic process modelsTwo (related) approachesIncremental developmentSpiral development
68Incremental development 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 functionalityUser requirements are prioritised and the highest priority requirements are included in early incrementsOnce the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve
69Incremental development advantages Customer value can be delivered with each increment so system functionality is available earlierEarly increments act as a prototype to help elicit requirements for later incrementsLower risk of overall project failureThe highest priority system services tend to receive the most testing
70Extreme programmingNew approach to development based on the development and delivery of very small increments of functionalityRelies on constant code improvement, user involvement in the development team and pairwise programming
71Spiral developmentProcess is represented as a spiral rather than as a sequence of activities with backtrackingEach 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 requiredRisks are explicitly assessed and resolved throughout the process
73Spiral model sectors Objective setting Specific objectives for the phase are identifiedRisk assessment and reductionRisks are assessed and activities put in place to reduce the key risksDevelopment and validationA development model for the system is chosen which can be any of the generic modelsPlanningThe project is reviewed and the next phase of the spiral is planned
74Software specification The process of establishing what services are required and the constraints on the system’s operation and developmentRequirements engineering processFeasibility studyRequirements elicitation and analysisRequirements specificationRequirements validation
75Software design and implementation The process of converting the system specification into an executable systemSoftware designDesign a software structure that realises the specificationImplementationTranslate this structure into an executable programThe activities of design and implementation are closely related and may be inter-leaved
77Design methods Systematic approaches to developing a software design The design is usually documented as a set of graphical modelsPossible modelsData-flow modelEntity-relation-attribute modelStructural modelObject models
78Programming and debugging Translating a design into a program and removing errors from that programProgramming is a personal activity - there is no generic programming processProgrammers carry out some program testing to discover faults in the program and remove these faults in the debugging process
79Software validationVerification and validation is intended to show that a system conforms to its specification and meets the requirements of the system customerInvolves checking and review processes and system testingSystem testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system
83POP QUIZ Define: What is the Waterfall model? Why do we use it? Sub-systemSystem IntegrationBespokeCOTSMaintainabilityUsabilityDependabilityEfficiencyWhat is the Waterfall model? Why do we use it?
84Discussion1.8 For each clause in the Code of Ethics, suggest an example that illustrates it2.10 Your new code will make people redundant. The people are preventing you from installing your code. What do you do?3.2 Why are programs developed using evolutionary methods likely to be difficult to maintain?