Download Introduction to Software Engineering Principles and more Exams Software Engineering in PDF only on Docsity!
CMIS 3214 – Software Engineering
Prof. N. G. J. Dias Department of Computer Systems Engineering Faculty of Computing and Technology University of Kelaniya
Recommended Texts
- Sommerville, I., Software Engineering, ( 9 th Edition) Addison Wesley, 2010.
- Pressman, Roger. S., and Maxim, Bruce. R., Software Engineering: A Practitioner's Approach, ( 8 th Edition), McGraw Hill, 2015.
- Mall Rajib, Fundamentals of Software Engineering, ( 4 th Edition), PHI Learning Private Limited, Delhi, 2014.
- Ghezzi, C., Jazayeri, M., and Mandrioli, D., Fundamentals of Software Engineering, ( 2002 ), Prentice Hall. NGJDias@FCT18 November 2020-UoK 2
Topics covered
Professional software development What is meant by software engineering. Software engineering ethics A brief introduction to ethical issues that affect software engineering.
1.1 Introduction
1.1.1 What is Software?
- The product that software professionals build and then support over the long term.
- Software encompasses: Instructions (computer programs) that when executed provide desired features, function, and performance. Data structures that enable the programs to adequately manipulate information. Documents that describe the operation and use of the programs. NGJDias@FCT18 November 2020-UoK 5
- It may include system documentation, which describes the structure of the system; user documentation, which explains how to use the system, and websites for users to download recent product information.
1.2 What is Software Engineering?
1. 2. 1 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.
- In this definition, there are two key phrases:
- Engineering discipline Engineers make things work. They apply theories, methods, and tools where these are appropriate. However, they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods.
1.2.2 Software Products
- Software engineers are concerned with developing software products (i.e., software which can be sold to a customer).
- There are two kinds of software products: o 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. o 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.
- An important difference between these types of software is: o 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. o Customized 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.
- However, the distinction between these system product types is becoming increasingly blurred.
- More and more systems are now being built with a generic product as a base, which is then adapted to suit the requirements of a customer.
1. 2. 3 Essential Attributes of Good Software
- The specific set of attributes that you might expect from a software system obviously depends on its application.
- For example, a banking system must be secure, an interactive game must be responsive, a telephone switching system must be reliable, and so on.
- These can be generalized into the set of attributes shown in the following table.
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.
- These activities are:
- Software specification , where customers and engineers define the software that is to be produced and the constraints on its operation.
- Software development , where the software is designed and programmed.
- Software validation , where the software is checked to ensure that it is what the customer requires.
- Software evolution , where the software is modified to reflect 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. In e-commerce systems, the specification and the program are usually developed together.
- Consequently, these generic activities may be organized in different ways and described at different levels of detail depending on the type of software being developed.
They are less concerned with the engineering of the system components (hardware, software, etc.).
1.2.6 Why Software is Important?
- The economies of all developed nations are dependent on software.
- More and more systems are software controlled (transportation, medical, telecommunications, military, industrial, entertainment,)
- Expenditure on software represents a significant fraction of Gross National Product (GNP) in all developed countries. NGJDias@FCT18 November 2020-UoK 20