SOFTWARE ENGINEERING –UNIT 1
What is Software Engineering?
The term software engineering is the product of two words, software, and engineering.
The software is a collection of integrated programs.
Software subsists of carefully-organized instructions and code written by developers on any of
various particular computer languages.Computer programs and related documentation such as
requirements, design models and user manuals.
Engineering is the application of scientific and practical knowledge to invent, design, build,
maintain, and improve frameworks, processes, etc.
Software Engineering is an engineering branch related to the evolution of software product
using well-defined scientific principles, techniques, and procedures. The result of software
engineering is an effective and reliable software product.
Why is Software Engineering required?
Software Engineering is required due to the following reasons:
To manage Large software
For more Scalability
Cost Management
To manage the dynamic nature of software
For better quality Management.
Definition
Software Engineering is the technical and management discipline concerned
with systematic production and maintenance of software products that are
developed and modified on time within cost estimates.
Programmers- Implementing, packaging and modifying algorithms.
Software engineers- analysis design, verification and validation, testing,
documentation, software maintenance and project management.
SIZE FACTORS
1. Total effort devoted to software:
• 1955- Hardware cost 80% high
• 1980- Reverse
2. Distribution of Effort
1 to 3 years development and 15 years maintenance
The distribution effort 40/60, 30/70, 10/90
3. Project Size Categories
Determines the level of management control and the types of tools and
1
SOFTWARE ENGINEERING –UNIT 1
techniques required on a software project.
Trivial: One programmer working part time, develop the software for the
exclusive use of the programmer and one usually discarded after a few
months.
Small projects: Scientific application written by engineers to solve numerical
problems.
Medium Size projects: Assemblers, Compliers, Small management Systems,
inventory, process control applications.
Large Projects : Large compilers, time-sharing systems, data base packages,
graphics programs for data acquisition and display.
Very large projects: air traffic control, missile, defence and military command
and control systems
4. How programmers spend their time:
Writing programs 18%
Reading programs and manuals 16%
Job communication 32%
Personal 13%
Miscellaneous 15%
Training 6%
Mail 5%
Writing small programs for personal use and developing or modifying a
software product.
Ex: Electrical engineer assembling the components
High quality software Technical and managerial skill
QUALITY AND PRODUCTIVITY FACTORS
Factors that influence quality and productivity
1. Individual level:
Lack of Competence Poor productivity and quality
General Competence of individual Ability to
Two Aspects write correct programs
Familiarity of the individual
Experiment by Sackman
12 programmers implemented 2 programs
Prepared by S.Radha Priya 10
Performance
measure
Ratio
Debugging hours #1 28:1
Debugging hours #2 26:1
Runtime #1 5:1
2
SOFTWARE ENGINEERING –UNIT 1
Runtime #2 13:1
2. Team Communication
Many programmers low social needs prefer to work alone
Increased product size results in decreasing programmer
Brooks- number of paths among the programmers is n(n-1)/2
n= number of programmers
If n=3 3(3-1)/2=6/2=3
3. Product Complexity:
Three level of product complexity.
Application programs written in HLL Scientific and data processing
Highest productivity measured in lines of productivity
Utility programs Compilers, assemblers, linkage editors, loaders
HLL
(Pascal, Ada, Assembly language)
5 to 10 times(effort)
System level programs Data Communication packages
PL/1 or Ada
25 to 100 times effort
4. Appropriate Notations:
Good notations clarify the relationships
Vehicle of communication among the project personnel
5. Systematic approaches
use accepted procedures and techniques
6. Change Control
Software adapts general purpose computing hardware to particular
applications
7. Level of Technology
Hardware and software facilities available for developing ,using and
maintain a software product.
Modern programming practices include use of systematic analysis and
design techniques, appropriate notations, structured coding, systematic
techniques for examining design documents and source code.
8. Level of Reliability:
Basic level of reliability
Extreme Reliability – Great care in analysis, design, implementation,
system testing and maintenance of software product.
9. Problem Understanding:
Not understanding problem leads to limitations
Careful planning, customer interviews, task observation, user manual,
product specifications can increase both customers and developer
understand the problem.
10. Available time
Six programmer effort can be completed in 6 months or six programmers in
one month.
11. Required skills
Good communication skills, writing text book-no misspellings.
3
SOFTWARE ENGINEERING –UNIT 1
No errors in syntax or punctuation.
Absolute consistency in cross referencin
Waterfall model
Winston Royce introduced the Waterfall Model in 1970.This model has five phases:
Requirements analysis and specification, design, implementation, and unit testing, integration
and system testing, and operation and maintenance. The steps always follow in this order and do
not overlap. The developer must complete every phase before the next phase begins. This model
is named "Waterfall Model", because its diagrammatic representation resembles a cascade of
waterfalls.
1. Requirements analysis and specification phase: The aim of this phase is to understand the
exact requirements of the customer and to document them properly. Both the customer and the
software developer work together so as to document all the functions, performance, and
interfacing requirement of the software. It describes the "what" of the system to be produced and
not "how."In this phase, a large document called Software Requirement Specification (SRS)
document is created which contained a detailed description of what the system will do in the
common language.
2. Design Phase: This phase aims to transform the requirements gathered in the SRS into a
suitable form which permits further coding in a programming language. It defines the overall
software architecture together with high level and detailed design. All this work is documented
as a Software Design Document (SDD).
4
SOFTWARE ENGINEERING –UNIT 1
3. Implementation and unit testing: During this phase, design is implemented. If the SDD is
complete, the implementation or coding phase proceeds smoothly, because all the information
needed by software developers is contained in the SDD.
During testing, the code is thoroughly examined and modified. Small modules are tested in
isolation initially. After that these modules are tested by writing some overhead code to check
the interaction between these modules and the flow of intermediate output.
4. Integration and System Testing: This phase is highly crucial as the quality of the end
product is determined by the effectiveness of the testing carried out. The better output will lead
to satisfied customers, lower maintenance costs, and accurate results. Unit testing determines the
efficiency of individual modules. However, in this phase, the modules are tested for their
interactions with each other and with the system.
5. Operation and maintenance phase: Maintenance is the task performed by every user once
the software has been delivered to the customer, installed, and operational.
When to use SDLC Waterfall Model?
Some Circumstances where the use of the Waterfall model is most suited are:
When the requirements are constant and not changed regularly.
A project is short
The situation is calm
Where the tools and technology used is consistent and is not changing
When resources are well prepared and are available to use.
Advantages of Waterfall model
This model is simple to implement also the number of resources that are required for it is
minimal.
The requirements are simple and explicitly declared; they remain unchanged during the entire
project development.
The start and end points for each phase is fixed, which makes it easy to cover progress.
The release date for the complete product, as well as its final cost, can be determined before
development.
It gives easy to control and clarity for the customer due to a strict reporting system.
Disadvantages of Waterfall model
In this model, the risk factor is higher, so this model is not suitable for more significant and
complex projects.
This model cannot accept the changes in requirements during development.
It becomes tough to go back to the phase. For example, if the application has now shifted to the
coding phase, and there is a change in requirement, It becomes tough to go back and change it.
5
SOFTWARE ENGINEERING –UNIT 1
Since the testing done at a later stage, it does not allow identifying the challenges and risks in the
earlier phase, so the risk reduction strategy is difficult to prepare.
RAD (Rapid Application Development) Model
RAD is a linear sequential software development process model that emphasizes a concise
development cycle using an element based construction approach. If the requirements are well
understood and described, and the project scope is a constraint, the RAD process enables a
development team to create a fully functional system within a concise time period.
RAD (Rapid Application Development) is a concept that products can be developed faster and of
higher quality through:
Gathering requirements using workshops or focus groups
Prototyping and early, reiterative user testing of designs
The re-use of software components
A rigidly paced schedule that refers design improvements to the next product version
Less formality in reviews and other team communication
The various phases of RAD are as follows:
6
SOFTWARE ENGINEERING –UNIT 1
1.Business Modelling: The information flow among business functions is defined by answering
questions like what data drives the business process, what data is generated, who generates it,
where does the information go, who process it and so on.
2. Data Modelling: The data collected from business modeling is refined into a set of data
objects (entities) that are needed to support the business. The attributes (character of each entity)
are identified, and the relation between these data objects (entities) is defined.
3. Process Modelling: The information object defined in the data modeling phase are transformed to
achieve the data flow necessary to implement a business function. Processing descriptions are created
for adding, modifying, deleting, or retrieving a data object.
4. Application Generation: Automated tools are used to facilitate construction of the software;
even they use the 4th GL techniques.
5. Testing & Turnover: Many of the programming components have already been tested since
RAD emphasis reuse. This reduces the overall testing time. But the new part must be tested, and
all interfaces must be fully exercised.
When to use RAD Model?
When the system should need to create the project that modularizes in a short span time (2-3
months).
When the requirements are well-known.
When the technical risk is limited.
When there's a necessity to make a system, which modularized in 2-3 months of period.
It should be used only if the budget allows the use of automatic code generating tools.
Advantage of RAD Model
This model is flexible for change.
In this model, changes are adoptable.
Each phase in RAD brings highest priority functionality to the customer.
It reduced development time.
It increases the reusability of features.
Disadvantage of RAD Model
It required highly skilled designers.
All application is not compatible with RAD.
For smaller projects, we cannot use the RAD model.
On the high technical risk, it's not suitable.
Required user involvement.
7
SOFTWARE ENGINEERING –UNIT 1
Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software process model that
couples the iterative feature of prototyping with the controlled and systematic aspects of the
linear sequential model. It implements the potential for rapid development of new versions of the
software. Using the spiral model, the software is developed in a series of incremental releases.
During the early iterations, the additional release may be a paper model or prototype. During
later iterations, more and more complete versions of the engineered system are produced.
The Spiral Model is shown in fig:
Each cycle in the spiral is divided into four parts:
Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle,
the various alternatives that are possible for achieving the targets, and the constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is located on
the risk perception for the project.
8
SOFTWARE ENGINEERING –UNIT 1
Development and validation: The next phase is to develop strategies that resolve uncertainties
and risks. This process may include activities such as benchmarking, simulation, and
prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether
to continue with a further period of the spiral. If it is determined to keep, plans are drawn up for
the next step of the project.
The development phase depends on the remaining risks. For example, if performance or user-
interface risks are treated more essential than the program development risks, the next phase may
be an evolutionary development that includes developing a more detailed prototype for solving
the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of approach. An
essential element of the model is that each period of the spiral is completed by a review that
includes all the products developed during that cycle, including plans for the next cycle. The
spiral model works for development as well as enhancement projects.
When to use Spiral Model?
When deliverance is required to be frequent.
When the project is large
When requirements are unclear and complex
When changes may require at any time
Large and high budget projects
Advantages
High amount of risk analysis
Useful for large and mission-critical projects.
Disadvantages
Can be a costly model to use.
Risk analysis needed highly particular expertise
Doesn't work well for smaller projects.
9
SOFTWARE ENGINEERING –UNIT 1
Agile Model
The meaning of Agile is swift or versatile."Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks into smaller
iterations, or parts do not directly involve long term planning. The project scope and
requirements are laid down at the beginning of the development process. Plans regarding the
number of iterations, the duration and the scope of each iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which typically
lasts from one to four weeks. The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery time requirements. Each
iteration involves a team working through a full software development life cycle including
planning, requirements analysis, design, coding, and testing before a working product is
demonstrated to the client.
Phases of Agile Model:
Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
10
SOFTWARE ENGINEERING –UNIT 1
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project. Based on
this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders to
define requirements. You can use the user flow diagram or the high-level UML diagram to show
the work of new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins. Designers
and developers start working on their project, which aims to deploy a working product. The
product will undergo various stages of improvement, so it includes simple, minimal
functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance and
looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
Agile Testing Methods:
Scrum
Crystal
Dynamic Software Development Method(DSDM)
Feature Driven Development(FDD)
Lean Software Development
eXtreme Programming(XP)
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.
There are three roles in it, and their responsibilities are:
Scrum Master: The scrum can set up the master team, arrange the meeting and remove obstacles
for the process
Product owner: The product owner makes the product backlog, prioritizes the delay and is
responsible for the distribution of functionality on each repetition.
11
SOFTWARE ENGINEERING –UNIT 1
Scrum Team: The team manages its work and organizes the work to complete the sprint or
cycle.
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance.
Crystal:
There are three concepts of this method-
1. Chartering: Multi activities are involved in this phase such as making a development team,
performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
o Team updates the release plan.
o Integrated product delivers to the users.
3. Wrap up: According to the user environment, this phase performs deployment, post-deployment.
Dynamic Software Development Method(DSDM):
DSDM is a rapid application development strategy for software development and gives an agile
project distribution structure. The essential features of DSDM are that users must be actively
connected, and teams have been given the right to make decisions. The techniques used in
DSDM are:
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
The DSDM project contains seven stages:
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
Feature Driven Development(FDD):
This method focuses on "Designing and Building" features. In contrast to other smart methods,
FDD describes the small steps of the work that should be obtained separately per function.
12
SOFTWARE ENGINEERING –UNIT 1
Lean Software Development:
Lean software development methodology follows the principle "just in time production." The
lean method indicates the increasing speed of software development and reducing costs. Lean
development can be summarized in seven phases.
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole
When to use the Agile Model?
When frequent changes are required.
When a highly qualified and experienced team is available.
When a customer is ready to have a meeting with a software team all the time.
When project size is small.
Advantage(Pros) of Agile Method:
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
Disadvantages(Cons) of Agile Model:
1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.
2. Due to the lack of proper documentation, once the project completes and the developers allotted
to another project, maintenance of the finished project can become a difficulty.
13