On our fourth assignment, we were told to identify and discussed three  different types of systems development models. But before anything else,  I would like to discuss first what is Systems Development Life Cycle  (SLDC) and how it is related with System Development Models.
On  the whole, Systems Development Life Cycle, or SDLC is very important in  project management. It is a conceptual model which is used as a guide  for preparing to planning until maintaining a project. The Systems  Development Life Cycle (SDLC) illustrates the different stages that are  involved to make an effective information system development project,  starting from the preliminary feasibility through the safeguarding of  the completed project.
Usually, an SDLC methodology goes after the following steps:
1.  Evaluating the existing or accessible system. Flaws and imperfections  are identified. All of these are done by interrogating the users of the  system as well as seeking advice from the support personnel.
2.  Defining the new and latest system requirements. Particularly, the  insufficiency in the existing system should be dealt with precise  proposals for progress and enhancement.
3. Designing what the  newly proposed system. The different plans are put down with reference  to the physical construction, hardware, operating systems, programming,  communications, and security issues.
4. Developing the new  system. Since it is said to be “new system”, the new components and  programs must be attained and installed, or if some components and  programs from the previous system can still be used, enhancing is very  appropriate in order to make the new system function well. Users of the  system must undergo trainings in its use, and all phase of routine must  be tested to avoid unnecessary delays of work and malfunctioning of the  system. If it is essential, at this stage, modification and correction  must be made.
5. The system is put into use. There are many  different ways to put the system into use. One of those is phasing in  the new system, considering the application or location until the old  system is slowly but surely interchanged. But to be more practical and  maybe cost effective, in some cases, shutting down the old system and  executing the new system at the same time is necessary.
6.  Comprehensively evaluation should be done by the time the new system is  up and operating for a moment. In order to avoid unnecessary  malfunctioning or break down of the system, maintenance must be kept up  thoroughly all the time.  Furthermore, users of the system should be  kept up-to-date pertaining to the most recent adjustments and processes.
What  were discussed above are the phases or stages of the Systems  Development Life Cycle. Basically, different authors have different  approach in identifying the SDLC methodology. But bottom line is, they  still have the same perceptions on how the SDLC methodology works.
The  next thing I will discuss is about the System Development Models and  how these models are related in Systems Development Life Cycle.
The Purpose of Systems Development Models
Primarily,  Systems development models are used to illustrate the different phases  in Systems Development Life Cycle (SDLC) such as planning, analysis,  design, development, implementation and maintenance of information  systems. Every phase is intended for a detailed function and motivation.  Some have the same aims and allocate various common responsibilities.  Essentially, developers make use of some kind of system development  model to direct the project’s life cycle to be able to guarantee  excellent and quality systems are build up concerning to the needs and  wants of the business organization.
Different Types of System Development Models
• SYNCHRONIZE-AND-STABILIZE (SYNC-AND-STABILIZE)
One  of the models in the Systems Development Life Cycle is the  Synchronize-and-stabilize (sometimes just called sync-and-stabilize). It  is an SDLC model in which teams work in parallel on individual  application modules, repeatedly coordinating their code with that of  other teams, and debugging (stabilizing) code on a regular basis all the  way through the development procedure. It is said that the  sync-and-stabilize model is more advantageous over the older waterfall,  which is rigorously chronological in nature. Because sync-and-stabilize  development allows parallelism, changes can be done at any point in the  process and for that, it can be flexible, and responding to the market  requirement changes is easier.
HISTORY
David Yoffie of  Harvard University and Michael Cusumano of MIT were the people who  created the Synchronize and Stabilize, also known as sync-and-stabilize  approach. Cusumano and Yoffie both studied commonalities between  processes Microsoft used in developing Internet Explorer and those  Netscape Communications Corp. used in developing Netscape Communicator.  As the researchers continue their study, among other similarities, they  found out both corporation put together all the project code nightly.  They both also brought together all the components and tried to  stabilize code before it was released. Their findings gave Cusumano and  Yoffie the idea to incorporate the successful common strategies of the  two projects into the sync-and-stabilize model.
According to Michael  Cusumano and Richard Selby, Microsoft Corporation is using the  sync-and-stabilize approach in their project development. It is also  said that without Synchronize and Stabilize structured approach in  Microsoft’s system development, Microsoft would almost certainly never  been able to propose, design, construct, produce and ship the products  it offers now and plans to offer in the future. 
Synchronize and Stabilize Model versus Sequential Model (Waterfall Model)
In Synchronize and Stabilize Model:
-  Product development and testing is done in parallel 
 
