Babcock University Intro To Software Engineering Lecture Notes PDF
Document Details
Uploaded by ForemostJasper6811
Babcock University
Prof. Eze, M.O
Tags
Summary
This document is a lecture slide for an introductory course on software engineering. It covers the software crisis, abstraction, decomposition, software types, and common myths.
Full Transcript
Lecture Slide -1 By Prof. Eze, M.O Department of Computer Science, Babcock University, Ilisan-Remo, Ogun State, Nigeria CONTENTS Program, Software + Software SE Software & Engineeri...
Lecture Slide -1 By Prof. Eze, M.O Department of Computer Science, Babcock University, Ilisan-Remo, Ogun State, Nigeria CONTENTS Program, Software + Software SE Software & Engineering Complexity Software Crisis Evolution OTHERS Products. The Two Key Words are: SOFTWARE ENGINEERING PROGRAM, SOFTWARE & PRODUCTS A Software is not just equivalent to Program Code. It goes beyond that. A program is an executable code that solves a particular problem. A Software on the other hands is a collection of not just executable codes only, but also other components such as associated libraries, documentations, etc. A Software Product is defined as a Software made for a specific requirement. WHAT IS ENGINEERING? Engineering is the conception and development of products, using well-defined, scientific principles and methods. Engineering is the creative application of Science, Mathematics and other technological disciplines to the design, construction and maintenance of structures, devices, systems and processes that solve problems. Software + Engineering ➔ When Software Engineers utilize engineering techniques to build Software. DEFINITION: 1 2 Software Engineering IEEE is an engineering branch associated with Definition: the development of Software Engineering is the software products application of a systematic, using well-defined disciplined, quantifiable scientific principles, approach to the development, operation methods and and maintenance of procedures. software. DEFINITION: 3 4 Fritz Bauer, a Boehm: German computer Software Engineering is scientist: Software the practical application of Engineering is the scientific knowledge to the creative design and establishment and use of building of computer sound engineering programs. It also includes principles in order to obtain associated documentation economically software that needed for developing, is reliable and work operating, and efficiently on real machines. maintaining them. Why SE? The Concept of Small and Large Programs is that it is possible for a P20 developer to bypass SE P3 Principle when writing P2 SMALL Programs, BUT it is >>>> P1 >>>> not possible for LARGE Programs. COMPLEXITY INCREASES WITH PROGRAM SIZE !!!! Without using software engineering principles it would be difficult to develop large programs. The major problem with large commercial programs is that the complexity and difficulty levels of the programs increase exponentially with their sizes. Software engineering use two techniques to reduce problem complexity: abstraction and decomposition. ABSTRACTION: The principle of abstraction simplifies the solution of a problem by omitting irrelevant details. The main purpose of abstraction is to consider only those aspects of the problem that are relevant for certain purpose and suppress other aspects that are irrelevant for the given purpose. Once the simpler problem is solved, then the omitted details can be taken into consideration to solve the next lower level DECOMPOSITION: This is another approach used to tackle problem complexity. Here a complex problem is divided into several smaller problems and then the smaller problems are solved one by one. However, in this technique any random decomposition of a problem into smaller parts will not help. The problem has to be decomposed such that each component of the decomposed problem can be solved independently and then the solution of the different components can be combined to get the full solution. One of the Catalysts to the Evolution of Software Engineering is the Software Crisis of 1960s. Six Issues that Gave Rise to Software Crisis. 1. In 1960s many software projects failed 6. Moreover, Software 2. Many software Demand was very much became over budget. higher than the Supply. 5. Every Improvement in Hardware Capability led to Corresponding 3. Resulting Software Increase in Software were unreliable and Complexity. expensive to maintain. 4. Most Software could not Satisfy Customer Requirements. SOFTWARE ENGINEERING STEP 4: Object Oriented Software Methodology, AI enabled Software Techniques and Tools, etc (2000 and above). STEP 3: Emphasis on the Software Project Management and Quality Processes like ISO 9001 (1990s). STEP 2: Automation of software engineering process and growth of Computer-Aided Software Engineering - CASE (1980s). STEP 1: Widespread uses of software engineering principles (1970s). Some of the Software stakeholders are: 1. END-USERS: Users or their representatives. 2. CUSTOMERS:Those who purchase the software. 3. ANALYST: Specialize in Software Analysis at Development Stage. 4. DOMAIN EXPERTS: Have core knowledge of the software usage area. 5. IMPLEMENTORS: Experts in Software Implementation. 6. MANAGERS: In charge of Human and Resource management. 7. MAINTAINERS: In charge of software maintenance. 8. OTHERS:There areother stakeholders not mentioned here. The 10 Major Goals are to build Software Products that are: 1. Efficient 10. Correct 2. Reliable 9. Interoperable 3. Usable Goals of Software Engineering 8. 4. Modifiable Maintainable 7. Re-Usable 5. Portable 6. Testable SE Unique Attributes Easy to Modify No Wear and Tear unlike hardware Unskilled people can create it. Difficult to see development efforts. Easy to replicate 1. MANAGEMENT MYTHS Myths ➔ Widely Believed Assumptions that, Most Times are Not True. SOFTWARE MYTHS 3. 2. CUSOMERS PRACTITIONERS MYTHS MYTHS We have a book of Standards and Procedures for building software. That is all our programmers need to work efficiently. MYTH1 REALITY: The company book of standard may not be complete, adaptable, and reflective of modern SE practices. If we get behind schedule, we shall add more programmers to catch up. MYTH2 REALITY: Software development is not like manufacturing process. Adding more people to a late project could make it later. We can just outsource the software project to a third party, then simply relax and let the firm build it. MYTH3 REALITY: If a third party did not understand the project, it will not succeed in handling it. A general Statement of Objectives (SOO) is sufficient to begin writing the program, so we can fill in the details later. MYTH-1 REALITY: Beginning a program without an unambiguous SOO will lead to disaster Project Development should be flexible enough to accommodate new requirements during development. MYTH-2 REALITY: Project requirements could change, but the impacts could grow rapidly. At beginning, changes could be accommodated, but at middle and tail end, it may be very costly and may require redesign. Once we write the program and get it to work, our job is done. MYTH1 REALITY: The major work begins after the project is delivered. This will come especially in form of maintenance. It is when I get the program running that I can really assess its quality. MYTH 2 REALITY: One of the most effective software quality assurance mechanism is through the use of Formal Technical Review from onset. The only deliverable of utmost important is a working program. MYTH3 REALITY: Working program is only a part of software product. Others such as documentations are equally important. QUESTION 1: What is the difference between Program and Software? 1. Ronald J. Leach, “Introduction to Software Engineering Second Edition”, CRC Press Taylor, 6000 Broken Sound Parkway NW, 2016. 2. D. Mukesh (2019). Lecture Notes on Software Engineering. Department of Computer Science and Engineering, Chadalawada Ramanamma Eng. College, Nagar. 3. DOUGLAS BELL (200). Software Engineering for Students: A Programming Approach Fourth Edition, Pearson Education Ltd. England.