Professional Documents
Culture Documents
Software programs can be developed without S/E principles and methodologies but they are
indispensable if we want to achieve good quality software in a cost effective manner.
Engineering is the branch of science and technology concerned with the design, building, and
use of engines, machines, and structures.
Characteristics of software
Both activities are dependent on people, but the relationship between people applied and
work accomplished is entirely different)
. Both activities require the construction of a “product,” but the approaches are different.
Software costs are concentrated in engineering.
2.Software does not wear out
1.System Software:
System software is a collection of programs which are written to service other
programs.
Some system software processes complex but determinate, information
structures.
Other system application process largely indeterminate data.
Sometimes when, the system software area is characterized by the heavy
interaction with computer hardware that requires scheduling, resource sharing,
and sophisticated process management.
e.g., compilers, editors, and file management utilities
2.Application_Software:……,stand-alone_programs
Application software is defined as programs that solve a specific business need.
. In addition to convention data processing application, application software is
used to control business function in real time.
e.g., point-of-sale
transaction processing, real-time manufacturing process control
4. Embedded Software:
Embedded software resides within the system or product and is used to
implement and control feature and function for the end-user and for the
system itself.
Embedded software can perform the limited and esoteric function or
provided significant function and control capability.
e.g., key pad control for a microwave oven) or provide significant function
and control capability (e.g., digital functions in an automobile such as fuel
control, dashboard displays, and braking systems).
5. Product-line software—designed to provide a specific capability for user by
many different customers.
Product-line software can focus on a limited and esoteric marketplace (e.g., inventory
control products) or address mass consumer markets (e.g., word processing,
spreadsheets, computer graphics, multimedia, entertainment, database management,
and personal and business financial applications).
6.Web Application:
It is a client-server computer program which the client runs on the web browser.
In their simplest form, Web apps can be little more than a set of linked hypertext
files that present information using text and limited graphics. However, as e-
commerce and B2B application grow in importance. Web apps are evolving into
a sophisticate computing environment that not only provides a standalone
feature, computing function, and content to the end user.
Open source—a growing trend that results in distribution of source code for
systems applications (e.g., operating systems, database, and development environments)
so that many people can contribute to its development.
The challenge for software engineers is to build source code that is self-descriptive,
but more importantly, to develop techniques that will enable both customers
and developers to know what changes have been made and how those
changes manifest themselves within the software.
LEGACY SOFTWARE
Legacy software are older programs that are developed decades ago.
The quality of legacy software is poor because it has inextensible design, convoluted
code, poor and nonexistent documentation, test cases and results that are not achieved.
MYTHS
Myths are widely held but false beliefs and views which propagate misinformation and confusion.
Three types of myth are associated with software:
- Management myth
- Customer myth
- Practitioner’s myth
MANAGEMENT MYTHS
• Myth (1)-The available standards and procedures for software are enough.
• Myth (2)-Each organization feel that they have state-of-art software development tools since
they have latest computer.
• Myth(3)-Adding more programmers when the work is behind schedule can catch up.
• Myth(4)-Outsourcing the software project to third party, we can relax and let that party build it.
CUSTOMER MYTHS
• Myth(1)- General statement of objective is enough to begin writing programs, the details can be
filled in later.
• Myth (2)-Software is easy to change because software is flexible
PRACTITIONER’S MYTH
• Myth (1)-Once the program is written, the job has been done.
• Myth (2)-Until the program is running, there is no way of assessing the quality.
• Myth (3)-The only deliverable work product is the working program
• Myth (4)-Software Engineering creates voluminous and unnecessary documentation and
invariably slows down software development
Software engineering is a layered technology
Any engineering approach (including software engineering) must rest on an
organizational commitment to quality.
• quality focus - bedrock that supports software engineering.
• process - the foundation for software engineering is the process layer.
the software engineering process is the glue that holds the technology
layers together and enables rational and timely development of computer
software.
• methods - provide technical how-to’s for building software.
methods encompass a broad array of tasks that include communication,
Requirements analysis, design modeling, program construction, testing,
and support.
• tools - provide semi-automatic and automatic support to methods when
tools are integrated so that information created by
One tool can be used by another, a system for the support of software
development, Called computer-aided software engineering, is
established.
A process is a collection of activities, actions, and tasks that are performed when
some work product is to be created
An activity strives to achieve a broad objective (e.g., communication with stakeholders) and is
applied regardless of the application domain, size of the project, complexity of the effort, or
degree of rigor with which software engineering is to be applied.
An action (e.g., architectural design) encompasses a set of tasks that produce a major work
product (e.g., an architectural design model).
A task focuses on a small, but well-defined objective (e.g., conducting a unit test) that produces
a tangible outcome.
• It also includes a set of umbrella activities that are applicable across the entire
software process.
• Each framework activity is populated by a set of software engineering actions – a
collection of related tasks that produces a major software engineering work product
(e.g. design is a software engineering action).
• The following generic process framework is applicable to the vast majority of software
projects :
1. Communication: This framework activity involves heavy communication and
collaboration with the customer (and other stakeholders) and encompasses
requirements gathering and other related activities.
2. Planning: This activity establishes a plan for the software engineering work that
follows. It describes the technical tasks to be conducted, the risks that are likely, the
resources that will be required, the work products to be produced and a work
schedule.
3. Modeling: This activity encompasses the creation of models that allow the
developer and the customer to better understand software requirements and the
design that will achieve those requirements.
4. Construction: This activity combines code generation (either manual or
automated) and the testing that is required to uncover errors in the code.
5. Deployment: The software is delivered to the customer who evaluates the
delivered product and provides feedback based on evaluation.
Process Patterns
Process pattern describes a process-related problem that is encountered during
software engineering work, identifies the environment in which the problem has been
encountered, and suggests one or more proven solutions to the problem.
Patterns can be defined at any level of abstraction.2
In some cases, a pattern might be used to describe a problem (and solution) associated
with a complete process model (e.g., prototyping).
In other situations, patterns can be used to describe a problem (and solution)
associated with a framework activity (e.g., planning) or an action within a framework
activity (e.g., project estimating).
Type. The pattern type is specified. Ambler [Amb98] suggests three types:
1.Stage pattern –
Problems associated with a framework activity for process are described by
stage pattern. Establishing Communication might be an example of a staged
pattern. This pattern would incorporate task pattern Requirements Gathering
and others.
2.Task-pattern –
Problems associated with a software engineering action or work task and
relevant to successful software engineering practice (e.g., Requirements
Gathering is a task pattern) are defined by task-pattern.
3.Phase pattern –
Even when the overall flow of activities is iterative in nature, it defines sequence
of framework activities that occurs within process. Spiral Model or Prototyping
might be an example of a phase pattern.
Initial Context :
Conditions under which the pattern applies are described by initial context. Prior
to the initiation of the pattern :
1. What organizational or term-related activities have already occurred?
2. Entry state for the process?
3. Software engineering information or project information already exists?
For example, the Planning pattern requires that :
• Collaborative communication has been established between
customers and software engineers.
• Successful completion of a number of task patterns for the
communication pattern has occurred.
• The project constraints, basic requirements, and the project scope are
known.
Problem :
Any specific problem is to be solved by pattern.
Solution –
Describes how to implement pattern successfully. This section describes how
initial state of process is modified as a consequence of initiation of pattern.
Resulting Context :
Once the pattern has been successfully implemented, it describes conditions.
Upon completion of pattern :
1. Organizational or term-related activities must have occurred?
2. What should be the exit state for the process?
3. What software engineering information has been developed?
Related pattern :
Provide a list of all process patterns that are directly related to this one. It can
be represented n a hierarchy or in some other diagrammatic form.
Known uses and Examples –
In which the pattern is applicable, it indicates the specific instances. For
example, communication is mandatory at the beginning of every software
project, is recommended throughout the software project, and is mandatory
once the deployment activity is underway.
process assessment
Does not specify the quality of the software or whether the software will be
delivered on time or will it stand up to the user requirements.
It attempts to keep a check on the current state of the software process with the intention of
improving it.
PROCESS ASSESSMENT
Software Process
Software Process Assessment
Software Process improvement
Motivates Capability determination
ISO 9001:2000 for Software—a generic standard that applies to any organization
that wants to improve the overall quality of the products, systems,
or services that it provides. Therefore, the standard is directly applicable to
software organizations and companies [Ant06].
PROCESS MODELS
• Help in the software development
• Guide the software team through a set of framework activities
• Process Models may be linear, incremental or evolutionary
There are many kinds of process models for meeting different requirements.
We refer to these as SDLC models (Software Development Life Cycle
models).
• Waterfall model
• V model
• Incremental model
• RAD model
• Agile model
• Iterative model
• Prototype model
• Spiral model
Waterfall model
• The waterfall model, sometimes called the classic life cycle,
• suggests a systematic, sequential approach to software development
• begins with customer specification of requirements and progresses
through planning,
modeling,
construction,
and deployment,
culminating in ongoing support of the completed software
• A variation in the representation of the waterfall model is called the V-
model.
PROBLEMS IN WATERFALLMODEL
• Real projects rarely follow the sequential flow since they are always iterative
• The model requires requirements to be explicitly spelled out in the beginning,
which is often difficult
• A working model is not available until late in the project time plan
Iterative Model
In this Model, you can start with some of the software specifications and develop the first
version of the software.
After the first version if there is a need to change the software, then a new version of the
software is created with a new iteration.
Every release of the Iterative Model finishes in an exact and fixed period that is called
iteration.
The Iterative Model allows the accessing earlier phases, in which the variations made
respectively.
The final output of the project renewed at the end of the Software Development Life Cycle
(SDLC) process.
The various phases of Iterative model are as follows:
1.Requirement gathering & analysis:
In this phase, requirements are gathered from customers and check by an analyst whether
requirements will fulfil or not. Analyst checks that need will achieve within budget or not.
After all of this, the software team skips to the next phase.
2. Design: In the design phase, team design the software by the different diagrams like
Data Flow diagram, activity diagram, class diagram, state transition diagram, etc.
oint
4. Testing: After completing the coding phase, software testing starts using different test
methods. There are many test methods, but the most common are white box, black box,
and grey box test methods.
5. Deployment: After completing all the phases, software is deployed to its work
environment.
6. Review: In this phase, after the product deployment, review phase is performed to
check the behaviour and validity of the developed product. And if there are any error
found then the process starts again from the requirement gathering.
Advantages
• The software will be generated quickly during the software life cycle
• It is flexible and less expensive to change requirements and scope
• Throughout the development stages changes can be done
• This model is less costly compared to others
Disadvantages
• It requires a good planning designing
• Problems might cause due to system architecture as such not all
requirements collected up front for the entire software lifecycle
• Each iteration phase is rigid and does not overlap each other
EVOLUTIONARY PROCESSMODEL
• Software evolves over a period of time
• Business and product requirements often change as development proceeds making a
straight-line path to an end product unrealistic
• Evolutionary models are iterative and as such are applicable to modern day
applications
Types of evolutionary models
– Prototyping
– Spiral model
– Concurrent development model
PROTOTYPING
Prototyping Model is a software development model in which prototype is built,
tested, and reworked until an acceptable prototype is achieved. It also creates
base to produce the final system or software. It works best in scenarios where the
project’s requirements are not known in detail. It is an iterative, trial and error
method which takes place between developer and client.
STEPS IN PROTOTYPING
• Begins with requirement gathering
• Identify whatever requirements are known
• Outline areas where further definition is mandatory
• A quick design occur
• Quick design leads to the construction of prototype
• Prototype is evaluated by the customer
• Requirements are refined
• Prototype is turned to satisfy the needs of customer
Each phase of spiral model in software engineering begins with a design goal and
ends with the client reviewing the progress. The spiral model in software
engineering was first mentioned by Barry Boehm in his 1986 paper.
The development process in Spiral model in SDLC, starts with a small set of
requirement and goes through each development phase for those set of
requirements.
The software engineering team adds functionality for the additional requirement in
every-increasing spirals until the application is ready for the production phase. The
below figure very well explain Spiral Model:
2) Design
In this phase, the requirement gathered in the SRS document is used as an input
and software architecture that is used for implementing system development is
derived.
Retesting, regression testing is done until the point at which the software is as
per the customer’s expectation. Testers refer SRS document to make sure that
the software is as per the customer’s standard.
#5) Deployment
Once the product is tested, it is deployed in the production environment or
first UAT (User Acceptance testing) is done depending on the customer
expectation.
In the case of UAT, a replica of the production environment is created and the
customer along with the developers does the testing. If the customer finds the
application as expected, then sign off is provided by the customer to go live.
#6) Maintenance
After the deployment of a product on the production environment, maintenance
of the product i.e. if any issue comes up and needs to be fixed or any
enhancement is to be done is taken care by the developers.
Memory Management
When concerns cut across multiple system functions, features, and information, they are often referred
to as crosscutting concerns
SPECIALIZED PROCESS MODEL
Specialized process models take on many of the characteristics of one or more
of the traditional models.
However, these models tend to be applied when a specialized or narrowly
defined software engineering approach is chosen
The unified process model (or UPM) is an iterative, incremental, architecture-centric, and use-
case driven approach to software development.
Human Factors
Traits that need to exist in members of agile development teams:
Competence
Common focus
CollaborationDecision-making ability
Fuzzy-problem solving ability
Mutual trust and respect
Self-organization
Agile model