- Vision statement and evolving specification
 
- Features prioritized and built in 3 or 4 milestone sub projects
 
- Frequent synchronization (daily builds) and intermediate stabilization (milestone)
 
- “Fixed” release and ship dates and multiple release cycles
 
- Customer feedback continuous in the development process
 
- Product and process design so large teams work like small teams
 
In Sequential Model:
- Separate done in  sequence
 
- Complete “frozen” specification and detailed design before building the product
 
- Trying to build all pieces of a product simultaneously
 
- One late and large integration and system test phase at the projects end
 
- Aiming for feature and product “perfection” in each project cycle
 
- Feedback primarily after development as inputs for future projects
 
- Working primarily as a large group of individuals in a separate functional department
 
Base  on the things mentioned above about the synch-and-stabilize model and  sequential model, it is somehow clear that the Synchronize and Stabilize  Model is more flexible compared to Sequential Model in System  Development Life Cycle. Since synch-and-stabilize approach uses  parallelism, more works can be done and it is also a cost-effective  scheme compared to sequential approach which uses a chronological  method.
The Synchronize and Stabilize team process can be summarized as follows:
- Feature Oriented
 
- Synchronize (daily build) and Stabilize (fix errors at end of each  milestone, such that the required set of features is completely  functional)
 
- Product Managers develop a vision statement and feature list based on customer input
 
- Program Managers develop an initial functional specification based on the vision statement
 
- Program Managers create schedules and parallel feature teams of 3-8  developers and testers based on the functional specification
 
- Team  members can work autonomously, thus maintaining some creative freedom on  the project, provided their work can be combined successfully into the  daily builds
 
- Teams develop their own playful penalties for breaking  the daily build, which forces a certain amount of discipline amongst a  team, while at the same time remaining democratic
 
According to the  book “How Microsoft Builds” by Cusumano and Selby, there are phases  which is need to under go in synch-and-stabilize approach.
PLANNING PHASE (3-12 months, depending on size of project)
  Vision Statement – Product and program management use extensive  customer input to identify and priority-order product features.
  Specification - Based on vision statement, program management and  development group defines feature functionality, architectural issues  and components interdependencies.
 
 Schedule And Feature Team  Formation - Based on specification document, program management  coordinates schedule and arranges feature teams that each contain  approximately 1 program manager, 3 to 8 developers, and 3 to 8  testers(who work in parallel 1:1 with developers.) 
DEVELOPMENT PHASE (6-12 months)
Project  managers coordinate evolution of specification. Developers design,  code, and debug. Testers pair with developers for continuous testing.
 Subproject I: most crucial 1/3 features, milestone release I
 Subproject II: second 1/3 features, milestone release II
 Subproject III: final (least critical) 1/3 features, milestone release III --- code complete
STABILIZATION PHASE (3-8 MONTHS)
Program  managers coordinate OEMs and ISVs and monitor customer feedback.  Developers perform final debugging and code stabilization.
 Internal Testing - Testers recreate and isolate errors.
 External Testing - Thorough testing of complete product within the company.
  Release Preparation - Thorough testing of complete product outside the  company by “beta” sites such as OEMs, ISVs, and end users. Prepare final  release of “golden master” disk and documentation for manufacturing.
 THE SPIRAL LIFE CYCLE MODEL
