You are on page 1of 24

Software

Software

lives.

affects many aspects of our daily

Your house and things connected to it Your car and the tools engineers used to build the bridge on which you drive The ATM where you get your money The cash register where you spend it The site from which you download your mp3s and the portable device that plays them
Someone

needs to build all that software

Software Application Programming


Software

can be used to deliver a product or it can itself be the product. Software that delivers a product (such as information) is also known as a solution.

Software Application Programming


A

software product is different from traditional products


Conceptual: Since software is not a physical product, the primary cost is peoples time. Wear and Tear: Though software can become obsolete or at capacity, it doesnt wear out. Customizable: Often, every software delivery is of a slightly different product. Technology Changes: New technology makes it easier and easier to do more as time goes by.

The Internet
The

concept of free-associative information access and the Memex, which isnt software at all. The Internet has affected the process of software development
Fat Client applications are rapidly being replaced with thin-client web applications. It triggered new languages such as JavaScript, ASP, and the .NET platform. It affects the way people do business eBay, eTrade, Amazon, etc

The Internet
The

internet allows for

Fast development An easily customizable and brand-able look and feel A means to connect many people to your software
Due

to its ease of connectivity, security must be of the utmost concern.


There is a need to restrict access to information gathered by the software

The Information System


A

common example of software is the information system, which is essentially a database and a user interface. The system may integrate with other information systems.

Software Development Risk Factors


Specifying

requirements on time

You must know what to build before you can start building it.
Finding

errors on time budget

Putting bugs in production can be a problem.


Estimating

Clients want to know what the software will cost them


Estimating

the development time

Clients want to know when they can use the product

Commercial Factors
Intellectual Reusability

Property

Just like you cant steal songs, you cant steal software
If you build your code in modules, you might be able to find another use for some modules later in the same project or in a future project
Maintenance

Corrective, Adaptive, Perfective, and Preventive


Success

and Failure Parameters

If your software fails, maybe the company that bought it does too

Software Application Programming (SAP)


When

projects get really big, the issue is managing them so that the risk factors and commercial factors are mitigated. The goal is to achieve a framework that results in an efficient and reliable result again and again. The layers of SAP are quality, processes, methods, tools, and management.

Decomposition
Decomposition

is the approach of breaking a project into smaller and manageable parts.


Quality: Decomposed into requirements and functions. One big system is a bunch of little ones working together for an overall result. Processes: Decomposed into roles on a team Methods: Decomposed into focusing on different aspects of analysis, development, or testing

New Horizons in the Software Industry


What

will affect the future of SAP? People that work on SAP teams are the key to software development as they must utilize this technology Processes change as do favored methodologies The focus is moving from data to information to knowledge New technology is constantly being introduced that makes SAP easier

Take a break and think about


At

a recent computer expo COMDEX), Bill Gates reportedly compared the computer industry with the auto industry and stated: GM had kept up with the technology like the computer industry has, we would all be driving $25.00 cars that got 1,000 miles to the gallon."

"If

GMs response to Bill


If GM had developed technology like Microsoft, we would all be driving cars with the following characteristics: For no reason whatsoever, your car would crash twice a day. Every time they repainted the lines in the road, you would have to buy a new car. Occasionally your car would die on the freeway for no reason. You would have to pull over to the side of the road, close all of the windows, shut off the car, restart it, and reopen the windows before you could continue. For some reason you would simply accept this. Occasionally, executing a maneuver such as a left turn would cause your car to shut down and refuse to restart, in which case you would have to reinstall the engine. Macintosh would make a car that was powered by the sun, was reliable, five times as fast and twice as easy to drive but would run on only five percent of the roads. The oil, water temperature, and alternator warning lights would all be replaced by a single "This Car Has Performed An Illegal Operation" warning light. The airbag system would ask "Are you sure?" before deploying. Occasionally, for no reason whatsoever, your car would lock you out and refuse to let you in until you simultaneously lifted the door handle, turned the key and grabbed hold of the radio antenna. Every time a new car was introduced car buyers would have to learn how to drive all over again, because none of the controls would operate in the same manner as the old car. You'd have to press the "Start" button to turn the engine off.

Chapter 2: Phases of the SDLC


The

life of any product (car, software, refrigerator, etc)


A need is defined Analysis is undertaken to define requirements to fit the need The product is designed The product is built The product is delivered

Modularity in processes and components


Different

roles exist for any product delivery

Cars: Analysts, Developers, Builders, Marketers, Owners, etc Software: Analysts, Designers, Developers, Owners, Users.
Different

aspects of the product are componentized


Car: drive train, cooling system, sound system Software: security, data storage, user interface

Phases of the Software Development Life Cycle


Needs

Requirements

Survey of Scope Study of existing information system (if applicable) Definition of new project Consideration of Who and Where Configuration and procurement High Level and Detailed Design

Analysis: The Why

Analysis: The What

Design:

The How

Development

Delivery

Construction of the Software Testing (Unit, System, Integration)

of the final system

Systems Development Models


A

Systems Development Model is an implementation of the Software Development Lifecycle In selecting a model, consider the size of the organization, business requirements, priorities, and the people. Classifications of models

Traditional models: entire product delivered at once Evolving Models: iterative development (and possibly delivery) of product Fourth-Generation Models: utilizing software to build software

Traditional Models
Linear Rapid

Each phase of the SDLC occurs in a linear progression, often with multiple hand-offs of documentation
The waterfall version is done with strong analysis followed by development of components over a short time by multiple developers Client and designer or developer taking an iterative approach, but iterating through the building of a prototype of the entire software product. The prototype is not fully operational and may be discarded before writing the final solution.

Sequential Model (aka Waterfall)

Application Development

Prototyping

Evolving (Iterative) Models

Incremental Model
Software developed (and possibly delivered) in small increments starting with the core product and building upon it. The linear sequential model is applied to each increment.

Concurrent Process Model


Various tasks or activities residing in various states. All tasks are being moved through the states by the team.

Spiral Model
Passes through various task regions in a spiral, iterating to create prototypes.

WINWIN spiral Model


A series of negotiations between client and developer toward the best mutual solution for time, cost, and functionality.

Fourth Generation Models


Component-Based Object-Oriented

A variant of the spiral model that emphasizes the reusability of the developed components.
Instead of focusing on processes in components, the focus is on the objects the system tracks This is important during analysis using ANY model Relationships, operations, and classes of those objects are also important Applies solid unit test-driven design methods to write code in increments, always having a working product.

Model

Model

Formal

Methods Model

Combining Models
It

is not necessary (and often not possible) to follow any single model exactly For example, a pure waterfall project is almost impossible. There is always adjustment and rework needed.

Fourth Generation Techniques


Utilize

software to write code for you based on requirements An example is a product that uses a formal specification language to generate complete system from requirements analysis Only useful for small projects Such products are easy to use and enable users with limited software development skills to develop programs Usually, such code has efficiency problems

The People
In

determining a methodology for a company, you must consider the people Some models require an integrated team and others require documentation deliverables between the assembly line stations Talented people can make a bad methodology work and unskilled people can fail with a great methodology. The biggest barrier to the success of a methodology is often the culture. The people must believe in their methodology.

Further review

Vannevar Bush: As We May Think http://www.ps.uni-sb.de/~duchier/pub/vbush/vbush-all.shtml Google:

iterative waterfall development software development methodologies

Google: