You are on page 1of 11

The WINWIN Spiral Model

The spiral model suggests a framework activity that addresses customer communication.
The objective of this activity is to elicit project requirements from the customer.
In an ideal context, the developer simply asks the customer what is required and
the customer provides sufficient detail to proceed. Unfortunately, this rarely happens.
In reality, the customer and the developer enter into a process of negotiation,
where the customer may be asked to balance functionality,
performance, and other product or system characteristics against cost and
time to market.

The best negotiations strive for a “win-win” result. That is, the customer wins by
getting the system or product that satisfies the majority of the customer’s needs and
the developer wins by working to realistic and achievable budgets and deadlines.

Boehm’s WINWIN spiral model defines a set of negotiation activities at


the beginning of each pass around the spiral. Rather than a single customer communication
activity, the following activities are defined:
1. Identification of the system or subsystem’s key “stakeholders.”
2. Determination of the stakeholders’ “win conditions.”
3. Negotiation of the stakeholders’ win conditions to reconcile them into a set of
win-win conditions for all concerned (including the software project team).
Successful completion of these initial steps achieves a win-win result, which becomes
the key criterion for proceeding to software and system definition.

In addition to the emphasis placed on early negotiation, the WINWIN spiral model
introduces three process milestones, called anchor points , that help establish
the completion of one cycle around the spiral and provide decision milestones
before the software project proceeds.

In essence, the anchor points represent three different views of progress as the
project traverses the spiral. The first anchor point, life cycle objectives (LCO), defines
a set of objectives for each major software engineering activity. For example, as part
of LCO, a set of objectives establishes the definition of top-level system/product
requirements. The second anchor point, life cycle architecture (LCA), establishes objectives
that must be met as the system and software architecture is defined. For example,
as part of LCA, the software project team must demonstrate that it has evaluated
the applicability of off-the-shelf and reusable software components and considered
their impact on architectural decisions. Initial operational capability (IOC) is the third
anchor point and represents a set of objectives associated with the preparation of the
software for installation/distribution, site preparation prior to installation, and assistance
required by all parties that will use or support the software.

Introduction
The WinWin Spiral Model uses Theory W (win-win) to develop software and system
requirements, and architectural solutions, as win conditions negotiated among a project's
stakeholders (user, customer, developer, maintainer, interfacer, etc.). The WinWin negotiation
tool is a Unix workstation-based groupware support system that allows stakeholders to enter win
conditions, explore their interactions, and negotiate mutual agreements on the specifics of the
new project being contracted. The model and support system also feature a central role for
quantitative tradeoff analysis tools such as COCOMO®.

he Definition of RAD

To fully understand the benefits of RAD, it is essential to know what the meaning of RAD or
Rapid Application Development is. This is a type of software development that does not spend a
lot of time or resources on planning and instead uses a method of prototyping to introduce the
product.
A prototype is a version of the product that mimics what that actual product will look like, and it
can complete the same functions. This allows for a faster output of the element being created.

Without an abundance of preplanning in the development stage, the prototype can easily be
altered to quickly make changes throughout the testing stages. The team of experts involved in
the testing of the app prototype including the developers, customer service representatives, and
IT professionals work together in a forward motion to get the best version possible of the
prototype.

Then, a final product can be introduced to the customer much more quickly. During the creation
of a prototype for any product, to save time and money, it is essential to create one that can be
reused for fast changes.

The 5 Essential Stages of a RAD Model

There are several stages to go through when developing a RAD model including analysis,
designing, building, and the final testing phase. These steps can be divided to make them more
easily understandable and achievable. The following describes the steps included in all RAD
models:

Stage 1: Business Modeling

This step in the RAD model takes information gathered through many business related sources.
The analysis takes all the pertinent information from the company. This info is then combined
into a useful description of how the information can be used, when it is processed, and what is
making this specific information successful for the industry.

Stage 2: Data Modeling

During the Data Modeling stage, all the information gathered during the Business Modeling
phase is analyzed. Through the analysis, the information is grouped together into different
groups that can be useful to the company. The quality of every group of information is carefully
examined and given an accurate description. A relationship between these groups and their
usefulness as defined in the Business Modeling step is also established during this phase of the
RAD model.

