20CS4103 SE UNIT 1-1.pptx software engineering

shreeabinaya413 45 views 52 slides Jun 19, 2024
Slide 1
Slide 1 of 52
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52

About This Presentation

Nil


Slide Content

UNIT 1 – SOFTWARE PROCESS AND DEVELOPMENT METHODOLOGY The Nature of Software - Software Engineering Practice - Software Myths –Sequential Model - Prototyping Model - RAD Model - Evolutionary Software Process Models - Incremental model - Spiral model, Agile Development – Extreme Programming(XP) – Scrum Total Periods :9

20CS4103 - SOFTWARE ENGINEERING OBJECTIVES To provide the idea of decomposing the given problem into Analysis, Design, Implementation, Testing and Maintenance phases. COURSE OUTCOMES Students will be able to 1. Compare different process models. 2. Concepts of requirements engineering and Analysis Modeling. 3. Apply systematic procedure for software design and deployment. 4. Compare and contrast the various testing and maintenance. 5 . Manage project schedule, estimate project cost and effort required

Software Engineering : Software engineering  deals with the  design, development, testing, and maintenance of software applications . Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users. S oftware engineering are driven by new technologies in automobiles, Aviation (aircraft), data management, telecommunications, factory control, robotics, defense, and security. Software engineers may develop computer games, business applications, operating systems, network control systems

Key Principles of Software Engineering Modularity : Breaking the software into smaller, reusable components that can be developed and tested independently. Abstraction : Hiding the implementation details of a component and exposing only the necessary functionality to other parts of the software. Encapsulation : Wrapping up the data and functions of an object into a single unit, and protecting the internal state of an object from external modifications. Reusability : Creating components that can be used in multiple projects, which can save time and resources. Maintenance : Regularly updating and improving the software to fix bugs, add new features, and address security vulnerabilities. Testing : Verifying that the software meets its requirements and is free of bugs. Design Patterns : Solving recurring problems in software design by providing templates for solving them.

Nature of Software Software refers to a program that makes the computer to do something meaningful. It is the planned, step by step instructions required to turn data into information . Nature of software : Software is a logical entity rather than a physical system entity. Software characteristics are quite different from that of hardware . Software is: (1) instructions (computer programs) that when executed to provide desired features, function, and performance, (2) data structures that enable the programs to adequately manipulate information and , (3) documentation that describes the operation and use of the programs.

Types of software i)System Software Predefined software e.g notepad, paint,recycle bin. ii)Utility Software Supporting software e.g Wifi adapter iii) Application Software Based on the need of user it can be installed e.g Zoom ,teams photoshop .

Characteristics of software Reliability:  The ability of the software to consistently perform its intended tasks without unexpected failures or errors. Usability:  How easily and effectively users can interact with and navigate through the software. Efficiency:  The optimal utilization of system resources to perform tasks on time. Maintainability:  How easily and cost-effectively software can be modified, updated, or extended. Portability:  The ability of software to run on different platforms or environments without requiring significant modifications.

Software Engineering Practices Software Engineering Practices are a set of approaches to software development. To overcome the software development problems. • Understand the problem (communication and analysis) • Plan the solution ( Modeling and software design) • Carry out the plan (code generation) • Examine the result for accuracy (testing and quality assurance)

Software Myths Myth 1: Computers are more reliable than the devices they have replaced. Considering the reusability of the software, it can undoubtedly be said that the software does not fail. Myth 2: Software is easy to change. Yes, changes are easy to make – but hard to make without introducing errors. With every change the entire system must be re-verified. Myth 3: If software development gets behind scheduled, adding more programmers will put the development back on track. Software development is not a mechanistic process like manufacturing. In the words of Brooks: “adding people to a late software project makes it later”.

(i) Management Myths : Myth 1: We have all the standards and procedures available for software development. Fact : Software experts do not know all the requirements for the software development. And all existing processes are incomplete as new software development is based on new and different problem. Myth 2: The addition of the latest hardware programs will improve the software development. Fact : The role of the latest hardware is not very high on standard software development; instead (CASE) Engineering tools help the computer, they are more important than hardware to produce quality and productivity. Hence, the hardware resources are misused.

(ii)Customer Myths:  The customer can be the direct users of the software, the technical team, marketing / sales department, or other company. Customer has myths leading to false expectations (customer) & that’s why you create dissatisfaction with the developer. Myth 1: A general statement of intent is enough to start writing plans (software development) and details of objectives can be done over time. Fact : Official and detailed description of the database function, ethical performance, communication, structural issues and the verification process are important. Unambiguous requirements (usually derived iteratively) are developed only through effective and continuous communication between customer and developer.

