Choosing the right Software development life cycle model

Featured

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

Featured

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/

Rejection Thearpy

I watched one of the Ted talks which I liked very much and I wanted to share with you. Whatever your age, your social status or your education level, I think most of us are facing different ways of rejection across their entire day.

I think this experiment may help you to heal and overcome rejection and may change your life like it did for Jia Jiang

Advertisements

Quality Function Deployment

Introduction

Quality Function Deployment was developed by Yoji Akao in Japan in 1966. By 1972 the power of the approach had been well demonstrated at the Mitsubishi Heavy Industries Kobe Shipyard [1]and in 1978 the first book on the subject was published in Japanese and then later translated into English in 1994. [2]

The QFD methodology can be used for both tangible products and non-tangible services, including manufactured goods, service industry, software products, IT projects, business process development, government, healthcare, environmental initiatives, and many other applications.

What is Quality Function Deployment QFD

Definition

Quality function deployment (QFD) is a “method to transform user demands into design quality, to deploy the functions forming quality, and to deploy methods for achieving the design quality into subsystems and component parts, and ultimately to specific elements of the manufacturing process.” as described by Dr. Yoji Akao, who originally developed QFD

Moreover, Quality Function Deployment is a systematic approach to design based on a close awareness of customer desires, coupled with the integration of corporate functional groups. It consists in translating customer desires (for example, the ease of writing for a pen) into design characteristics (pen ink viscosity, pressure on ball-point) for each stage of the product development.  [1] [2]

Goals

There are 3 main goals in implementing QFD [1]:

  1. Prioritize spoken and unspoken customer wants and needs.
  2. Translate these needs into technical characteristics and specifications.
  3. Build and deliver a quality product or service by focusing everybody toward customer

Usage of QFD

Since its introduction, Quality Function Deployment has helped to transform the way many companies:

  • Plan new products
  • Design product requirements
  • Determine process characteristics
  • Control the manufacturing process
  • Document already existing product specifications
  • Reduce time to market
  • Reduce product development time by 50%

The Quality Function Deployment Process

  • Identify the Customers
  • Determine Customer Requirements/Constraints
  • Prioritize each requirement
  • Competitive Benchmarking
  • Translate Customer Requirements into Measurable Engineering specifications
  • Set Target values for each Engineering Specification

QFD uses some principles from Concurrent Engineering in that cross-functional teams are involved in all phases of product development.  Each of the four phases in a QFD process uses a matrix to translate customer requirements from initial planning stages through production control.

Each phase, or matrix, represents a specific aspect of the product’s requirements. Relationships between elements are evaluated for each phase.  Only the most important aspects of each phase are deployed into the next matrix [1].

  • Phase 1, Product Planning: mainly it is building the House of Quality. Initiated by the marketing Phase 1 is also called The House of Quality. Many organizations only get through this phase of a QFD process. Phase 1 documents customer requirements, warranty data, competitive opportunities, product measurements, competing for product measures, and the technical ability of the organization to meet each customer requirement. Getting good data from the customer in Phase 1 is critical to the success of the entire QFD process.
  • Phase 2, Product Design: This phase 2 is initiated by the engineering department. Product design requires creativity and innovative team ideas. Product concepts (goals and objectives) are created during this phase and part specifications are documented. Parts that are determined to be most important to meeting customer needs are then deployed into process planning, or the next Phase 3.
  • Phase 3, Process Planning: Process planning comes next and is owned by manufacturing engineering. During process planning, manufacturing processes are flowcharts and process parameters (or target values) are documented.
  • Phase 4, Process Control: And finally, in production planning, performance indicators are created to monitor the production process, maintenance schedules, and skills training for operators. Also, in this phase decisions are made as to which process poses the most risk and controls are put in place to prevent   The quality assurance department in concert with manufacturing leads Phase 4.

picture1

Figure illustrates QFD phases

QFD Tools

The House of Quality

