Professional Documents
Culture Documents
Development 32555
FSD(Lecture 1) 1
Software Systems
Nowadays most of the businesses are supported by the
software applications.
Development of software systems to support the
business is a difficult and complicated process.
Important to understand how the activity is performed
and how it contributes to the objectives of the
organization.
FSD(Lecture 1) 2
Building a Software System
In between a nice idea and a working software, there is
much more than programming.
Knowing an object-oriented language and having
access to a library is necessary but not sufficient in
order to create system software.
One of the main problems in software development is
that many projects start programming too soon and
concentrate too much effort on writing code.
Thus the use of modeling is required for the success of
software projects.
FSD(Lecture 1) 3
Software Development Process
• A software development process is an approach to
build, deploy and maintain software.
• In software development process, the goal is to
efficiently deliver a software product that meets the
needs of a business or satisfy the requirements of a
client.
• A comprehensive roadmap so that designers can walk
through the flexible multiple pathways of the
development process.
FSD(Lecture 1) 4
Software Development Process
Software development follows a lifecycle (SDLC).
Generic activities in all software processes are:
• Planning:- why a software system should be built
and how the project team will go about building it.
• Analysis: - answers the questions of who will use the
system, what the system will do, and where and
when it will be used.
• Design: - how the system will operate in terms of
hardware, software, and network infrastructure.
• Implementation:– system is actually built.
FSD(Lecture 1) 5
Software Development Methodologies
Methodology is:
a set of methods, rules, practices, procedures,
techniques and tools used to achieve a goal, or
or
the theoretical understating of the principles that
determine how such methods, practices, tools, etc., are
used
Software development consists of a wide spectrum of
activities that individual methodologies cover
selectively and from different viewpoints.
FSD(Lecture 1) 6
Ad Hoc Approach
The ad hoc approach is development without an overall
theoretical framework.
As should be expected, ad hoc is a high-risk approach.
FSD(Lecture 1) 7
Waterfall Model
FSD(Lecture 1) 8
Waterfall Model
• One proceeds from one phase to the next in a
purely sequential manner.
• When and only when the requirements are fully
completed, one proceeds to design.
• The software in question is designed and a
"blueprint" is drawn for programmers to follow —
this design should be a plan for implementing the
requirements given.
• When and only when the design is fully
completed, an implementation of that design is
made by programmers.
FSD(Lecture 1) 9
Waterfall Model
• For simple systems, it might be feasible to
sequentially define the whole problem, design the
entire solution, build the software, and then test the
product.
• For complex and sophisticated systems, this linear
approach is not realistic.
FSD(Lecture 1) 10
Iterative and Incremental Process
• Development is organized into a series of short fixed-
length mini-projects called iterations.
• An iteration represents a complete development
cycle: it includes its own treatment of requirements,
analysis, design, implementation and testing
activities.
• Each iteration involves choosing a small subset of the
requirements and quickly design, implement and
testing them.
• The outcome of each iteration is a tested, integrated
and executable system.
FSD(Lecture 1) 11
Iterative and Incremental Process
FSD(Lecture 1) 12
Advantages of an Iterative Process
• Reduce risks
– Risks are identified early, progress is easier to see.
• Handle evolving requirements
– Users provide feedback to operational systems.
– Responding to feedback is an incremental change.
• Attain early learning
– Everyone obtains an understanding of the different
workflows early on.
• Allow for changes
– System can adapt to problems
FSD(Lecture 1) 13
Drawbacks of an Iterative Process
One strong objection to the incremental approach is
that architecture of the platform can’t accommodate
the changes each iteration requires.
or
Design decisions can’t be made in pieces. For example,
it is very hard to change the structure of the building
while we are building it.
FSD(Lecture 1) 14
Prototyping
• Prototyping is the process of quickly putting
together a working model (a prototype) in order to
test or illustrate various aspects or ideas of a design
to gather early user feedback.
• The prototype is then sufficiently refined iteratively
through feedback and additional rounds of
gathering requirements, design and
implementation.
• Two types of prototyping:
• incremental or evolutionary
• throwaway
FSD(Lecture 1) 15
Rapid Application Development (RAD)
FSD(Lecture 1) 16
The Spiral Model
Copyright: http://ocw.mit.edu/courses/
FSD(Lecture 1) 17
Characteristics of the Spiral Model
• A spiral phase begins in the top left quadrant
(quadrant 1), by determining objectives of that
phase, alternatives and constraints.
• Next (quadrant 2), the strategy is analyzed form the
viewpoint of risk, and solutions to minimize these
risks are investigated, often using prototyping.
• This quadrant (3) corresponds to where the
traditional waterfall model phases are put into
practice.
• Finally (quadrant4), the results of the risk-reduction
strategies are assessed, and if all risks are resolved,
the next phase is planned and started.
FSD(Lecture 1) 18
When to use Spiral Model
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)
FSD(Lecture 1) 19
Agile Methodologies
• Dissatisfaction with the overheads involved in
design methods led to the creation of agile
methods.
• Agile methodologies aim at being adaptive
rather than predictive.
• The theoretical framework of agile methods is
best expressed by the Manifesto for Agile
Software Development published in 2001.
FSD(Lecture 1) 20
Agile Methods
Customer satisfaction by rapid, continuous
delivery of useful software
Working software is delivered frequently (weeks
rather than months)
Working software is the principal measure of
progress
Even late changes in requirements are welcome
Face-to-face conversation is the best form of
communication
Continuous attention to technical excellence and
good design
FSD(Lecture 1) 21
Problems with Agile Methods
• It can be difficult to keep the interest of
customers who are involved in the process. They
may keep changing the requirements.
• Team members may be unsuited to the intense
involvement that characterizes agile methods.
• Prioritizing changes can be difficult where there
are multiple stakeholders.
• Hard to cost as there is no master schedule
contract
FSD(Lecture 1) 22
Some Agile Methods
Extreme Programming (XP)
Coding is the key activity throughout a software project
Test Driven Development (TDD)
first the developer writes a failing automated test case
that defines a desired improvement or new function,
then produces code to pass that test
Adaptive Software Development (ASD)
Combines RAD with software engineering best practices
FSD(Lecture 1) 23
Some Agile Methods
Feature Driven Development (FDD)
Develop an overall model, build a feature list, plan by
feature, design by feature, built by feature
Aspect Oriented Software Development Method
Orthogonal idea of crosscutting concerns(aspects) and
advocating the production separate modules for these
concerns
FSD(Lecture 1) 24
IBM Rational Unified Process (RUP)
RUP organizes projects in two-
dimensional terms
The horizontal dimension
represents the successive phases of
each project iteration:
Management
Business modeling
Requirements
Environment Requirements
Analysis and Design
Configuration
Implementation
Management
Test
Deployment
The vertical dimension
represents supporting activities of
configuration and change
management, project
Start of the process management, and environment.
FSD(Lecture 1) 25
Tailored SDLC Models
Any one model does not fit all projects
If there is nothing that fits a particular project, pick a
model that comes close and modify it for your needs.
Project should consider risk but complete spiral too
much –start with spiral and then pair with some other
model
Project delivered in increments but there are serious
reliability issues –combine incremental model with
some other model
Each team must pick or customize a SDLC model to fit
its project
FSD(Lecture 1) 26
Modelling with UML
• The Unified Modeling Language (UML) provides
industry standard mechanisms for visualizing, specifying,
constructing and documenting software system.
• UML is a general-purpose modeling language that
includes a standardized graphical notation that may be
used to create an abstract model of a system, sometimes
referred to as the UML model.
• UML is officially defined at the Object Management
Group (OMG). The complete specification is available at
http://www.uml.org/
FSD(Lecture 1) 27
Modelling with UML
UML is a modeling language for:
Visualizing: graphical models with precise semantics
Specifying: models are precise, unambiguous and
complete to capture all important Analysis, Design,
and Implementation decisions
Constructing: models can be directly connected to
programming languages, allowing forward and reverse
engineering
Documenting: diagrams capture all pieces of
information collected by development team, allowing
one to share and communicate the embedded
knowledge
FSD(Lecture 1) 28
Goals of UML
Provide a common language that can be used by all
stakeholders
Its main purpose is to allow stakeholders to
communicate
Integrate best engineering practices that have
proven successful in the modeling of large and
complex systems
Be independent of particular programming
languages and development processes
Help project teams easily experiment to explore
multiple solutions
FSD(Lecture 1) 29
Modelling with UML
In UML 2.0 there are 13 types of diagrams.
We can categorize them hierarchically (see next slide).
1. Structure Diagrams: emphasize what things must be in
the system being modeled.
2. Behavior Diagrams: emphasize what must happen in
the system being modeled.
3. Interaction Diagrams: shows how objects collaborate to
do one job
FSD(Lecture 1) 30
Hierarchy of UML 2.0 diagrams
FSD(Lecture 1) 31
UML Elements
Use-Case Diagrams: show user requirements
Class Diagrams: shows static structure of the
design
Sequence Diagrams : shows sequence of
interactions between different objects to do a
particular job.
Package Diagram: shows groups of classes and
interdependencies.
FSD(Lecture 1) 32
Further Reading
Chapter 3, Object-Oriented Systems Analysis and
Design. Noushin Ashrafi and Hessam Ashrafi
Chapter 1, Applying UML and Patterns : An
Introduction to Object-Oriented Analysis and
Design and Iterative Development, Craig Larman,
Prentice-Hall.
Chapter 1 ,System Analysis and Design : An Object
Oriented Approach, Alan Dennis, Barbara Wixom
and David Tegarden, John Wiley.
FSD(Lecture 1) 33