Sunteți pe pagina 1din 26

The Process

Chapter 2
FAQ about software engineering

Question Answer

What is software? Computer programs, data structures and associated


documentation. Software products may be developed for
a particular customer or may be developed for a general
market.
What are the attributes of good software? Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities
of developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including
hardware, software and process engineering. Software
engineering is part of this more general process.

2
Essential attributes of good
software
Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet the
changing needs of customers. This is a critical attribute because software
change is an inevitable requirement of a changing business environment.

Dependability and security Software dependability includes a range of characteristics including


reliability, security and safety. Dependable software should not cause
physical or economic damage in the event of system failure. Malicious
users should not be able to access or damage the system.

Efficiency Software should not make wasteful use of system resources such as
memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is designed.
This means that it must be understandable, usable and compatible with
other systems that they use.

3
Types of Software Engineering Model:
1. Waterfall Model.
2. Prototyping Model.
3. Spiral Model.
4. SDLC (Software Development Life Cycle).
a. V- shaped SDLC Model.
b. RAD (Rapid Application Model)
c. Incremental SDLC Model.
5. Agile Model.
6. Concurrent Development Model.
7. Specialized Process Model.
What is SDLC?

A Software Development Life


Cycle is essentially a series of steps, or
phases, that provide a model for the
development and lifecycle management of
an application or piece of software.
Different Phases of SDLC

 1. Initiate Phase
 2. Define Phase
 3. Design Phase
 4. Build Phase
 5. Test Phase
 6. Documentation Phase
Criteria involved in Initiate phase:
Input : Problem, strategic value added
reasoning.

Output: green signal from the Project Manager,


charter, Document, Scope and plan
document.

Who Involved in this Phase?


Business Analyst, Senior Level IT folks.

Initiate Phase : Initiating the


project
Input: Charter Document or Scope plan
Document.

Output: requirement document(Business


Analyst), Project Plan (Project Manager),
Test Plan(Quality Analyst Lead).

Who is Involve?
Business Analyst, Project Manager,
Quality Analyst, Developer, SME’s(Subject
Matter Experts).

Define Phase: Defining what the


Product is? (Application,
Website…)
Input: Requirement Document, Project Plan
worked by Quality Analyst.

Output: Functional Design Document by Business


Analyst
Technical Design Document by Developers
Project Plan by Project Manager
Updated Quality Analyst plan by Quality Test
Analyst team.
Who is involved?
Developer, Project Manager, Business
Analyst, Quality Analyst folks.
Design Phase: How to Design the
Product?
Coding of the Software
Input: Functional Design Document , Technical
design Document.

Output: Product, Unit Testing results.


“Test Case” : Describe step by step instruction
about to test a particular feature of the product.

With the help of design phase the


developers come up with algorithm.

Who involved?
Programmers and Quality Analyst.
Build Phase: Building the
Product?
Input : Test case.

Output: Test Results.

Who Test?
Quality Analyst.

UAT : User Acceptance Testing (High


Level Testing).
Test Phase: Testing of the product
happens (Operation Feature
Testing).
The Waterfall Model

It is the oldest paradigm for SE. When requirements are


well defined and reasonably stable, it leads to a linear
fashion.
(problems: 1. rarely linear, iteration needed. 2. hard to state all
requirements explicitly. Blocking state. 3. code will not be released until
very late.)

The classic life cycle suggests a systematic, sequential


approach to software development.

12
The waterfall model is a
sequential design process, often used
[citation needed] in software
development processes, in which
progress is seen as flowing steadily
downwards through the phases of
Conception, Initiation, Analysis,
Design, Construction, Testing,
Production/Implementation, and
Maintenance.
Water Fall Flow:
Advantage: Easy to explain to the user·
Structures approach.· Stages and activities are
well defined· Helps to plan and schedule the
project· Verification at each stage ensures early
detection of errors / misunderstanding and Each
phase has specific deliverables.

Disadvantage: Assumes that the requirements of


a system can be frozen· Very difficult to go back to
any stage after it finished.· Little flexibility and
adjusting scope is difficult and expensive.· Costly
and required more time, in addition to detailed
plan

Advantages and Disadvantages


Evolutionary Models: Prototyping
 When to use: Customer defines a set of general objectives but does
