What is Software Development Life Cycle (SDLC)? SDLC Models, Methodologies, and Phases. [Complete Guide]
July 31, 2020

What is Software Development Life Cycle (SDLC)? SDLC Models, Methodologies, and Phases. [Complete Guide]

Software Development Life Cycle

Every organizational process at some level suffers from the same challenge, irrespective of the business niches at which it is targeted or the role it occupies. Not only a software development company, but a business down the lane, producing fishing nets also realizes the urge to reduce the cost or to make it a speedy process. So whether you’re on track to launch a new project or even on the road to web creation, you need to strengthen the process with the Software Development Life Cycle (SDLC). Because every engineering project possesses the life cycle. And SDLC is one framework that will break down the entire life cycle to manage a fully planned and controlled development effort from software creation to its deployment with ease.  

Do you also intend to build a software-intensive system to make your business process effective, but not able to manage software requirements and its complexities? Keep on reading. The article outlines a simple understanding of the software development life cycle guide, along with its models and phases in detail. 

Introduction

For any software engineer or developer, software development is more important than the air we breathe in. Every day they wrap themselves up in different challenges to deliver the best custom software. How to get better at what they do is a relentless concern whether they operate on a tech project themselves or outsource the software development life cycle to a third-party IT company.   

However, while concentrating on delivering the best software is important, a great emphasis on execution is a must. This is why understanding the Software Development Life Cycle (SDLC) is valuable for both developers and software engineers to meet customer expectations.

What is the Software Development Life Cycle?

The Software Development Life Cycle, often termed as SDLC is a simple process system for software development in the organization. It is to be used for planning, creating, and evaluating high-quality software. The life cycle of the software-development allows users to turn a freshly created software development project into an operating one. 

In simple terms, SDLC, also known as ADLC (Application Development Life Cycle), is a continuous cycle that begins when a decision is taken to start the project and ends when it is completely excluded from the control. It helps to find problems and eventually applies different models and approaches through repeated actions.  

SDLC processes typically consist of different phases that are used by software developers to create a software product that matches or exceeds consumer requirements, completes on time, and forecasts of costs.

Now, the question arises, what are those different phases? Let’s understand in detail. 

Phases of SDLC (Software Development Life-Cycle)

Phases of SDLC

Phase 1. System Requirement Analysis and Planning

The very first phase of the software creation cycle is to evaluate whether or not a new framework is required to attain the strategic objectives of a company. The company stakeholders need to address the specifications for the end product, to define the system requirements in depth. It involves the development of a project charter which sets out stakeholder and customer requirements for the project plan.

To be more precise, you can understand this phase in 3 simple steps. 

  • Identify the requirements of stakeholders and customers to cope up with the software development trends
  • Get the validation of identified project requirements. 
  • Plan the software project based on validated requirements.

In brief, the planning phase aims to evaluate the complexity of the issue and the software solution to it. 

Phase 2. Feasibility Check

Once you analyze the requirements and plan the software project, paperwork is needed to optimize requirements analysis and maintain a record of the solution’s development. The document is often known as SRS (Software Requirement Specification) document and is to be understood by developers thoroughly.  

The key aim of this feasibility study is to evaluate whether or not the proposed project is feasible in the specific areas below.

  • Check Economic Viability: Is the proposed project within the budget?
  • Test Organizational Compatibility: Is the software project compatible with the organization’s policies?
  • Identify Operational Efficiency: Can the problem be addressed within the background of the customer utilizing the existing and proposed program?
  • Verify Technical Capability: Does the existing computer system and resources available in organizations have the capabilities to solve the problem? 
  • Review Timeframe Functionality: Will the software project be completed under the proposed period? 

Through addressing all these queries, you would attain a viable software plan which is ready for design – our next phase.   

Phase 3. Designing

The next section defines, in-depth, the required criteria, functions, and operations that must be in place based on the SRS document. The goal of this process is to turn the business specifications defined in previous phases into a comprehensive framework model that is practical, scalable, and value-added to the organization.  

This phase primarily includes two activities such as, 

  • Design IT infrastructure – It includes software application logic, interface design, user interface (UX / UI design), database design (data storage and DB access), etc.
  • Design the system model – It includes a data transfer dictionary, process diagram, screen layout diagrams, tables of business rules, prototype, etc. 