Myth 2 : Software requirements continually change, but change can be easily accommodated because software is flexible Fact : It is true that software requirements change, but the impact of change varies with the time at which it is introduced. When requirements changes are requested early (before design or code has been started), the cost impact is relatively small. However, as time passes, the cost impact grows rapidly—resources have been committed, a design framework has been established, and change can cause upheaval that requires additional resources and major design modification.

(iii)Practitioner’s Myths: Myths 1: They believe that their work has been completed with the writing of the plan. Fact : It is true that every 60-80% effort goes into the maintenance phase (as of the latter software release). Efforts are required, where the product is available first delivered to customers. Myths 2: There is no other way to achieve system quality, until it is “running”. Fact : Systematic review of project technology is the quality of effective software verification method. These updates are quality filters and more accessible than test.

Sequential Model or Waterfall Model The Waterfall Model  is also referred to as a  linear-sequential life cycle model . In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases . The Waterfall model is the earliest SDLC ( software development life cycle ) approach that was used for software development . Waterfall Model – Design (Classical Life Cycle Model) Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases.

Requirement Gathering and analysis  − All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document . Basic requirements of system must understood by Software Engineer as analyst. Information domain, function and behavioural requirements. System Design  − Based on requirement the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture , data structure , interface representation , Algorithmic details. Implementation  − Design is translated into machine – readable form. With inputs from the system design, the system is first developed in small programs called units, which are integrated in the next phase

Integration and Testing   − It begins when coding is done ,it mainly focuses on logical internals of software. The testing ensures execution of all the path ,functional behaviour . The purpose of testing is to uncover errors ,fix the bugs and meet the customer requirements. Deployment of system  − Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market . Maintenance  − It is the longest phase .There are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment. It enchance the system services as new requirements are discovered is again maintanence of the system.

Waterfall Model – Application Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are − Requirements are very well documented, clear and fixed. Product definition is stable. Technology is understood and is not dynamic. There are no ambiguous requirements. Ample resources with required expertise are available to support the product. The project is short .

Advantages Simple and easy to understand and use Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process. Phases are processed and completed one at a time . e.g. enterprise applications like Customer Relationship Management (CRM) systems, Human Resource Management Systems (HRMS), Supply Chain Management Systems, Inventory Management Systems, Point of Sales (POS) systems for Retail chains  . A building's physical design is created before any construction begins. Disadvantages No working software is produced until late during the life cycle. High amounts of risk and uncertainty. Not a good model for complex and object-oriented projects. Poor model for long and ongoing projects.

Incremental Model Incremental Model is a process of software development where requirements divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases . It has some of phases similar to Waterfall model but it is iterative in nature. Analysis Design Code Test Analysis Design Code Test Implementation

1. Requirement analysis:  In the first phase of the incremental model, the product analysis expertise identifies the requirements. And the system functional requirements are understood by the requirement analysis team. To develop the software under the incremental model, this phase performs a crucial role. 2. Design & Development:  In this phase of the Incremental model of SDLC, the design of the system functionality and the development method are finished with success. When software develops new practicality, the incremental model uses style and development phase. 3. Testing:  In the incremental model, the testing phase checks the performance of each existing function as well as additional functionality. In the testing phase, the various methods are used to test the behavior of each task. 4. Implementation:  Implementation phase enables the coding phase of the development system. It involves the final coding that design in the designing and development phase and tests the functionality in the testing phase. After completion of this phase, the number of the product working is enhanced and upgraded up to the final system product

Advantage of Incremental Model Errors are easy to be recognized. Easier to test and debug More flexible. Simple to manage risk because it handled during its iteration. The Client gets important functionality early . Disadvantage of Incremental Model Need for good planning Total Cost is high. Well defined module interfaces are needed.

Evolutionary Software Process Models While developing the software systems, it is often needed to make modifications in earlier development phases or the tasks sets. If the development process is linear or in a straight line (from requirements gathering to deployment) then the end product will be unrealistic. In such cases, the iterative approach needs to be adopted. The evolutionary process model is iterative model . Evolving the software product over time with iterative and incremental approaches with proper feedback. Evolutionary Model Prototyping Model Sprial Model

Prototyping Model  is a software development model in which prototype is built, tested, and reworked until an acceptable prototype is achieved. It also creates base to produce the final system or software. It works best in scenarios where the project’s requirements are not known in detail. It is an iterative, trial and error method which takes place between developer and client .

Developer and customer define overall objective ;identify areas needing more requirement gathering. Quick design is prepared, it represents which part will be visible to user in input and output. Customer or user evaluates the prototype in order to refine the requirements. Steps of Prototype Model Requirement Gathering and Analyst Quick Decision Build a Prototype Assessment or User Evaluation Prototype Refinement Engineer Product Communication with customer Building of quick design Deployment delivery and feedback Construction of prototype

