Lecture 1-SWE1-CH1-Introduction.pdf

Full Transcript

Faculty of Computers and Artificial Intelligence Menoufia University Software Engineering DR. Mohamed Gaber Malhat Lecturer at Computer Science department Course Content Chapter 1 - Introduction Chapter 2 - Software Processes Chapter 3 - Agi...

Faculty of Computers and Artificial Intelligence Menoufia University Software Engineering DR. Mohamed Gaber Malhat Lecturer at Computer Science department Course Content Chapter 1 - Introduction Chapter 2 - Software Processes Chapter 3 - Agile Software Development Chapter 4 - Requirements Engineering Chapter 5 - System Modeling Chapter 6 - Architectural Design Chapter 7 - Design and Implementation Chapter 8 - Software Testing Chapter 9 - Software Evolution Grades Task Marks Midterm 20 Points Sections 15 Points Assignments 15 Points Final Exam 50 Points Agenda Chapter 1 Introduction – Definitions and Questions – Software Development Software Engineering Software Engineering Diversity Software Engineering and Web – Software Development Ethics – Case Studies An insulin pump control system A Patient Information System for Mental Healthcare Wilderness Weather Station Important Definitions and Questions 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 is software engineering? – Software engineering is an engineering discipline that is concerned with all aspects of software production. What are the fundamental software engineering activities/processes? – Software specification, software development, software validation and software evolution. Important Definitions and Questions What are the key challenges facing software engineering? – Coping with increasing diversity, demands for reduced delivery times, and developing trust software. What are the costs of software engineering? – Roughly 60% of software costs are development costs, 40% are testing costs. What are the best software engineering techniques and methods? – 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 specification to be developed. Software Products There are two types of software products: – Generic products Stand-alone systems that are marketed and sold to any customer who wishes to buy them. The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer. – Customized product Software that is commissioned by a specific customer to meet their own needs. 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. Good Software Attributes 1. 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. 2. 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. 3. 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. 4. 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 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 that faces software production. 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. Software Engineering The software activities/processes are: – Software specification The customers and engineers define the software that is to be produced (i.e., requirement) and constraints. – Software development The software is designed and programmed. – Software validation The software is checked to ensure that it is what the customer requires. – Software evolution The software is modified to reflect changing customer and market requirements. Software Engineering Diversity The types of the software engineering methods and techniques used for a particular application are depending on three factors: – The organization developing the software. – The type of software (or application). – The people involved in the development process. The most significant factor from theses three factors is the type of software (or application) that is being developed. Software Engineering Diversity There are many different types of application including: Stand-alone Application Interactive Transaction-based Application Embedded Control System Batch Processing System Entertainment System System for Modelling and Simulation Data Collection Systems System of Systems Software Engineering and Web The Web is now a platform for running application and organizations are increasingly developing web-based systems rather than local systems. Why? – Cheaper to change and upgrade the software, as there was no need to install the software on every PC. – Reduced costs, one application for many users and organization. – Easy to manage software. Software Engineering and Web The next stage in the development of web-based systems was the notion of web services. Web services are software components that deliver specific, useful functionality and which are accessed over the Web. Applications are constructed by integrating these web services, which may be provided by different companies. The whole application may be just a web service, which is known as ‘software as a service’. Software Engineering Ethics Software engineering involves wider responsibilities than simply the application of technical skills. Issues of professional responsibilities are: – Confidentiality (i.e., keep information secret) – Competence (i.e., accept what you can do) – Intellectual property rights (i.e., protect customer ideas) – Computer misuse (i.e., don’t misuse other people’s computers) Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals. Software Engineering Ethics The ACM/IEEE Code of Ethics 1. PUBLIC - Software engineers shall act consistently with the public interest (‫)المصلحة العامة‬. 2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment. 5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. PROFESSION )‫ (المهنة‬- Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. COLLEAGUES )‫(زمالء العمل‬- Software engineers shall be fair to and supportive of their colleagues. 8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. Case Studies 1. Insulin pump: An embedded system used by diabetics to maintain blood glucose control. Insulin Pump Control System Safety-critical system as low blood sugars can lead to brain malfunctioning, coma and death; high-blood sugar levels have long-term consequences such as eye and kidney damage. Insulin Pump Control System The requirements for Insulin pump system are: 1. The system shall be available (24 hours per day) to deliver insulin when required. 2. The system shall perform reliably and deliver the correct amount of insulin to counteract the current level of blood sugar. 3. The insulin doses must be recorded and analyzed. 4. The system must therefore be designed and implemented to ensure that the system always meets these requirements. Case Studies 2. A Mental Healthcare Patient Management System Mental Health Care System It is a medical information system that maintains information about patients suffering from mental health problems and the treatments that they have received. Most mental health patients do not require dedicated hospital treatment but need to attend specialist clinics regularly where they can meet a doctor who has detailed knowledge of their problems. Mental Health Care System Mental Health Care System The requirements for mental health care system are: – Clinicians can create/edit/view records for patients. The system supports data summaries. – The system monitors the records of patients that are involved in treatment and issues warnings if problems are detected. – The system generates monthly management reports showing the number of patients treated at each clinic, the number of patients who have entered and left the care system, the drugs prescribed and their costs, etc. Mental Health Care System The system concerns are: – Privacy: It is essential that patient information is confidential and is never disclosed to anyone apart from authorised medical staff and the patient themselves. – Safety: Some mental illnesses cause patients to become suicidal (‫ )انتحارى‬or a danger to other people. Wherever possible, the system should warn medical staff about potentially suicidal or dangerous patients. The system must be available when needed otherwise safety may be compromised. Case Studies 3. Wilderness Weather Station: A data collection system that collects data about weather conditions in remote areas. Temperature Pressure Sunshine Rainfall Wind speed Wind direction Wilderness Weather Station Wilderness Weather Station The requirements for Wilderness Weather Station: – Monitor the instruments, power and communication hardware and report faults. – Manage the system power, ensuring that batteries are charged whenever the environmental conditions permit. – Support dynamic reconfiguration where parts of the software are replaced with new versions and where backup instruments are switched into the system in the event of system failure. Thank You

Use Quizgecko on...
Browser
Browser