Now, to conduct any software design there have to be certain principles so that the software engineer can navigate the design process easier. Consider the below-mentioned principles to follow.

  1. The design must be traceable to the model.
  2. The design must be standardized and integrative for navigation purposes.
  3. The design must be architecture to handle the shift.
  4. The design must be measured for quality while in creating.
  5. The design must be conflict and error-free.

Phase 4. Development

The real work begins now – software development, i.e., coding. During the development phase, the planned software framework is to be split into the different modules and assigned to the programmer. Programmers would then write the code according to selected programming languages.   

Picking a source code management or access control program in this process would be a great help to developers in monitoring design improvements. It frequently helps to maintain compatibility between different development team ventures and to ensure that aim targets are achieved. 

Coding may include various tasks such as, 

  • Finishing or brushing up coding skills. 
  • Finding failures and errors, and operating bug fixes.
  • Wait for test results. 
  • Compile code to run an application.

Phase 5. Testing

Once the development stage and coding are completed, the system testing phase comes into the picture. A professional in quality assurance requirements (QA) will usually conduct the system testing to decide whether the product presented satisfies the original collection of company objectives or not. In specific, testing may be repeated to check for defects, weaknesses, and interoperability. This test is performed until the end-user sees fit. Another extent of this phase is checking and assessment and will, therefore, guarantee that the program is implemented satisfactorily.

This test plan phase can be classified into various subtasks such as, 

  • Test design description
  • Test procedure description
  • Test case description
  • Test execution
  • Test incident report
  • Test log
  • Test summary report

The test is to be conducted by quality assurance engineers on a repeat basis until the product integrity meets the quality levels specified in the SRS. 

Phase 6. Implementation

As the testing meets expectations, the software needs to be made available for the end-users in this phase. The implementation is the final activation of the system for the client where typically the program passes to application configuration validation (User Acceptance Testing). The product deployment phase helps one to see how the product performs and works for the consumer according to their needs through various comments, surveys, questionnaires, the newsletter, and articles. It is the hit or miss process where businesses need to gain overall customer approvals for the minimum viable product and the user must tell you whether or not the product is good enough for the eventual release cycles.  

Phase 7. Operation and Maintenance

Once the user accepts the product, it is ready for the commercial release and if certain bugs are found, it is necessary to fix them to ensure that the program runs smoothly. Another task to be carried in the maintenance phase is to upgrade the software in the new version for the maintenance and competition purposes. Once you upgrade the software into a new version, enhance those features for the quality purpose.  

SDLC phases subset the stage and establish a target with which engineers start a project off. Essentially, it is designed to create applications more efficiently and with a few setbacks when necessary. 

image

Are you planning to develop the software for your business but have no idea what to do? Consult our experts. The consultation is absolutely free.

Get a free quote

Now that you are aware of SDLC phases, let me guide you through the models and methods to conduct the SDLC process.

Models and methodologies of SDLC

Model 1. Waterfall Model

The waterfall methodology is one of the longest surviving software development cycle models. This model requires a hierarchical framework that demands the specification of all device parameters at the very beginning of a project. The reason it is called the waterfall approach is the development of software is well defined as moving slowly downwards across the program design processes (just like a waterfall). 

How does it work? 

The design of the waterfall model of SDLC approach works in a way that all the phases flow through each other. That means the next step begins only after the specified goal set for the previous phase is met. So in this model, there are no chances for overlaps. The phases it involves such as planning, requirement gathering, designing, building, and testing. 

When can you apply this model? 

  • When the software specifications are recorded quite well, and transparent and set. 
  • When the product range description is consistent and not ambiguous. 
  • When technology is not complex and hard to use.
  • When tools are sufficiently available with the requisite skills to help the enterprises. 
  • When the project is not long.

If your software project meets the above criteria, you can apply this software model to the development process. However, every model poses its pros and cons. Here is the list of important aspects you can take into consideration.

ProsCons
  • It is simple to handle because of platform stiffness.
  • Phases can be processed and completed at a time.
  • Functions best with smaller initiatives.
  • It is easy to maintain documents for the process and result in measures quickly.
  • Tasks are simple to organize.
  • Clearly defined stages.
  • There are high risk and instability.
  • Not a suitable framework for dynamic tasks.
  • It’s hard to go back to any phase when it’s complete.
  • The weak pattern for lengthy and protracted programs.
  • Not appropriate for programs where there is a low to the large chance of adjustments to specifications.
  • Hard to monitor progress.