House of Quality is a diagram [3], resembling a house, used for defining the relationship between customer desires and the firm/product capabilities. It is a part of the Quality Function Deployment (QFD) and it utilizes a planning matrix to relate what the customer wants to how a firm (that produces the products) is going to meet those wants.

House of Quality appeared in 1972 in the design of an oil tanker by Mitsubishi Heavy Industries. Akao has reiterated numerous times that a House of Quality is not QFD, it is just an example of one tool.

picture2

Figure illustrates house of quality matrix

Decision-matrix method

Invented by Stuart Pugh the decision-matrix method [4], also Pugh method, Pugh Concept Selection is a quantitative technique used to rank the multi-dimensional options of an option set. It is frequently used in engineering for making design decisions but can also be used to rank investment options, vendor options, product options or any other set of multidimensional entities.

picture3

Figure illustrates Decision matrix

Modular Function Deployment

Modular Function Deployment [5]uses QFD to establish customer requirements and to identify important design requirements with a special emphasis on modularity.

Example of QFD using house of quality

This particular QFD example was created for an imaginary Chocolate Chip Cookie Manufacturer (a.k.a. a “Bakery”). The example maps customer requirements to parts/materials to be purchased in order to meet and/or exceed the customer expectations. (The prioritization comes into play when assuming the limited availability of funds for making purchases.) [6]

The example can be accessible using URL: http://www.qfdonline.com/qfd-tutorials/house-of-quality-qfd-example/

This slideshow requires JavaScript.

