Full Transcript

1- Introduction Introduction 1 Software engineering  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.  Expenditure on softwar...

1- Introduction Introduction 1 Software engineering  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.  Expenditure on software represents a significant fraction of GNP in all developed countries. Introduction 2 Software costs  Software costs often dominate computer 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 cost-effective software development. Introduction 3 Software project failure  Increasing system complexity ▪ As new software engineering techniques help us to build larger, more complex systems, the demands change. Systems have to be built and delivered more quickly; larger, even more complex systems are required; systems have to have new capabilities that were previously thought to be impossible.  Failure to use software engineering methods ▪ It is fairly easy to write computer programs without using software engineering methods and techniques. Many companies have drifted into software development as their products and services have evolved. They do not use software engineering methods in their everyday work. Consequently, their software is often more expensive and less reliable than it should be. Introduction 4 Software products  Generic products ▪ Stand-alone systems that are marketed and sold to any customer who wishes to buy them. ▪ Examples – PC software such as graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists.  Customized products ▪ Software that is commissioned by a specific customer to meet their own needs. ▪ Examples – embedded control systems, air traffic control software, traffic monitoring systems. Introduction 5 Product specification  Generic products ▪ The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer.  Customised products ▪ The specification of what the software should do is owned by the customer for the software and they make decisions on software changes that are required. Introduction 6 Essential attributes of good software Product characteristic Description Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment. Dependability and security Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system. Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc. Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use. Introduction 7 Software engineering  Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.  Engineering discipline ▪ Using appropriate theories and methods to solve problems bearing in mind organizational and financial constraints.  All aspects of software production ▪ Not just technical process of development. Also project management and the development of tools, methods etc. to support software production. Introduction 8 Importance of software engineering  More and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly.  It is usually cheaper, in the long run, to use software engineering methods and techniques for software systems rather than just write the programs as if it was a personal programming project. For most types of system, the majority of costs are the costs of changing the software after it has gone into use. Introduction 9 General issues that affect software  Heterogeneity ▪ Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices.  Business and social change ▪ Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. Introduction 10 General issues that affect software  Security and trust ▪ As software is intertwined with all aspects of our lives, it is essential that we can trust that software.  Scale ▪ Software has to be developed across a very wide range of scales, from very small embedded systems in portable or wearable devices through to Internet-scale, cloud-based systems that serve a global community. Introduction 11 Software engineering diversity  There are many different types of software system and there is no universal set of software techniques that is applicable to all of these.  The software engineering methods and tools used depend on the type of application being developed, the requirements of the customer and the background of the development team. Introduction 12 Software engineering fundamentals  Some fundamental principles apply to all types of software system, irrespective of the development techniques used: ▪ Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software. ▪ Dependability and performance are important for all types of system. ▪ Understanding and managing the software specification and requirements (what the software should do) are important. ▪ Where appropriate, you should reuse software that has already been developed rather than write new software. Introduction 13