Model 2. Iterative Model

The iterative approach, in tiny steps, takes the waterfall paradigm and loops around it many times instead of extending an entire project. Meaning, this method begins with a basic implementation of a specific collection of program specifications and then iteratively improves the developing iterations before the entire framework is introduced and then ready for delivery. 

How does it work? 

The iterative model is better viewed as a cyclical process. It involves a small number of steps that are replicated over and over after an initial preparation process. With each iteration of the loop, it advances incrementally and iterates on the program. Improvements are being identified and introduced easily during each iteration enabling the next iteration to be at least a bit stronger than the last iteration. 

When can you apply this model? 

  • When the full-system specifications are well described and recognized. 
  • When there’s a time to the market constraint. 
  • When the development staff and team members are utilizing a modern platform and improving when operating on the launch. 
  • When assets with skill sets needed are not accessible.
  • When some features of the high risk can alter in the future.

If you see, the great aspect of this approach is that at a very early stage of development processes, there is a functioning model of the system which makes it easier to identify functional or design flaws. However, it is suitable only for the large software development process. For more details, understand the below-mentioned pros and cons.

ProsCons
  • Results are to be collected regularly and early.
  • You may schedule parallel growth.
  • The development lifecycle is tangible.
  • Change the variety/specifications to be less expensive.
  • It’s quick to check and debug through smaller iterations.
  • Easy to handle risk.
  • The operational output is provided at any step.
  • Examination of the risks is easier.
  • Operating time is much lower.
  • Require more resources.
  • Require greater management attention.
  • Increments may need the complete system definition.
  • It is not ideal for small software development projects.
  • Complexity in operations is higher.
  • Highly trained personnel are required for evaluation of the risk.
  • The success of programs is heavily contingent on the process of risk analysis.

Model 3. Spiral Model

The model was first defined in his 1986 paper by Barry Boehm. The spiral methodology can be looked at as the hybrid model of a waterfall process, and an iterative method. Each phase of the spiral model starts with a design objective and ends with the customer reviewing the growth. This approach helps development teams to follow SDLC methodology depending on the project’s danger trends. 

How does it work? 

There are four stages to the spiral pattern. In loops called Spirals, a software project constantly passes through the below-mentioned stages. 

  1. The development lifecycle process starts with the selection of company criteria in the spiraling baseline. The definition of software specifications, module specifications, and machine requirements are all achieved in this step. 
  2. The design phase starts in the reference spiral with the conceptual framework by the design team.
  3. A construction phase steps about-the proof of concept has to be produced in this stage where the plan is developed to gain customer satisfaction and friends suggestions and user feedback.
  4. The final stage is to carry out a risk assessment. Calculate and track technological viability and risk reduction, such as slip-pages times and backlog costs. After that, improve based on customer feedback. 

When can you apply this model? 

  • When there is a limitation on the expenditure and risk management is relevant. 
  • When the risk is medium to high. 
  • When the software project is for long-term participation. 
  • When the users are not sure of requirements. 
  • When business requirements are complicated. 

Furthermore, when your tech project has complicated specifications or plans big changes during your mid-to-high-risk phase, then the spiral model will be your business’s greater alternative. But before choosing the model, look at the below-mentioned pros and cons once that will help you to choose the best option.

ProsCons
  • It will meet evolving user requirements.
  • Let you use prototypes.
  • Specifications may be more reliably recorded.
  • Consumers can look early on at the program.
  • Design can be separated into smaller components.
  • The unsafe components installation is made possible earlier and helps to boost risk control.
  • Management becomes more difficult.
  • Can not decide on when the project will be completed.
  • Not ideal for projects at medium or low risk.
  • The method is complex and large.
  • The spiral process can go on and on. It might not end ever.
  • Excessive paperwork is needed for vast numbers of intermediate levels.

Model 4. V Model

The v-model is an extension of the classic waterfall techniques and known as verification or a validation model. The reason it is called the v-model, is the phases are flipped upwards after the coding point in a v-shape. The model has a rather rigid method that means once you complete the process for one phase, then only you can proceed for the next step. 

How does it work? 

If we break down the V Model into various phases, it includes 3 main phases such as,  

