Choosing the right Software development life cycle model

Selecting a Software Development Life Cycle (SDLC) methodology is a challenging task for many organizations. What tends to make it challenging is the fact that few organizations know what criteria to use in selecting a methodology to add value to the organization. Fewer still understand that a methodology might apply to more than one Lifecycle Model. Before considering a framework for selecting a given SDLC methodology, we need to define the different types and illustrate the advantages and disadvantages of those models (please see Software Development Life Cycle Models and Methodologies).

How to select the right SDLC

Selecting the right SDLC is a process in itself that organization can implement internally or consult for. There are some steps to get the right selection:

STEP 1: Learn the about SDLC Models

SDLCs are the same in their usage, advantages, and disadvantages. In order to select the right SDLC, one must have experience and be familiar with the SDLCs that will be chosen.

STEP 2: Assess the needs of Stakeholders

We must study the business domain, user requirements, business priorities, and technology constraints to be able to choose the right SDLC against their selection criteria.

STEP 3: Define the criteria

Some of the selection criteria or questions that you may use to select an SDLC are:

  • Is the SDLC appropriate for the size of our team and their skills?
  • Is the SDLC appropriate with the selected technology we use for implementing the solution?
  • Is the SDLC appropriate with client and stakeholders need and priorities
  • Is the SDLC appropriate for the geographical situation (co-located or geographically dispersed)?
  • Is the SDLC appropriate for the size and complexity of our software?
  • Is the SDLC appropriate for the type of projects we do?
  • Is the SDLC appropriate for our engineering capability?

What are the criteria?

Here is my recommended criteria, what will be yours?

Factors Waterfall V-Shaped Evolutionary Prototyping Spiral Iterative and Incremental Agile Methodologies
Unclear User Requirement Poor Poor Good Excellent Good Excellent
Unfamiliar Technology Poor Poor Excellent Excellent Good Poor
Complex System Good Good Excellent Excellent Good Poor
Reliable system Good Good Poor Excellent Good Good
Short Time Schedule Poor Poor Good Poor Excellent Excellent
Strong Project Management Excellent Excellent Excellent Excellent Excellent Excellent
Cost limitation Poor Poor Poor Poor Excellent Excellent
Visibility of Stakeholders Good Good Excellent Excellent Good Excellent
Skills limitation Good Good Poor Poor Good Poor
Documentations Excellent Excellent Good Good Excellent Poor
Component reusability Excellent Excellent Poor Poor Excellent Poor

References

Selecting a Software Development Life Cycle (SDLC) Methodology.(2012, 3 18). Retrieved from http://www.smc-i.com/downloads/sdlc_methodology.pdf

Software Development Life Cycle Models. (2012, 3). Retrieved from Codebetter.com: http://codebetter.com/raymondlewallen/2005/07/13/software-development-life-cycle-models/

Software Development Life Cycle Models and Methodologies

Introduction

The software industry includes many different processes, for example, analysis, development, maintenance and publication of software. This industry also includes software services, such as training, documentation, and consulting.

Our focus here about software development life cycle (SDLC). So, due to that different types of projects have different requirements. Therefore, it may be required to choose the SDLC phases according to the specific needs of the project. These different requirements and needs give us various software development approaches to choose from during software implementation.

Types of Software developing life cycles (SDLC)

Waterfall Model

Description

The waterfall Model is a linear sequential flow. In which progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete. The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement. The waterfall approach is the earliest approach that was used for software development.

WaterfallThe usage

Projects which not focus on changing the requirements, for example, projects initiated from request for proposals (RFPs)

Advantages and Disadvantages

Advantages Disadvantages
  • Easy to explain to the users.
  • Structures approach.
  • Stages and activities are well defined.
  • Helps to plan and schedule the project.
  • Verification at each stage ensures early detection of errors / misunderstanding.
  • Each phase has specific deliverables.
  • Assumes that the requirements of a system can be frozen.
  • Very difficult to go back to any stage after it finished.
  • A little flexibility and adjusting scope is difficult and expensive.
  • Costly and required more time, in addition to the detailed plan.

