Interview questions and answers on SDLC (Software Development Life Cycle)
|I just had been to a job interview and I was grilled on this very topic. The interviewer was passionate about this topic. I will have more posts on SDLC by providing additional links here. If you are an experienced developer, these questions and answers should be pretty easy. If you are a novice, this will give you a high level overview. It is good to be familiarized than have no idea at all.
Q. What does SDLC stand for and what are the different phases?
A. SDLC stands for Software Development Life Cycle, which is a process of building an application through different phases.
Q. How will you go about choosing the right SDLC for your project?
- Firstly choose a base methodology: from a number of SDLC methodoligies like Waterfall, RUP (Rational Unified Process), SCRUM, XP (eXtreme Programming), etc. If you already have a SDLC methodology in place, analyse the existing deficiencies. This can be done by interviewing users of the system.
- Secondly, analyze what other best practices can be adopted from the other SDLC methodologies. For example, you can adopt best practices like daily stand-up meetings, iterative development, peer code reviews, and test driven development with waterfall as the base methodology.
Here are a few factors that will help you decide what SDLC methodology is right for your project
1. Understanding how the business is structured. For example, are the business units siloed by products? the culture of the organization, etc.
2. Complexity of the project. What is the size of the project team? How many streams are there?, etc.
3. Nature of the project. New greenfield project versus enhancements and maintenance to existing systems.
4. Capabilities of your engineers, tools, and current processes in place.
Q. What are the benefits of peer code reviews?
1. Pick up issues and bad practices in others' code.
2. Get more familiarized with others' code.
3. Learn from others' code.
Q. Why would you use continuous integration?
- One of the key practices in agile processes is collective code ownership. The continuous integration supports continuous design and collective code ownership. The developers will be required to integrate others' changes more frequently.
- The continuous integration build process is a mechanism to find and eliminate problems from code changes as early as possible. The continuous integration motivates developers to check in code as often as they can, and avoids any stale code. This will also result in reduced down time.
During integrating others' changes, you are also peer reviewing and familiarizing yourself with others' changes.
Q. What are the pros and cons of pair programming?
1. Continual design and code review that leads to more effective solution and effecient defect removal rates.
2. Programmers can learn from each other.
3. Improves communication and can build better teams.
4. The programmers will be more disciplined and encourages the agile principle of collective code ownership.
5. Fewer interruptions as people who are working in pair are less likely to be interrupted than someone working alone.
1. Pair programming can double code development expenses.
2. Hard to get all programmers to embrace it. It takes the programmers out of their comfort zone.
Q. What are the different types of testing?
- Unit testing where the developers test their code by writing unit tests. Code coverage tools are used to determine the extend to which the code is covered.
- System integration tests are generally conducted by the developers to test integration of their code with external CMS (Content Management) Systems like Vignette, CRM (i.e Customer Relationship Management) systems like Siebel or Salesforce, and any other third party system. During development, the external systems can be mocked, and during system integration testing, both happy path and unhappy paths like service failures, service timeouts, sticky versus non-sticky sessions, and service retry need to be tested.
- Performance Testing – uses automated tools that are designed to test and tweak system performance. For example, use JMeter to write performance testing scripts.
- Load Testing – helps determine how well the product handles heavy demand for system resources. For example, how well a trading system handles panic sells during a financial meltdown.
- Security Testing – to guard against accidental miss-use, hackers, or known computer malware attack. For example, using a tool like Skipfish from Google.
- Alpha Testing – is conducted after the majority of the software functionality is complete but before end-users are going to be involved.
- Beta Testing – is conducted after project code is complete.
- Acceptance Testing – is carried out by the testers, business analysts, and users to ensure that the system meets the functional and non functional requirements. The software is packaged and released with release candidate version numbers like RC1, RC2, etc to the user acceptance testing environment.
- Regression Testing – is conducted to check if bug fixes have been implemented successfully. Also checks for the presence of new bugs or flaws that could have been created from correcting the original errors and ensures no baseline functionality has been lost.
- Agile methodology or development practices interview questions and answers
- Agile development methodology: theme, epic and user story
- Pros and cons of agile development methodology and agile principles
- RUP Interview Questions and Answers -- overview
- What are the SDLC activities you perform as a Java developer? Why is building a software is more complex than building a bridge?