2. Introduction to Software Development
Software development is a complicated process. It requires
careful planning and execution to meet the goals. Sometimes a
developer must react quickly and aggressively to meet ever
changing market demands. Maintaining software quality hinders
fast-paced software development, as many testing cycles are
necessary to ensure quality products.
11/27/2019
BantamlakDejene,Information
Technology
2
3. A commercial software product is usually derived from market demands.
Sales and marketing people have first-hand knowledge of their customers’
requirements. Based upon these market requirements, senior software
developers create architecture for the products along with functional and
design specifications. Then the development process starts. After the initial
development phase, software testing begins, and many times it is done in
parallel with the development process. Documentation is also part of the
development process because a product cannot be brought to market without
manuals. Once development and testing are done, the software is released and
the support cycle begins. This phase may include bug fixes and new releases.
11/27/2019
BantamlakDejene,Information
Technology
3
Cont.….
4. Software Development Approaches
The Waterfall Model
The waterfall model particularly expresses the interaction between subsequent
phases. Testing software is not an activity which strictly follows the
implementation phase. In each phase of the software development process, we
have to compare the results obtained against those that are required. In all
phases, quality has to be assessed and controlled. Verification asks if the
system meets its requirements (are we building the system right) and thus tries
to assess the correctness of the transition to the next phase. Validation asks if
the system meets the user’s requirements (are we building the right system).
11/27/2019
BantamlakDejene,Information
Technology
4
5. Cont.….
Agile Methods
When using a heavyweight development method, it is difficult to change
direction. Once the contract has been signed, the development team’s job is
to deliver the functionality as laid down in the contract. If reality changes
or the user gets a different insight, such is difficult to accomplish. It does
not fit the architecture, it requires rework not accounted for, it lengthens the
agreed upon schedule, and so on. It is a train that does not easily change
direction.
11/27/2019
BantamlakDejene,Information
Technology
5
6. Cont.….
True agile methods view the world as fundamentally chaotic.
They assume change is inevitable. Their focus is to deliver
value to the customer as quickly as possible, and not bother
about extensive plans and processes that won’t be followed
anyway. The key values of the agile movement are:
Individuals and interactions: - over processes and tools.
Working software: - over comprehensive documentation.
Customer collaboration: - over contract negotiation.
Responding to change: - over following a plan.
11/27/2019
BantamlakDejene,Information
Technology
6
7. Cont.….
Agile methods involve the users in every step taken. The
development cycles are small and incremental. The series of
development cycles is not extensively planned in advance, but
the new situation is reviewed at the end of each cycle. Agile
methods do not have an extensive architectural or design phase
up front. It is more effective to only do the design as far as
needed for the immediate next step. Agile methods often have a
separate activity to improve the design after each increment,
known as refactoring.
11/27/2019
BantamlakDejene,Information
Technology
7
8. Cont.….
Agile methods are people-oriented, rather than process-
oriented. They emphasize the human element in software
development. Team spirit is considered very important. Team
relationships are close. Often, an agile team occupies one big
room. Finally, agile methods do not spend much energy on
documentation. It will have to change anyhow, so why spend
time on something that will soon be outdated.
11/27/2019
BantamlakDejene,Information
Technology
8
9. Cont.….
The Rational Unified Process (RUP)
The Rational Unified Process is an iterative development process, geared
towards the development of object-oriented systems. It comes with a lot of
tool support, inter/intranet sources and templates for different kinds of
documents. It has a well-defined process, includes reasonably extensive
upfront requirements engineering activities, and yet emphasizes stakeholder
involvement through its use-case driven nature. RUP distinguishes four
phases: inception, elaboration, construction and transition. Within each
phase, several iterations may occur.
11/27/2019
BantamlakDejene,Information
Technology
9
10. Cont.….
Rapid Application Development
Rapid Application Development (RAD) has a lot in common with other
iterative development process models. It emphasizes user involvement,
prototyping, reuse, the use of automated tools, and small development
teams. In addition to that, it employs the notion of a time box, a fixed time
frame within which activities are done. Within RAD, the time frame is
decided upon first and then the project tries to realize the requested
functionality within that time frame. If it turns out that not all of the
functionality can be realized within the time frame, some of the
functionality is sacrificed. The agreed deadline however is immovable.
11/27/2019
BantamlakDejene,Information
Technology
10
11. Cont.….
The RAD life cycle consists of four phases:
Requirements planning,
User design,
Construction,
Cutover.
The result of this process is often a prioritization denoted by the acronym
MoSCoW:
Must haves are requirements that are definitely needed.
Should haves are requirements that are important, but not absolutely
needed for a usable system.
Could haves are requirements that are only implemented if time allows so.
Won’t haves are requirements that will be left for the next iteration.
11/27/2019
BantamlakDejene,Information
Technology
11
12. Cont.….
Extreme Programming
Extreme Programming, XP for short, is a pure agile method. XP is based on
a number of best practices that have been known for long. XP takes these
practices to extreme levels. In XP, one does this all the time: two
programmers work together behind one computer screen. One of them does
the coding, the other one looks over his/er shoulder, gives advice, notices
small slips, asks questions, and the like. They act as pilot and co-pilot. At
any point in time, the roles may shift. This practice is called pair
programming.
11/27/2019
BantamlakDejene,Information
Technology
12
13. Cont.….
In XP, the design is kept as simple as possible. Since the future
is, after all, unclear, there is no use to design a grand scheme
that will not be followed anyhow. So the design only covers the
current version of the system. After a task is accomplished, the
system is checked to see how it can be improved (remove
duplicate code, make it simpler, make it more flexible). This is
called refactoring.
11/27/2019
BantamlakDejene,Information
Technology
13
14. Cont.….
XP is based on five principles that drive its practices:
Rapid feedback is obtained quickly, within hours, or at most a few days.
Assume simplicity Today’s job is done today, and tomorrows job is left for
tomorrow.
Incremental change In XP, things change in small increments.
Embracing change by not planning, designing, coding more than is needed
right now, the most options for the futures are kept.
Quality work Quality is a must. The team should find pride in delivering
excellent quality.
11/27/2019
BantamlakDejene,Information
Technology
14
15. Rapid Application Development
Rapid applications development (RAD) appears to have first
become topical with the publication of a text by James Martin
with the same title. Martin defines the key objectives of RAD as:
high quality systems, fast development and delivery and low
costs. These objectives can be summed up in one sentence: the
commercial need to deliver working business applications in
shorter timescales and for less investment.
11/27/2019
BantamlakDejene,Information
Technology
15
16. Cont.….
Components
The following appear to be the common components of RAD
approaches discussed in the literature:
Joint application design (JAD
RAD seems to be characterized by small development teams of typically four
to eight persons. Such teams are made up of both developers and users who are
empowered to make design decisions. This means that all RAD team members
must be skilled both socially and in terms of the business. Users must possess
detailed knowledge of the application area; developers must be skilled in the
use of advanced tools. Hence, ‘team-building’ activities such as team dinners
are seen as an important part of a RAD project.
11/27/2019
BantamlakDejene,Information
Technology
16
17. Cont.….
Rapidity of development
RAD projects seem to be typically of relatively small scale and
of short duration. Also, two to six months is frequently
discussed as being a normal project length. The main rationale
being that any project taking more than six months to complete
is likely to be overtaken by business developments.
11/27/2019
BantamlakDejene,Information
Technology
17
18. Cont.….
Clean rooms
JAD workshops are usually expected to take place away from
the business and developer environments in ‘clean’ rooms—that
is, places free from everyday work interruptions and full of
requisite support facilities. The emphasis is on highly focused
problem solving.
11/27/2019
BantamlakDejene,Information
Technology
18
19. Cont.….
Time boxing
Project control in RAD is seen to involve scoping the project by
prioritizing development and defining delivery deadlines or
‘time boxes’. If projects start to slip, the emphasis in RAD
projects is on reducing the requirements to fit the time box, not
in increasing the deadline.
11/27/2019
BantamlakDejene,Information
Technology
19
20. Cont.….
Incremental prototyping
RAD is frequently discussed in terms of incremental
prototyping and phased deliverables. Prototyping is essentially
the process of building a system in an iterative way. In RAD,
prototyping may be used at any stage of development:
requirements gathering; application design; application build;
testing; delivery.
11/27/2019
BantamlakDejene,Information
Technology
20
21. Cont.….
Rapid development tools
It is not surprising to find that modern approaches to RAD
demand good support from tools for rapid developmental
change. This normally means some combination of fourth
generation languages, graphical user interface builders,
database management systems and computer-aided software
engineering tools.
11/27/2019
BantamlakDejene,Information
Technology
21
22. Cont.….
Highly interactive, low complexity projects
Most RAD projects seem to be conducted on applications that are
highly interactive, have a clearly defined user group and are not
computationally complex. The tendency is to rule out the
applicability of RAD for large-scale, infrastructure projects,
particularly the construction of large, distributed information
systems such as corporate-wide databases. This is perhaps not
surprising when one considers that most RAD tools work off a
database in some way. Therefore, the database needs to be created
before application development begins.
11/27/2019
BantamlakDejene,Information
Technology
22
23. Software Development Principles
Criteria for a set of basic principles
The criteria for a set of basic principles should be similar to
those for a set of basis vectors for a vector space:
1. They should be independent.
2. The entire space (of useful software principles) should be
representable (or implied) by combinations of the basic
principles.
11/27/2019
BantamlakDejene,Information
Technology
23
24. Seven basic principles are involved. These are:
1. Manage using a phased life-cycle plan.
Create and Maintain a Life-Cycle Project Plan.
Importance of the project plan.
Essentials of a software project plan.
Orient the Plan around a Phased Development Approach.
Use the Plan to Manage the Project.
2. Perform continuous validation.
Problem Symptoms.
Getting Errors Out Early.
11/27/2019
BantamlakDejene,Information
Technology
24
Cont.….
25. 3. Maintain disciplined product control.
The Need for Product Control.
Baseline Configuration Management.
4. Use modern programming practices.
Results to Date.
5. Maintain clear accountability for results.
Macro scale Accountability.
Intermediate-Scale Accountability.
Individual Accountability.
Summary.
11/27/2019
BantamlakDejene,Information
Technology
25
Cont.….
26. 6. Use better and fewer people.
Variability among Personnel.
Interpersonal Communications Overhead.
Automated Aids.
7. Maintain a commitment to improve the process.
Data Collection and Analysis.
Maintaining Perspective.
11/27/2019
BantamlakDejene,Information
Technology
26
Cont.….