Stage 3: Process Modeling

The Process Modeling phase is the step in the RAD model procedure where all the groups of
information gathered during the Data Modeling step are converted into the required usable
information. During the Process Modeling stage changes and optimizations can be done and the
sets of data can be further defined. Any descriptions for adding, removing, or changing the data
objects are also created during this phase.

Stage 4: Application Generation


The Application Generation step is when all the information gathered is coded, and the system
that is going to be used to create the prototype is built. The data models created are turned into
actual prototypes that can be tested in the next step.

Stage 5: Testing and Turnover

The Testing and Turnover stage allows for a reduced time in the overall testing of the prototypes
created. Every model is tested individually so that components can quickly be identified and
switched in order to create the most effective product. By this point in the RAD model, most of
the components have already been examined, so major problems with the prototype are not
likely.

How to Apply the RAD Model

As long as the product being worked on can be easily divided into separate units, the RAD model
can easily be implemented. If the division is not possible, the RAD model may not work. These
are a few of the situations where a RAD model may be successful:

 When the system can be modularized and then distributed in a divided form;
 When there are many designers available for the modeling
 When there is money in the budget for using automated code generating tools;
 When there is an expert available to decide which model should be used (RAD or SDLC);
 When a prototype is expected by the customer within two to three months;
 When changes to the product are expected throughout the development process.

Knowing When to Use a RAD Model

RAD models can be very successful when a quick delivery of a product is needed for a customer.
It is also the best model to choose when there are going to be changes made to the prototype
throughout the process before the final product is completed.

It is important to know that the RAD model is only effective when there are plenty of
knowledgeable developers and engineers on hand prepared to work on the progress of the
product. The customer must also remain committed to the process and the schedule in place for
the completion of the model. When either of these two components are not available, the RAD
formula can fail.

Definition of a System and Its Parts

system is an interrelated set of business procedures (or components) used within one business
unit, working together for some purpose. For example, a system in the payroll department keeps
track of checks, whereas an inventory system keeps track of supplies. The two systems are
separate. A system has nine characteristics. A detailed explanation of each characteristic follows,
system exists within a larger world, an environment. A boundary separates the system from its
environment. The system takes input from outside, processes it, and sends the resulting output
back to its environment.

Characteristics and types of system

 Organization
 structure and order
 Example: Hierarchical organization in a company.
 Computer system: organization of various components like input devices, output devices,
CPU and storage devices
 Interaction
 Between sub systems or the components
 Example: the main memory holds the data that has to be operated by the ALU.
 Interdependence
 Component linkage
 Component dependence
 Integration
 How subsystems are tied together to achieve the system objective
 Central Objective
 Should be known in early phases of analysis

Important System Concepts

Systems analysts need to know several other important systems concepts:

1. Decomposition
2. Modularity
3. Coupling
4. Cohesion

Decomposition

is the process of breaking down a system into its smaller components. These components may
themselves be systems (subsystems) and can be broken down into their components as well.
Decomposing a system also allows us to focus on one particular part of a system, making it
easier to think of how to modify that one part independently of the entire system. Decomposition
is a technique that allows the systems analyst to:

1. Break a system into small, manageable, and understandable subsystems


2. Focus attention on one area (subsystem) at a time, without interference from other areas.
Concentrate on the part of the system pertinent to a particular group of users, without
confusing users with unnecessary details
3. Build different parts of the system at independent times and have the help of different analysts

Modularity
is a direct result of decomposition. It refers to dividing a system into chunks or modules of a
relatively uniform size. Modules can represent a system simply, making it easier to understand
and easier to redesign and rebuild. For example, each of the separate subsystem modules for the
MP3 player shows how decomposition makes it easier to understand the overall system.

Coupling

means that subsystems are dependent on each other. Subsystems should be as independent as
possible. If one subsystem fails and other subsystems are highly dependent on it, the others will
either fail themselves or have problems functioning. components of a portable MP3 player are
tightly coupled. The best example is the control system, made up of the printed circuit board and
its chips. Every function the MP3 player can perform is enabled by the board and the chips. A
failure in one part of the circuit board would typically lead to replacing the entire board rather
than attempting to isolate the problem on the board and fix it. Even though repairing a circuit
board in an MP3 player is certainly possible, it is typically not cost-effective; the cost of the
labor expended to diagnose and fix the problem may be worth more than the value of the circuit
board itself. In a home stereo system, the components are loosely coupled because the
subsystems, such as the speakers, the amplifier, the receiver, and the CD player, are all
physically separate and function independently. If the amplifier in a home stereo system fails,
only the amplifier needs to be repaired.