1. Verification Phase – It mainly covers business requirement analysis, system design phase, product architecture design phase, and module design phase. 

Business requirement analysis is a phase in which product requirements are considered from the client’s viewpoint.

System design is the process where you will be required to design the complete system after considering customers’ requirements. 

Architecture design (High-level design) scheduling by product architects is for integration design and documentation based on the transmission and connectivity of data processing with the internal modules and with the other systems. 

Module design (Low-level design) is a process where a comprehensive internal module is defined for all system modules. During this step, units check is to be performed based on the internal module configurations to render it error-free.

2. Coding Phase – In this phase, depending on machine equipment and technical specifications the best fitting programming language is to be determined and coding takes place. This is also known as the implementation phase. 

3. Validation Phase – This phase mainly includes unit tests, integration testing, system testing and acceptance testing. 

Unit testing is to be conducted to establish the Unit Test Plans to eliminate bugs at code level or unit level.

Integration testing is to be conducted to establish Integration Test Plans to validate that groups will coexist and interact within themselves, produced and evaluated separately, during the architecture phase. 

System testing is to be conducted to establish System Test Plans to verify that applications established requirements are achieved.

Acceptance testing is to be conducted to establish User Acceptance Test Plans to make sure that system is finally ready for the real world. 

When can you apply this model? 

  • When the project is for a short term period. 
  • When the software specifications are not vague or unclear. 
  • When technology isn’t fluid. 

The disciplined V Model is, however, very easy to use as applied when it comes to implementation and handling. So if you are looking forward to applying this model in your business systems, you also need to see the advantage and drawbacks it consists of. 

ProsCons
  • It is a highly structured process so that it can be executed stages one by one at a time.
  • It can be great for small projects.
  • Clear and intuitive.
  • With each phase there are variable outcomes and a process of analysis.
  • It consists of greater risk.
  • It is not a suitable example for dynamic tasks or object-oriented ones.
  • Can not go back and adjust the function.
  • It is inflexible.
  • It lacks accuracy.
  • It is inefficient for testing.

Model 5. Big-Bang Model

The Big Bang model, unlike nearly all other common SDLC models, is remarkable. Why? It needs practically no preparation, coordination, best practices or traditional procedures. It is the concept of simply beginning the project right now, at this moment, with no organized framework or even organization. 

Now you might be wondering if the model doesn’t possess any process then why do we even need to think of this. But let me tell you, while most companies would aim for a standard phased implementation with a new launch, in some cases, gradually implementing a new program may not be feasible. Especially when you are developing a radically different version of a product or release. In scenarios like this, the only rational unified process is an immediate release like pressing a button. This is called big bang adoption.  

How does it work? 

As I mentioned the model doesn’t follow any procedure so the software development begins only with inputs that contain the necessary money and sources, and the outcome is the produced software that may or may not fulfill the customer requirements. 

When can you apply this model? 

  • When the project is short.
  • When the project development team is small. 
  • When the project doesn’t require any planning or maybe little planning. 
  • When the necessary improvements may or may not require a full redesign of the program.
  • When the software requirements are not clear. 
  • When the release time is not certain. 

Like other SDLC models, this model also contains the various benefits and drawbacks that are as follows. 

ProsCons
  • It is a simple model & quick to implement.
  • This calls for less planning.
  • This calls for fewer resources.
  • This supports small-scale projects.
  • They’re cost-effective.
  • Easy to manage.
  • There’s no project time limit.
  • This is not ideal for large projects or for complex ones.
  • It’s extremely risky.
  • It has inherent ambiguity.
  • It is an inexpensive model.

Model 6. Agile Model

The Agile model is the complete opposite of the Waterfall model. In the old days, the iterative waterfall model was famous for completing a project. But the software developer had to face numerous problems and difficulties following this pattern, particularly when customers request a change in handling or there is an upgrade in system requirement. So in order to reduce these challenges and disadvantages in older versions, they presented the concept with a label Agile Software Development. 

Agile model is a process that encourages the ongoing development and evaluating iteration during the software development lifecycle. It focuses on product robustness.

How does it work? 

Agile models split up the project into tiny sequential constructions. All builds come in iterations. Usually, each replication lasts from about one to three weeks. Every implementation requires cross-functional teams operating concurrently in various areas such as planning stage, requirement analysis, designing, building, testing, and acceptance testing.

