Google

Sep 19, 2012

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?
A. 
  • 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?
A.

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?
A. 

  • 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.
The best practice for continuous integration is to perform the integration of others' changes on a your local workstation before your code escapes into the build server. It’s okay to break the build once in a while, but it hast to be quickly fixed. The build should never spend the night in a broken state.

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?
A. 

Pros:

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.

Cons:

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 functional requirements? What are Non-funcrional requirements?
A. Functional requirements  are captured in a document with use cases or via story boards which contain what a certain system has to do to achieve a number of user objectives.This task is carried out during the priliminary stage of SDLC. For example, allow investors to place buy and sell trades. Prior to placing trades, the user inputs need to be validated, etc. Use case diagrams are used to capture the user experience.

Non-functional requirements addresses aspects that a software will never function properly without them. Response times, security, reliability, accuracy, high availability, and cross browser compatibilty are examples of non functional requirements. The Non functional requirements decide how a software will be percieved by its users. Users wouldn't be happy using a system that is not highly availabled and riddled with security holes. 


Q. What are the different types of testing?
A. 
  • 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.  
  • Cross browser compatibility testing.  The modern applications are very rich in client experience and use lots of client side scripting like JavaScript. So, it is imperative to perform browser compatibility testing to ensure that the code works with major browsers like internet explorer, Firefox, Google chrome, and safari. There are tools like BrowserShotsIE Tester (for various IE versions), Adobe Browser Lab, etc.
  • 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.

Other Relevant Links







Labels:

4 Comments:

Anonymous Mark Frazier said...

software development company to outsource the work to is a daunting task. Software development is infamous for project slippage, even by the big names in the industry.

7:22 PM, October 17, 2012  
Blogger Marthak software solutions. said...

Greate article very useful software development blog thanks by marthak software solutions one of the Software development company

6:33 PM, October 23, 2012  
Blogger Unknown said...

Very short and informative but you should check out sdlc for additional narrative details and related discussions.

8:38 AM, March 31, 2013  
Blogger Allan said...

IT companies are gaining popularity with every passing day and tend to grow at a rapid speed. Software development company procedures are getting purifies and verified with a brilliant merge of existing and new technologies everyday. Due to the massive demand of automation and perfection, many organizations are now opting outsourcing software development in order to meet their business needs.

5:50 PM, August 02, 2014  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home