V-Shaped Model

Description

It is an extension of waterfall model, Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The major difference between v-shaped model and waterfall model is the early test planning in the v-shaped model.

V-Shaped

The usage

  • Software requirements clearly defined and known
  • Software development technologies and tools is well-known

Advantages and Disadvantages

Advantages Disadvantages
  • Simple and easy to use
  • Each phase has specific deliverables.
  • Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.
  • Works well for where requirements are easily understood.
  • Verification and validation of the product in early stages of product development.
  • Very inflexible, like the waterfall model.
  • Little flexibility and adjusting scope is difficult and expensive.
  • Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • The model doesn’t provide a clear path for problems found during testing phases.
  • Costly and required more time, in addition to detailed plan

Prototyping Model

Description

It refers to the activity of creating prototypes of software applications, for example, incomplete versions of the software program being developed. It is an activity that can occur in software development. It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations may occur in waterfall approach and hard to be implemented due to the inflexibility of the waterfall approach. So, when the final prototype is developed, the requirement is considered to be frozen.

It has some types, such as:

  • Throwaway prototyping: Prototypes that are eventually discarded rather than becoming a part of the finally delivered software

Throwaway prototyping

  • Evolutionary prototyping: prototypes that evolve into the final system through an iterative incorporation of user feedback.

ev-proto

  • Incremental prototyping: The final product is built as separate prototypes. At the end, the separate prototypes are merged in an overall design.

StagedModelofSDLC

  • Extreme prototyping: used at web applications mainly. Basically, it breaks down web development into three phases, each one based on the preceding one. The first phase is a static prototype that consists mainly of HTML pages. In the second phase, the screens are programmed and fully functional using a simulated services layer. In the third phase, the services are implemented

The usage

  • This process can be used with any software developing life cycle model. While this shall be focused with systems needs more user interactions. So, the system does not have user interactions, such as, a system does some calculations shall not have prototypes.

Advantages and Disadvantages

Advantages Disadvantages
  • Reduced time and costs, but this can be disadvantage if the developer loses time in developing the prototypes.
  • Improved and increased user involvement.
  • Insufficient analysis· User confusion of prototype and finished system.
  • Developer misunderstanding of user objectives.
  • Excessive development time of the prototype.
  • Expense of implementing prototyping

Spiral Method (SDM)

Description

It is combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. This model of development combines the features of the prototyping model and the waterfall model. The spiral model is favored for large, expensive, and complicated projects. This model uses many of the same phases as the waterfall model, in essentially the same order, separated by planning, risk assessment, and the building of prototypes and simulations.

spiral

The usage

It is used in shrink-wrap large applications and systems which built-in small phases or segments.

Advantages and Disadvantages

Advantages Disadvantages
  • Estimates (i.e. budget, schedule, etc.) become more realistic as work progressed, because important issues are discovered earlier.
  • Early involvement of developers.
  • Manages risks and develops the system into phases.
  • High cost and time to reach the final product.
  • Needs special skills to evaluate the risks and assumptions.
  • Highly customized limiting re-usability

Iterative and Incremental Method

Description

It is developed to overcome the weaknesses of the waterfall model. It starts with an initial planning and ends with deployment with the cyclic interactions in between. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental), allowing software developers to take advantage of what was learned during the development of earlier parts or versions of the system.

It consists of mini waterfalls

incremental-sdlc

The usage

It is used in shrink-wrap application and large system which built-in small phases or segments. Also can be used in a system has separated components, for example, ERP system. Which we can start with the budget module as a first iteration and then we can start with inventory module and so forth.

Advantages and Disadvantages

Advantages Disadvantages
  • Produces business value early in the development life cycle.
  • Better use of scarce resources through proper increment definition.
  • Can accommodate some change requests between increments.
  • More focused on customer value than the linear approaches.
  • Problems can be detected earlier.
  • Requires heavy documentation.
  • Follows a defined set of processes.
  • Defines increments based on function and feature dependencies.
  • Requires more customer involvement than the linear approaches.
  • Partitioning the functions and features might be problematic.
  • Integration between iteration can be an issue if this is not considered during the development.