There are various forms of Agile models that software development companies use like, 

  • Scrum 
  • Lean development 
  • Crystal methodologies (CM)
  • Dynamic systems development method (DSDM)
  • Feature-driven development (FDD)
  • Extreme programming (tools) (XP)

Out of all scrum, lean development, and XP are the most common methods for the SDLC process.

When can you apply this model?

  • When the project is for a short period. 
  • When the organization is small. 
  • When the speed is required. 
  • When flexibility is essential.

In better words, Agile is best to use when there is a change in business dynamics, competitor development and you need a method that performs between transformation and input. For more understanding, look at the below-mentioned pros and cons.

ProsCons
  • It is a practical approach to designing the program.
  • Enhancements of communication and training across development teams.
  • The limited requirements of specifications for the capital.
  • Appropriate for demands setup or changing.
  • Advance directives for early part-time work.
  • Great fit when there’s a constant evolution of climates.
  • Limited guidelines, efficient usage of the documents.
  • Allows instant development.
  • Not tailored to dealing with complex dependencies.
  • Greater sustainability risk.
  • Strict distribution control determines the distance, the features to be shipped, and the time-limit changes.
  • It’s highly reliant on consumer involvement.
  • Need high maintenance.

Model 7. RAD Model

Rapid-Application Development (RAD), also known as Rapid-Application Building (RAB), is also a common phrase used to apply to agile software development methods. RAD solutions to software development typically put less focus on preparation and more focus on an agile cycle.

RAD is a technique for software creation, utilizing limited preparation in lieu of rapid prototyping. A prototype is a technically identical operating model of one part of the product visibility. RAD projects generally adopt the iterative and the increment model and include a limited development team composed of engineers, software industry experts, client representatives, and other IT tools collaborating on their parts or concepts gradually.

How does it work? 

RAD model divides the processes of research, design, construct, and testing into a sequence of short, iterative cycles of growth. It involves phases such as, 

  1. Business Analysis – A full business analysis is carried out to find the vital business information.
  2. Data Analysis – The data gained during the business analysis process is checked and analyzed to create collections of essential business data items.
  3. Process Analysis – Convert the data object sets identified in the data analysis process to decide the business knowledge flow required to accomplish clear business objectives as per the business model.
  4. Application development – Coding is conducted by the engineers and developers according to the coding guidelines.
  5. Testing – The data flow and interfaces for all the modules must be carefully checked with complete software coverage. 

When can you apply this model? 

  • When the system modularized to provide incrementally. 
  • When there is a wide supply of modelling designers.
  • When industrial expertise with appropriate market experience is available.
  • When the spend is in budget to use digital software for code creation. 

Important: RAD model allows for quick development because it decreases total cycle time due to the product recyclability and concurrent growth.

ProsCons
  • It can handle new conditions and situations.
  • One can calculate progress.
  • With the use of efficient RAD software methods, the iteration period may be limited.
  • Productivity in a limited period, for fewer participants.
  • The time of the development lifecycle is reduced.
  • Increases Product Reusability.
  • Fast initial evaluations are in the development process.
  • Encouraging input and response from consumers.
  • From the very outset, automation addresses a number of integration issues.
  • Only frameworks can be designed using RAD that can be modularised.
  • Highly qualified developers/designers are needed.
  • High dependence on skills and commitment to modeling.
  • It is very large and inapplicable to cheaper tasks such as simulation costs and automatic code creation.
  • Complexity in administration is greater.
  • Suitable for only component-based systems.

Model 8. Prototype Model

Prototyping is a process model that is used for software development. The software prototyping model’s principal aim is to meet the desires of the consumer. Developers execute the concept to obtain this, then submit it to the consumer for assessment. 

The prototype model is a working software model with very restricted features. The implementation does not necessarily contain the same reasoning found in the final product framework and is an additional step to be taken into account under the calculation of steps.

How does it work? 

In this phase, prototypes proceed until the product meets the consumers’ expectations. The prototype undergoes various phases at each iteration such as, 

  1. Basic requirement identification – Recognize the very basic specifications of the product mainly in terms of the user interfaces.
  2. Develop initial Prototype – In this core point, where the very specific specifications are outlined and user interfaces are given, the actual prototype is created.
  3. Prototype review – The developed prototype is then introduced to the user and other relevant project managers for the review. 
  4. Monitor and improve prototype – The gained reviews, customer feedback, and suggestions are addressed and some discussions take place with the customer based on factors such as time and budget constraints. 

