1 / 43

An Introduction to Software Engineering

An Introduction to Software Engineering. Objectives. Introduce software engineering and to explain its importance Set out the answers to key questions about software engineering. FAQs about software engineering. What is software engineering?

emmett
Download Presentation

An Introduction to Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. An Introduction to Software Engineering

  2. Objectives • Introduce software engineering and to explain its importance • Set out the answers to key questions about software engineering

  3. FAQs about software engineering • What is software engineering? • What is the difference between software engineering, computer science, and systems engineering? • What is the software crisis? • What are the costs of software engineering? • What is software and what are the attributes of good software? • What is a software process and a software process model? • What are software engineering methods? • What is CASE (Computer-Aided Software Engineering) • What are the key challenges facing software engineering?

  4. What is software engineering? From Wikipedia “Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.’’ Classic Definition (1969) “The establishment and use of sound engineering principles in order to obtain economically built software that is reliable and works efficiently on real machines.” IEEE Definition (1993) “Software Engineering: (1) The application of a systematic, disciplines, quantifiable approach to the development, operation, and maintenance of software; that is the application of engineering to software. (2) The study of approaches as in (1).”

  5. Software Engineering vs. Computer Science • 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 still insufficient to act as a complete underpinning for software engineering (unlike e.g. physics and electrical engineering).

  6. Software Engineering vs. Computer Science COMPUTER SCIENCE CUSTOMER Problem Theories Computer Functions SOFTWARE ENGINEERING Tools and Techniques to Solve Problem

  7. Software vs. Hardware • You can’t see, touch, or feel software • Software is only engineered, not manufactured • Software doesn’t wear out • Software is complex • Software is a differentiator • Software can behave like an aging factory

  8. Communication is a critical element.

  9. Software Engineering vs. 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 process concerned with developing the software infrastructure, control, applications and databases in the system. • System engineers are involved in system specification, architectural design, integration and deployment.

  10. What to Study in Software Engineering? • Products produced • Processes used to produce the products The final products are software components. They may be fully executables components, programs, modules, systems, or simply methods. There are many software deliverables between the specification of the products and the actual products. The software development life cycle describes the development process for producing software products. However there are many other items within the process. We will investigate the full process of software engineering.

  11. Some core questions • What is the software product? • Who does software engineering of the product? • Why is software important? • What are the steps in software engineering? • What is the work product of the engineering process? • How do we ensure products are built correctly and that the correct product is built?

  12. Problems Behind the “Software Crisis” • Increased size and complexity of systems • Cost overruns • Design bugs after implementation • Maintenance ripple effect • Requirements and design needed development tools, not just in the programming tools

  13. Software Crisis • Research from Standish Group Data on 9236 development projects completed in 2004.

  14. Abandoned or Cancelled Projects http://articles.directorym.net/An_Introduction_to_Catastrophe_Disentanglement_Lynchburg_VA-r923574-Lynchburg_VA.html

  15. Software Crisis • 2002 survey of information technology organizations by Cutter Consortium Data • 78% have been involved in disputes ending in litigation • In 67% of the disputes, the functionality of the information system as delivered did not meet up to the claims of the developers • In 56% of the disputes, the promised delivery date slipped several times • In 45% of the disputes, the defects were so severe that the information system was unusable

  16. New Aspects of Crisis • (In)security - we have allowed ourselves to become too dependent on software (and hardware) that was never designed to be robust or secure • Over complexity - competition for more features, ease of use, and integration are making products too large to comprehend and maintain • Internationalization – this is a problem for the US, which has been presumptuously complacent about its leadership • Software patents - these legal "land mines" are beginning to choke the software industry • Rapid changes – tower of Babel, multicore, etc.

  17. Weapons Against Software Crisis • Improving software engineering methodologies • High-level languages and tools that encourage and enforce these principles

  18. Software Engineering Definition The software crisis yielded yet another definition of software engineering: • Discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the client’s needs.

  19. Costs of Software Engineering • Software costs dominate computer systems costs. • Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. • Software maintenance costs are more than software development costs. • For systems with a long life the maintenance may be several times the development costs. And often even bad software has a long life.

  20. Costs of Software Engineering • Costs vary depending on the type of system being developed. • The costs depend of the requirements of system attributes such as performance and system reliability as well as the complexity of the type of system being developed. • Distribution of costs depends on the development model that is used.

  21. Activity cost distribution

  22. Product development costs

  23. Maintenance Costs (a) Between 1976 and 1981 (b) Between 1992 and 1998

  24. Changing View of Maintenance • Postdelivery maintenance • Development-then-maintenance model • Temporal definition • Modern maintenance • Occurs whenever a fault is fixed or the requirements change, irrespective of whether it takes place before or after installation of the product

  25. Why So Costly? • To correct a fault early in the life cycle • Usually just a document needs to be changed • To correct a fault late in the life cycle • Change the code and the documentation • Test the change itself • Perform regression testing • Reinstall the product on the client’s computer(s)

  26. increased failure rate due to side effects Failure rate change actual curve idealized curve Time Wear vs. Deterioration Roger S. Pressman, Software Engineering: A Practitioner's Approach, Fourth Edition 1997

  27. 60-100x 1.5-6x 1x After release Development Definition The Cost of Change Roger S. Pressman, Chapter 1 Page 19, Software Engineering: A Practitioner's Approach, Fourth Edition 1997

  28. What is a Software Product? A set of items or objects called a configuration. It includes things like: • Multiple separate programs • Configuration files which are used to set up these programs • System documentation which describes the structure of the system • Developer and User documentation which explains how to use the system • Data for the system • Web sites for users to download recent product information

  29. What is software? • Computer programs and associated documentation such as requirements, design models and user manuals. • Software products may be developed for a particular customer or may be developed for a general market. • New software can be created by developing new programs, configuring generic software systems or reusing existing software.

  30. What is software? Software products may be • GENERIC • developed to be sold to a range of different customers e.g. PC software such as Excel or Word. • referred to as commercial off-the-shelf (COTS) software or clickware supplied by a vendor BESPOKE (custom) - developed for a single customer according to their specification. Product specification controlled by the product developer

  31. Software Terminology • Open-source software • Developed and maintained by a team of volunteers • May be downloaded and used free of charge • Examples: • Linux operating system • Firefox web browser • Apache web server

  32. Software Types • system software • real-time software • business software • engineering/scientific software • embedded software • PC software • AI software • WebApps (Web applications)

  33. What are the attributes of good software? • The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable. • Maintainability • Software must evolve to meet changing needs; • Dependability • Software must be trustworthy; • Efficiency • Software should not make wasteful use of system resources; • Acceptability • Software must accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems.

  34. What are the attributes of good software? • From the Users Perspective • Correctness • Reliability • Efficiency • Maintainability • Usability • Robustness • From the Developers Perspective • Consistency • Understandability • Testability • Compactness • Compatibility • Integrity

  35. Software Process • A set of activities and associated results which produce a software product • Incorporates a software life-cycle model, techniques, the tools used, and the software developers

  36. What is a software process model? • 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. • Generic process models • Waterfall; • Iterative development; • Component-based software engineering.

  37. Software Life-cycle Models • Specifies the various phases of the software process and the order in which they are to be carried out. • Covered in Chapter 1 Dennis

  38. What are software engineering methods? • 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; • Rules • Constraints applied to system models; • Recommendations • Advice on good design practice; • Process guidance • What activities to follow.

  39. What is CASE? • Computer-Aided Software Engineering • Software systems that 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; • Lower-CASE • Tools to support later activities such as programming, debugging and testing.

  40. What are the key challenges facing software engineering? • Heterogeneity - platforms and execution environments • Delivery – faster time to market • Trust –includes reliability, security • Shifts in economics of computing • Lower hardware costs and greater development and maintenance costs. • Shifts in technology • Extensive networking • Availability and adoption of OO technology • Graphical user interfaces • Budgets and costs • Maintaining quality

  41. Key points • SWE is an engineering discipline that 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 that are involved in developing software products. Basic activities are software specification, development, validation and evolution. • 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.

More Related