Extreme programming (Agile development)

Description

It is based on iterative and incremental development, where requirements and solutions evolve through collaboration between cross-functional teams.

SW-FW-design

The usage

It can be used with any type of the project, but it needs more involvement from the customer and to be interactive. Also, it can be used when the customer needs to have some functional requirement ready in less than three weeks.

Advantages and Disadvantages

Advantages Disadvantages
  • Decrease the time required to avail some system features.
  • Face to face communication and continuous inputs from customer representative leaves no space for guesswork.
  • The end result is the high-quality software in the least possible time duration and satisfied customer.
  • Scalability.
  • The ability of the customer to express user needs.
  • Documentation is done at later stages.
  • Reduce the usability of components.
  • Needs special skills for the team.

References

(2012, March). Retrieved from Wikipedia: http://en.wikipedia.org/wiki/Main_Page

(2012, March). Retrieved from Software Developing life cycles: http://www.sdlc.ws

Software Development Life Cycle Models. (2012, 3). Retrieved from Codebetter.com: http://codebetter.com/raymondlewallen/2005/07/13/software-development-life-cycle-models/

Best Practices for interviewing techniques and questions

[i]Interviewing is one of the important discovering techniques for requirement elicitation from the customer. So before making any interview we should prepare for it. The preparation of the interview is an important factor will increase the chance of making a successful interview.

Also, we should have some skills like listening, communication, time management…etc. and learn how to manage these skills and use them.

So, we will assume that any analyst has these skills, so we will discuss directly how to prepare for the interview so we can raise its chance to become successful.

clip_image002

Prepare for the interview

Prepare yourself

The analyst should learn about the domain, learn about domain language, what will be analyzed? What is the scope of work? What are the high-level requirements? What is the role of this organization? What is the organizational structure? What are the existing systems?…etc.

Also, you may need to consult your colleagues on materials you should read, people you need to choose and questions you need to ask.

Choose the right people

Choose the right persons from the organization structure, you know that you will find the answers to your questions at their end, or they may help you in analysis sessions, you may need to ask another opinion for your choices.

Choosing the right stakeholders is very important as it may reflect and effect on choosing to interview as a technique in requirements elicitation, and replace it with another technique.

Choose the right place and time

As an analyst, you should recommend a meeting place regarding inside or outside their working place, also to take into consideration the environmental factors for this place which may effect on the flow of information. Ex (Noisy environment – too much-decorated places – interruptions)

Also, you should schedule the interview date and duration and try to have a buffer for you so you can be able to summarize and validate the requirements at the end of the meeting.

The interview duration should not exceed one to two hour to not be useless and ask for another meeting if you did not finish on time, a long meeting will be boring for them.

Prepare the stakeholders

You need to inform the stakeholders about the interview schedule, place, and duration.

You can use many tools like MS Outlook to send a meeting request, which can help you invite the people and choose who is mandatory and who is optional. You have to send the interview agenda with highlighting the objectives to set the expectation from the meeting.

Ask about any prerequisites you may need to facilitate your interview and your analysis.

[ii]Prepare good questions

By learning about the domain, you will learn a prerequisites questions you should ask about the domain, and this will help you to focus during the interview.

While during the interview you should follow the different level of questioning and consider the environmental and physiological factors may effect on listening level and audience concentrations and their willing to speak on important subjects.

  • Open – Ended Questions: should be at the start of the interview, to just gain general information and understand more about the domain, for example, why this is a problem?
  • Ideas questions: it is used to ask about opinion to solve or propose a solution and new ideas for a solution and as brainstorming a solution , for example, how do you think this could work?
  • Time Machine: the time machine question should be for visioning illustration and direction, for example, Why is that important to you? or How this will be useful at 2020?
  • Indirect Questions: These questions are used to gain more information and illustration but indirect way, for example, Is that important because of …?
  • Validation Statements and Questions: this should be used in summarizing the information you gained and to ensure your understanding so you do not fall in misunderstanding listening trap, for example, From that I understood…etc.
  • Examples and Closed – ended Questions: to gain more details or when you need to have yes/no answers, you may use closed-ended question, for example, Do you need to access this from Internet? Also asking for examples is very good way to illustrate cycles and workflows and understand the business needs at the customer end, for example, could you give an example of this purchase cycle?