When can you apply this model? 

  • When developing systems that have high user interaction levels. 
  • When applications for business require users to fill out forms or move through various screens before processing the results. 
  • When the program does not need much processing of the data. 

Important: Prototype development process could be an extra overhead in such projects where the internal functionality is more as it may need a lot of extra effort.

ProsCons
  • Improved customer interaction with the app just prior to its launch.
  • The consumers get a clearer view of the framework being built when an operating implementation of the program is shown.
  • Reduces time and expense because we can spot the flaws much sooner.
  • Faster customer input contributing to new ideas is now open.
  • Required features may be quickly found.
  • Risk of inadequate review of criteria due to over-reliance on the prototype.
  • In experiments and real systems, users can become confused.
  • In reality, this approach will enhance the system’s complexity because the system’s reach may extend beyond original plans.
  • Developers can try to reuse existing prototypes to create the actual device, even though it is technically impossible.
image

Are you still confused about what method you need to use? Discuss your queries with us today and get the best solution for software development.

Contact Us

The Importance of SDLC methodologies in IT

The software use proliferated in the late 70s and early 80s so it is not wrong to say that the area of software engineering is fairly young. But since then the different SDLC models have been successfully fulfilling the role of the software development activities processes. How?  

  • This serves as a project reference for meeting the needs of focus groups. 
  • This provides a defined view of the system as a whole, its resources, timeline, and objectives. 
  • This helps to evaluate, plan, and forecast performance. 
  • Project evaluations help ensure that the finished result is accurate and consistent. 
  • Control overbroad or complicated programs improved.
  • This offers a context for a selection of typical activities. 
  • This makes sure the distribution to the consumer accurately and within time. 
  • It provides power over the development process and decision making.
  • Fast cost estimates and extension of existing programs.

FAQ

1. What is a system development life cycle methodology?

The life cycle of system development is a concept of project management that describes the steps involved in getting a project to fruition from the outset. Of starters, product engineering teams implement a number of project life cycle simulation tools that incorporate waterfall, spiraling, and prototyping, v model, and big bang model.

2. Is SDLC waterfall or agile?

The waterfall is a Continuous Sequential Life Cycle Model while Agile is a continual process of production environments and preparation during the growth period of applications. The agile practice is known for its simplicity whereas waterfall is known for its systematic strategies for designing applications. Agile embraces a systematic business strategy whilst a sequential design procedure is the waterfall technique.

3. Is Waterfall better than Agile?

The waterfall is a systematic technique for designing applications, such that it can be very linear much of the time. The creation of apps is done as a single project. Agile is a relatively robust approach that requires improvements to be made to the criteria for project implementation even though the original preparation has been finished. So it completely depends on the requirement of your software project.

4. Why is Agile methodology the best?

  • It can manage change effectively.
  • It helps to improve customer engagement.
  • It focuses on the prioritization of goals.
  • It helps to increase productivity.
  • It gives an environment for cooperation and teamwork.

Conclusion

If you begin developing a new product and software as a startup, it’s important to follow the life cycle of the system development for a great impact and effectiveness. Because this way the project team is allowed to operate in a managed and well-organized atmosphere according to a systematic approach to designing new software solutions without any hassle. However, when you select the approach to app development, it is highly essential to know what tool would be suitable for your products. Sometimes, you may find that more than one approach is suitable for your project, so in this case, making a decision for selecting the appropriate approach is quite challenging. So if you find any problems with regard to software development and choosing the best models, you can contact us at any time and our experts will reach you at earliest with the best solutions.  

 

This page was last edited on August 4th, 2020, at 4:29 AM.

Author Bio

Rakesh Patel

Rakesh Patel

Designation: Co-founder and CEO of Space-O Technologies

Mr. Rakesh Patel is a Founder and CEO of Space-O Canada. He has 28 years of IT experience in business strategies, operations & information technology. He has expertise in various aspects of business like project planning, sales, and marketing, and has successfully defined flawless business models for the clients. A techie by mind and a writer at heart, he has authored two books - Enterprise Mobility: Strategy & Solutions and A Guide To Open311.

Schedule a Call