Another  Systems Development Life Cycle Model is the Spiral Life Cycle Mode. The  spiral model, also known as the spiral lifecycle model, is one the  systems development lifecycle (SDLC) model used in the field information  technology (IT). It is that the spiral model is a combination of  prototyping model and waterfall model. In making of a large, expensive  and complicated project, spiral model is usually used.
Generally, the process in the spiral life cycle model can be illustrated as follows:
1.  The new system requirements are defined in as much detail as possible.  Primarily, this phase requires interrogating a number of users in behalf  of all the internal and external users as well as the other features of  the existing system.
2.  Creating an initial drawing or design for the newly proposed system.
3.  A first example of the newly proposed system is built from the initial  design. This is generally a scaled-down system, and symbolizes an  estimation of the distinctiveness and characteristics of the final  product.
4. A second sample is developed by a fourfold procedure: 
(1) Evaluate - assessing the first example in terms of its potencies, drawbacks, and threats;
(2) Define - classifying the constraints of the second sample;
(3) Plan and Design - setting up and designing the second sample;
(4) Construct and Test - creating and examining the second example.
5.  Fundamentally, the customer has the choice or the option to abort the  whole project if it will cause an immense risk. For instance, the  development cost is beyond the budget of the customer, miscalculation of  the operating cost, or any other factor that could result into  dissatisfaction in the final product or output, considering the  customer’s judgment. For that, it will lead to some bad and negative  feedbacks against the company if it happens that the developers did not  meet the customer’s wants and needs that force them to back out.
6.  The existing prototype is evaluated in the same manner as was the  previous prototype, and, if necessary, another prototype is developed  from it according to the fourfold procedure outlined above.
7. Since  it is called as the spiral model, the procedures are iterated, from the  beginning through the end, until the customer will get satisfied, that  the developed sample illustrated the final product desired by the  customer.
8. After the processes that the prototype undergone, the final system can now be assembled
9.  Thorough evaluation and examination is necessary to the final system.  Primarily, regular maintenance should be carried out to prevent  comprehensive fiasco as well as to minimize delays and downtime.
• Objectives: functionality, performance, hardware/software interface, serious achievement issue, etc.
• Alternatives: construct, recycle, acquire, delegate, etc.
• Constraints: expenditure, timetable, interface, etc. 
• Study alternatives which is relative to objectives and constraints
• Identify risks – it defines the lack of experience, new technology, tight schedules, poor process, etc.
• Resolve risks – it describes the evaluation if money could be lost by continuing system development
The following strengths and weaknesses as well as when do we use spiral model is according to Yogi Berra.
Spiral Model Strengths
• Provides early indication of undefeatable risks, without much cost
• Users see the system early because of rapid prototyping tools
• Critical high-risk functions are developed first
• The design does not have to be perfect
• Users can be closely tied to all lifecycle steps
• Early and frequent feedback from users
• Cumulative costs assessed frequently
Spiral Model Weaknesses
•  Time spent for evaluating risks too large for small or low-risk  projects. This means that spiral model is very time consuming. For that,  delays could probably occur.
• Time spent planning, resetting  objectives, doing risk analysis and prototyping may be excessive. This  may lead to downtime risk. Also, it will cause to outbound the budget  and time given.
• The model is complex. Spiral model is complicated  because you cannot go into the next phase unless you perfectly done the  previous stage.
• Risk assessment expertise is required. Every now  and then, it is very important that the process underlying the Spiral  model must always be evaluated in order to avoid malfunctioning of the  system.
• Spiral may continue for an indefinite period
• Developers must be reassigned during non-development phase activities
•  May be hard to define objective, verifiable milestones that indicate  readiness to proceed through the next iteration. Basically, the  iteration process of the spiral model may lead to some risks that could  cause difficulty in doing the system as required in the objective.
When to use Spiral Model
 
