2 Administrivia u T’Christopher Gardner u Office Hours M,W 1900-2000--here u socrates.coloradotech.edu/~tgardner u Mirrored on turningwheel.net/ctu u email@example.com u 785-2316 Office –337-3909 if you desperately need me :)
3 Specification: Standard Gauge Train Tracks 4’ 8.5” u They’re built that way in England –England makes much of the world’s Rail lines u They were built by the people who built the pre-railway Tramways u The tram people used the same jigs and tools used for building Wagons
4 Specification: Standard Gauge Train Tracks 4’ 8.5” u Wagon wheels had to operate over rutted roads u Roads were built by the Romans –Transportation system for Legions –Ruts created by Chariots »Chariots are the width of 2 horses/harnesses
5 Any Unexpected Results of the Specification? u SRBs –Thiokol, Utah u A major design feature of, arguably, the most advanced transportation system in the world was defined by a horse’s bottom...
7 Overview u Basic concepts of software engineering –requirements –design –implementation –testing –maintenance
8 Overview (cont) u Grading –exams –homework, quizzes, exercises –participation –projects u Text –“Software Engineering”
9 Lecture 1 CS 465 SOFTWARE ENGINEERING METHODS
1010 Overview - Part One u Software process, products, & models –Chapter 1 u Computer-based Engineering –Chapter 2 u Software Processes –Chapter 3
11 The Problem u Software projects late and over-budget u Software does not meet the needs of the customer u New technology demands
1212 Problems of systems engineering u Large systems are usually designed to solve 'wicked' problems u 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 u Systems must be designed to last many years in a changing environment
1313 Software Engineering u Software - “programs, routines, and symbolic language that control the functioning of hardware and direct its operation” u Engineering - “application of science to practical ends such as the design, manufacture, and operation of structures, machines, and systems” American Heritage College Dictionary
1414 u The economies of ALL developed nations are dependent on software u More and more systems are software controlled u Software engineering is concerned with theories, methods and tools for professional software development u Software engineering expenditure represents a significant fraction of GNP in all developed countries Software engineering
1515 u Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost u Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs u Software engineering is concerned with cost-effective software development Software costs
1616 What is the difference between software engineering and computer science? u Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software u Computer science theories are currently insufficient to act as a complete underpinning for software engineering
1717 What is the difference between software engineering and system engineering? u 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 u System engineers are involved in system specification, architectural design, integration and deployment
1818 What are the attributes of good software? u The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable u Maintainability –Software must evolve to meet changing needs u Dependability –Software must be trustworthy u Efficiency –Software should not make wasteful use of system resources u Usability –Software must be usable by the users for which it was designed
1919 What are the key challenges facing software engineering? u Coping with legacy systems, coping with increasing diversity and coping with demands for reduced delivery times u Legacy systems –Old, valuable systems must be maintained and updated u Heterogeneity –Systems are distributed and include a mix of hardware and software u Delivery –There is increasing pressure for faster delivery of software
2020 Systems Engineering u System –collection of interrelated components that work together to achieve some objective –more than the sum of its parts »emergent properties –exist in an environment »makes a change to the environment »has indirect relationships with the environment
2121 System Engineering Process u Requirements definition u Systems design u Sub-system development u System integration u System installation u System operation u System evolution u System decommissioning
2 System hierarchies
2323 What is a system? u A purposeful collection of inter-related components working together towards some common objective. u A system may include software, mechanical, electrical and electronic hardware and be operated by people. u System components are dependent on other system components u The properties and behaviour of system components are inextricably inter-mingled
2424 Problems of systems engineering u Large systems are usually designed to solve 'wicked' problems u 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 u Systems must be designed to last many years in a changing environment
2525 Emergent properties u Properties of the system as a whole rather than properties that can be derived from the properties of components of a system u Emergent properties are a consequence of the relationships between system components u They can therefore only be assessed and measured once the components have been integrated into a system
2626 Examples of emergent properties u The overall weight of the system –This is an example of an emergent property that can be computed from individual component properties. u The reliability of the system –This depends on the reliability of system components and the relationships between the components. u 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.
2727 Types of emergent property u 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. u 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.
2828 u Because of component inter-dependencies, faults can be propagated through the system u System failures often occur because of unforeseen inter-relationships between components u It is probably impossible to anticipate all possible component relationships u Software reliability measures may give a false picture of the system reliability System reliability engineering
2929 u Hardware reliability –What is the probability of a hardware component failing and how long does it take to repair that component? u 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. u Operator reliability –How likely is it that the operator of a system will make an error? Influences on reliability
3030 Human and organizational factors u Process changes –Does the system require changes to the work processes in the environment? u Job changes –Does the system de-skill the users in an environment or cause them to change the way they work? u Organizational changes –Does the system change the political power structure in an organisation?
3131 Professional and ethical responsibility u Software engineering involves wider responsibilities than simply the application of technical skills u Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals u Ethical behaviour is more than simply upholding the law.
3232 Issues of professional responsibility u Confidentiality –Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. u Competence –Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outside their competence.
3 Issues of professional responsibility u 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. u 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).
3434 ACM/IEEE Code of Ethics u The professional societies in the US have cooperated to produce a code of ethical practice. u Members of these organizations sign up to the code of practice when they join. u 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.
3535 Code of ethics - preamble u 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:
3636 Code of ethics - principles u 1. PUBLIC –Software engineers shall act consistently with the public interest. u 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. u 3. PRODUCT –Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
3737 Code of ethics - principles u 4. JUDGMENT –Software engineers shall maintain integrity and independence in their professional judgment. u 5. MANAGEMENT –Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. u 6. PROFESSION –Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
3838 Code of ethics - principles u 7. COLLEAGUES –Software engineers shall be fair to and supportive of their colleagues. u 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.
3939 System architecture modelling u An architectural model presents an abstract view of the sub-systems making up a system u May include major information flows between sub-systems u Usually presented as a block diagram u May identify different types of functional component in the model
4040 Intruder alarm system
4141 Component types in alarm system u Sensor –Movement sensor, door sensor u Actuator –Siren u Communication –Telephone caller u Co-ordination –Alarm controller u Interface –Voice synthesizer
4242 The system engineering process u 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 u 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
4343 The system engineering process
4 System objectives u 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 u 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
4545 System requirements problems u Changing as the system is being specified u Must anticipate hardware/communications developments over the lifetime of the system u Hard to define non-functional requirements (particularly) without an impression of component structure of the system.
4646 The system design process u Partition requirements –Organize requirements into related groups u Identify sub-systems –Identify a set of sub-systems which collectively can meet the system requirements u Assign requirements to sub-systems –Causes particular problems when COTS are integrated u Specify sub-system functionality u Define sub-system interfaces –Critical activity for parallel sub-system development
4747 System design problems u Requirements partitioning to hardware, software and human components may involve a lot of negotiation u Difficult design problems are often assumed to be readily solved using software u Hardware platforms may be inappropriate for software requirements so software must compensate for this
4848 Sub-system development u Typically parallel projects developing the hardware, software and communications u May involve some COTS (Commercial Off- the-Shelf) systems procurement u Lack of communication across implementation teams u Bureaucratic and slow mechanism for proposing system changes means that the development schedule may be extended because of the need for rework
4949 u The process of putting hardware, software and people together to make a system u Should be tackled incrementally so that sub-systems are integrated one at a time u Interface problems between sub-systems are usually found at this stage u May be problems with uncoordinated deliveries of system components System integration
5050 u Environmental assumptions may be incorrect u May be human resistance to the introduction of a new system u System may have to coexist with alternative systems for some time u May be physical installation problems (e.g. cabling problems) u Operator training has to be identified System installation
5151 u Will bring unforeseen requirements to light u Users may use the system in a way which is not anticipated by system designers u May reveal problems in the interaction with other systems –Physical problems of incompatibility –Data conversion problems –Increased operator error rate because of inconsistent interfaces System operation
5252 System evolution u Large systems have a long lifetime. They must evolve to meet changing requirements u 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 u Existing systems which must be maintained are sometimes called legacy systems
5353 System decommissioning u Taking the system out of service after its useful lifetime u May require removal of materials (e.g. dangerous chemicals) which pollute the environment –Should be planned for in the system design by encapsulation u May require data to be restructured and converted to be used in some other system
5454 System procurement u Acquiring a system for an organization to meet some need u 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
5 Procurement issues u Requirements may have to be modified to match the capabilities of off-the-shelf components u The requirements specification may be part of the contract for the development of the system u There is usually a contract negotiation period to agree changes after the contractor to build a system has been selected
5656 Software Processes u Coherent sets of activities for specifying, designing, implementing and testing software systems
5757 The software process u A structured set of activities required to develop a software system –Specification –Design –Validation –Evolution u A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective
5858 Generic software process models u The waterfall model –Separate and distinct phases of specification and development u Evolutionary development –Specification and development are interleaved u Formal systems development –A mathematical system model is formally transformed to an implementation u Reuse-based development –The system is assembled from existing components
5959 Waterfall model
6060 Waterfall model problems u Inflexible partitioning of the project into distinct stages u This makes it difficult to respond to changing customer requirements u Therefore, this model is only appropriate when the requirements are well- understood
6161 Evolutionary development u 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 u Throw-away prototyping –Objective is to understand the system requirements. Should start with poorly understood requirements
6262 Evolutionary development
6363 u Problems –Lack of process visibility –Systems are often poorly structured –Special skills (e.g. in languages for rapid prototyping) may be required u Applicability –For small or medium-size interactive systems –For parts of large systems (e.g. the user interface) –For short-lifetime systems
6464 Formal systems development u Based on the transformation of a mathematical specification through different representations to an executable program u Transformations are ‘correctness- preserving’ so it is straightforward to show that the program conforms to its specification u Embodied in the ‘Cleanroom’ approach to software development
6565 Formal systems development u 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 u Applicability –Critical systems especially those where a safety or security case must be made before the system is put into operation
6 Reuse-oriented development u Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems u Process stages –Component analysis –Requirements modification –System design with reuse –Development and integration u This approach is becoming more important but still limited experience with it
6767 Process iteration u 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 u Iteration can be applied to any of the generic process models u Two (related) approaches –Incremental development –Spiral development
6868 Incremental development u 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 u User requirements are prioritised and the highest priority requirements are included in early increments u Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve
6969 Incremental development advantages u Customer value can be delivered with each increment so system functionality is available earlier u Early increments act as a prototype to help elicit requirements for later increments u Lower risk of overall project failure u The highest priority system services tend to receive the most testing
7070 Extreme programming u New approach to development based on the development and delivery of very small increments of functionality u Relies on constant code improvement, user involvement in the development team and pairwise programming
7171 Spiral development u Process is represented as a spiral rather than as a sequence of activities with backtracking u Each loop in the spiral represents a phase in the process. u No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required u Risks are explicitly assessed and resolved throughout the process
7272 Spiral model of the software process
7373 Spiral model sectors u Objective setting –Specific objectives for the phase are identified u Risk assessment and reduction –Risks are assessed and activities put in place to reduce the key risks u Development and validation –A development model for the system is chosen which can be any of the generic models u Planning –The project is reviewed and the next phase of the spiral is planned
7474 Software specification u The process of establishing what services are required and the constraints on the system’s operation and development u Requirements engineering process –Feasibility study –Requirements elicitation and analysis –Requirements specification –Requirements validation
7575 Software design and implementation u The process of converting the system specification into an executable system u Software design –Design a software structure that realises the specification u Implementation –Translate this structure into an executable program u The activities of design and implementation are closely related and may be inter-leaved
7676 The software design process
7 Design methods u Systematic approaches to developing a software design u The design is usually documented as a set of graphical models u Possible models –Data-flow model –Entity-relation-attribute model –Structural model –Object models
7878 Programming and debugging u Translating a design into a program and removing errors from that program u Programming is a personal activity - there is no generic programming process u Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process
7979 Software validation u Verification and validation is intended to show that a system conforms to its specification and meets the requirements of the system customer u Involves checking and review processes and system testing u 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
8080 The testing process
8181 System evolution
8383 POP QUIZ u Define: –Sub-system –System Integration –Bespoke –COTS –Maintainability –Usability –Dependability –Efficiency u What is the Waterfall model? Why do we use it?
8484 Discussion u 1.8 For each clause in the Code of Ethics, suggest an example that illustrates it u 2.10 Your new code will make people redundant. The people are preventing you from installing your code. What do you do? u 3.2 Why are programs developed using evolutionary methods likely to be difficult to maintain?