not identify detailed requirements for functions and features. Or
Developer may be unsure of the efficiency of an algorithm, the form
that human computer interaction should take.
 What step: Begins with communication by meeting with stakeholders
to define the objective, identify whatever requirements are known,
outline areas where further definition is mandatory. A quick plan for
prototyping and modeling (quick design) occur. Quick design focuses
on a representation of those aspects the software that will be visible
to end users. ( interface and output). Design leads to the construction
of a prototype which will be deployed and evaluated. Stakeholder’s
comments will be used to refine requirements.
 Both stakeholders and software engineers like the prototyping
paradigm. Users get a feel for the actual system, and developers get
to build something immediately. However, engineers may make
compromises in order to get a prototype working quickly. The less-
than-ideal choice may be adopted forever after you get used to it.
16
Advantages of Prototype model:

 Users are actively involved in the development


 Since in this methodology a working model of
the system is provided, the users get a better
understanding of the system being developed.
 Errors can be detected much earlier.
 Quicker user feedback is available leading to
better solutions.
 Missing functionality can be identified easily
 Confusing or difficult functions can be identified
Requirements validation, Quick implementation
of, incomplete, but functional, application.
Disadvantages of Prototype model:

 Leads to implementing and then repairing


way of building systems.
 Practically, this methodology may increase
the complexity of the system as scope of
the system may expand beyond original
plans.
 Incomplete application may cause
application not to be used as the full
system was designed Incomplete or
inadequate problem analysis.
When to use Prototype model:

 Prototype model should be used when the


desired system needs to have a lot of interaction
with the end users.
 Typically, online systems, web interfaces have a
very high amount of interaction with end users,
are best suited for Prototype model. It might
take a while for a system to be built that allows
ease of use and needs minimal training for the
end user.
 Prototyping ensures that the end users
constantly work with the system and provide a
feedback which is incorporated in the prototype
to result in a useable system. They are excellent
for designing good human computer interface
systems.
Evolutionary Models:
Prototyping
Quick
plan
communication

Modeling
Quick design

Deployment Construction
delivery & of prototype
feedback Construction
of prototype

20
Evolutionary Models: The Spiral
 It couples the iterative nature of prototyping with the controlled and systematic
aspects of the waterfall model and is a risk-driven process model generator that is
used to guide multi-stakeholder concurrent engineering of software intensive
systems.
 Two main distinguishing features: one is cyclic approach for incrementally growing
a system’s degree of definition and implementation while decreasing its degree of
risk. The other is a set of anchor point milestones for ensuring stakeholder
commitment to feasible and mutually satisfactory system solutions.
 The first circuit in the clockwise direction might result in the product specification;
subsequent passes around the spiral might be used to develop a prototype and
then progressively more sophisticated versions of the software. Each pass results
in adjustments to the project plan. Cost and schedule are adjusted based on
feedback. Also, the number of iterations will be adjusted by project manager.
 Good to develop large-scale system as software evolves as the process progresses
and risk should be understood and properly reacted to. Prototyping is used to
reduce risk.
 However, it may be difficult to convince customers that it is controllable as it
demands considerable risk assessment expertise.

21
Evolutionary Models: The Spiral

 Objective setting Specific objective for that phase of the project are defined.
Constraints on the process & the product are defined & a detailed management plan
is drawn up.[project risks are identified. Alternative strategies, depending on these
risks, may be planned].

 Risk Assessment & reduction for each of the identified project risk, a detailed
analysis is carried out. Steps are taken to reduce the risk.

 Development & Validation after risk evaluation, a development model for the
system is chosen.

 Planning the project is reviewed & a decision made whether to continue with the
further loop of the spiral. If the decided to continue, plans are drawn up for the
next phase of the project.

22
Advantages of Spiral model:

 High amount of risk analysis hence,


avoidance of Risk is enhanced.
 Good for large and mission-critical
projects.
 Strong approval and documentation
control.
 Additional Functionality can be added at a
later date.
 Software is produced early in the software
life cycle.
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)
Disadvantages of Spiral model:

 Can be a costly model to use.


 Risk analysis requires highly specific
expertise.
 Project’s success is highly dependent on
the risk analysis phase.
 Doesn’t work well for smaller projects.
Typical Spiral Model Diagram:

S-ar putea să vă placă și