01a30dc60353f936574af380c243a100.ppt
- Количество слайдов: 29
An Introduction to Software Engineering 1
Objectives n n n To introduce software engineering and to explain its importance To set out the answers to key questions about software engineering To introduce ethical and professional issues and to explain why they are of concern to software engineers 2
Topics covered n n FAQs about software engineering Professional and ethical responsibility 3
Software engineering n n n Software engineering is an engineering discipline whose goal is the cost-effective development of software systems with high-quality. The notion of Software engineering was first proposed in 1968 at a conference held to discuss what was then called the ‘software crisis’. Early experience in building systems showed that informal software development was not good enough. Major projects were sometimes years late. The software cost much more than predicted, was unreliable, was difficult to maintain and performed 4 poorly.
Software engineering n n New techniques and methods were needed to control the complexity inherent in large software systems. These techniques have become part of software engineering and are now widely used. As many companies still do not apply software engineering techniques effectively, so many projects still produce unreliable software, delivered late and over budget. Expenditure on software represents a significant fraction of GNP in all developed countries. 5
FAQs about software engineering What is software? n What is software engineering? n What is the difference between software engineering and computer science? n What is the difference between software engineering and system engineering? n What is a software process? --------------------------------FAQ : Frequently Asked Questions. 6 n
FAQs about software engineering n n n What is a software process model? What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? What are the key challenges facing software engineering? 7
What is software? Software is not just the programs but also all associated documentation and configuration data which is needed to make these programs operate correctly. A software system consists of: - separate programs - configuration files to setup programs - system documentation to describe the structure of the system. - User documentation to explain how to use the system. - Web sites to down load recent product information. 8 n
What is software types? n n n There are two types of software products: 1. Generic products These are standalone systems which are produced by a development organization and sold on the open market to any customer. 2. Bespoke (or customized) products These are systems which are commission by a particular customer. The software is developed specially for that customer by a software contractor. 9
What is 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. n In this definition, there are two key phrases : 1 - Engineering discipline : Engineers make things work. They apply theories, methods and tools where these are appropriate, but they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods. n 10
What is software engineering? 2 - All aspects of software production : software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production. 11
What is the difference between software engineering and computer science? n n n Computer science is concerned with theories and methods that underlie computers and software systems, whereas Software engineering is concerned with the practical problems 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). Software engineers must often use ad-hoc 12 approaches to developing the software.
What is the difference between software engineering and system engineering? q q q System engineering is concerned with all aspects of the development and evolution of complex systems where software plays a major role. It is concerned with all aspects 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. System engineering is an older discipline than software engineering. 13
What is a software process? A set of activities and associated results whose goal is the development or evolution of software. n Generic activities in all software processes are: 1 - Specification - what the system should do and its development constraints. 2 - Development - production of the software system ( design and programming ). 3 - Validation - checking that the software is what the customer wants. 4 - Evolution - software is modified to adapt it to changing customer and market requirements. n 14
What is a software process model? A software process model is a simplified description of a software process, presented one view of that process. n Process models may include activities that are part of the software process, software products and the roles of people involved in software engineering. n Some examples of the types of software process model that may be produced are : 1 - Workflow perspective – This shows the sequence of activities in the process along with their input, outputs and dependencies; The activities in this 15 model represent human actions. n
What is a software process model? 2 - Data-flow perspective – this represents the process as a set of activities, each of which carries out some data transformation (information flow); 3 - Role/action perspective – This represents the roles of the people involved in the software process and the activities for which they are responsible (who does what). 16
What is a software process model? Most S/W process models are based on one of three general process models of software development: 1 - The Waterfall approach : It represents the activities as separate process phases such as requirements, design, and so on. After each stage is defined it is signed off and developments goes on to the following stage. ; 2 - Iterative development : This approach interleaves the activities of specification, development and validation. An initial system is rapidly developed from very abstract specifications. Then refined with customer input to produce a system which satisfies the customer’s needs. The system may be delivered; 3 - Component-based software engineering (CBSE) : This technique assume that parts of the system already exist. The system development process focuses on integrating these parts rather than developing them scratch. 17 n
What are the costs of software engineering? n n There is no simple answer to this question. Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability. Distribution of costs depends on the development model that is used. 18
Activity cost distribution 19
Product development costs 20
What are software engineering methods? n n Ø Ø The aim is to facilitate the production of high-quality software in a cost-effective way. The methods are (structured analysis , object-oriented methods, UML (unified modeling language). All methods are based on the idea of developing models of a system that may be represented graphically. Methods include a number of different components : System Model descriptions : Descriptions of the system models which should be developed and the notation used to define these models; Rules : Constraints which always apply to system models; Recommendations : Advice on good design practice; Process guidance : descriptions of the activities which may be followed to develop the system models. 21
What is CASE (Computer-Aided Software Engineering) n n Software systems that are intended to provide automated support for software process activities. CASE systems are often used for method support. CASE stands for Computer-Aided Software Engineering. It covers a wide range of different types of programs which are used to support software process activities. CASE tools may include editors, analysis modules, create system documentation, code generator and gives advice on what to do next. 22
What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable , efficiency and acceptable. 1 - Maintainability : Software should be written in such a way that it may evolve to meet changing needs; 2 - Dependability : Software dependability has a range of characteristics including reliability, security and safety. Dependable S/W should not cause physical or economic damage in the event of system failure; 3 - Efficiency : Software should not make wasteful use of system resources, such as memory and processor cycles. 4 - Acceptability : Software must accepted by the users for which it was designed. This means it must be understandable, usable without undue effort and 23 compatible with other systems.
What are the key challenges facing software engineering? Software engineering faces three key challenges : 1 - The Heterogeneity challenge: Developing techniques for building software that can cope with heterogeneous platforms and execution environments; 2 - The Delivery challenge: Developing techniques that lead to faster delivery of software; 3 - The Trust challenge: Developing techniques that demonstrate that software can be trusted by its users. 24 n
Professional and ethical responsibility n n n Software engineering involves wider responsibilities than simply the application of technical skills. Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals. Ethical behaviour is more than simply upholding the law. 25
Issues of professional responsibility 1 - Confidentiality n Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. 2 - Competence n Engineers should not misrepresent their level of competence. They should not knowingly accept work which is out with their competence. 26
Issues of professional responsibility 3 - Intellectual property rights n 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. 4 - Computer misuse n 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). 27
Key points n n Software engineering 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. Methods are organised ways of producing software. They include suggestions for the process to be followed, the notations to be used, rules governing the system descriptions which are produced and design guidelines. 28
Key points n n n 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. Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues. Professional societies publish codes of conduct which set out the standards of behaviour expected of their members. 29
01a30dc60353f936574af380c243a100.ppt