Software Engineering I Lecture 1 PDF

Summary

This document is a lecture from a software engineering course, likely for an undergraduate degree. It introduces core concepts of software engineering and provides course resources and objectives. The lecture covers topics like the definition of software and software engineering, its importance, and frequently asked questions (FAQs).

Full Transcript

Software Engineering I Lecture 1: Introduction Dr. Shimaa Mohamed Fall “semester 1” 2024/2025 Course Objective ❑ Introduce students to concepts, principles and skills of modern software engineering systems. ❑involve all phases of softw...

Software Engineering I Lecture 1: Introduction Dr. Shimaa Mohamed Fall “semester 1” 2024/2025 Course Objective ❑ Introduce students to concepts, principles and skills of modern software engineering systems. ❑involve all phases of software system life cycle which includes requirement analysis specification, design, construction, testing, operation and maintenance. ❑Introduce the engineering approaches, technologies, and tools used to develop software systems ❑To introduce ethical and professional issues and to explain why they are of concern to software engineers ❑Introduce cost estimation techniques commonly used in software engineering ❑Establish a solid basis as a qualified software engineers 2 Course Resources Essential Textbook: Sommerville, Ian."Software engineering 10th Edition.“, Pearson Education, ISBN 978-0-13-394303-0, 2016. 3 Materials/ Notes: Lectures slides (PDF), available by each lecture, and will find online  Class Link: https://classroom.google.com/c/NTk3MTMxMjE3NDY3?cjc=pv odyyb  Class Code: pvodyyb 4 Course Grade Distribution 314 Grading Schema (150) CSM 314 Grading Schema (100) 𝘘 Final exam 70 𝘘 Final 40 𝘘 Midterm 30 𝘘 Midterm 20 𝘘 practical exam 20 𝘘 practical exam 20 𝘘 Quizzes 20 𝘘 Quizzes 10 𝘘 Attend.+assignments 10 𝘘 Attend.+assignments 10 5 Course topics (Map) ▪ Introduction and the Fundamentals ▪ Software Process activities and models ▪ Agile software development ▪ Software Requirements Engineering ▪ Software Modeling ▪ Software Architecture ▪ Software Design and Implementation ▪ Software Testing ▪ Software evaluation 7 Software Engineering I - CSM314 Lecture 01 Chapter 2 Software Processes 8 Topics covered  Professional software development ▪ What is meant by software engineering. ▪ Individual programming software development  Software engineering ethics ▪ A brief introduction to ethical issues that affect software engineering. Chapter 1 Introduction 9 Objectives  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 10 Frequently asked questions(FAQ) about software engineering  What are software?  What is software engineering?  What is the difference between software engineering and computer science?  What is the difference between software engineering and system engineering?  What are the costs of software engineering?  What are the attributes of good software?  What are the challenges facing software engineering?  What is CASE (Computer-Aided Software Engineering)  What is the role of the software engineer? 11 What is Software? Engineering? Software is not just a program; many things other than the program are also included in software. Some of the items of software are described below: Program: The program or code itself is definitely included in the software. Data: The data on which the program operates. Documentation: All the documents related to the software. ✓ So, the software is not just the code written in Java, Fortran or C++. ✓ It also includes the data and all the documentation related to the program. Engineering “The process of productive use of scientific knowledge is called engineering.” is all about developing products, using well-defined scientific principles, methods and procedures. TypesofSoftware Types of Software EXAMPLES -System software - compilers, editors. -Real time software, software that monitor/control real world event - air traffic control, navigation -Embedded software - keypad of microwave oven, mp3 players, cell phones -Personal computer software – operating system and other application software -Web based software – Google calendar, web-based systems for different organizations 14 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.  Expenses on software represents a significant part in all developed countries. History of software engineering The first official use of this term was in a conference held by the Scientific Committee of the North Atlantic Treaty Organization (NATO) In 1968 on software. This term has spread since then and has met with increasing interest in various aspects. The conference was held to address what is known as the "software crisis", which grow due to: Not using a methodology for thinking when building software (Software Development Process), which led to the emergence of many errors during the process of building and maintaining software, and therefore the software needed to: Long time to develop and maintain High financial cost more than expected Poor efficiency in getting the required tasks It was of low effectiveness Not fully meeting all requirements. Therefore, it was necessary to find a science specializing in software engineering to lay the foundations and standards, so that the good program can be distinguished from the bad. What is software engineering? 1. Software engineering is an engineering discipline which is concerned with all aspects of software production Software engineers should adopt:  a systematic and organized approach to their work  use appropriate tools and techniques depending on the problem to be solved  Engineers make thing work, they apply theories, methods and tools where these are appropriate. 2. Software engineering is: the systematic use of many disciplines, tools, and resources for the practical application. This is a broad definition which includes everything except hardware. 17 Definition of Software Engineering given by Ian Somerville  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 suitable 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. Chapter 1 Introduction 18 Definition of Software Engineering given by Ian Somerville These definitions make it clear that Software Engineering is not just about writing code. ✓ Software Engineering is the combination of all the tools, techniques, and processes that used in software production. Therefore, Software Engineering cover all those things that are used in software production like: Programming Language Programming Language Design Software Design Techniques Tools Testing Maintenance Development etc. Importance of software engineering  More and more, individuals and society depend on advanced software systems. We need to be able to produce reliable and dependable 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. Chapter 1 Introduction 20 What is the difference between software engineering and 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 currently insufficient to act as a complete foundation or basis for software engineering 21 What is the difference between software engineering and system engineering?  System engineering is concerned with all aspects of computer- based systems development including hardware, software and process engineering.  System engineers are involved in system specification, architectural design, integration of the finish system.  System engineers is the activity of specifying, designing, implementing, deploying and maintaining systems, which include hardware, software , people and interaction of the system with users and its environment.  Software engineering is part of this process 22 What are the costs of software engineering?  Roughly 60% of costs are development costs, 40% are testing costs.  For custom software, evolution costs often exceed development costs  Costs vary depending on ▪ Type of system being developed (requirement of system attributes such as performance and reliability) ▪ Type of software process model used  Eg. Real-time Air traffic control vs. ecommerce web-based system 23 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. Well-Engineered Software It is reliable (consistently good in quality or performance; able to be trusted) It has good user-interface It has acceptable performance It is of good quality It is cost-effective Characteristics of good software A software product can be judged by what it offers and how well it can be used. This software must satisfy on the following grounds: (Well-engineered software is expected to have the following characteristics) Operational Transitional Maintenance Operational This tells us how well the software works in operations. It can be measured on: Budget Usability Efficiency Correctness Functionality Dependability Security Safety Characteristics of good software Transitional This aspect is important when the software is moved from one platform to another: Portability Interoperability Reusability Adaptability Maintenance This aspect briefs about how well the software has the capabilities to maintain itself in the ever-changing environment: Modularity Maintainability Flexibility Scalability What are the 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 Software dependability includes a range of characteristics security 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 utilization, 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. Software project failure / Why SE?  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. What are the challenges facing software engineering? General issues that affect most 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.  Security and trust ▪ software can be trusted by its users. (esp. remotely accessed software applications). Chapter 1 Introduction 30 Software engineering ethics  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 but involves following a set of principles that are morally correct. Issues of professional responsibility The following a set of principles that are morally correct.  Confidentiality (privacy) ▪ Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.  Competence (ability) ▪ Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwith their competence. Issues of professional responsibility  Intellectual property rights ▪ 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.  Computer misuse ▪ 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). What is the role of the software engineer? The production of software is a problem-solving activity that is accomplished by modeling. As a problem-solving, modeling discipline, software engineering is a human activity that is biased by previous experience, and is subject to human error.  Therefore, 1) Software engineers should recognize and try to eliminate these errors. 2) Software engineers should also strive to develop code that is built to be tested, that is designed for reuse, and that is ready for inevitable change. ✓ Anticipation of problems can only come from experience and from drawing upon a body of software practice experience. How do software engineers spend their time on the job? Software engineers probably spend less than 10% of their time writing code. The other 90% of their time is involved with other activities that are more important than writing code. These activities include: 1) Eliciting requirements 2) Analyzing requirements 3) Writing software requirements documents 4) Building and analyzing prototypes 5) Developing software designs 6) Writing software design documents 7) Researching software engineering techniques or obtaining information about the application domain 8) Developing test strategies and test cases 9) Testing the software and recording the results 10) Isolating problems and solving them 11) Learning to use or installing and configuring new software and hardware tools 12) Writing documentation such as users manuals 13) Attending meetings with colleagues, customers, and supervisors 14) Archiving software or readying it for distribution What is CASE (Computer-Aided Software Engineering)  Software systems which 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, analysis and design  Lower-CASE ▪ Tools to support later activities such as programming, debugging and testing 36 FAQ about software engineering Question Answer What is software? Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production. What are the fundamental software Software specification, software development, software engineering activities? validation and software evolution. What is the difference between software Computer science focuses on theory and fundamentals; engineering and computer science? software engineering is concerned with the practicalities of developing and delivering useful software. What is the difference between software System engineering is concerned with all aspects of engineering and system engineering? computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process. Chapter 1 Introduction 37 FAQ about software engineering Question Answer What are the key challenges facing Coping with increasing diversity, demands for reduced software engineering? delivery times and developing trustworthy software. What are the costs of software Roughly 60% of software costs are development costs, engineering? 40% are testing costs. For custom software, evolution costs often exceed development costs. What are the best software engineering While all software projects have to be professionally techniques and methods? managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can’t, therefore, say that one method is better than another. What differences has the web made to The web has led to the availability of software services software engineering? and the possibility of developing highly distributed service- based systems. Web-based systems development has led to important advances in programming languages and software reuse. Chapter 1 Introduction 38 Key points  Software engineering is an engineering discipline that is concerned with all aspects of software production.  Essential software product attributes are maintainability, dependability and security, efficiency and acceptability.  The high-level activities of specification, development, validation and evolution are part of all software processes.  The fundamental notions of software engineering are universally applicable to all types of system development. Chapter 1 Introduction 39 Key points  There are many different types of system and each requires appropriate software engineering tools and techniques for their development.  The fundamental ideas of software engineering are applicable to all types of software system.  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. Chapter 1 Introduction 40 Questions??

Use Quizgecko on...
Browser
Browser