Findings of the example:

  • The QFD ends with HOQ #3. This is due primarily to the fact that all of its parts/materials are purchased rather than manufactured. Had a different product been chosen, a 4th HOQ could have been added that mapped parts/materials attribute to processes and/or initiatives for manufacturing the parts that met those specifications.
  • The “Weight” requirement (column #4) in HOQ #1 may not be a valuable requirement. You can tell that this requirement is suspect by the fact that its “Max Relationship Value in Column” is only 1. (Note: the template auto-highlights warning values).
  • The “Weight” requirement (row #4) in HOQ #2 is not being addressed. Similarly, “Tensile Ultimate Strength” (Row #3) and “Size (diameter)” (Row #5) are not being substantially addressed. (Note their “Max Relationship Value in Row” values).
  • HOQ #3 has examples of both of the issues listed in #1 & 2 above.

 

References

[1] Sullivan, 1986.

[2] Mizuno and Akao, 1994.

[3] I. R. Institute, “Quality Function Deployment,” Creative Industries Research Institute.

[4] Wikipedia, “Quality function deployment,” Wikipedia, [Online]. Available: http://en.wikipedia.org/wiki/Quality_function_deployment. [Accessed 7 1 2012].

[5] Wikipedia, “House of Quality,” Wikipedia, [Online]. Available: http://en.wikipedia.org/wiki/House_of_Quality. [Accessed 1 7 2012].

[6] Wikipedia, “Decision matrix method,” Wikipedia, [Online]. Available: http://en.wikipedia.org/wiki/Decision-matrix_method. [Accessed 1 7 2012].

[7] Wikipedia, “Modular Function Deployment,” Wikipedia, [Online]. Available: http://en.wikipedia.org/wiki/Modular_Function_Deployment. [Accessed 1 7 2012].

[8] Q. Online, “House of Quality (QFD) Example,” QFD Online, [Online]. Available: http://www.qfdonline.com/qfd-tutorials/house-of-quality-qfd-example/. [Accessed 4 7 2012].

 

Countries and Industries array

Many of software developers actually need some standard ready made lists to be used in their applications, some of these lists are Industries and countries.

I added here an array list of standard industries categories and an array list of countries names.

I hope this will help 🙂

Industries

[“Agriculture, forestry and fishing”, “Mining and quarrying”, “Manufacturing”, “Electricity, gas, steam and air conditioning supply”, “Water supply; sewerage, waste management and remediation activities”, “Construction”, “Wholesale and retail trade; repair of motor vehicles and motorcycles”, “Transportation and storage”, “Accommodation and food service activities”, “Information and communication”, “Financial and insurance activities”, “Real estate activities”, “Professional, scientific and technical activities”, “Administrative and support service activities”, “Public administration and defence; compulsory social security”, “Education”, “Human health and social work activities”, “Arts, entertainment and recreation”, “Other service activities”, “Activities of households as employers; undifferentiated goods- and services-producing activities of households for own use”, “Activities of extraterritorial organizations and bodies”]

Countries

[“Afghanistan”,”Albania”,”Algeria”, “American Samoa”, “Andorra”, “Angola”, “Anguilla”, “Antarctica”, “Antigua and Barbuda”, “Argentina”, “Armenia”, “Aruba”, “Australia”, “Austria”, “Azerbaijan”, “Bahamas”, “Bahrain”, “Bangladesh”, “Barbados”, “Belarus”, “Belgium”, “Belize”, “Benin”, “Bermuda”, “Bhutan”, “Bolivia”, “Bosnia and Herzegovina”, “Botswana”, “Bouvet Island”, “Brazil”, “British Antarctic Territory”, “British Indian Ocean Territory”, “British Virgin Islands”, “Brunei”, “Bulgaria”, “Burkina Faso”, “Burundi”, “Cambodia”, “Cameroon”,  “Canada”, “Canton and Enderbury Islands”, “Cape Verde”, “Cayman Islands”, “Central African Republic”, “Chad”, “Chile”, “China”, “Christmas Island”, “Cocos (Keeling) Islands”, “Colombia”, “Comoros”, “Congo – Brazzaville”, “Congo – Kinshasa”, “Cook Islands”, “Costa Rica”, “Croatia”, “Cuba”, “Cyprus”, “Czech Republic”, “Côte d’Ivoire”, “Denmark”, “Djibouti”, “Dominica”, “Dominican Republic”, “Dronning Maud Land”, “East Germany”, “Ecuador”, “Egypt”, “El Salvador”, “Equatorial Guinea”, “Eritrea”, “Estonia”, “Ethiopia”, “Falkland Islands”, “Faroe Islands”, “Fiji”, “Finland”, “France”, “French Guiana”, “French Polynesia”, “French Southern Territories”, “French Southern and Antarctic Territories”, “Gabon”, “Gambia”, “Georgia”, “Germany”, “Ghana”, “Gibraltar”, “Greece”, “Greenland”, “Grenada”, “Guadeloupe”, “Guam”, “Guatemala”, “Guernsey”, “Guinea”, “Guinea-Bissau”, “Guyana”, “Haiti”, “Heard Island and McDonald Islands”, “Honduras”, “Hong Kong SAR China”, “Hungary”, “Iceland”, “India”, “Indonesia”, “Iran”, “Iraq”, “Ireland”, “Isle of Man”, “Israel”, “Italy”, “Jamaica”, “Japan”, “Jersey”, “Johnston Island”, “Jordan”, “Kazakhstan”, “Kenya”, “Kiribati”, “Kuwait”, “Kyrgyzstan”, “Laos”, “Latvia”, “Lebanon”, “Lesotho”, “Liberia”, “Libya”, “Liechtenstein”, “Lithuania”, “Luxembourg”, “Macau SAR China”, “Macedonia”, “Madagascar”, “Malawi”, “Malaysia”, “Maldives”, “Mali”, “Malta”, “Marshall Islands”, “Martinique”, “Mauritania”, “Mauritius”, “Mayotte”, “Metropolitan France”, “Mexico”, “Micronesia”, “Midway Islands”, “Moldova”, “Monaco”, “Mongolia”, “Montenegro”, “Montserrat”, “Morocco”, “Mozambique”, “Myanmar (Burma)”, “Namibia”, “Nauru”, “Nepal”, “Netherlands”, “Netherlands Antilles”, “Neutral Zone”, “New Caledonia”, “New Zealand”, “Nicaragua”, “Niger”, “Nigeria”, “Niue”, “Norfolk Island”, “North Korea”, “North Vietnam”, “Northern Mariana Islands”, “Norway”, “Oman”, “Pacific Islands Trust Territory”, “Pakistan”, “Palau”, “Palestine”, “Panama”, “Panama Canal Zone”, “Papua New Guinea”, “Paraguay”, “People’s Democratic Republic of Yemen”, “Peru”, “Philippines”, “Pitcairn Islands”, “Poland”, “Portugal”, “Puerto Rico”, “Qatar”, “Romania”, “Russia”, “Rwanda”, “Réunion”, “Saint Barthélemy”, “Saint Helena”, “Saint Kitts and Nevis”, “Saint Lucia”, “Saint Martin”, “Saint Pierre and Miquelon”, “Saint Vincent and the Grenadines”, “Samoa”, “San Marino”, “Saudi Arabia”, “Senegal”, “Serbia”, “Serbia and Montenegro”, “Seychelles”, “Sierra Leone”, “Singapore”, “Slovakia”, “Slovenia”, “Solomon Islands”, “Somalia”, “South Africa”, “South Georgia and the South Sandwich Islands”, “South Korea”, “Spain”, “Sri Lanka”, “Sudan”, “Suriname”, “Svalbard and Jan Mayen”, “Swaziland”, “Sweden”, “Switzerland”, “Syria”, “São Tomé and Príncipe”, “Taiwan”, “Tajikistan”, “Tanzania”, “Thailand”, “Timor-Leste”, “Togo”, “Tokelau”, “Tonga”, “Trinidad and Tobago”, “Tunisia”, “Turkey”, “Turkmenistan”, “Turks and Caicos Islands”, “Tuvalu”, “U.S. Minor Outlying Islands”, “U.S. Miscellaneous Pacific Islands”, “U.S. Virgin Islands”, “Uganda”, “Ukraine”, “Union of Soviet Socialist Republics”, “United Arab Emirates”, “United Kingdom”, “United States”, “Unknown or Invalid Region”, “Uruguay”, “Uzbekistan”, “Vanuatu”, “Vatican City”, “Venezuela”, “Vietnam”, “Wake Island”, “Wallis and Futuna”, “Western Sahara”, “Yemen”, “Zambia”, “Zimbabwe”, “Åland Islands”]

References

Countries list

Industries list

What Every Junior Rails Developer Should Know

Good Summary of Rails Developer capabilities

Rails Mama

Not long ago, I shared a link to an outstanding video called What Every Junior Developer Should Know.

That talk was geared toward Front End Developers, but most of the content overlapped with the subjects that Back End Developers should know.

I happened to come across a diagram that my instructor from The Iron Yard shared on the first day of class.

When I first saw it, I was familiar with only about half of the terms on the diagram, but coming back to it after 6 months as a Junior Developer, I feel that it is a great summary of the tools and topics that I use every day.

As one reader pointed out, although the diagram says “Ruby on Rails Competencies”, it is actually a diagram of the skills required to become a Full Stack Developer. Many Ruby on Rails developer roles will never touch some of…

View original post 331 more words

Most used rails commands with database

This is a new post for ruby on rails developers, it is about most used databases commands you will need during development and testing

  • rake db:migrate runs (pending) migrations that have not run yet.
  • rake db:create creates the database
  • rake db:drop deletes the database
  • rake db:seed loads the seed data from db/seeds.rb
  • rake db:schema:load creates tables and columns within the (existing) database following schema.rb
  • rake db:setup does db:create, db:schema:load, db:seed
  • rake db:reset drops and recreates the database from db/schema.rb for the current environment and loads the seeds
  • rake db:test:prepare prepares the testing database to match development database, the data is empty
  • rake db:seed RAILS_ENV=test loads seed data from db/seed.rb into testing environment

Continue reading

Need your opinion?