Unit - 1
Introduction
Q1) What is software engineering?
A1) Software engineering works with a variety of software production methods. It accompanies software product development using well-defined scientific principles, methods and processes. The result of software engineering is an efficient and reliable software product.
The term software engineering is coined with the addition ‘software + engineering’. Software is more than just program code. The program is a usable code, which serves a specific calculation purpose. Software is considered a collection of effective editing code, compatible libraries and texts. Software, when required for a specific purpose, is called product software.
According to IEEE: Software Engineering is the systematic approach to the development, operation, maintenance and retirement of the software.
According to Bohem: “Software Engineering is the application of science and mathematics by which capabilities of computer equipment are made useful to man through computer programs, procedures and related documentations.”
Software Engineering is based on the following disciplines:
● Computer Science
● Management Science
● Economics
● Communication Skills
● Engineering approach to problem solving
Software Engineering is a branch of engineering that uses well-defined scientific principles, techniques and procedures to develop software products. A successful and reliable software product is the result of software engineering.
Q2) Write the Software Characteristics?
A2) It refers to how well the program performs in comparison to its intended function. The following functions are required:
● Functionality: Refers to the degree of performance of the software against its intended purpose. A collection of characteristics that relate to a software's ability to sustain its level of performance under specified conditions for a specified period of time.
The following functions are required:
● Suitability
● Security
● Accuracy
● Interoperability
● Reliability: Refers to the ability of software to perform a required function under given conditions for a specified period.
Required functions are:
● Maturity
● Recoverability
● Usability: Refers the degree to which software is easy to use. It describes the ease with which the program can be used. The amount of time or effort it takes to learn how to use the app.
The following functions are required:
● Operability
● Understandability
● Learnability
● Efficiency: Refers to the ability of software to use system resources in the most effective and efficient manner.
The following functions are required:
● In Resource
● In Time
● Maintainability: Refers to the ease with which a software system can be modified to add capabilities, improve system performance, or correct errors.
The following functions are required:
● Testability
● Stability
● Changeability
● Portability: Refers to the ease with which software developers can transfer software from one platform to another, without (or with minimum) changes Robustness: it is the ability of a software to handle unexpected errors and faults with ease.
The following functions are required:
● Adaptability
● Installability
● Replaceability
Q3) Explain layered technology?
A3) Software engineering is a tiered technique in which we must progress from one layer to the next in order to produce software. All of the levels are interconnected, and each one necessitates the completion of the one before it.
Fig 1: Software engineering layers
The layered technology consists of:
1. Quality focus
The characteristics of good quality software are:
● The software's ability to accomplish the functions that are expected of it.
● Software maintenance ability
● Integrity refers to preventing unauthorised users from accessing information or data.
● The effort required to utilize or run the software is referred to as usability.
2. Process
● It is the software engineering's basic layer or foundation layer.
● The software process is essential for keeping all levels in sync.
● It establishes a framework that encompasses many activities and duties.
● In a nutshell, it encompasses all activities, actions, and tasks associated with software development.
3. Methods
● The method answers all 'how-to' questions that arise during the procedure.
● It explains how to put the software into action on a technical level.
● Communication, requirement analysis, analysis and design modelling, programme construction, testing, and support are only a few of the duties included.
4. Tools
● The software engineering tool is a tool that aids in the development of software.
● The tools are interconnected, which means that information generated by one tool can be used by another.
● Consider the following scenario: Microsoft Publisher may be used to create web pages.
Q4) What do you mean by software process framework?
A4) While I have defined five system activities and provided a fundamental description of each software team, before it could properly conduct any of these activities as part of the software process, it would need significantly more details.
You are then faced with a key question: what activities are suitable for a system operation, considering the nature of the problem to be solved, the features of the people doing the job, and the stakeholders funding the project?
Fig. 2: Process flow
The communication process could include nothing more than a phone call with the appropriate stakeholder for a small software project requested by one person (at a remote place) with clear, straightforward specifications.
Therefore, phone contact is the only action required, and the job tasks (the work set) that this action entails are:
● Make communication via telephone with the stakeholder.
● Evaluate and take notes on specifications.
● Organize notes in a short statement of specifications in writing.
● For evaluation and acceptance via Email to stakeholders.
If the project with several stakeholders, each with a different set of often contradictory criteria, was considerably more complex, the contact operation may have six separate actions: initiation, elicitation, elaboration, negotiation, pacification, and validation. There will be several working activities and a range of different work items for each of these software engineering acts.
Q5) Describe software process model?
A5) The method is defined as a set of tasks, activities and tasks performed when a work product is to be produced. The acts and tasks of each of these activities are based on a structure or model that determines their relationship with the process and with each other.
A process model (also termed as software life cycle model) is a pictorial and diagrammatic representation of the software life cycle. A life cycle model represents
All the methods required to make a software product transit through its life cycle stages. It also captures the structure in which these methods are to be undertaken.
The software process is depicted schematically, with a collection of software engineering activities populating each framework activity.
A task set that defines the work tasks to be completed is defined by each software engineering activity. The working products to be made, the points of quality assurance that will be needed, and the milestones to be used to demonstrate progress.
A software process is made up of a number of different actions.
There are five activities that make up a generic process framework:
1. Communication:
Communication between the customer and the developer is the first step in software development.
2. Planning:
It includes thorough estimation, project development scheduling, and tracking.
3. Modeling:
● Modeling entails a thorough examination of the project's requirements as well as project design elements such as algorithms and flowcharts.
● The flow chart depicts a comprehensive flow diagram of a programme, while the algorithm provides a step-by-step solution to the problem.
4. Construction:
● Code generation and testing are two parts of the construction process.
● The coding section uses an appropriate programming language to accomplish the design details.
● Testing is used to determine whether the coding flow is correct.
● Testing ensures that the programme produces the expected results.
5. Deployment:
● Delivering the product to the consumer and receiving feedback is what the deployment stage entails.
● If the customer requests some changes or extra capabilities, then a change is required to increase the software's quality.
Q6) Explain waterfall model?
A6) It is a simplest model, which states that the phases are organized in a linear order.
● The model was originally proposed by Royce.
● The various phases in this model are
● Feasibility Study – The main aim of the feasibility study activity is to determine whether it would be financially and technically feasible to develop the product. The feasibility study activity involves the analysis of the problem and collection of all relevant information relating to the product such as the different data items which would be input to the system, the processing required to be carried out on these data, the output data required to be produced by the system as well as various constraints on the behavior of the system.
● Requirement Analysis – The aim of the requirement analysis is to understand the exact requirements of the customer and to document them properly. The requirement analysis activity is begun by collecting all relevant data regarding the product to be developed from the users of the product and from the customer through interviews and discussions. During this activity, the user requirements are systematically organized into a software requirement specification (SRS) document. The important components of this document are the functional requirements, the nonfunctional requirements, and the goals of implementation. The SRS document is written in end-user terminology. This makes the SRS document understandable by the customer. After all, it is important that the SRS document be reviewed and approved by the customer.
● Design – This phase is concerned with
● Identifying software components like functions, data streams and data stores.
● Specifying software structure.
● Maintaining a record of design decisions and providing.
● There are two categories of Design:
● Architectural Design – It involves
● Identifying the software components.
● Decoupling and decomposing the software component into modules and conceptual data structures.
● Specifying the interconnection between the various blueprints for the implementation phase
● Detailed Design – It is concerned with details of the implementation procedures to process the algorithms, data structures and interaction between the modules and data structures. The various activities that this phase includes are
● Adaptation of existing code.
● Modification of existing algorithms.
● Design of data representation and
● Packaging of the software product.
This process is highly influenced by the programming language under which the implementation would be carried out. This stage is different from implementation.
● Implementation – It involves the translation of the design specifications into source code. It also involves activities like debugging, documentation and unit testing of the source code. In this stage various styles of programming can be followed like built-in and user defined data types, secure type checking, flexible scope rules, exception handling, concurrency control etc.
● Testing – It involves two kinds of activities
● Integration Testing – It involves testing of integrating various modules and testing their overall performance due to their integration.
● Acceptance Testing – It involves planning and execution of various types of tests in order to demonstrate that the implemented software system satisfies the requirements stated in the requirements document.
● Maintenance – In this phase the activities include
● Corrective Maintenance – Correcting errors that were not discovered during the product development phase.
● Perfective Maintenance – Improving the implementation of the system, and enhancing the functionalities of the system according to customer’s requirements.
● Adaptive Maintenance – Adaptation of software to new processing environments.
Fig 3: Classical waterfall model
Q7) Write the advantages and disadvantages of the waterfall model?
A7) Advantages of Waterfall model
● All phases are clearly defined.
● One of the most systematic methods for software development.
● Being older, this is one of the time tested models.
● It is simple and easy to use.
Disadvantages of Waterfall Model
● Real Projects rarely follow sequential models.
● It is often difficult for the customer to state all requirements explicitly.
● Poor model for complex and object oriented projects.
● Poor model for long and ongoing projects.
● High amount of risk and uncertainty.
● Poor model where requirements are at a moderate to high risk of changing.
● This model is suited to automate the existing manual system for which all requirements are known before the design starts. But for the new system, having such unchanging requirements is not possible.
Q8) Describe an incremental model?
A8) An Incremental model is a software development process where the requirements are divided into multiple independent software cycle modules. In this model, each module goes through the stages of need, construction, implementation and testing.
All subsequent release of the module can add function to the previous release. The process continues until a complete plan is found.
The various phases of incremental model are as follows:
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.
Fig 4: Incremental model
Q9) Define evolutionary process model?
A9) Evolutionary process model resembles the iterative enhancement model. The same phases are defined for the waterfall model that occurs here in a cyclical fashion. This model differs from the iterative enhancement model in the sense that this does not require a useful product at the end of each cycle. In evolutionary development, requirements are implemented by category rather than by priority.
SDLC Evolutionary model builds the required product in several successive versions and hence is also known as successive version model or incremental model
● In this model the requirement is broken down into different functional units
● These functional units are known as modules
● The functionality improvements are done in these modules until the desired system is realized.
● Each successive version is capable of performing more functions than the previous versions
Release of different evolutionary versions in SDLC
Fig 5: Evolutionary development of a software product
● Each of the version will be released with some new functionalities added to the older one
● Here B will have more functionality than A, but will exhibit less capability than C
● As the system is viewed to be developed in incremental way so it is also termed as incremental model of development
Fig 6: Evolutionary model of software development
Q10) What are the advantages and disadvantages of an evolutionary model?
A10) Advantages:
● In this model the user gets a chance to experiment with a partially developed system.
● It reduces the error because the core modules get tested thoroughly.
Disadvantages:
● Sometimes it becomes hard to divide the problem into several versions that would be acceptable to the customer which can be incrementally implemented and delivered.
Q11) Explain a specialized process model?
A11) Many of the characteristics of one or more of the classic models outlined in the preceding sections are shared by specialized process models. When a specialized or narrowly defined software engineering strategy is adopted, however, these models are frequently used.
Component-Based Development
COTS (commercial off-the-shelf) software components are developed by vendors and sold as products. They provide targeted functionality with well-defined interfaces that allow the component to be integrated into the software being developed. Many of the qualities of the spiral model are included into the component-based development paradigm. It is evolutionary in nature, necessitating an iterative approach to software development. The component-based development paradigm, on the other hand, builds applications out of pre-packaged software components. The identification of candidate components is the first step in the modeling and construction process.
These components might be implemented as traditional software modules, object-oriented classes, or class packages16. The component-based development paradigm contains the following steps (executed using an evolutionary method) regardless of the technology used to produce the components:
1. For the application domain in issue, available component-based products are studied and appraised.
2. Issues with component integration are taken into account.
3. The components are accommodated by a software architecture.
4. The architecture incorporates the components.
5. Thorough testing is carried out to assure optimal functionality.
Software reuse is a result of the component-based development approach, and reusability provides software engineers with a number of measurable benefits. If component reuse becomes ingrained in your software engineering team's culture, you can cut down on development cycle time and project costs.
The Formal Methods Model
The formal methods model entails a series of operations that lead to the formal mathematical specification of computer software. Formal methods use a formal, mathematical notation to design, build, and verify a computer-based system. Some software development companies are presently using a variation of this approach known as cleanroom software engineering.
When formal methods are employed during software development, they provide a mechanism for removing many of the issues that are difficult to solve using traditional software engineering paradigms. Ambiguity, incompleteness, and inconsistency can be detected and addressed more quickly using mathematical analysis rather than ad hoc assessment. When formal methods are utilized during the design process, they serve as a foundation for programme verification, allowing you to find and fix flaws that might otherwise go undiscovered.
The formal techniques model promises defect-free software, despite the fact that it is not widely used. However, others have expressed reservations regarding its relevance in a corporate setting:
● Formal model development takes a long time and costs a lot of money right now.
● Because few software engineers have the background required to employ formal methods, substantial training is required.
● It's tough to use the models as a communication tool for clients who aren't technically savvy.
Despite these reservations, the formal methods approach is gaining popularity among software developers who must create safety-critical software.
Aspect-Oriented Software Development
Builders of complex software usually implement a set of localized features, functions, and information content, regardless of the software technique used. These localized software characteristics are modeled as components (for example, object oriented classes) and then built into the system architecture. Certain concerns — customer - required qualities or technical areas of interest—spread over the entire architecture as modern computer-based systems become more sophisticated (and complex). Some of the issues are system attributes at a high level (e.g., security, fault tolerance). Other issues have an impact on certain functions (for example, the implementation of business rules), while others are systemic (e.g., task synchronization or memory management).
Crosscutting concerns are those that affect numerous system functions, features, and information. Aspectual needs are crosscutting problems that affect the software architecture as a whole. Aspect-oriented software development (AOSD), also known as aspect-oriented programming (AOP), is a relatively new software engineering paradigm that provides a process and methodological approach for defining, specifying, designing, and constructing aspects—"mechanisms beyond subroutines and inheritance for localizing the expression of a crosscutting concern"—as well as a process and methodological approach for defining, specifying, designing, and constructing aspects.
A distinct aspect-oriented process is still in its infancy. However, such a process is likely to take on traits from both evolutionary and concurrent process models. Because aspects are found and subsequently developed, the evolutionary approach is applicable. Because aspects are engineered independently of localized software components, concurrent development's parallel nature is critical because aspects have a direct impact on these components. As a result, it's critical that the AOSD defines "aspects" to describe customer concerns that span numerous system operations, features, and data.
Create asynchronous communication between software process activities that are used in the engineering and implementation of aspects and components.
Q12) Describe a unified process model?
A12) A common iterative and gradual software development process system is the unified software development process or unified process. The Logical Unified Method is the most accepted and thoroughly documented enhancement of the Unified Process (RUP).
The Unified Process is not just a system, but rather an expandable structure that can be adapted to particular organizations or projects. Similarly, a customizable system is the Logical Unified Method.
Fig 7: Unified process phases
Characteristics of Unified process:
- Iterative and Incremental
An iterative and gradual method of growth is the Unified Process. A number of timeboxed iterations are split into the Elaboration, Development and Transformation phases. (For a large project, the Inception stage can also be split into iterations.)
The consequence of each iteration is an increment, which is a device release that incorporates additional or enhanced features compared to the previous release.
While several iterations would involve work in most disciplines of the method (e.g. Specifications, design, implementation, testing), over the course of the project, the relative commitment and focus will shift.
2. Use case Driven
Use cases are used in the Centralized Phase to capture the functional specifications and to determine the content of the iterations. Each iteration takes a collection of use cases or scenarios all the way through implementation, test and deployment, from requirements.
3. Architecture Centric
The Cohesive Method maintains that design is at the core of the attempts of the project team to form the scheme. Because no single model is enough to cover all aspects of a structure, multiple architectural models and views are enabled by the Unified Method.
4. Risk Focused
Early in the project life cycle, the Cohesive Process allows the project team to concentrate on managing the most important risks.
In order to ensure that the greatest risks are tackled first, the deliverables of each iteration, particularly in the development phase, need to be chosen.
5. Project Lifestyle
The project is divided into four stages by the Unified Process:
● Inception Phase
Inception is the smallest stage in the project, and it should hopefully be very brief. It could be a sign of unnecessary up-front requirements if the Inception Period is long, which is contrary to the Cohesive Process spirit.
For the Inception process, the following are common objectives.
For the project, create a justification or business case
Prepare a project preliminary schedule and estimate of costs
Identify risks
● Elaboration Phase
The project team is expected to catch a healthy majority of the device specifications during the Elaboration Process. However, Elaboration's primary goals are to resolve identified risk factors and to develop and validate the architecture of the system. The generation of use case diagrams, conceptual diagrams (class diagrams with only basic notation) and package diagrams are common processes carried out in this phase (architectural diagrams)
● Construction Phase
The biggest step of the project is construction. The rest of the framework is based on the foundation laid down in Elaboration in this stage. In a sequence of brief, timeboxed iterations, device features are introduced. An executable release of the programme results in each iteration. During the construction process, it is customary to write full text use cases and each one becomes the start of a new iteration.
● Transition Phase
Transition is the ultimate project phase. The system is deployed to the target users in this process. In the course of many Transition step iterations, feedback obtained from an initial release (or initial releases) may result in further refinements to be implemented.
Fig 8: Project lifecycle
Q13) Write short notes on agile process models?
A13) The Agile model was created to assist a project in fast adapting to change requests. As a result, the Agile model's primary goal is to speed up project completion. Agility is essential to complete this challenge. Agility is achieved by tailoring the process to the project and eliminating processes that aren't required for the project. Anything that wastes time and effort is also avoided.
The Agile model actually refers to a collection of development methodologies. These processes have certain basic properties in common, but there are some subtle distinctions between them. The following are a few Agile SDLC models:
● Extreme Programming (XP)
● Adaptive Software Development (ASD)
● Dynamic Systems Development Method (DSDM)
● Scrum
● Crystal
● Feature Driven Development (FDD)
● Agile Modeling (AM)
Q14) What is extreme programming?
A14) Extreme Programming
On these tasks and coding, Intense Programming builds. With many tight feedback loops through efficient implementation, testing and continuous refactoring, it is the comprehensive (not the only) design operation.
Extreme Programming is based on the values below:
● Communication
● Simplicity
● Feedback
● Courage
● Respect
XP is a software development that is lightweight, effective, low-risk, scalable, predictable, science and fun.
In the face of unclear and evolving requirements, eXtreme Programming (XP) was conceived and developed to meet the unique needs of software development by small teams.
One of the methodologies of Agile software development is Extreme Programming. It offers beliefs and ideals to guide the actions of the team. It is predicted that the team will self-organize. Extreme programming offers particular core activities in which
● Each activity is easy and complete in itself.
● More complex and changing behavior is created by a combination of techniques.
Extreme Programming involves −
● Prior to programming, writing unit tests and keeping all of the tests running at all times. Unit testing is automated and faults are eliminated early, thus lowering costs.
● Just enough to code the features at hand and redesign when necessary, beginning with a basic design.
● Pair programming (called pair programming), with two programmers on a single computer, using the keyboard in turns. When one of them is on the keyboard, the other continuously reviews and gives suggestions.
● Several times a day, implementing and checking the entire system.
● Rapidly bringing a minimal working system into development and updating it whenever appropriate.
● Holding the client active and receiving constant input all the time.
As the programme progresses with the evolving demands, iterating enables the accommodating changes.
Fig 9: Extreme programming
Q15) Write about adaptive software development?
A15) Adaptive Software Development (ASD)
● Self-organization occurs when a group of autonomous agents works together to solve an issue that is beyond the capabilities of any single actor.
● Self-organizing teams, interpersonal collaboration, and individual and team learning are all highlighted.
● Phases
● Mission-driven
● Component-based
● Iterative
● Time-boxed
● Risk driven and change-tolerant
● Imagination (project initiated and adaptive cycle planning takes place).
● Collaboration (needs coordinated teamwork and shared application).
● Development is the recommended method for acquiring requirements; minispecs are generated).
● Educating yourself (components implemented and testes, focus groups provide feedback, formal technical reviews, postmortems).
Q16) Define scrum?
A16) Scrum is a lightweight agile method system mainly used for software development management. Hey, Scrum is
● Lightweight since it has few components that are recommended
● Three roles: Team, Scrum Master (often a Project Manager), Product Owner (often a Product Manager)
● Three meetings: Sprint Planning, Daily Scrum, Retrospective
● Three artifacts: Product Backlog, Sprint Backlog, Burndown chart
● Agile as it maximizes responsiveness to evolving needs of customers
● A system structure because it is not a method, but a set of methods and principles from which a process can be constructed.
Scrum is a process system that, since the early 1990s, has been used to handle work on complex goods. Scrum is not a procedure, methodology, or conclusive process. Instead, it is a structure within which different processes and techniques can be employed. Scrum makes clear the relative effectiveness of the product management and job strategies such that the product, the staff, and the working atmosphere can be continually enhanced.
Scrum Teams and their related tasks, events, objects, and rules consist of the Scrum system. Each component serves a particular role within the system and is important to the success and use of Scrum.
Scrum's rules tie the functions, activities, and objects together, governing the relationships and interaction between them.
Benefits of scrum:
From a software development process, various stakeholders want distinct things.
● Developers want code, not documents, to be written.
● Quality Assurance engineers want to build research plans that guarantee the quality of the product and provide a high-quality code to test.
● Project managers want a process that is simple to schedule, implement, and control.
● Product Managers want features that are easily implemented, with no bugs.
Q17) Why do we use agile?
A17) Use of Agile
Technology in this current era is progressing faster than ever, enforcing the global software companies to work in a fast-paced changing environment. Because these businesses are operating in an ever-changing environment, it is impossible to gather a complete and exhaustive set of software requirements. Without these requirements, it becomes practically hard for any conventional software model to work.
The conventional software models such as Waterfall Model that depend on completely specifying the requirements, designing, and testing the system are not geared towards rapid software development. As a consequence, a conventional software development model fails to deliver the required product.
This is where agile software development comes to the rescue. It was specially designed to curate the needs of the rapidly changing environment by embracing the idea of incremental development and developing the actual final product.
Q18) What are the differences between waterfall and spiral models ?
A18) Differences between waterfall and spiral models
Waterfall Models | Spiral Models |
The waterfall model operates in a sequential manner. | The spiral model, on the other hand, is based on the evolutionary process. |
After each stage is completed, the waterfall model identifies and corrects any errors or risks. | Errors or threats are detected and corrected earlier in the spiral model. |
Tiny projects should use the waterfall model. | For big projects, the spiral model is used. |
Customers like the waterfall model. | Developers are using the spiral model. |
The waterfall model is a relatively low-cost option. | The spiral model, on the other hand, is very costly. |
Q19) Write the difference between incremental model and waterfall model?
A19) Difference between Incremental model and Waterfall model
Sr. No. | Key | Incremental Model | WaterFall Model |
1 | Definition | Incremental Model is the development model in which the entire model is divided into various sub development phase where corresponding testing phase for each development phase is practices. In other words we can say that for every stage in the development cycle, there is an associated testing phase and corresponding testing phase of the development phase is planned in parallel. | On other hand Waterfall model there is first development of the application and after which the different testing of application take place. In other words we can say that in WaterFall the complete process is divided into several phases among which one phase should be completed in order to reach the next phase and testing is almost at end phase of the development. |
2 | Type/Nature | As mentioned above that in Incremental Model the execution of the phases i.e., development and testing happens in a sequential manner so type of Incremental Model is Sequential/Parallel in nature. | On other hand WaterFall Model is a relatively linear sequential design approach as each phase should be completed in order to reach the next phase. So type of this model is Continuous in nature. |
3 | Testing and Validation | In Incremental Model each development phase get tested at its own level and hence no pending testing occurs in this model also if any validation requires to be implemented then it could be implemented at that phase. | On other hand in case of WaterFall Model the testing occurs after development is completed and thus if any missing validation is identified to be implemented then first that phase of development needs to be recognized and then that validation get implemented. |
4 | Cost and Complexity | As sequential phases need to be functional hence the cost is higher as compared to that of WaterFall Model also the complexity is more than WaterFall. | On other hand in WaterFall Model due to linear development only one phase of development is operational and hence cost and complexity is low as compared to that of Incremental Model. |
5 | Defects | In Incremental Model the probability of total number of defects in the development of application is low as testing is done in parallel to the development. | On other hand in WaterFall Model the probability of total number of defects in the development of application is high as testing is done post development. |
Q20) Compare waterfall model and agile model?
A20) Comparison between Agile model and Waterfall model
Agile | Waterfall |
It separates the project development lifecycle into sprints. | Software development process is divided into distinct phases. |
It follows an incremental approach | Waterfall methodology is a sequential design process. |
Agile methodology is known for its flexibility. | Waterfall is a structured software development methodology so most times it can be quite rigid. |
Agile can be considered as a collection of many different projects. | Software development will be completed as one single project. |
Agile is quite a flexible method which allows changes to be made in the project development requirements even if the initial planning has been completed. | There is no scope of changing the requirements once the project development starts. |
Agile methodology, follow an iterative development approach because of this planning, development, prototyping and other software development phases may appear more than once. | All the project development phases like designing, development, testing, etc. are completed once in the Waterfall model. |
Test plan is reviewed after each sprint | The test plan is rarely discussed during the test phase. |
Agile development is a process in which the requirements are expected to change and evolve. | The method is ideal for projects which have definite requirements and changes not at all expected. |
In Agile methodology, testing is performed concurrently with software development. | In this methodology, the “Testing” phase comes after the “Build” phase |
Unit - 1
Introduction
Q1) What is software engineering?
A1) Software engineering works with a variety of software production methods. It accompanies software product development using well-defined scientific principles, methods and processes. The result of software engineering is an efficient and reliable software product.
The term software engineering is coined with the addition ‘software + engineering’. Software is more than just program code. The program is a usable code, which serves a specific calculation purpose. Software is considered a collection of effective editing code, compatible libraries and texts. Software, when required for a specific purpose, is called product software.
According to IEEE: Software Engineering is the systematic approach to the development, operation, maintenance and retirement of the software.
According to Bohem: “Software Engineering is the application of science and mathematics by which capabilities of computer equipment are made useful to man through computer programs, procedures and related documentations.”
Software Engineering is based on the following disciplines:
● Computer Science
● Management Science
● Economics
● Communication Skills
● Engineering approach to problem solving
Software Engineering is a branch of engineering that uses well-defined scientific principles, techniques and procedures to develop software products. A successful and reliable software product is the result of software engineering.
Q2) Write the Software Characteristics?
A2) It refers to how well the program performs in comparison to its intended function. The following functions are required:
● Functionality: Refers to the degree of performance of the software against its intended purpose. A collection of characteristics that relate to a software's ability to sustain its level of performance under specified conditions for a specified period of time.
The following functions are required:
● Suitability
● Security
● Accuracy
● Interoperability
● Reliability: Refers to the ability of software to perform a required function under given conditions for a specified period.
Required functions are:
● Maturity
● Recoverability
● Usability: Refers the degree to which software is easy to use. It describes the ease with which the program can be used. The amount of time or effort it takes to learn how to use the app.
The following functions are required:
● Operability
● Understandability
● Learnability
● Efficiency: Refers to the ability of software to use system resources in the most effective and efficient manner.
The following functions are required:
● In Resource
● In Time
● Maintainability: Refers to the ease with which a software system can be modified to add capabilities, improve system performance, or correct errors.
The following functions are required:
● Testability
● Stability
● Changeability
● Portability: Refers to the ease with which software developers can transfer software from one platform to another, without (or with minimum) changes Robustness: it is the ability of a software to handle unexpected errors and faults with ease.
The following functions are required:
● Adaptability
● Installability
● Replaceability
Q3) Explain layered technology?
A3) Software engineering is a tiered technique in which we must progress from one layer to the next in order to produce software. All of the levels are interconnected, and each one necessitates the completion of the one before it.
Fig 1: Software engineering layers
The layered technology consists of:
1. Quality focus
The characteristics of good quality software are:
● The software's ability to accomplish the functions that are expected of it.
● Software maintenance ability
● Integrity refers to preventing unauthorised users from accessing information or data.
● The effort required to utilize or run the software is referred to as usability.
2. Process
● It is the software engineering's basic layer or foundation layer.
● The software process is essential for keeping all levels in sync.
● It establishes a framework that encompasses many activities and duties.
● In a nutshell, it encompasses all activities, actions, and tasks associated with software development.
3. Methods
● The method answers all 'how-to' questions that arise during the procedure.
● It explains how to put the software into action on a technical level.
● Communication, requirement analysis, analysis and design modelling, programme construction, testing, and support are only a few of the duties included.
4. Tools
● The software engineering tool is a tool that aids in the development of software.
● The tools are interconnected, which means that information generated by one tool can be used by another.
● Consider the following scenario: Microsoft Publisher may be used to create web pages.
Q4) What do you mean by software process framework?
A4) While I have defined five system activities and provided a fundamental description of each software team, before it could properly conduct any of these activities as part of the software process, it would need significantly more details.
You are then faced with a key question: what activities are suitable for a system operation, considering the nature of the problem to be solved, the features of the people doing the job, and the stakeholders funding the project?
Fig. 2: Process flow
The communication process could include nothing more than a phone call with the appropriate stakeholder for a small software project requested by one person (at a remote place) with clear, straightforward specifications.
Therefore, phone contact is the only action required, and the job tasks (the work set) that this action entails are:
● Make communication via telephone with the stakeholder.
● Evaluate and take notes on specifications.
● Organize notes in a short statement of specifications in writing.
● For evaluation and acceptance via Email to stakeholders.
If the project with several stakeholders, each with a different set of often contradictory criteria, was considerably more complex, the contact operation may have six separate actions: initiation, elicitation, elaboration, negotiation, pacification, and validation. There will be several working activities and a range of different work items for each of these software engineering acts.
Q5) Describe software process model?
A5) The method is defined as a set of tasks, activities and tasks performed when a work product is to be produced. The acts and tasks of each of these activities are based on a structure or model that determines their relationship with the process and with each other.
A process model (also termed as software life cycle model) is a pictorial and diagrammatic representation of the software life cycle. A life cycle model represents
All the methods required to make a software product transit through its life cycle stages. It also captures the structure in which these methods are to be undertaken.
The software process is depicted schematically, with a collection of software engineering activities populating each framework activity.
A task set that defines the work tasks to be completed is defined by each software engineering activity. The working products to be made, the points of quality assurance that will be needed, and the milestones to be used to demonstrate progress.
A software process is made up of a number of different actions.
There are five activities that make up a generic process framework:
1. Communication:
Communication between the customer and the developer is the first step in software development.
2. Planning:
It includes thorough estimation, project development scheduling, and tracking.
3. Modeling:
● Modeling entails a thorough examination of the project's requirements as well as project design elements such as algorithms and flowcharts.
● The flow chart depicts a comprehensive flow diagram of a programme, while the algorithm provides a step-by-step solution to the problem.
4. Construction:
● Code generation and testing are two parts of the construction process.
● The coding section uses an appropriate programming language to accomplish the design details.
● Testing is used to determine whether the coding flow is correct.
● Testing ensures that the programme produces the expected results.
5. Deployment:
● Delivering the product to the consumer and receiving feedback is what the deployment stage entails.
● If the customer requests some changes or extra capabilities, then a change is required to increase the software's quality.
Q6) Explain waterfall model?
A6) It is a simplest model, which states that the phases are organized in a linear order.
● The model was originally proposed by Royce.
● The various phases in this model are
● Feasibility Study – The main aim of the feasibility study activity is to determine whether it would be financially and technically feasible to develop the product. The feasibility study activity involves the analysis of the problem and collection of all relevant information relating to the product such as the different data items which would be input to the system, the processing required to be carried out on these data, the output data required to be produced by the system as well as various constraints on the behavior of the system.
● Requirement Analysis – The aim of the requirement analysis is to understand the exact requirements of the customer and to document them properly. The requirement analysis activity is begun by collecting all relevant data regarding the product to be developed from the users of the product and from the customer through interviews and discussions. During this activity, the user requirements are systematically organized into a software requirement specification (SRS) document. The important components of this document are the functional requirements, the nonfunctional requirements, and the goals of implementation. The SRS document is written in end-user terminology. This makes the SRS document understandable by the customer. After all, it is important that the SRS document be reviewed and approved by the customer.
● Design – This phase is concerned with
● Identifying software components like functions, data streams and data stores.
● Specifying software structure.
● Maintaining a record of design decisions and providing.
● There are two categories of Design:
● Architectural Design – It involves
● Identifying the software components.
● Decoupling and decomposing the software component into modules and conceptual data structures.
● Specifying the interconnection between the various blueprints for the implementation phase
● Detailed Design – It is concerned with details of the implementation procedures to process the algorithms, data structures and interaction between the modules and data structures. The various activities that this phase includes are
● Adaptation of existing code.
● Modification of existing algorithms.
● Design of data representation and
● Packaging of the software product.
This process is highly influenced by the programming language under which the implementation would be carried out. This stage is different from implementation.
● Implementation – It involves the translation of the design specifications into source code. It also involves activities like debugging, documentation and unit testing of the source code. In this stage various styles of programming can be followed like built-in and user defined data types, secure type checking, flexible scope rules, exception handling, concurrency control etc.
● Testing – It involves two kinds of activities
● Integration Testing – It involves testing of integrating various modules and testing their overall performance due to their integration.
● Acceptance Testing – It involves planning and execution of various types of tests in order to demonstrate that the implemented software system satisfies the requirements stated in the requirements document.
● Maintenance – In this phase the activities include
● Corrective Maintenance – Correcting errors that were not discovered during the product development phase.
● Perfective Maintenance – Improving the implementation of the system, and enhancing the functionalities of the system according to customer’s requirements.
● Adaptive Maintenance – Adaptation of software to new processing environments.
Fig 3: Classical waterfall model
Q7) Write the advantages and disadvantages of the waterfall model?
A7) Advantages of Waterfall model
● All phases are clearly defined.
● One of the most systematic methods for software development.
● Being older, this is one of the time tested models.
● It is simple and easy to use.
Disadvantages of Waterfall Model
● Real Projects rarely follow sequential models.
● It is often difficult for the customer to state all requirements explicitly.
● Poor model for complex and object oriented projects.
● Poor model for long and ongoing projects.
● High amount of risk and uncertainty.
● Poor model where requirements are at a moderate to high risk of changing.
● This model is suited to automate the existing manual system for which all requirements are known before the design starts. But for the new system, having such unchanging requirements is not possible.
Q8) Describe an incremental model?
A8) An Incremental model is a software development process where the requirements are divided into multiple independent software cycle modules. In this model, each module goes through the stages of need, construction, implementation and testing.
All subsequent release of the module can add function to the previous release. The process continues until a complete plan is found.
The various phases of incremental model are as follows:
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.
Fig 4: Incremental model
Q9) Define evolutionary process model?
A9) Evolutionary process model resembles the iterative enhancement model. The same phases are defined for the waterfall model that occurs here in a cyclical fashion. This model differs from the iterative enhancement model in the sense that this does not require a useful product at the end of each cycle. In evolutionary development, requirements are implemented by category rather than by priority.
SDLC Evolutionary model builds the required product in several successive versions and hence is also known as successive version model or incremental model
● In this model the requirement is broken down into different functional units
● These functional units are known as modules
● The functionality improvements are done in these modules until the desired system is realized.
● Each successive version is capable of performing more functions than the previous versions
Release of different evolutionary versions in SDLC
Fig 5: Evolutionary development of a software product
● Each of the version will be released with some new functionalities added to the older one
● Here B will have more functionality than A, but will exhibit less capability than C
● As the system is viewed to be developed in incremental way so it is also termed as incremental model of development
Fig 6: Evolutionary model of software development
Q10) What are the advantages and disadvantages of an evolutionary model?
A10) Advantages:
● In this model the user gets a chance to experiment with a partially developed system.
● It reduces the error because the core modules get tested thoroughly.
Disadvantages:
● Sometimes it becomes hard to divide the problem into several versions that would be acceptable to the customer which can be incrementally implemented and delivered.
Q11) Explain a specialized process model?
A11) Many of the characteristics of one or more of the classic models outlined in the preceding sections are shared by specialized process models. When a specialized or narrowly defined software engineering strategy is adopted, however, these models are frequently used.
Component-Based Development
COTS (commercial off-the-shelf) software components are developed by vendors and sold as products. They provide targeted functionality with well-defined interfaces that allow the component to be integrated into the software being developed. Many of the qualities of the spiral model are included into the component-based development paradigm. It is evolutionary in nature, necessitating an iterative approach to software development. The component-based development paradigm, on the other hand, builds applications out of pre-packaged software components. The identification of candidate components is the first step in the modeling and construction process.
These components might be implemented as traditional software modules, object-oriented classes, or class packages16. The component-based development paradigm contains the following steps (executed using an evolutionary method) regardless of the technology used to produce the components:
1. For the application domain in issue, available component-based products are studied and appraised.
2. Issues with component integration are taken into account.
3. The components are accommodated by a software architecture.
4. The architecture incorporates the components.
5. Thorough testing is carried out to assure optimal functionality.
Software reuse is a result of the component-based development approach, and reusability provides software engineers with a number of measurable benefits. If component reuse becomes ingrained in your software engineering team's culture, you can cut down on development cycle time and project costs.
The Formal Methods Model
The formal methods model entails a series of operations that lead to the formal mathematical specification of computer software. Formal methods use a formal, mathematical notation to design, build, and verify a computer-based system. Some software development companies are presently using a variation of this approach known as cleanroom software engineering.
When formal methods are employed during software development, they provide a mechanism for removing many of the issues that are difficult to solve using traditional software engineering paradigms. Ambiguity, incompleteness, and inconsistency can be detected and addressed more quickly using mathematical analysis rather than ad hoc assessment. When formal methods are utilized during the design process, they serve as a foundation for programme verification, allowing you to find and fix flaws that might otherwise go undiscovered.
The formal techniques model promises defect-free software, despite the fact that it is not widely used. However, others have expressed reservations regarding its relevance in a corporate setting:
● Formal model development takes a long time and costs a lot of money right now.
● Because few software engineers have the background required to employ formal methods, substantial training is required.
● It's tough to use the models as a communication tool for clients who aren't technically savvy.
Despite these reservations, the formal methods approach is gaining popularity among software developers who must create safety-critical software.
Aspect-Oriented Software Development
Builders of complex software usually implement a set of localized features, functions, and information content, regardless of the software technique used. These localized software characteristics are modeled as components (for example, object oriented classes) and then built into the system architecture. Certain concerns — customer - required qualities or technical areas of interest—spread over the entire architecture as modern computer-based systems become more sophisticated (and complex). Some of the issues are system attributes at a high level (e.g., security, fault tolerance). Other issues have an impact on certain functions (for example, the implementation of business rules), while others are systemic (e.g., task synchronization or memory management).
Crosscutting concerns are those that affect numerous system functions, features, and information. Aspectual needs are crosscutting problems that affect the software architecture as a whole. Aspect-oriented software development (AOSD), also known as aspect-oriented programming (AOP), is a relatively new software engineering paradigm that provides a process and methodological approach for defining, specifying, designing, and constructing aspects—"mechanisms beyond subroutines and inheritance for localizing the expression of a crosscutting concern"—as well as a process and methodological approach for defining, specifying, designing, and constructing aspects.
A distinct aspect-oriented process is still in its infancy. However, such a process is likely to take on traits from both evolutionary and concurrent process models. Because aspects are found and subsequently developed, the evolutionary approach is applicable. Because aspects are engineered independently of localized software components, concurrent development's parallel nature is critical because aspects have a direct impact on these components. As a result, it's critical that the AOSD defines "aspects" to describe customer concerns that span numerous system operations, features, and data.
Create asynchronous communication between software process activities that are used in the engineering and implementation of aspects and components.
Q12) Describe a unified process model?
A12) A common iterative and gradual software development process system is the unified software development process or unified process. The Logical Unified Method is the most accepted and thoroughly documented enhancement of the Unified Process (RUP).
The Unified Process is not just a system, but rather an expandable structure that can be adapted to particular organizations or projects. Similarly, a customizable system is the Logical Unified Method.
Fig 7: Unified process phases
Characteristics of Unified process:
- Iterative and Incremental
An iterative and gradual method of growth is the Unified Process. A number of timeboxed iterations are split into the Elaboration, Development and Transformation phases. (For a large project, the Inception stage can also be split into iterations.)
The consequence of each iteration is an increment, which is a device release that incorporates additional or enhanced features compared to the previous release.
While several iterations would involve work in most disciplines of the method (e.g. Specifications, design, implementation, testing), over the course of the project, the relative commitment and focus will shift.
2. Use case Driven
Use cases are used in the Centralized Phase to capture the functional specifications and to determine the content of the iterations. Each iteration takes a collection of use cases or scenarios all the way through implementation, test and deployment, from requirements.
3. Architecture Centric
The Cohesive Method maintains that design is at the core of the attempts of the project team to form the scheme. Because no single model is enough to cover all aspects of a structure, multiple architectural models and views are enabled by the Unified Method.
4. Risk Focused
Early in the project life cycle, the Cohesive Process allows the project team to concentrate on managing the most important risks.
In order to ensure that the greatest risks are tackled first, the deliverables of each iteration, particularly in the development phase, need to be chosen.
5. Project Lifestyle
The project is divided into four stages by the Unified Process:
● Inception Phase
Inception is the smallest stage in the project, and it should hopefully be very brief. It could be a sign of unnecessary up-front requirements if the Inception Period is long, which is contrary to the Cohesive Process spirit.
For the Inception process, the following are common objectives.
For the project, create a justification or business case
Prepare a project preliminary schedule and estimate of costs
Identify risks
● Elaboration Phase
The project team is expected to catch a healthy majority of the device specifications during the Elaboration Process. However, Elaboration's primary goals are to resolve identified risk factors and to develop and validate the architecture of the system. The generation of use case diagrams, conceptual diagrams (class diagrams with only basic notation) and package diagrams are common processes carried out in this phase (architectural diagrams)
● Construction Phase
The biggest step of the project is construction. The rest of the framework is based on the foundation laid down in Elaboration in this stage. In a sequence of brief, timeboxed iterations, device features are introduced. An executable release of the programme results in each iteration. During the construction process, it is customary to write full text use cases and each one becomes the start of a new iteration.
● Transition Phase
Transition is the ultimate project phase. The system is deployed to the target users in this process. In the course of many Transition step iterations, feedback obtained from an initial release (or initial releases) may result in further refinements to be implemented.
Fig 8: Project lifecycle
Q13) Write short notes on agile process models?
A13) The Agile model was created to assist a project in fast adapting to change requests. As a result, the Agile model's primary goal is to speed up project completion. Agility is essential to complete this challenge. Agility is achieved by tailoring the process to the project and eliminating processes that aren't required for the project. Anything that wastes time and effort is also avoided.
The Agile model actually refers to a collection of development methodologies. These processes have certain basic properties in common, but there are some subtle distinctions between them. The following are a few Agile SDLC models:
● Extreme Programming (XP)
● Adaptive Software Development (ASD)
● Dynamic Systems Development Method (DSDM)
● Scrum
● Crystal
● Feature Driven Development (FDD)
● Agile Modeling (AM)
Q14) What is extreme programming?
A14) Extreme Programming
On these tasks and coding, Intense Programming builds. With many tight feedback loops through efficient implementation, testing and continuous refactoring, it is the comprehensive (not the only) design operation.
Extreme Programming is based on the values below:
● Communication
● Simplicity
● Feedback
● Courage
● Respect
XP is a software development that is lightweight, effective, low-risk, scalable, predictable, science and fun.
In the face of unclear and evolving requirements, eXtreme Programming (XP) was conceived and developed to meet the unique needs of software development by small teams.
One of the methodologies of Agile software development is Extreme Programming. It offers beliefs and ideals to guide the actions of the team. It is predicted that the team will self-organize. Extreme programming offers particular core activities in which
● Each activity is easy and complete in itself.
● More complex and changing behavior is created by a combination of techniques.
Extreme Programming involves −
● Prior to programming, writing unit tests and keeping all of the tests running at all times. Unit testing is automated and faults are eliminated early, thus lowering costs.
● Just enough to code the features at hand and redesign when necessary, beginning with a basic design.
● Pair programming (called pair programming), with two programmers on a single computer, using the keyboard in turns. When one of them is on the keyboard, the other continuously reviews and gives suggestions.
● Several times a day, implementing and checking the entire system.
● Rapidly bringing a minimal working system into development and updating it whenever appropriate.
● Holding the client active and receiving constant input all the time.
As the programme progresses with the evolving demands, iterating enables the accommodating changes.
Fig 9: Extreme programming
Q15) Write about adaptive software development?
A15) Adaptive Software Development (ASD)
● Self-organization occurs when a group of autonomous agents works together to solve an issue that is beyond the capabilities of any single actor.
● Self-organizing teams, interpersonal collaboration, and individual and team learning are all highlighted.
● Phases
● Mission-driven
● Component-based
● Iterative
● Time-boxed
● Risk driven and change-tolerant
● Imagination (project initiated and adaptive cycle planning takes place).
● Collaboration (needs coordinated teamwork and shared application).
● Development is the recommended method for acquiring requirements; minispecs are generated).
● Educating yourself (components implemented and testes, focus groups provide feedback, formal technical reviews, postmortems).
Q16) Define scrum?
A16) Scrum is a lightweight agile method system mainly used for software development management. Hey, Scrum is
● Lightweight since it has few components that are recommended
● Three roles: Team, Scrum Master (often a Project Manager), Product Owner (often a Product Manager)
● Three meetings: Sprint Planning, Daily Scrum, Retrospective
● Three artifacts: Product Backlog, Sprint Backlog, Burndown chart
● Agile as it maximizes responsiveness to evolving needs of customers
● A system structure because it is not a method, but a set of methods and principles from which a process can be constructed.
Scrum is a process system that, since the early 1990s, has been used to handle work on complex goods. Scrum is not a procedure, methodology, or conclusive process. Instead, it is a structure within which different processes and techniques can be employed. Scrum makes clear the relative effectiveness of the product management and job strategies such that the product, the staff, and the working atmosphere can be continually enhanced.
Scrum Teams and their related tasks, events, objects, and rules consist of the Scrum system. Each component serves a particular role within the system and is important to the success and use of Scrum.
Scrum's rules tie the functions, activities, and objects together, governing the relationships and interaction between them.
Benefits of scrum:
From a software development process, various stakeholders want distinct things.
● Developers want code, not documents, to be written.
● Quality Assurance engineers want to build research plans that guarantee the quality of the product and provide a high-quality code to test.
● Project managers want a process that is simple to schedule, implement, and control.
● Product Managers want features that are easily implemented, with no bugs.
Q17) Why do we use agile?
A17) Use of Agile
Technology in this current era is progressing faster than ever, enforcing the global software companies to work in a fast-paced changing environment. Because these businesses are operating in an ever-changing environment, it is impossible to gather a complete and exhaustive set of software requirements. Without these requirements, it becomes practically hard for any conventional software model to work.
The conventional software models such as Waterfall Model that depend on completely specifying the requirements, designing, and testing the system are not geared towards rapid software development. As a consequence, a conventional software development model fails to deliver the required product.
This is where agile software development comes to the rescue. It was specially designed to curate the needs of the rapidly changing environment by embracing the idea of incremental development and developing the actual final product.
Q18) What are the differences between waterfall and spiral models ?
A18) Differences between waterfall and spiral models
Waterfall Models | Spiral Models |
The waterfall model operates in a sequential manner. | The spiral model, on the other hand, is based on the evolutionary process. |
After each stage is completed, the waterfall model identifies and corrects any errors or risks. | Errors or threats are detected and corrected earlier in the spiral model. |
Tiny projects should use the waterfall model. | For big projects, the spiral model is used. |
Customers like the waterfall model. | Developers are using the spiral model. |
The waterfall model is a relatively low-cost option. | The spiral model, on the other hand, is very costly. |
Q19) Write the difference between incremental model and waterfall model?
A19) Difference between Incremental model and Waterfall model
Sr. No. | Key | Incremental Model | WaterFall Model |
1 | Definition | Incremental Model is the development model in which the entire model is divided into various sub development phase where corresponding testing phase for each development phase is practices. In other words we can say that for every stage in the development cycle, there is an associated testing phase and corresponding testing phase of the development phase is planned in parallel. | On other hand Waterfall model there is first development of the application and after which the different testing of application take place. In other words we can say that in WaterFall the complete process is divided into several phases among which one phase should be completed in order to reach the next phase and testing is almost at end phase of the development. |
2 | Type/Nature | As mentioned above that in Incremental Model the execution of the phases i.e., development and testing happens in a sequential manner so type of Incremental Model is Sequential/Parallel in nature. | On other hand WaterFall Model is a relatively linear sequential design approach as each phase should be completed in order to reach the next phase. So type of this model is Continuous in nature. |
3 | Testing and Validation | In Incremental Model each development phase get tested at its own level and hence no pending testing occurs in this model also if any validation requires to be implemented then it could be implemented at that phase. | On other hand in case of WaterFall Model the testing occurs after development is completed and thus if any missing validation is identified to be implemented then first that phase of development needs to be recognized and then that validation get implemented. |
4 | Cost and Complexity | As sequential phases need to be functional hence the cost is higher as compared to that of WaterFall Model also the complexity is more than WaterFall. | On other hand in WaterFall Model due to linear development only one phase of development is operational and hence cost and complexity is low as compared to that of Incremental Model. |
5 | Defects | In Incremental Model the probability of total number of defects in the development of application is low as testing is done in parallel to the development. | On other hand in WaterFall Model the probability of total number of defects in the development of application is high as testing is done post development. |
Q20) Compare waterfall model and agile model?
A20) Comparison between Agile model and Waterfall model
Agile | Waterfall |
It separates the project development lifecycle into sprints. | Software development process is divided into distinct phases. |
It follows an incremental approach | Waterfall methodology is a sequential design process. |
Agile methodology is known for its flexibility. | Waterfall is a structured software development methodology so most times it can be quite rigid. |
Agile can be considered as a collection of many different projects. | Software development will be completed as one single project. |
Agile is quite a flexible method which allows changes to be made in the project development requirements even if the initial planning has been completed. | There is no scope of changing the requirements once the project development starts. |
Agile methodology, follow an iterative development approach because of this planning, development, prototyping and other software development phases may appear more than once. | All the project development phases like designing, development, testing, etc. are completed once in the Waterfall model. |
Test plan is reviewed after each sprint | The test plan is rarely discussed during the test phase. |
Agile development is a process in which the requirements are expected to change and evolve. | The method is ideal for projects which have definite requirements and changes not at all expected. |
In Agile methodology, testing is performed concurrently with software development. | In this methodology, the “Testing” phase comes after the “Build” phase |
Unit - 1
Introduction
Q1) What is software engineering?
A1) Software engineering works with a variety of software production methods. It accompanies software product development using well-defined scientific principles, methods and processes. The result of software engineering is an efficient and reliable software product.
The term software engineering is coined with the addition ‘software + engineering’. Software is more than just program code. The program is a usable code, which serves a specific calculation purpose. Software is considered a collection of effective editing code, compatible libraries and texts. Software, when required for a specific purpose, is called product software.
According to IEEE: Software Engineering is the systematic approach to the development, operation, maintenance and retirement of the software.
According to Bohem: “Software Engineering is the application of science and mathematics by which capabilities of computer equipment are made useful to man through computer programs, procedures and related documentations.”
Software Engineering is based on the following disciplines:
● Computer Science
● Management Science
● Economics
● Communication Skills
● Engineering approach to problem solving
Software Engineering is a branch of engineering that uses well-defined scientific principles, techniques and procedures to develop software products. A successful and reliable software product is the result of software engineering.
Q2) Write the Software Characteristics?
A2) It refers to how well the program performs in comparison to its intended function. The following functions are required:
● Functionality: Refers to the degree of performance of the software against its intended purpose. A collection of characteristics that relate to a software's ability to sustain its level of performance under specified conditions for a specified period of time.
The following functions are required:
● Suitability
● Security
● Accuracy
● Interoperability
● Reliability: Refers to the ability of software to perform a required function under given conditions for a specified period.
Required functions are:
● Maturity
● Recoverability
● Usability: Refers the degree to which software is easy to use. It describes the ease with which the program can be used. The amount of time or effort it takes to learn how to use the app.
The following functions are required:
● Operability
● Understandability
● Learnability
● Efficiency: Refers to the ability of software to use system resources in the most effective and efficient manner.
The following functions are required:
● In Resource
● In Time
● Maintainability: Refers to the ease with which a software system can be modified to add capabilities, improve system performance, or correct errors.
The following functions are required:
● Testability
● Stability
● Changeability
● Portability: Refers to the ease with which software developers can transfer software from one platform to another, without (or with minimum) changes Robustness: it is the ability of a software to handle unexpected errors and faults with ease.
The following functions are required:
● Adaptability
● Installability
● Replaceability
Q3) Explain layered technology?
A3) Software engineering is a tiered technique in which we must progress from one layer to the next in order to produce software. All of the levels are interconnected, and each one necessitates the completion of the one before it.
Fig 1: Software engineering layers
The layered technology consists of:
1. Quality focus
The characteristics of good quality software are:
● The software's ability to accomplish the functions that are expected of it.
● Software maintenance ability
● Integrity refers to preventing unauthorised users from accessing information or data.
● The effort required to utilize or run the software is referred to as usability.
2. Process
● It is the software engineering's basic layer or foundation layer.
● The software process is essential for keeping all levels in sync.
● It establishes a framework that encompasses many activities and duties.
● In a nutshell, it encompasses all activities, actions, and tasks associated with software development.
3. Methods
● The method answers all 'how-to' questions that arise during the procedure.
● It explains how to put the software into action on a technical level.
● Communication, requirement analysis, analysis and design modelling, programme construction, testing, and support are only a few of the duties included.
4. Tools
● The software engineering tool is a tool that aids in the development of software.
● The tools are interconnected, which means that information generated by one tool can be used by another.
● Consider the following scenario: Microsoft Publisher may be used to create web pages.
Q4) What do you mean by software process framework?
A4) While I have defined five system activities and provided a fundamental description of each software team, before it could properly conduct any of these activities as part of the software process, it would need significantly more details.
You are then faced with a key question: what activities are suitable for a system operation, considering the nature of the problem to be solved, the features of the people doing the job, and the stakeholders funding the project?
Fig. 2: Process flow
The communication process could include nothing more than a phone call with the appropriate stakeholder for a small software project requested by one person (at a remote place) with clear, straightforward specifications.
Therefore, phone contact is the only action required, and the job tasks (the work set) that this action entails are:
● Make communication via telephone with the stakeholder.
● Evaluate and take notes on specifications.
● Organize notes in a short statement of specifications in writing.
● For evaluation and acceptance via Email to stakeholders.
If the project with several stakeholders, each with a different set of often contradictory criteria, was considerably more complex, the contact operation may have six separate actions: initiation, elicitation, elaboration, negotiation, pacification, and validation. There will be several working activities and a range of different work items for each of these software engineering acts.
Q5) Describe software process model?
A5) The method is defined as a set of tasks, activities and tasks performed when a work product is to be produced. The acts and tasks of each of these activities are based on a structure or model that determines their relationship with the process and with each other.
A process model (also termed as software life cycle model) is a pictorial and diagrammatic representation of the software life cycle. A life cycle model represents
All the methods required to make a software product transit through its life cycle stages. It also captures the structure in which these methods are to be undertaken.
The software process is depicted schematically, with a collection of software engineering activities populating each framework activity.
A task set that defines the work tasks to be completed is defined by each software engineering activity. The working products to be made, the points of quality assurance that will be needed, and the milestones to be used to demonstrate progress.
A software process is made up of a number of different actions.
There are five activities that make up a generic process framework:
1. Communication:
Communication between the customer and the developer is the first step in software development.
2. Planning:
It includes thorough estimation, project development scheduling, and tracking.
3. Modeling:
● Modeling entails a thorough examination of the project's requirements as well as project design elements such as algorithms and flowcharts.
● The flow chart depicts a comprehensive flow diagram of a programme, while the algorithm provides a step-by-step solution to the problem.
4. Construction:
● Code generation and testing are two parts of the construction process.
● The coding section uses an appropriate programming language to accomplish the design details.
● Testing is used to determine whether the coding flow is correct.
● Testing ensures that the programme produces the expected results.
5. Deployment:
● Delivering the product to the consumer and receiving feedback is what the deployment stage entails.
● If the customer requests some changes or extra capabilities, then a change is required to increase the software's quality.
Q6) Explain waterfall model?
A6) It is a simplest model, which states that the phases are organized in a linear order.
● The model was originally proposed by Royce.
● The various phases in this model are
● Feasibility Study – The main aim of the feasibility study activity is to determine whether it would be financially and technically feasible to develop the product. The feasibility study activity involves the analysis of the problem and collection of all relevant information relating to the product such as the different data items which would be input to the system, the processing required to be carried out on these data, the output data required to be produced by the system as well as various constraints on the behavior of the system.
● Requirement Analysis – The aim of the requirement analysis is to understand the exact requirements of the customer and to document them properly. The requirement analysis activity is begun by collecting all relevant data regarding the product to be developed from the users of the product and from the customer through interviews and discussions. During this activity, the user requirements are systematically organized into a software requirement specification (SRS) document. The important components of this document are the functional requirements, the nonfunctional requirements, and the goals of implementation. The SRS document is written in end-user terminology. This makes the SRS document understandable by the customer. After all, it is important that the SRS document be reviewed and approved by the customer.
● Design – This phase is concerned with
● Identifying software components like functions, data streams and data stores.
● Specifying software structure.
● Maintaining a record of design decisions and providing.
● There are two categories of Design:
● Architectural Design – It involves
● Identifying the software components.
● Decoupling and decomposing the software component into modules and conceptual data structures.
● Specifying the interconnection between the various blueprints for the implementation phase
● Detailed Design – It is concerned with details of the implementation procedures to process the algorithms, data structures and interaction between the modules and data structures. The various activities that this phase includes are
● Adaptation of existing code.
● Modification of existing algorithms.
● Design of data representation and
● Packaging of the software product.
This process is highly influenced by the programming language under which the implementation would be carried out. This stage is different from implementation.
● Implementation – It involves the translation of the design specifications into source code. It also involves activities like debugging, documentation and unit testing of the source code. In this stage various styles of programming can be followed like built-in and user defined data types, secure type checking, flexible scope rules, exception handling, concurrency control etc.
● Testing – It involves two kinds of activities
● Integration Testing – It involves testing of integrating various modules and testing their overall performance due to their integration.
● Acceptance Testing – It involves planning and execution of various types of tests in order to demonstrate that the implemented software system satisfies the requirements stated in the requirements document.
● Maintenance – In this phase the activities include
● Corrective Maintenance – Correcting errors that were not discovered during the product development phase.
● Perfective Maintenance – Improving the implementation of the system, and enhancing the functionalities of the system according to customer’s requirements.
● Adaptive Maintenance – Adaptation of software to new processing environments.
Fig 3: Classical waterfall model
Q7) Write the advantages and disadvantages of the waterfall model?
A7) Advantages of Waterfall model
● All phases are clearly defined.
● One of the most systematic methods for software development.
● Being older, this is one of the time tested models.
● It is simple and easy to use.
Disadvantages of Waterfall Model
● Real Projects rarely follow sequential models.
● It is often difficult for the customer to state all requirements explicitly.
● Poor model for complex and object oriented projects.
● Poor model for long and ongoing projects.
● High amount of risk and uncertainty.
● Poor model where requirements are at a moderate to high risk of changing.
● This model is suited to automate the existing manual system for which all requirements are known before the design starts. But for the new system, having such unchanging requirements is not possible.
Q8) Describe an incremental model?
A8) An Incremental model is a software development process where the requirements are divided into multiple independent software cycle modules. In this model, each module goes through the stages of need, construction, implementation and testing.
All subsequent release of the module can add function to the previous release. The process continues until a complete plan is found.
The various phases of incremental model are as follows:
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.
Fig 4: Incremental model
Q9) Define evolutionary process model?
A9) Evolutionary process model resembles the iterative enhancement model. The same phases are defined for the waterfall model that occurs here in a cyclical fashion. This model differs from the iterative enhancement model in the sense that this does not require a useful product at the end of each cycle. In evolutionary development, requirements are implemented by category rather than by priority.
SDLC Evolutionary model builds the required product in several successive versions and hence is also known as successive version model or incremental model
● In this model the requirement is broken down into different functional units
● These functional units are known as modules
● The functionality improvements are done in these modules until the desired system is realized.
● Each successive version is capable of performing more functions than the previous versions
Release of different evolutionary versions in SDLC
Fig 5: Evolutionary development of a software product
● Each of the version will be released with some new functionalities added to the older one
● Here B will have more functionality than A, but will exhibit less capability than C
● As the system is viewed to be developed in incremental way so it is also termed as incremental model of development
Fig 6: Evolutionary model of software development
Q10) What are the advantages and disadvantages of an evolutionary model?
A10) Advantages:
● In this model the user gets a chance to experiment with a partially developed system.
● It reduces the error because the core modules get tested thoroughly.
Disadvantages:
● Sometimes it becomes hard to divide the problem into several versions that would be acceptable to the customer which can be incrementally implemented and delivered.
Q11) Explain a specialized process model?
A11) Many of the characteristics of one or more of the classic models outlined in the preceding sections are shared by specialized process models. When a specialized or narrowly defined software engineering strategy is adopted, however, these models are frequently used.
Component-Based Development
COTS (commercial off-the-shelf) software components are developed by vendors and sold as products. They provide targeted functionality with well-defined interfaces that allow the component to be integrated into the software being developed. Many of the qualities of the spiral model are included into the component-based development paradigm. It is evolutionary in nature, necessitating an iterative approach to software development. The component-based development paradigm, on the other hand, builds applications out of pre-packaged software components. The identification of candidate components is the first step in the modeling and construction process.
These components might be implemented as traditional software modules, object-oriented classes, or class packages16. The component-based development paradigm contains the following steps (executed using an evolutionary method) regardless of the technology used to produce the components:
1. For the application domain in issue, available component-based products are studied and appraised.
2. Issues with component integration are taken into account.
3. The components are accommodated by a software architecture.
4. The architecture incorporates the components.
5. Thorough testing is carried out to assure optimal functionality.
Software reuse is a result of the component-based development approach, and reusability provides software engineers with a number of measurable benefits. If component reuse becomes ingrained in your software engineering team's culture, you can cut down on development cycle time and project costs.
The Formal Methods Model
The formal methods model entails a series of operations that lead to the formal mathematical specification of computer software. Formal methods use a formal, mathematical notation to design, build, and verify a computer-based system. Some software development companies are presently using a variation of this approach known as cleanroom software engineering.
When formal methods are employed during software development, they provide a mechanism for removing many of the issues that are difficult to solve using traditional software engineering paradigms. Ambiguity, incompleteness, and inconsistency can be detected and addressed more quickly using mathematical analysis rather than ad hoc assessment. When formal methods are utilized during the design process, they serve as a foundation for programme verification, allowing you to find and fix flaws that might otherwise go undiscovered.
The formal techniques model promises defect-free software, despite the fact that it is not widely used. However, others have expressed reservations regarding its relevance in a corporate setting:
● Formal model development takes a long time and costs a lot of money right now.
● Because few software engineers have the background required to employ formal methods, substantial training is required.
● It's tough to use the models as a communication tool for clients who aren't technically savvy.
Despite these reservations, the formal methods approach is gaining popularity among software developers who must create safety-critical software.
Aspect-Oriented Software Development
Builders of complex software usually implement a set of localized features, functions, and information content, regardless of the software technique used. These localized software characteristics are modeled as components (for example, object oriented classes) and then built into the system architecture. Certain concerns — customer - required qualities or technical areas of interest—spread over the entire architecture as modern computer-based systems become more sophisticated (and complex). Some of the issues are system attributes at a high level (e.g., security, fault tolerance). Other issues have an impact on certain functions (for example, the implementation of business rules), while others are systemic (e.g., task synchronization or memory management).
Crosscutting concerns are those that affect numerous system functions, features, and information. Aspectual needs are crosscutting problems that affect the software architecture as a whole. Aspect-oriented software development (AOSD), also known as aspect-oriented programming (AOP), is a relatively new software engineering paradigm that provides a process and methodological approach for defining, specifying, designing, and constructing aspects—"mechanisms beyond subroutines and inheritance for localizing the expression of a crosscutting concern"—as well as a process and methodological approach for defining, specifying, designing, and constructing aspects.
A distinct aspect-oriented process is still in its infancy. However, such a process is likely to take on traits from both evolutionary and concurrent process models. Because aspects are found and subsequently developed, the evolutionary approach is applicable. Because aspects are engineered independently of localized software components, concurrent development's parallel nature is critical because aspects have a direct impact on these components. As a result, it's critical that the AOSD defines "aspects" to describe customer concerns that span numerous system operations, features, and data.
Create asynchronous communication between software process activities that are used in the engineering and implementation of aspects and components.
Q12) Describe a unified process model?
A12) A common iterative and gradual software development process system is the unified software development process or unified process. The Logical Unified Method is the most accepted and thoroughly documented enhancement of the Unified Process (RUP).
The Unified Process is not just a system, but rather an expandable structure that can be adapted to particular organizations or projects. Similarly, a customizable system is the Logical Unified Method.
Fig 7: Unified process phases
Characteristics of Unified process:
- Iterative and Incremental
An iterative and gradual method of growth is the Unified Process. A number of timeboxed iterations are split into the Elaboration, Development and Transformation phases. (For a large project, the Inception stage can also be split into iterations.)
The consequence of each iteration is an increment, which is a device release that incorporates additional or enhanced features compared to the previous release.
While several iterations would involve work in most disciplines of the method (e.g. Specifications, design, implementation, testing), over the course of the project, the relative commitment and focus will shift.
2. Use case Driven
Use cases are used in the Centralized Phase to capture the functional specifications and to determine the content of the iterations. Each iteration takes a collection of use cases or scenarios all the way through implementation, test and deployment, from requirements.
3. Architecture Centric
The Cohesive Method maintains that design is at the core of the attempts of the project team to form the scheme. Because no single model is enough to cover all aspects of a structure, multiple architectural models and views are enabled by the Unified Method.
4. Risk Focused
Early in the project life cycle, the Cohesive Process allows the project team to concentrate on managing the most important risks.
In order to ensure that the greatest risks are tackled first, the deliverables of each iteration, particularly in the development phase, need to be chosen.
5. Project Lifestyle
The project is divided into four stages by the Unified Process:
● Inception Phase
Inception is the smallest stage in the project, and it should hopefully be very brief. It could be a sign of unnecessary up-front requirements if the Inception Period is long, which is contrary to the Cohesive Process spirit.
For the Inception process, the following are common objectives.
For the project, create a justification or business case
Prepare a project preliminary schedule and estimate of costs
Identify risks
● Elaboration Phase
The project team is expected to catch a healthy majority of the device specifications during the Elaboration Process. However, Elaboration's primary goals are to resolve identified risk factors and to develop and validate the architecture of the system. The generation of use case diagrams, conceptual diagrams (class diagrams with only basic notation) and package diagrams are common processes carried out in this phase (architectural diagrams)
● Construction Phase
The biggest step of the project is construction. The rest of the framework is based on the foundation laid down in Elaboration in this stage. In a sequence of brief, timeboxed iterations, device features are introduced. An executable release of the programme results in each iteration. During the construction process, it is customary to write full text use cases and each one becomes the start of a new iteration.
● Transition Phase
Transition is the ultimate project phase. The system is deployed to the target users in this process. In the course of many Transition step iterations, feedback obtained from an initial release (or initial releases) may result in further refinements to be implemented.
Fig 8: Project lifecycle
Q13) Write short notes on agile process models?
A13) The Agile model was created to assist a project in fast adapting to change requests. As a result, the Agile model's primary goal is to speed up project completion. Agility is essential to complete this challenge. Agility is achieved by tailoring the process to the project and eliminating processes that aren't required for the project. Anything that wastes time and effort is also avoided.
The Agile model actually refers to a collection of development methodologies. These processes have certain basic properties in common, but there are some subtle distinctions between them. The following are a few Agile SDLC models:
● Extreme Programming (XP)
● Adaptive Software Development (ASD)
● Dynamic Systems Development Method (DSDM)
● Scrum
● Crystal
● Feature Driven Development (FDD)
● Agile Modeling (AM)
Q14) What is extreme programming?
A14) Extreme Programming
On these tasks and coding, Intense Programming builds. With many tight feedback loops through efficient implementation, testing and continuous refactoring, it is the comprehensive (not the only) design operation.
Extreme Programming is based on the values below:
● Communication
● Simplicity
● Feedback
● Courage
● Respect
XP is a software development that is lightweight, effective, low-risk, scalable, predictable, science and fun.
In the face of unclear and evolving requirements, eXtreme Programming (XP) was conceived and developed to meet the unique needs of software development by small teams.
One of the methodologies of Agile software development is Extreme Programming. It offers beliefs and ideals to guide the actions of the team. It is predicted that the team will self-organize. Extreme programming offers particular core activities in which
● Each activity is easy and complete in itself.
● More complex and changing behavior is created by a combination of techniques.
Extreme Programming involves −
● Prior to programming, writing unit tests and keeping all of the tests running at all times. Unit testing is automated and faults are eliminated early, thus lowering costs.
● Just enough to code the features at hand and redesign when necessary, beginning with a basic design.
● Pair programming (called pair programming), with two programmers on a single computer, using the keyboard in turns. When one of them is on the keyboard, the other continuously reviews and gives suggestions.
● Several times a day, implementing and checking the entire system.
● Rapidly bringing a minimal working system into development and updating it whenever appropriate.
● Holding the client active and receiving constant input all the time.
As the programme progresses with the evolving demands, iterating enables the accommodating changes.
Fig 9: Extreme programming
Q15) Write about adaptive software development?
A15) Adaptive Software Development (ASD)
● Self-organization occurs when a group of autonomous agents works together to solve an issue that is beyond the capabilities of any single actor.
● Self-organizing teams, interpersonal collaboration, and individual and team learning are all highlighted.
● Phases
● Mission-driven
● Component-based
● Iterative
● Time-boxed
● Risk driven and change-tolerant
● Imagination (project initiated and adaptive cycle planning takes place).
● Collaboration (needs coordinated teamwork and shared application).
● Development is the recommended method for acquiring requirements; minispecs are generated).
● Educating yourself (components implemented and testes, focus groups provide feedback, formal technical reviews, postmortems).
Q16) Define scrum?
A16) Scrum is a lightweight agile method system mainly used for software development management. Hey, Scrum is
● Lightweight since it has few components that are recommended
● Three roles: Team, Scrum Master (often a Project Manager), Product Owner (often a Product Manager)
● Three meetings: Sprint Planning, Daily Scrum, Retrospective
● Three artifacts: Product Backlog, Sprint Backlog, Burndown chart
● Agile as it maximizes responsiveness to evolving needs of customers
● A system structure because it is not a method, but a set of methods and principles from which a process can be constructed.
Scrum is a process system that, since the early 1990s, has been used to handle work on complex goods. Scrum is not a procedure, methodology, or conclusive process. Instead, it is a structure within which different processes and techniques can be employed. Scrum makes clear the relative effectiveness of the product management and job strategies such that the product, the staff, and the working atmosphere can be continually enhanced.
Scrum Teams and their related tasks, events, objects, and rules consist of the Scrum system. Each component serves a particular role within the system and is important to the success and use of Scrum.
Scrum's rules tie the functions, activities, and objects together, governing the relationships and interaction between them.
Benefits of scrum:
From a software development process, various stakeholders want distinct things.
● Developers want code, not documents, to be written.
● Quality Assurance engineers want to build research plans that guarantee the quality of the product and provide a high-quality code to test.
● Project managers want a process that is simple to schedule, implement, and control.
● Product Managers want features that are easily implemented, with no bugs.
Q17) Why do we use agile?
A17) Use of Agile
Technology in this current era is progressing faster than ever, enforcing the global software companies to work in a fast-paced changing environment. Because these businesses are operating in an ever-changing environment, it is impossible to gather a complete and exhaustive set of software requirements. Without these requirements, it becomes practically hard for any conventional software model to work.
The conventional software models such as Waterfall Model that depend on completely specifying the requirements, designing, and testing the system are not geared towards rapid software development. As a consequence, a conventional software development model fails to deliver the required product.
This is where agile software development comes to the rescue. It was specially designed to curate the needs of the rapidly changing environment by embracing the idea of incremental development and developing the actual final product.
Q18) What are the differences between waterfall and spiral models ?
A18) Differences between waterfall and spiral models
Waterfall Models | Spiral Models |
The waterfall model operates in a sequential manner. | The spiral model, on the other hand, is based on the evolutionary process. |
After each stage is completed, the waterfall model identifies and corrects any errors or risks. | Errors or threats are detected and corrected earlier in the spiral model. |
Tiny projects should use the waterfall model. | For big projects, the spiral model is used. |
Customers like the waterfall model. | Developers are using the spiral model. |
The waterfall model is a relatively low-cost option. | The spiral model, on the other hand, is very costly. |
Q19) Write the difference between incremental model and waterfall model?
A19) Difference between Incremental model and Waterfall model
Sr. No. | Key | Incremental Model | WaterFall Model |
1 | Definition | Incremental Model is the development model in which the entire model is divided into various sub development phase where corresponding testing phase for each development phase is practices. In other words we can say that for every stage in the development cycle, there is an associated testing phase and corresponding testing phase of the development phase is planned in parallel. | On other hand Waterfall model there is first development of the application and after which the different testing of application take place. In other words we can say that in WaterFall the complete process is divided into several phases among which one phase should be completed in order to reach the next phase and testing is almost at end phase of the development. |
2 | Type/Nature | As mentioned above that in Incremental Model the execution of the phases i.e., development and testing happens in a sequential manner so type of Incremental Model is Sequential/Parallel in nature. | On other hand WaterFall Model is a relatively linear sequential design approach as each phase should be completed in order to reach the next phase. So type of this model is Continuous in nature. |
3 | Testing and Validation | In Incremental Model each development phase get tested at its own level and hence no pending testing occurs in this model also if any validation requires to be implemented then it could be implemented at that phase. | On other hand in case of WaterFall Model the testing occurs after development is completed and thus if any missing validation is identified to be implemented then first that phase of development needs to be recognized and then that validation get implemented. |
4 | Cost and Complexity | As sequential phases need to be functional hence the cost is higher as compared to that of WaterFall Model also the complexity is more than WaterFall. | On other hand in WaterFall Model due to linear development only one phase of development is operational and hence cost and complexity is low as compared to that of Incremental Model. |
5 | Defects | In Incremental Model the probability of total number of defects in the development of application is low as testing is done in parallel to the development. | On other hand in WaterFall Model the probability of total number of defects in the development of application is high as testing is done post development. |
Q20) Compare waterfall model and agile model?
A20) Comparison between Agile model and Waterfall model
Agile | Waterfall |
It separates the project development lifecycle into sprints. | Software development process is divided into distinct phases. |
It follows an incremental approach | Waterfall methodology is a sequential design process. |
Agile methodology is known for its flexibility. | Waterfall is a structured software development methodology so most times it can be quite rigid. |
Agile can be considered as a collection of many different projects. | Software development will be completed as one single project. |
Agile is quite a flexible method which allows changes to be made in the project development requirements even if the initial planning has been completed. | There is no scope of changing the requirements once the project development starts. |
Agile methodology, follow an iterative development approach because of this planning, development, prototyping and other software development phases may appear more than once. | All the project development phases like designing, development, testing, etc. are completed once in the Waterfall model. |
Test plan is reviewed after each sprint | The test plan is rarely discussed during the test phase. |
Agile development is a process in which the requirements are expected to change and evolve. | The method is ideal for projects which have definite requirements and changes not at all expected. |
In Agile methodology, testing is performed concurrently with software development. | In this methodology, the “Testing” phase comes after the “Build” phase |