Recording the interview

Recording the interview is a good way to keep information as much as you can, so you can back anytime to the tape to validate your understanding and write down all notes, as you will only concentrate on taking the high-level important notes during your interview, so surely you will forget something you heard.

While you should ask for permission for recording the tape, and you should ensure that this tape will not be exposed to any another entity and it will be used only for this purpose.

Follow-up the interview

Following up the interview is very important to validate your knowledge about the problem domain and ensure that you record all information, you missed or the customer missed to talk about at first sessions.

Also, you may not finish all questions on the interview agreed duration so you will need to meet again to validate and complete the analysis.

Also as an analyst, you may have one to one interview or group interview so you will need at the end to validate all gathered requirements with decision makers and top management, and this should be for the follow-up interviews.

References


[i] http://www.techrepublic.com/blog/tech-manager/mining-project-requirements-techniques-to-use-before-and-after-an-interview/450

[ii] http://www.techrepublic.com/blog/tech-manager/use-these-interviewing-techniques-to-gather-project-requirements/434

Best Practices listening Skills for analysts

“We have two ears and one mouth so that we can listen twice as much as we speak.” Epictetus quotes(Greek philosopher associated with the Stoics, AD 55-c.135)

clip_image002

In human natural life, we are listening most of the time than we speak, while this is called discriminative and passive listening which you are listening to voices with different level of sound and including the body language, but we need to control how to listen and when to concentrate on listening by managing and understanding listening skill especially on a career like analyst.

How can I control Listening skills?

  • First, we should know what are the listening different levels and types? And how do we fit and allocate ourselves and our listening behavior on one of these levels and one of these types?
  • Second, evaluate my skills and learn how to reach the required level for analyst career.

What are the listening levels and types?

[i]Most of the Researches talked about listening levels are mixing between the levels and types, there are six common levels:

  1. Ignorance Listening:the person does not listen at all, and you can easily notice that he is not listening.
  2. Pretending Listening:the person is not concentrating on the information and what are you talking about, but he may convince you and pretend that he is listening so well.
  3. Selective Listening:the person is not concentrating on the overall subject, but he is interested in something or a specific topic on the subject so he will select the topics he likes when the speaker starts to speak about them, also he may be biased to a person and he will concentrate on this person only.
  4. Misunderstood listening:the person is listening, but he misunderstood the idea beyond the speech.
  5. Attentive Listening:The person is concentrating and he understands the information but he does not give a feedback about the information he heard.
  6. Active Listening: The person is concentrating and he understands the information and gives a feedback about the information he heard.

The analyst should know all these level and know what the level he should be and when he can also use another level in special cases.

So this was the listening levels, regarding the Listening types, there are many types, so I will discuss the important types the analyst should know to follow and use:

  1. Dialogic:from the type name, the listening is based on dialog, Q, and A, and this will be very effective in analyst career.
  2. Relationship listening: it is used more in relations between the speaker and listener, for example, Lovers; it is good to have this type of listening relation between the customer and analyst. This will give the analyst a chance to understand and learn more about the problem domain and can easily get the information anytime.

As an analyst, you should not use biased and evaluative listening, as these types may create for you a resistance at customer end and maybe create some enemies also.

Good Listener techniques

Becoming a good listener is not easy. You should understand well the objective of this skill from Analyst career perspective so you can know how to use it:

  1. Analyst listens to obtain and learn new information about the domain.
  2. Analyst listens to understand the information he heard to analyze it.
  3. Analyst listens to build a presentable, readable and understandable analysis document, and validate this analysis information.
  4. Analyst listens to understand well so he can transfer the problem to the technical team.