Advantage of Prototype Model Reduce the risk of incorrect user requirement Good where requirement are changing/uncommitted Regular visible process aids management Support early product marketing Reduce Maintenance cost . Disadvantage of Prototype Model An unstable/badly implemented prototype often becomes the final product. Require extensive customer collaboration Costs customer money Needs committed customer Difficult to know how long the project will last. Easy to fall back into the code and fix without proper requirement analysis, design, customer evaluation, and feedback. Prototyping tools are expensive . Applications Shopping Website. C atalog pages, product order pages submit approval by customers .

Spiral Model The Spiral Model is a  Software Development Life Cycle (SDLC)  model that provides a systematic and iterative approach to software development. It is a combination of Waterfall and Iterative model . In its diagrammatic representation, looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of the spiral is called a  Phase of the  software development process . The Spiral Model is a risk-driven model , meaning that the focus is on managing risk through multiple iterations of the software development process .

This model possess the iterative nature of prototyping model and controlled and systematic approaches of the linear sequential model . Spiral model is realistic approach to development of large-scale systems and software. Because customer and developer better understand the problem statement at each evolutionary level. Also risks can be identified or rectified at each such level . In the initial pass , product specification is built and in subsequent passes around the spiral the prototype gets developed and then more improved versions of software gets developed . During planning phase, the cost and schedule of software can be planned and adjusted based on feedback obtained from customer evaluation . In spiral model, project entry point axis is defined. This axis represents starting point for different types of projects . Concept development project will start at core of spiral and will continue along the spiral path. If the concept has to be developed into actual project then at entry point 2 the product development process starts.

The task regions can be described as : Customer communication -In this region,it is suggested to establish customer communication . Planning - All planning activities are carried out in order to define resources time line and other project related activities . Risk analysis - The tasks required to calculate technical and manage1nent risks are carried out . Engineering –In this task region, tasks required to build one or more representations of applications are carried out . Construct and release - All the necessary tasks required to construct, test, install the application are conducted. Some tasks that are required to provide user support are also carried out in this task region . Customer evaluation - Customer's feedback is obtained and based on customer evaluation required tasks are performed and i1nplemented at installahon stage.

The Spiral model is called a Meta-Model because it subsumes all the other SDLC models. For example, a single loop spiral actually represents the Iterative Waterfall Model . The spiral model incorporates the stepwise approach of the Classical Waterfall Model. The spiral model uses the approach of the Prototyping Model   by building a prototype at the start of each phase as a risk-handling technique . Also, the spiral model can be considered as supporting the Evolutionary model – the iterations along the spiral can be considered as evolutionary levels through which the complete system is built.  Advantages Risk Handling Good for large projects Flexibility in Requirements Customer Satisfaction https://www.youtube.com/watch?v=YfGvIhPXz1A

The  RAD (Rapid Application Development)  model is based on prototyping and iterative development with no specific planning involved. The process of writing the software itself involves the planning required for developing the product . It uses component based construction . RAD is a linear sequential software development process model that emphasizes a concise development cycle using an element based construction approach. RAD (Rapid Application Development) is a concept that products can be developed faster and of higher quality through: Gathering requirements using workshops or focus groups Prototyping and early, re iterative user testing of designs The re-use of software components A rigidly paced schedule that refers design improvements to the next product version Less formality in reviews and other team communication

The various phases of RAD are as follows : 1.Business Modelling :  The information flow among business functions is defined by answering questions like what data drives the business process, what data is generated, who generates it, where does the information go, who process it and so on . 2. Data Modelling :  The data collected from business modeling is refined into a set of data objects (entities) that are needed to support the business. The attributes (character of each entity) are identified, and the relation between these data objects (entities) is defined. 3. Process Modelling :  The information object defined in the data modeling phase are transformed to achieve the data flow necessary to implement a business function. Processing descriptions are created for adding, modifying, deleting, or retrieving a data object. 4. Application Generation:  Automated tools are used to facilitate construction of the software; even they use the 4th GL techniques. 5. Testing & Turnover:  Many of the programming components have already been tested since RAD emphasis reuse. This reduces the overall testing time. But the new part must be tested, and all interfaces must be fully exercised.

Advantage of RAD Model This model is flexible for change. In this model, changes are adoptable. Each phase in RAD brings highest priority functionality to the customer. It reduced development time. It increases the reusability of features . Disadvantage of RAD Model It required highly skilled designers. All application is not compatible with RAD. For smaller projects, we cannot use the RAD model. On the high technical risk, it's not suitable. Required user involvement.

