Chapter 11
Developing Information
Overview of Soware Development
e System Development Life Cycle Approach
Other System Development Approaches
Managing the Development Process
Most information systems use commercially available soware, as is or customized—but
most is not the same as all! Companies can get a competitive advantage by using informa-
tion systems that nobody else has. Getting systems that nobody else has means custom
soware development.
Custom soware development is programming. Why should a businessperson know
about it? Because obtaining benets from custom soware depends on active participa-
tion by those who will use it. Parts of the development process must be done by people
who will use the resulting information system. If those people (you, in a few years)
don’t do their part, they will end up with a system that doesnt meet their needs or that
doesnt provide the benets that the organization hoped for. ey will have only them-
selves to blame.
is chapter will tell you what you must do during soware development, when you
will do it, and why the responsibility for doing it can’t be passed o. at will prepare
you for being called upon to participate in an information system development project
at work.
378 Information Systems: What Every Business Student Needs to Know
As you read this chapter, focus on these key concepts to use on the job:
1. Organizations can choose among dierent soware development processes.
2. Each process suits certain business situations and technologies.
3. Each process has a series of stages during which specic people carry out specic
tasks. Each process involves nontechnical people (the user side of the organization) at
dierent times.
4. e quality of the soware that emerges from any process depends on contributions
from all participants. Knowing what you are expected to contribute, and when, will
help you make a contribution and thus improve the quality of the resulting system.
As you know, soware refers to instructions that tell a computer how to perform a job.
Soware consists of programs for specic tasks. A short program, such as you saw in
Figure 4.1, might be assigned in the rst week of a programming course. An application
package is probably tens of thousands of lines long. Enterprise-level information systems
have millions (Box 11.1). Figure 11.1 shows a tiny part of the Android operating system
module that splits a task over multiple processing units.
Conceptually, the process of developing a new custom system is simple:
1. An organization decides to use custom soware in a new system.
2. Someone gures out exactly what that soware should do.
3. If the system is large enough for more than one person to work on, someone divides
it into modules for dierent programmers.
4. ose programmers write sequences of instructions that guide the computer, step by
step, to carry out the tasks of each module.
5. People compile those modules and test them individually to conrm that each one
works properly. en they combine the modules and conrm that the entire system
works properly.
6. e new system is installed on the organizations computers.
7. Members of the organization use it.
SAP’s popular enterprise Enterprise Resource Planning (ERP) has been estimated to contain
over 250 million lines of code. Every one of those lines was written by a programmer.
Developing Information Systems 379
mBitmapIn = loadBitmap(R.drawable.data);
mBitmapsOut = new Bitmap[NUM_BITMAPS];
for(int i = 0; i < NUM_BITMAPS; ++i) {
mBitmapsOut[i] = Bitmap.createBitmap(mBitmapIn.getWidth(),
mBitmapIn.getHeight(), mBitmapIn.getConfig());
mImageView = (ImageView) findViewById(R.id.imageView);
mCurrentBitmap += (mCurrentBitmap + 1)% NUM_BITMAPS;
SeekBarseekbar = (SeekBar) findViewById(R.id.seekBar1);
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBarseekBar, int progress,
booleanfromUser) {
float max = 2.0f;
float min = 0.0f;
float f = (float) ((max – min) * (progress/100.0) + min);
public void onStartTrackingTouch(SeekBarseekBar) { }
public void onStopTrackingTouch(SeekBarseekBar) {
private void createScript() {
mRS = RenderScript.create(this);
mInAllocation = Allocation.createFromBitmap(mRS, mBitmapIn);
mOutAllocations = new Allocation[NUM_BITMAPS];
for(int i = 0; i < NUM_BITMAPS; ++i) {
mOutAllocations [i] = Allocation.createFromBitmap(mRS, mBitmapsOut[i]);
mScript = new ScriptC_saturation(mRS);
private class RenderScriptTask extends AsyncTask<Float, Integer, Integer> {
Boolean issued = false;
protected Integer doInBackground(Float... values) {
int index = –1;
if (isCancelled() == false) {
issued = true;
index = mCurrentBitmap;
mScript.forEach_saturation(mInAllocation, mOutAllocations[index]);
mCurrentBitmap = (mCurrentBitmap + 1)% NUM_BITMAPS;
return index;
FIGURE 11.1 Code fragment from Android OS.

Get Information Systems now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.