The Way to becoming a good Listener

  1. Be Attention:to pay attention while listening with looking to the speaker and writing done notes.
  2. Acknowledge the speaker that you are listening:smile while listening or with Nod Occasionally.
  3. Provide feedback and summarize:always try to reassess and recap what you listened and validate it.
  4. Do not interrupt:do not interrupt the speaker anytime and ask for permission, when you would like to speak.
  5. Respect: respected the speaker and treat him as he would want to be treated

It can be argued that gaining the listening skills will qualify the person to become a good analyst.


[i] http://www.businessballs.com/empathy.htm & http://ezinearticles.com/?The-Five-Levels-of-Listening&id=5115474

Analytical thinking and problem solving competency for analysts

1. Creative thinking is the process by which we generate new ideas, imagine possibilities, and find relationships among seemingly unrelated concepts.

a. Why creativity of thinking is needed for analytic?

  • Establishing and generation of new and fresh ideas and approaches.
  • Convince others about these ideas.
  • Putting these ideas into action.

b. Example:

  • When there is a problem exist on the beneficiary side, the analytic should put new ideas may be more efficient to satisfy the requirements with generating new added values and benefits.
  • For example, if the beneficiary would like to have a system to log his customers’ complaints, there may be many solution exits like custom made application to just log these complaints or may be CRM application with workflow till the end of complaints resolving cycle.

2. Decision Making is an essential process for all organization and making right decisions are more crucial. A logical and systematic way of decision making can help to address critical problems of business more precisely.

a. Why Decision Making is needed for analytic?

  • For convincing the stakeholders and decision makers of choosing a specific solution.
  • To address how this solution will solve their existing problems.
  • To address the impact and benefits of this solution.

b. Example:

  • Based on the previous ideas (CRM – Custom made application) If the analytic discover that the CRM product will be more suitable for beneficiary needs.
  • He/she will address why choosing the CRM, for example; workflow cycle from receiving the complaint till solving it, monitoring the bottleneck of pending the complaints, measure complaints resolver performance, efficiency on solving customers’ complaints…etc.

3- Learning to know the domain of the solution and how to absorb new information and requirements may be appeared

a. Why Learning is needed for analytic?

  • To know and be specialized on his domain like CRM applications.
  • Well-known of issues and the related problem may exist at this domain.
  • Can generate any solution based on this learning and known experience.

b. Example:

  • If the beneficiary has a telephony system which is needed to be integrated with the CRM application to facilitate the complaints taking and creation.
  • In this case the analytic should be well known of the product will be chosen to satisfy this requirement, and how this requirement will be implemented.
  • This will be based on his knowledge of this domain.

4- Problem-solving is a mental process; part of the larger problem process that includes problem finding and problem shaping and its related with the decision-making process.

a. Why problem-solving is needed for analytic?

  • He /she have to have this skill to understand what is the problem and to address down in analytical understandable why.
  • He/she should know many technicians in addressing this problem with its weaknesses and strengthens.
  • Need to convince the decision makers on the chosen solution based on problem finding and analysis.

b. Example:

  • After addressing the main pain and problem beneficiary is facing.
  • He/she needs to write them down, to know which the best way to identify the required application.

5- System thinking is the process of understanding how things influence one another within a whole

a. Why system thinking is needed for analytic?

  • Understanding of the system will be provided and how any change may affect the whole system functions.
  • Identifying how the system can be adapted to different changes.
  • To be well known how the system will be affected by any change and the system cannot absorb any changes.

b. Example:

  • Some readymade systems have restrictions in some changes, so the analytics should aware of these restrictions. These restrictions shall be notified and identified to decision makers.
  • Some readymade systems have a limitation on workflow design and customization, so the analytic should know of these limitations on the system how the system can handle a work round or special development or customizations to serve the requirements and needs.
  • The analytic should draw the system loops and links and how any change will effect on these loops with the identification of issues or risks may exist after applying these changes.