Cohesion

is the extent to which a subsystem performs a single function. In the MP3 player example,
supplying power is a single function. This brief discussion of systems should better prepare you
to think about computer-based information systems and how they are built. Many of the same
principles that apply to systems in general apply to information systems as well. In the next
section, we review how the information systems development process and the tools that have
supported it have changed over the decades.

What is a computer-based information system?


First of all information system should be analysed as a set of entities which is composed of
information resources (stored data about various facts), information needs of users (people,
employees, managers), means of communication (information transfer and sharing), functions
and processes (information management, analysis, storage, retrieval, etc) and of course
technology supporting this processes (computers, phones, mail, paper, etc.).

Information systems are used mainly for identification, diagnostics, and problem solving and
decision making.

Information systems functioned and successfully implemented their goals also in the era before
the creation of computers. This is evidenced by the achievements of our civilization and the
development of technology, science and culture.
The use of computers as a tool supporting the functioning of the information system has allowed
to drastically increase the speed of implemented functions. In particular, information
transmission, analysis, processing.

Types of Computer Information Systems


There are four basic types of computer-based information
Systems:
a. Transaction Processing Systems (TPS)
1. Record day-to-day transactions such as customer
orders, bills, inventory.
2. Helps supervisors by generating databases needed for
other information Systems.
3. Examples: recording customer orders, bills, inventory
levels, and production output.

b. Management Information Systems (MIS)


1. Summarizes the detailed data of the transaction
processing system.
2. Produces standard reports for middle-level managers.
3. Examples: Production schedule and budget
summaries.

c. Decision Support Systems (DSS)


1. Draws on the detailed data of the transaction
processing system.
2. Provides a flexible tool for middle-level managers for
analysis.
3. Examples: Analyzing the effects of events such as
strikes, rising interest rates, etc.

d. Executive Support Systems (ESS)


1. Presents information in a very highly summarized
form.
2. Combines the internal data from TPS and MIS with
external data.
3. Helps top-level managers oversee operations and
develop strategic plans.
4. Examples: Introducing new products, starting a
company wide cost control program, etc.
Examples:

Transaction Processing:
When you purchase a book from an online bookstore, you exchange money (in the form of
credit) for a book. If your credit is good, a series of related operations ensures that you get the
book and the bookstore gets your money. However, if a single operation in the series fails during
the exchange, the entire exchange fails. You do not get the book and the bookstore does not get
your money.

The technology responsible for making the exchange balanced and predictable is called
transaction processing. Transactions ensure that data-oriented resources are not permanently
updated unless all operations within the transactional unit complete successfully. By combining a
set of related operations into a unit that either completely succeeds or completely fails, you can
simplify error recovery and make your application more reliable.

Transaction processing systems consist of computer hardware and software hosting a


transaction-oriented application that performs the routine transactions necessary to conduct
business. Examples include systems that manage sales order entry, airline reservations, payroll,
employee records, manufacturing, and shipping.

This section provides both general information on transaction processing, and specific
information on how to write transactional applications and resource managers using the
Microsoft .NET Framework.

Management Information Systems (MIS)


Management Information System, commonly referred to as MIS is a phrase consisting of three
words: management, information and systems. Looking at these three words, it’s easy to define
Management Information Systems as systems that provide information to management.
That is the simple definition of MIS that generally sums up what a Management Information
System is, and what it should do. However, its role and impact on the smooth operation of a
company can never be overemphasized. That is the reason why every successful company makes
use of these systems in one way or another.

The reason why Management Information Systems are very important in the day to day
operation of companies is because these systems work with people, organizations, technology
and relationships among the people and organizations affecting the company.

This means that when properly implemented, Management Information Systems will help
achieve a high level of efficiency in a company’s management operations.

Decision Support Systems (DSS)


