Software Engineering Unit-1
Software Engineering Unit-1
UNIT I
INTRODUCTION
Software is more than just a program code. A program is an executable code, which serves some
computational purpose. Software is considered to be collection of executable programming code,
associated libraries and documentations.
SDLC: SDLC is a step by step procedure or systematic approach to develop software and it is followed within a
software organization. It consists of various phases which describe how to design, develop, enhance and maintain
particular software.
Phase 3: Design:
In this phase system design specification is prepared from the requirement document. Design is a blue print of the
application and it helps in specifying hardware and requirements of the system and helps in defining architecture of
the system
Phase 4: Coding:
Once the system design document is ready, in this phase developer’s starts writing the code using any programming
language i.e., they start developing the software. Generally task is divided in units or modules and assigned to the
developers and this coding phase is the longest phase of SDLC.
Phase 5: Testing:
Once the software is ready and is deployed in the testing environment, test engineers starts testing, if the functionality
of an application is working according to requirement or not. During this phase test engineers may encounter some
bugs/defects which need to be sent to developers, the developers fix the bug and sent back to test engineers for testing.
This process continuous until the software is bug free/stable/working according to the requirement.
Phase 6: Installation/Deployment:
Once the product developed, tested and works according to the requirement it is installed / deployed at customer place
for their use.
Phase 7: Maintenance:
When the customers starts using the software they may face some issues and needs to be solved, to fix those issue,
tested and handed over back to the customer as soon as possible, which is done in the maintenance phase.
→Waterfall Model
The Waterfall Model was the first Process Model to be introduced. It is also referred to as
a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall
model, each phase must be completed before the next phase can begin and there is no
overlapping in the phases.
The following illustration is a representation of the different phases of the Waterfall Model.
→Iterative Model:
1. Planning Phase: This is the first stage of the iterative model, where proper planning is
done by the team, which helps them in mapping out the specifications documents,
establish software or hardware requirements and generally prepare for the upcoming
stages of the cycle.
2. Analysis and Design Phase: Once the planning is complete for the cycle, an analysis is
performed to point out the appropriate business logic, database models and to know any
other requirements of this particular stage. Moreover, the design stage also occurs in this
phase of iterative model, where the technical requirements are established that will be
utilized in order to meet the need of analysis stage.
3. Implementation Phase: This is the third and the most important phase of the iterative
model. Here, the actual implementation and coding process is executed. All planning,
specification, and design documents up to this point are coded and implemented into this
initial iteration of the project.
4. Testing Phase: After the current build iteration is coded and implemented, testing is
initiated in the cycle to identify and locate any potential bugs or issues that may have
been in the software.
5. Evaluation Phase: The final phase of the Iterative life cycle is the evaluation phase,
where the entire team along with the client, examine the status of the project and validate
whether it is as per the suggested requirements.
• It is easily adaptable to the ever changing needs of the project as well as the client.
• It is more cost effective to change the scope or requirements in Iterative model.
• Parallel development can be planned.
• Testing and debugging during smaller iteration is easy.
• Risks are identified and resolved during iteration; and each iteration is an easily managed.
• In iterative model less time is spent on documenting and more time is given for
designing.
Disadvantages of Iterative Model:
→Spiral Model
Spiral model is a combination of sequential and prototype model. This model is best used for
large projects which involves continuous enhancements. There are specific activities which are
done in one iteration (spiral) where the output is a small prototype of the large software. The
same activities are then repeated for all the spirals till the entire software is build. A spiral
model has 4 phases described below:
1. Planning phase
2. Risk analysis phase
3. Engineering phase
4. Evaluation phase.
Activities which are performed in the spiral model phases are shown below:
Phase
Activities performed Deliverables / Output
Name
Risk Requirements are studied and brain storming sessions Document which highlights all the risk &
Analysis are done to identify the potential risks its mitigation plans.
Evaluation Customers evaluate the software and provide their Features implemented document
feedback and approval
→V-Model
The V-model is an SDLC model where execution of processes happens in a sequential manner
in a V-shape. It is also known as Verification and Validation model.
The following illustration depicts the different phases in a V-Model of the SDLC.
System Design
The system design will have the understanding and detailing the complete hardware and
communication setup for the product under development. The system test plan is developed
based on the system design.
Architectural Design: Architectural specifications are understood and designed in this phase.
Usually more than one technical approach is proposed and based on the technical and financial
feasibility the final decision is taken. The system design is broken down further into modules
taking up different functionality. This is also referred to as High Level Design (HLD).
Module Design
In this phase, the detailed internal design for all the system modules is specified, referred to
as Low Level Design (LLD). It is important that the design is compatible with the other
modules in the system architecture and the other external systems. The unit tests are an essential
part of any development process and helps eliminate the maximum faults and errors at a very
early stage. These unit tests can be designed at this stage based on the internal module designs.
Coding Phase
The coding is performed based on the coding guidelines and standards. The code goes through
numerous code reviews and is optimized for best performance before the final build is checked
into the repository.
Validation Phases
The different Validation Phases in a V-Model are explained in detail below.
10
Unit Testing
Unit testing is the testing at code level and helps eliminate bugs at an early stage, though all
defects cannot be uncovered by unit testing.
Integration Testing
Integration testing is associated with the architectural design phase.
System Testing
System tests check the entire system functionality and the communication of the system under
development with external systems.
Acceptance Testing
Acceptance tests uncover the compatibility issues with the other systems available in the user
environment.
11
• Risk analysis
• Engineering
• Customer evaluation
Once a process model is selected, a preliminary project plan is established based on the process framework
activities.
The Project
• Defining and setting up project scope
• Managing project management activities
• Monitoring progress and performance
• Risk analysis at every phase
• Take necessary step to avoid or come out of problems
********
• Measure.
– Provides a quantitative indication of the amount, dimension, capacity, or size of some attributes
of a product or process.
13
• MetricsRelates the individual measures in some way.(quantitative measure of the degree to which a
system i.e, The goal of software metrics is to identify and control essential parameters that affect
software development. )
• Indicator.
– These indicators provide a detailed insight into the software process, software project, or
intermediate product. Indicators also enable software engineers or project managers to adjust
software processes and improve software products, if required.
Process and project Indicator
Process Indicator
Process Indicators are collected across all projects and over long periods of time. Their intent is to
provide indicators that lead to long term software process improvement.
Project Indicator
Enables a software project manager to
1) Assess the status of an ongoing project
2) Track potential risks.
3) Uncover problem areas before they go “Critical”
4) Adjust work flow or tasks
5) Evaluate the project team’s ability to control quality of software work products.
14
• effort
• Calendar times
Software Measurement
Categories in 2 ways:
◼ Direct measure of the software process & Product
E.g. Lines of code (LOC), execution speed, and defect)
◼ Indirect measures of the product that includes functionality, complexity, efficiency, reliability,
maintainability etc.
Size Oriented Metrics
Size-oriented software metrics are derived by normalizing quality and/or productivity measures by
considering the size of the software that has been produced. A set of simple size-oriented metrics can be
developed for each project: Errors per KLOC (thousand lines of code). Defects4 per KLOC.
15
16
Each unique user input that provides application-oriented data to the SW.
Number of user outputs
Each user output that provides application-oriented information to user (reports, screens, error messages, etc.).
Number of inquiries
Inquiry is an on-line input that results in generation of an immediate SW response in form of an on-line output.
Number of internal files
Include each logical file or if using a DB, logical grouping of data, that is generated, used and maintained by the
application.
Number of external interfaces
Files passed or shared between applications should be counted.
Compute: the function points calculation
17
• correctness
• degree to which SW performs its required function
• Maintainability.
• Ease with which a program can be corrected, adapted, or enhanced.
• Integrity
– Measures system’s ability to withstand attacks on its security.
• Usability
– Quantify user friendliness.
18
19
The original COCOMO model was a set of models; 3 development modes (organic, semi-detached, and
embedded) and 3 levels (basic, intermediate, and advanced). COCOMO model levels:
Basic - predicted software size (lines of code) was used to estimate development effort.
Intermediate - predicted software size (lines of code), plus a set of 15 subjectively assessed 'cost drivers' was
used to estimate development effort
Advanced - on top of the intermediate model, the advanced model allows phase-based cost driver adjustments
and some adjustments at the module, component, and system level.
COCOMO development models:
Organic - small relatively small, simple software projects in which small teams with good application experience
work to a set of flexible requirements.
Embedded - the software project has tight software, hardware and operational constraints.
20
Semi-detached – an intermediate (in size and complexity) software project in which teams with mixed
experience levels must meet a mix of rigid and less than rigid requirements.
Example1: Suppose a project was estimated to be 400 KLOC. Calculate the effort and development time for
each of the three model i.e., organic, semi-detached & embedded.
Solution: The basic COCOMO equation takes the form:
Effort=a1*(KLOC) a2 PM
Tdev=b1*(efforts)b2 Months
Estimated Size of project= 400 KLOC
(i)Organic Mode
E = 2.4 * (400)1.05 = 1295.31 PM
D = 2.5 * (1295.31)0.38=38.07 PM
(ii)Semidetached Mode
E = 3.0 * (400)1.12=2462.79 PM
D = 2.5 * (2462.79)0.35=38.45 PM
(iii) Embedded Mode
E = 3.6 * (400)1.20 = 4772.81 PM
D = 2.5 * (4772.8)0.32 = 38 PM
****************
→Project Planning
The project plan sets out the resources available about to the project, the work breakdown and a schedule
for carrying out the work.
Most plans should include the following sections:
1. Introduction: This briefly describes the objectives of the project and sets out the constraints (Eg:
budget, time etc) which affect the project management.
2. Project Organisation: This describes the way in which the development team is organized, the
people involved and their roles in the team.
21
3. Risk analysis: This describes possible project risks, the likelihood of these risks arising and the
risk reduction strategies, which are proposed.
4. Hardware and Software resource Requirements : This describes the hardware and the
support software required to carry out the development .
5. Work Breakdown : This describes the breakdown of the project into activities and identifies
the milestones ans deliverables associated with each activity.
6. Project Schedule: This describes the dependencies between activities , the estimated time
required to reach each milestone and the allocation of people to the activities.
7. Monitoring and reporting mechanism : This describes the management reports which
should be produced , when these should be produced and the project monitoring mechanisms
used.
*******
→Risk Management
Risk Management can be defined as follows:
• Project risks: are risk s which are affect the project schedule or resources.
• Product risks: are risks which are affect the quality or performance of the software being developed.
• Business Risks : are risks which affect the organization developing or procuring the software.
The process of risk management is involves in several stages:
1. Risk identification: Possible project, product and business risks are identified.
2. Risk Analysis: The likelihood and consequences of these risks are assessed.
3. Risk Planning : Plans to address the risk either by avoiding it or minimizing its effects on the project are
drawn up.
4. Risk Monitoring : The risk is constantly assessed and plans for risks mitigation are revised as more
information about risk becomes available.
22
1 . Risk Identification: This is the first stage of risk management. These types include
➔ Technology risks: Risks which are defines from the software or Hardware technologies
➔ People risks: Risks which are associated with the people in the development team.
➔ Organisational risks : Risks which are derive from the organizational environment where software is
being developed.
➔ Tool risks: Risks which derive from the CASE tools and other support software used to develop the
system.
➔ Requirement risks: Risks which are derive from changes to the customer’s requirements and the
process of managing the requirements change.
➔ Estimation risks: Risks which are derive from the management estimates of the system characteristics
and the resources required to build the system.
2. Risk Analysis: During this risk analysis process, each identified risk is considered in turn and a judgment made
about the probability and the seriousness of the risk..
Once the risks have been analyzed and ranked , a judgment must then be made about which are the most
important risks which are the most important risks which must be considered during the project.
3. Risk Planning: These strategies fall into three categories:
➔ Avoidance strategies : The probability that the risk will arise will be reduced.
➔ Minimization strategies : The impact of the risk will reduced.
➔ Contingency plans : If the worst happens , prepared for it and have a strategy in place to deal with it.
4. Risk Monitoring : It involves regularly assessing each of the identified risks to decide whether or not that risk
is becoming more or less probable and whether the effects of the risk have changed.
23
Risk monitoring should be a continuous process and, at every management progress review , each of the
key risk should be considered separately and discussed by the meeting.
**************
→Project Scheduling:
Project scheduling involves separating the total work involved in a project into separate and judging the time
required to complete these activities. Usually, some of these activities are carried out in parallel.
In estimating schedules , managers should not assume that every stage of the project will be problem free.
Two project scheduling methods:
- Program Evaluation and Review Technique (PERT) is a project management tool used to schedule,
organize, and coordinate tasks within a project. It is basically a method to analyze the tasks involved in completing
a given project, especially the time needed to complete each task, and to identify the minimum time needed to
complete the total project.
- Critical Path Method (CPM) is an algorithm for scheduling a set of project activities. It is commonly
used in conjunction with the program evaluation and review technique (PERT).
Both methods are driven by information developed in earlier project planning activities:
- Estimates of effort.
- A decomposition of product function.
- The selection of the appropriate process model.
- The selection of project type and task set.
Timeline Charts (Gantt charts)
Timeline charts, or also called Gantt charts, are developed for the entire project, for tracking and control of
all activities that need to be performed for project development.
The timeline chart is a kind of a table with the following fields:
- The left hand column contains the project tasks
- The horizontal bars indicate the duration of each task
- The diamonds indicate milestones
24
25