Agile Development The meaning of Agile is swift or versatile. Agile process model refers to a software development approach based on iterative development . Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning . Plans regarding the number of iterations, the duration and the scope of each iteration are clearly defined in advance . Each iteration involves a team working through a full software development life cycle including planning, requirements analysis, design, coding, and testing before a working product is demonstrated to the client .

Definition: This model is mainly used to overcome the waterfall model drawbacks. It was primarly designed to help the project to adopt the change request quickly. Main aim of agile model is delivering the working model of S/W quickly to customer. Principles of Agile 1. The highest priority is to satisfy the customer through early and continuous delivery of valuable software. 2. Changes in requirement in any Phases can accomadate. 3. Deliver working software within a short span of time. Project can be done by self motivated individuals and they need to support each other and work together. Measure the progress of software development.

6. Increase the constant speed to promote the project development. 7. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. 8. Proper attention and simplicity should be given to the technical excellent and good design while developing project. 9. The team must be self organised . 10. At the regular interval team must think over issue of becoming effective and review carefully.

Phases of Agile Model : Requirements gathering Design the requirements Construction/ iteration Testing/ Quality assurance Deployment Feedback 1. Requirements gathering:  In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility . 2. Design the requirements:  When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system.

3. Construction/ iteration:  When the team defines the requirements, the work begins. Designers and developers start working on their project, which aims to deploy a working product. The product will undergo various stages of improvement, so it includes simple, minimal functionality . 4. Testing:  In this phase, the Quality Assurance team examines the product's performance and looks for the bug . 5. Deployment:  In this phase, the team issues a product for the user's work environment . 6. Feedback:  After releasing the product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.

Advantages Deployment of software is quicker and thus helps in increasing the trust of the customer. Can better adapt to rapidly changing requirements and respond faster. Helps in getting immediate feedback which can be used to improve the software in the next increment.   Disadvantages Lack of predictability Lack of emphasis on testing Risk of team Only suitable for large project. Cost is high. It need expert project developer.

When to use Agile Model? Project size is large Frequent changes are required Highly qualified and experienced team is available. Flexible timelines and budget. https://youtu.be/xh4EGRKH4rk?si=BtWPRSDMokMU__ PY

Extreme Programming(XP ) Extreme Programming (XP) is one of the best known agile process. It is used to improve software Quality and responsive to customer request. XP Values: Communication : The effective communication m ust be established between software developers and stakeholders in order to convey the important concepts and to get the important feedback . Simplicity : XP focuses on the current needs instead of futures needs to incorporate in the design . Hence the XP believes that the Software design should be simple. Feedback : The feedback for the software product can be obtained from the developers of the software, customers, and other software team members . Courage : The strict adherence to certain XP practices require courage. The agile XP team must be disciplined to design the system today, recognize the future requirements and make the changes dramatically as per the demand . Respect : By following the above states XP values the agile team can win the respect of stakeholders .

XP Process Phases: Application : Amazon ,Banking services. Coding : Pair programming 2 individual will be working on the same project . 1 individual will be developer and other will be tester and give the feedback . Refactoring : Reduce the lenghty code to condensed code. Unit Testing : Each module will be tested individually. Continuous Integration : Combined modules are integrated and tested . This is also known as system Testing . All the data are maintained in Requirement Analysis and Planning No documentation needed.

Scrum SCRUM is an agile development process focused primarily on ways to manage tasks in team-based development conditions . It also works based on Rad model as Iterarive and incremental model . Works in a short span of time. There are three roles in it, and their responsibilities are: Scrum Master:  The scrum can set up the master team, arrange the meeting and remove obstacles for the process Product owner:  The product owner makes the product backlog, prioritizes the delay and is responsible for the distribution of functionality on each repetition. Scrum Team:  The team manages its work and organizes the work to complete the sprint or cycle . Sprint planning: Planning fo r4 to 5 modules. Sprint backlog : Developer works in 2 to 4 weeks.

Features Scrum is light-weighted framework Scrum emphasizes self-organization Scrum is simple to understand Scrum framework help the team to work together Advantage Scrum framework is fast moving and money efficient. Scrum framework works by dividing the large product into small sub-products. In Scrum customer satisfaction is very important. Scrum is adaptive in nature because it have short sprint . Disadvantage  Scrum framework do not allow changes into their sprint. Scrum framework is not fully described model

Waterfall Model  simple, requirement at initial stage. Incremental Model  Iteration ,Processing RAD  to work in short time / team size is large. Sprial  Complex, uncertain , Large project . Prototyping  customer feedback Agile develop  advanced method / webpage creation.

Thank you !!!!
Tags