Presentation is loading. Please wait.

Presentation is loading. Please wait.

©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.

Similar presentations


Presentation on theme: "©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 An Introduction to Software Engineering."— Presentation transcript:

1 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 An Introduction to Software Engineering

2 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 2 Objectives l To introduce software engineering and to explain its importance. Build complex SW systems in the context of frequent change l Understand how to produce a high quality software system within time while dealing with complexity and change l Acquire technical knowledge (main emphasis) l Acquire managerial knowledge

3 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 3 Software costs l Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost. l Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. l Software engineering is concerned with cost-effective software development.

4 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 4 What is software? l Software : Computer programs and associated documentation such as requirements, design models and user manuals. l Software products may be developed for a particular customer or may be developed for a general market. l Software products may be Generic - developed to be sold to a range of different customers e.g. PC software such as Excel or Word. Customized (bespoke) - developed for a single customer according to their specification. l More and more software companies are starting with a generic system and customizing it to the needs of a particular customer. (ex: SAP)

5 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 5 Software Engineering: A Problem Solving Activity l Analysis: Understand the nature of the problem and break the problem into pieces l Synthesis: Put the pieces together into a large structure For problem solving we use techniques, methodologies and tools.

6 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 6 Techniques, Methodologies and Tools l Techniques: Formal procedures for producing results using some well-defined notation l Methodologies: Collection of techniques applied across software development and unified by a philosophical approach l Tools: Instruments or automated systems to accomplish a technique CASE = Computer Aided Software Engineering

7 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 7 What is software engineering? l Software engineering is an engineering discipline that is concerned with all aspects of software production. l 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.

8 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 8 Software Engineering is more than writing code l Problem solving Creating a solution Engineering a system based on the solution l Modeling l Knowledge acquisition l Rationale management

9 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 9 Computer Science vs. Engineering l Computer Scientist Assumes techniques and tools have to be developed. Proves theorems about algorithms, designs languages, defines knowledge representation schemes Has infinite time… l Engineer Develops a solution for a problem formulated by a client Uses computers & languages, techniques and tools l Software Engineer Works in multiple application domains Has only 3 months... …while changes occurs in the problem formulation (requirements) and also in the available technology.

10 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 10 What is the difference between software engineering and computer science? l Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. l Computer science theories are still insufficient to act as a complete underpinning for software engineering (unlike e.g. physics and electrical engineering).

11 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 11 What is the difference between software engineering and system engineering? 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 concerned with developing the software infrastructure, control, applications and databases in the system. l System engineers are involved in system specification, architectural design, integration and deployment.

12 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 12 What is a software process? l Software process : A set of activities whose goal is the development or evolution of software. l Generic activities in all software processes are: Software specification – customers and engineers define it with its constraints Software development – where software is designed and programmed Software validation – where software is checked to ensure that it is what customer requires Software evolution – where software is modified to adapt it to changing customer and market requirements. Different types of systems need different development processes. For example, real time software in an aircraft has to be completely specified before development begins, whereas, in e-commerce systems, the specification and the program are usually developed together.

13 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 13 Why is software development difficult? l The problem domain (also called application domain) is difficult l The solution domain is difficult l The development process is difficult to manage l Software offers extreme flexibility l Software is a discrete system Continuous systems have no hidden surprises Discrete systems can have hidden surprises! (Parnas) David Lorge Parnas is an early pioneer in software engineering who developed the concepts of modularity and information hiding in systems which are the foundation of object oriented methodologies.

14 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 14 Requirements Software Limitations of Non-engineered Software

15 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 15 What are the costs of software engineering? l Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. l Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability. l Distribution of costs depends on the development model that is used.

16 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 16 Activity cost distribution

17 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 17 Product development costs

18 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 18 What is CASE (Computer-Aided Software Engineering) ? l CASE : Software systems that are intended to provide automated support for software process activities. l CASE systems are often used for method support. l 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.

19 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 19 What are the attributes of good software? l The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. l Maintainability Software should be written in such a way that it may evolve to meet the changing needs of customers. l Dependability Software must be trustworthy (reliable, secure and safe). l Efficiency Software should not make wasteful use of system resources, such as memory or processor cycles. Efficiency: Responsiveness, processing time, memory utilization, etc. l Usability Software must be usable without undue effort. It should have an appropriate user interface and adequate documentation.

20 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 20 What are the key challenges facing software engineering? l Software engineering in 21 st century faces three key challenges: l Heterogeneity Challenge of developing techniques for building dependable software that is flexible enough to cope with the heterogeneity. l Delivery Challenge of shortening delivery times for large and complex systems without compromising system quality. l Trust Challenge of developing techniques that demonstrate that software can be trusted by its users.

21 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 21 ACM/IEEE Code of Ethics l The professional societies in the US have cooperated to produce a code of ethical practice. l Members of these organisations sign up to the code of practice when they join. l 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.

22 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 22 Use Case Modeling – Sample UML Diagram http://conceptdraw.com/en/products/cd5/ap_uml.php

23 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 23 Object Modeling – Sample UML Diagram http://conceptdraw.com/en/products/cd5/ap_uml.php

24 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 24 Dynamic Modeling – Sample UML Diagram http://conceptdraw.com/en/products/cd5/ap_uml.php

25 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 25 Software Production has a Poor Track Record Example: Space Shuttle Software l Cost: $10 Billion, millions of dollars more than planned l Time: 3 years late l Quality: First launch of Columbia was cancelled because of a synchronization problem with the Shuttle's 5 onboard computers. Error was traced back to a change made 2 years earlier when a programmer changed a delay factor in an interrupt handler from 50 to 80 milliseconds. The likelihood of the error was small enough, that the error caused no harm during thousands of hours of testing. l Substantial errors still exist. Astronauts are supplied with a book of known software problems "Program Notes and Waivers".

26 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 26 Quality of today’s software…. l The average software product released on the market is not error free.

27 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 27 Factors affecting the quality of a software system l Complexity: The system is so complex that no single programmer can understand it anymore The introduction of one bug fix causes another bug l Change: The “Entropy” of a software system increases with each change: Each implemented change erodes the structure of the system which makes the next change even more expensive (“Second Law of Software Dynamics”). As time goes on, the cost to implement a change will be too high, and the system will then be unable to support its intended task. This is true of all systems, independent of their application domain or technological base.

28 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 28 Why are software systems so complex? l The problem domain is difficult l The development process is very difficult to manage l Software offers extreme flexibility l Software is a discrete system

29 ©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 29 Summary l Software engineering is a problem solving activity Developing quality software for a complex problem within a limited time while things are changing l There are many ways to deal with complexity Modeling, decomposition, abstraction, hierarchy Issue models: Show the negotiation aspects System models: Show the technical aspects Task models: Show the project management aspects Use Patterns: Reduce complexity even further l Many ways to deal with change Tailor the software lifecycle to deal with changing project conditions Use a nonlinear software lifecycle to deal with changing requirements or changing technology Provide configuration management to deal with changing entities


Download ppt "©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 An Introduction to Software Engineering."

Similar presentations


Ads by Google