• When creation of a prototype is appropriate
• When costs and risk evaluation is important
• For medium to high-risk projects
• Long-term project commitment unwise because of potential changes to economic priorities
• Users are unsure of their needs
• Requirements are complex
• New product line
• Significant changes are expected (research and exploration)
The following strengths and weaknesses as well as when do we use Rapid Application Development Model is according to Yogi Berra.
RAPID APPLICATION DEVELOPMENT MODEL (RAD)
Some  of us are familiar with the RAD or the Rapid Application Development,  which is an idea that the product can be developed and produced more  rapidly and of great and higher quality through
• Gathering  requirements using workshops or focus groups. It means that method of  gathering information is via joining workshops or any scheme where there  is so-called “groups” of people.
• Prototyping and early, reiterative user testing of designs
•  The re-use of software components. Recycling or reusing the old  components of the previous software or system is part of the RAD model  activity.
• A rigidly paced schedule that defers design improvements to the next product version
• Less formality in reviews and other team communication
Further Discussion on Rapid Application Development
• Requirements planning phase (a workshop utilizing structured discussion of business problems)
• User description phase – automated tools capture information from users
• Construction phase – productivity tools, such as code generators, screen generators, etc. inside a time-box. (“Do until done”)
• Cutover phase -- installation of the system, user acceptance testing and user training
Rapid Application Development Model Strengths
• Reduced cycle time and improved productivity with fewer people means lower costs
• Time-box approach mitigates cost and schedule risk
• Customer involved throughout the complete cycle minimizes risk of not achieving customer satisfaction and business needs 
• Focus moves from documentation to code (WYSIWYG).
• Uses modeling concepts to capture information about business, data, and processes.
Rapid Application Development Model Weaknesses
• Accelerated development process must give quick responses to the user
• Risk of never achieving closure
• Hard to use with legacy systems
• Requires a system that can be modularized
• Developers and customers must be committed to rapid-fire activities in an abbreviated time frame.
When to use Rapid Application Development Model
Experienced programmers are members of the team 
RAD  is a fast paced SDLC. Developers will be using different tools in order  to achieve the goal of building software fast. Although it does not  need much coding because of the given set of tools, only experienced  programmers could work on these tools. If anything happens to the  software, only experienced developers could dig deep into the problem  even though they did not encode the program.
Expediting application development 
For  whatever reasons, developers are hard pressed to build applications  fast. Using sets of tools, different software could be created in no  time. The participation of the users will be greater since they will  work in double time to check if the software is up with the standards.
Quick solution for a business problem 
The  tools used in developing software have steps or processes that could  cater to any business need. If a business needs an answer to their  nagging question of productivity and better reporting, RAD could create  the software based on the business need. There are lots of software  which already have the functions needed by any businesses.
Objective Oriented and Highly Critical Users 
Everything  starts and ends with the objective. Users have to use the software to  achieve the intended goal faster or easier. Different user interface and  workflows are based on the realization of the objective. RAD makes the  developers focus more on answering the need before creating something on  their own. The set of tools could be used to answer the problem. Even  the design of the user interface could be influenced by users. 
Rapid Application Development Model Phases
Like  most SDLCs, RAD also has a step by step process. But unlike other  SDLCs, the process of developing a program under RAD is faster. Relying  on sets of tools for software development, RAD will no longer have to  force us to dig deeper in our coding techniques where we burn an hour or  two just to complete a single command.
There are only three phases in Rapid Application Development: 
• Planning of Requirements
• Design Workshop 
• Implementation.
1. Planning of Requirements 
In  this stage, developers meet with the project director or manager to  generate definite objectives from the preferred program. Primarily,  different strategies for development as well as the tools that will be  used for development are also put up in a specific project. For business  organizations, this stage is very necessary since the projected answer  to business concerns will be laid out for the first time. Everything in  this stage is hypothetical but it will be working together with the  clients or businesses that need a software to answer their business  need.
2. Design Workshop
  
When the plans have been laid out;  it is time to start building on the plans. Using the agreed tools and  interfaces, developers will start to create different programs based on  the business need wants. RAD needs a lot of reaction as it also requires  a lot of software iteration. Since RAD already has the set of tools to  produce the program, developers will only need to refine the user  interface. As tools make it easier to create the real prototypes, users  will be able to work on a sample. Comment and implications are  appreciated as this will be the bases on of the supplementary software  procedures and instructions. Slowly developers and users can come up  with one prototype that is almost ready for public use.
3. Implementation Phase
  
After  further refinement, the software will finally be introduced to the  business or to their intended users. Even though it has gone through  hundreds or even thousands of testing and critique, the stage wherein  the software is implemented in a larger scale is different hence new  suggestions and bugs should be expected from different users. Developers  have to remember these inputs and use it for the next software update.  Developers have to be sure that the software update will be correct so  that users will abandon the older version. This will prevent the system  from malfunctioning since only one version is used.