Introduction to Software Engineering Lecture PDF
Document Details
Uploaded by UnrealConstructivism
Menoufia University
Dr. Mohamed Gaber Malhat
Tags
Summary
This document presents a lecture on software engineering, focusing on software processes such as the waterfall model, incremental development, and agile methodologies. The lecture notes cover the fundamental concepts and activities involved in the software development lifecycle.
Full Transcript
Faculty of Computers and Artificial Intelligence Menoufia University Introduction to Software Engineering DR. Mohamed Gaber Malhat Lecturer at Computer Science department Course Content Chapter 1 - Introduction Chapter 2 - Software Processe...
Faculty of Computers and Artificial Intelligence Menoufia University Introduction to 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 2 Agenda Chapter 2 Software Processes – Software Process Models The Waterfall Model Incremental Development Reuse Oriented Software Engineering – Process Activities Today Software Specification Software Design and Implementation Software Validation Software Evolution – Coping With Change Prototyping Incremental Delivery Next Week Spiral Model – The Rational Unified Process 3 Software Process Software process is the set of activities required to develop a software system. Idea ?? Software System ?? The main processes in most software process models are : – Specification – Design and implementation (Development) – Validation – Evolution 4 Software Process Types Process types: – Plan-driven processes are processes where all of the process activities are planned in advance. – Agile processes are processes where the process activities may change to reflect changing in customer requirements. Most software contains both plan-driven and agile processes. Plan-Driven processes Agile processes 5 Software Process Models Software process model is a description that define the activities in each process and their ordering. Specification Process Feasibility Requirement Requirement Requirement Study Elicitation Specification Validation Process descriptions may also include: – Set of activities – Input and output of each activity. – People reasonable for each activity. – Pre- and post-conditions for each activity (e.g., time and order). 6 Software Process Models The most popular software process models are: – The waterfall model Processes are separated. You have to finish a process to start next one. It is Plan-driven model. – Incremental development model Processes are interleaved. You may finish part of specification and design and develop this part. May be plan-driven or agile. – Reuse-oriented software engineering model The system is assembled from existing components. May be plan-driven or agile. 7 Software Process Models The software process models are not mutually exclusive and are often used together, especially for large systems development. − By dividing system into parts. The parts of the system that are well understood can be specified and developed using a waterfall-based process. Parts of the system which are difficult to specify in advance, such as the user interface, should always be developed using an incremental approach. 8 Waterfall Model System Specification System Deign and Architecture Code of Software as Units Overall Code 9 Waterfall Model What are the main drawbacks of waterfall model? – Requires a large block of time in order to finish whole project. – Customers don’t have rights to change their requirements. – Difficulty of making changes after the process is finished, because changes are only available after finishing software. When to use waterfall model? – When the requirements are well-understood. – When you develop a software that is similar to existing software. – Used for large and critical systems engineering projects where a system is developed at several sites. 10 Incremental Development Model 11 Incremental Development Model What are the main advantages of incremental development model? – The cost of changing customer requirements is reduced. – It is easier to get customer feedback on the development work that has been done. – More rapid delivery and deployment of useful software to the customer is possible. 12 Incremental Development Model What are the main drawbacks of incremental development model? – The process is not visible. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system. – System structure tends to degrade as new increments are added. When to use incremental development model? – The requirements are not clear. – Customer needs to be involved in software production. – Software that are developed in versions with new features. 13 Reuse-Oriented Software Engineering Reuse is now the standard approach for building many types of business system. 14 Reuse-Oriented Software Engineering What are the main advantages of reuse-oriented model? – Reducing the amount of software to be developed. – Reducing cost and risks. – Faster delivery of the software. What are the main drawbacks of reuse-oriented model? – Requirements are modified and this may lead to a system that does not meet the real needs of users. – Control over the system evolution is lost as new versions of the reusable components are not under the control of the organization using them. 15 Process Activities 16 Process Activities The basic four activities are: – Software specification – Software development – Software validation – Software evolution These activities are organized differently based on software process model. – For example, in the waterfall model, they are organized in sequence, whereas in incremental development they are interleaved. 17 Software Specification The process of establishing what services are required and the constraints on the system’s operation and development. Software Specification Activities 18 Software Development The process of converting the system specification into an executable system. Software design – Design a software structure that realizes the specification. Implementation – Translate this structure into an executable program. 19 Software Development A general model of the design process 20 Software Development The software implementations follows naturally from the software design processes. Programming is a personal activity and there is no general process that is usually followed. – Some programmers start with components that they understand, develop these, and then move on to less- understood components. Others take the opposite approach. Normally, programmers carry out some testing of the code they have developed. This often reveals program defects that must be removed from the program. This is called debugging. 21 Software Validation Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer. It involves three activities component testing, system testing, and acceptance testing. Tested by developer Test with real data Testing stages 22 Software Validation Acceptance testing is sometimes called ‘alpha testing’. When a system is to be marketed as a software product, a testing process called ‘beta testing’ is often used. Beta testing involves delivering a system to a number of potential customers who agree to use that system. They report problems to the system developers. This exposes the product to real use and detects errors that may not have been anticipated by the system builders. 23 Software Evolution Software evolution takes place when you change existing software systems to meet new requirements. The software must evolve to remain useful. Software Evolution Activities 24 Thank You 25