for example, a national on-line book seller wants to begin selling its products internationally but
first needs to determine if that will be a wise business decision. The vendor can use a DSS to
gather information from its own resources (using a tool such as OLAP) to determine if the
company has the ability or potential ability to expand its business and also from external
resources, such as industry data, to determine if there is indeed a demand to meet. The DSS will
collect and analyze the data and then present it in a way that can be interpreted by humans. Some
decision support systems come very close to acting as artificial intelligence agents.

Executive Support Systems (ESS)


An ESS facilitates access to organized enterprise and departmental data while providing analysis
utilities and performance assessment predictors. An ESS provides potential outcomes and quick
statistical data that are applied to decision making processes.

Ultimately, ESS reporting tools and results are contingent on developer and industry application.
For example, Cambridge Systematics, Inc. built an ESS that is integrated with the investment
plan for the Ministry of Transportation in Canada. This ESS version includes features that
contrast the version used by Medical Information Technology, Inc. (MEDITECH).

Top 5 Programming Languages For Developing Linux Desktop


Applications

Linux is fast becoming popular, especially with the declining use of Windows, (I stand to be
corrected if that is not true) and to promote Linux and fight towards achieving the desired use of
Linux on desktop, Linux programmers and software developers are putting in more effort and
hard work in developing desktop applications that will match applications on Windows and Mac
OS X desktops.
This is true, especially with countless number of Linux distributions that are focused on making
it easy for new Linux users (previously using Windows or Mac OS X) to easily adapt to the
operating system.

There are plenty of programming languages out there with new ones emerging every now and
then, but as an upcoming Linux software developer focused on desktop applications, one needs
to understand what it takes to build reliable, efficient, flexible, extensible, user-friendly and
above all secure applications. And one of the first things one must know is to understand the
appropriate language for the different software development.

Below, is a list of the best programming languages that one can use to develop desktop
applications in Linux, the list is not based on the level of importance as all the languages here are
good to go with and they are also cross-platform, meaning you can make the same applications
work on other operating systems.

1. C/C++

C++ is considered a better choice for developing software due to its high performance, but it
may not be friendly to beginners because of its high demands for precision in areas such as
memory management. It is also widely used for developing Windows software but has a sharp
learning curve.

You can also use Qt which is a great cross-platform application development framework that is
based on C++.

Qt is both commercial and open source and will help you a lot in developing desktop
applications in combination with C and C++. It is much more simpler than C++ for application
development.

These two languages though considered different programming languages, C++ is just an
enhancement of the C language and it adds object-oriented features to C, therefore, they can be
grouped together.

As you may already know, Linux is basically powered by the C language with parts of assembly.
You can therefore use C and employ GTK+ cross-platform toolkit for GUI applications.

2. Java

This is a powerful, full object-oriented and cross-platform programming language which offers
extensive features for building network applications.

Java was originally intended for running applets in web browsers, but it has always had amazing
capabilities to run desktop applications right from the start.

Java is one of best especially if you have intentions of developing applications that will run on
practically any relevant operating system. Java is great when it comes to migrating from one
operating system to another especially from Windows or Mac OS X to Linux, without the need
to port your existing applications.

3. Python

Python is a high-level, general-purpose, dynamic and interpreted programming language that is


slowly but surely becoming popular in the market. Many programmers are turning to Python
because of its easy to read syntax and ability to enable programmers express concepts in few
lines of code compared to other programming languages. It is easy to learn, and is a good option
for beginners.

4. JavaScript/GitHub Electron

JavaScript is easy to learn and when used in conjunction with HTML and CSS, you can build
amazing desktop applications on Linux.

Electron is a framework used for developing native, cross-platform applications using web
technologies, and it is actively maintained on GitHub and a community of contributors.

It is likewise a good option for beginners intending to develop desktop applications for Linux
and other operating systems.

5. Shell

The Shell does not only allow a system user to communicate with the kernel but is also a
complete programming language, with the common programming language constructs
with GNU Bash(Bourne Again Shell) being the most common.

It is compatible with the sh(Bourne Shell) and also incorporates many useful features from
ksh(Korn Shell) and csh(C Shell). You can use it with tools such as Qt et ‘al which allows you
to display GTK+ dialog boxes from the terminal using scripts.

You might also like