SEN Notes - Unit 1
SEN Notes - Unit 1
SEN Notes - Unit 1
1.1 Introduction to Software, Software Engineering, Software Engineering as Layered approach and its
Characteristics, Types of Software.
1.2 Software Development Framework.
1.3 Software Process Framework, Process models: Perspective Process Models, Specialized Process Models.
1.4 Agile Software Development: Agile Process and its Importance, Extreme Programming, Adaptive Software
Development, Scrum, Dynamic Systems Development Method (DSDM), Crystal.
1.5 Selection criteria for software process model.
1.1 Introduction to Software, Software Engineering, Software Engineering as Layered Approach and
its characteristics, Types of Software:
The main purpose behind software engineering is to give a framework for building a software with best
quality.
According to the IEEE, software engineering is “the application of a systematic disciplined,
quantifiable approach to the development, operation and maintenance of software; that is, the
application of engineering to software”.
In a nutshell, software engineering is a systematic approach used by professionals to develop complex
software end products within a specified time and budget.
1|Page
Software Engineering Definitions:
The establishment and use of sound engineering principles in order to obtain economical software that is
reliable and works efficiently on real machines.
Software engineering is a systematic and disciplined approach towards the development of the software
operation and maintenance.
Software engineering is an engineering branch associated with the development of software product using
well-defined scientific principles, methods and procedures.
Software engineering is defined as a process of analysing user requirements and then designing, building,
and testing software application which will satisfy those requirements.
You can now order clothes, a cab or even food from your smartphone, while on the phone and enroute your next
adventure. And that is only an example of how software has grown to provide humanity with endless opportunities.
But with software becoming more complex there was soon a need to advance from basic programming principles to
that of software engineering in order to tackle those projects more efficiently. More complex software products require
more than basic programming skills, as they are designed to be critical systems for businesses. Software engineering
teams are required to analyse user needs and then go on to design, implement and test their end product to make sure
it satisfies those needs through the use of programming languages. This process is systematic, disciplined and
quantifiable.
Software engineering is a fully layered technology.
To develop a software, we need to go from one layer to another.
All these layers are related to each other and each layer demands the fulfilment of the previous layer.
2|Page
The layered technology consists of:
1. Quality Focus:
a. Correctness of the functions required to be performed by the software
b. Maintainability of the software.
c. Integrity i.e. providing security so that unauthorized user cannot access information or
data.
d. Usability i.e. the efforts required to use or operate the software.
2. Process:
a. It is the base layer or foundation layer for the software engineering.
b. The software process is the key to keep all levels together.
c. It defines a framework that includes different activities and tasks.
d. In short, it covers all the activities actions and tasks required to be carried out for software
development.
3. Methods:
a. The method provides the answers of all ‘how-to’ that are asked during the process.
b. It provides the technical way to implement the software.
c. It includes collection of tasks starting from communication, requirement analysis, analysis
and design modelling, program construction, testing and support.
4. Tools:
a. The software engineering tool is an automated support for the software development.
b. The tools are integrated i.e. the information created by one tool can be used by the other
tool.
c. E.g. – The Microsoft Publisher can be used as a web designing tool.
Characteristics of a software:
Software should achieve a good quality in design and meet all the specifications of the customer.
Software does not wear out i.e. it does not lose the material.
Software should be inherently complex.
Software must be efficient i.e. the ability of the software to use system resources in an effective and
efficient manner.
Software must be integral i.e. it must prevent from unauthorized access to the software or data.
3|Page
Software characteristics are further classified into 8 major components:
1. Functionality: It refers to the degree of performance of the software against its intended purpose.
It basically means are the required functions.
2. Reliability: A set of attributes that bear on the capability of software to maintain its level of
performances understated conditions for a stated period of time.
3. Efficiency: It refers to the ability of the software to use System Resources in the most Effective
and Efficient Manner. The software should make effective use of storage space and executive
commands as per desired timing requirement.
4. Usability: It refers to the extent to which the software can be used with ease. Or the amount of
effort or time required to learn how to use the software should be less.
5. Maintainability: Refers to the ease with which the modifications can be made in a software
system to extend its functionality, improvement, performance or correct errors.
6. Portability: A set of attributes that bears on the ability of the software to be transferred from one
environment to another, without or minimum changes.
7. Robustness: It refers to the degree to which the software can keep on functioning in spite of being
provided with invalid data.
8. Integrity: It refers to the degree to which Unauthorized Access to the software data can be
prevented.
4|Page
Fig: Bathtub curve for Software Failure
Types of Software:
1. System Software:
a. System Software is a collection of programs written to service other programs.
b. Few examples of system software are compilers, editors, and file management utilities,
process complex, but determinate, information structures.
c. Other system applications are operating system components, drivers, and telecommunications.
2. Real-time Software:
a. Software that monitors or analyses or controls real-world events as they occur is called real
time.
b. Elements of real-time software include a data gathering component that collects and formats
information from an external environment, an analysis component that transforms information
as required by the application.
c. A control/output component that responds to the external environment and a monitoring
component that coordinates all other components so that real-time response can be maintained.
3. Business Software:
a. Business information processing is the largest single software application area. Discrete
"systems”.
5|Page
b. For example: payroll, accounts receivable/payable, inventory have evolved into management
information system (MIS) software that accesses one or more large databases containing
business information.
c. Applications in this area restructure existing data in a way that facilitates business operations
or management decision making.
d. In addition to conventional data processing application, business software applications also
encompass interactive computing. Example: Tally
4. Engineering and Scientific Software:
a. Engineering and scientific software have been characterized by "number crunching"
algorithms.
b. Applications range from astronomy to volcanology, from automotive stress analysis to space
shuttle orbital dynamics, and from molecular biology to automated manufacturing.
c. However, modern applications within the engineering/scientific area are moving away from
conventional numerical algorithms.
d. Computer-aided design, system simulation, and other interactive applications have begun to
take on real-time and even system software characteristics.
Example: CAD / CAM software
5. Embedded Software:
a. Intelligent products have become commonplace in nearly every consumer and industrial
market.
b. Embedded software resides in read-only memory and is used to control products and systems
for the consumer and industrial markets.
c. Embedded software can perform very limited and esoteric functions, for example: keypad
control for a microwave oven.
d. To provide significant function and control capability, for example: digital functions in an
automobile such as fuel control, dashboard displays, and braking systems.
Example: Microwave, Washing machine software
6. Personal Computer Software:
a. The personal computer software market has burgeoned over the past two decades.
b. Word processing, spread sheets, computer graphics, multimedia, entertainment, database
management, personal and business fi applications, external network, and database access are
only a few of hundreds of applications.
Example: Microsoft word, Excel.
6|Page
7. Artificial Intelligence Software:
a. AI software makes use of non-numerical algorithms to solve complex problems that are not
amenable to computation or straight forward analysis.
b. Example: Robotics, Microsoft Cortana, Google Assistant.
For example: -
A framework may include predefined classes and functions that can be used to process input,
manage hardware devices, and interact with system software.
This streamlines the development process since programmers don't need to reinvent the wheel
each time, they develop a new application.
A framework is similar to an application programming interface (API), though technically a
framework includes an API.
As the name suggests, a framework serves as a foundation for programming, while an API
provides access to the elements supported by the framework.
A framework may also include code libraries, a compiler, and other programs used in the software
development process.
Software Framework
7|Page
Software Development Framework (Advantages & Disadvantages)
Software Development framework have many advantages that helps software professionals
to a great extent. These are some common advantages of this framework.
Software frameworks also have some deficiencies and disadvantages, these common disadvantages
are listed as follows.
1. In general, creating a framework is time-consuming, it takes lot of time, efforts and resources for
making a software framework. This all makes software framework expensive and time consuming.
2. Creating a new framework needs high proficient skills of particular computer languages.
3. A framework can become obsolete soon due to extra features needed by the outside real world.
4. Software frameworks are made for general purpose so complexity is seen most of the time.
5. The frameworks have predefined rules and every user of these frameworks must follow these rules
in each and every circumstances.
Software Development frameworks are very popular way to create applications in today’s computer world. Some
frameworks offer certain features and certain frameworks offer another feature. You must investigate carefully and
choose wisely which framework best fit to your current application requirements. In short software development
frameworks offer great flexibility in development of computer applications. Framework based applications are fast and
easy to create. These are less error prone and ensure great reliability. Frameworks are getting high popularity these
days and simply dominate in creating every type of applications.
8|Page
1.3 Software Process Framework
The process of framework defines a small set of activities that are applicable to all types of projects.
The software process framework is a collection of task sets.
Task sets consist of a collection of small work tasks, project milestones, work productivity and software
quality assurance points.
A generic process framework encompasses five activities which are given below one by one:
1. Communication:
In this activity, heavy communication with customers and other stakeholders, requirement
gathering is done.
2. Planning:
In this activity, we discuss the technical related tasks, work schedule, risks, required resources etc.
9|Page
3. Modelling:
Modelling is about building representations of things in the ‘real world’. In modelling activity, a
product’s model is created in order to better understanding and requirements.
4. Construction:
In software engineering, construction is the application of set of procedures that are needed to
assemble the product. In this activity, we generate the code and test the product in order to make
better product.
5. Deployment:
In this activity, a complete or non-complete products or software are represented to the customers
to evaluate and give feedback. on the basis of their feedback, we modify the products for supply
better product.
Umbrella Activities
10 | P a g e
4. Formal Technical Reviews (FTR)
a. FTR is a meeting conducted by the technical staff.
b. The motive of the meeting is to detect quality problems and suggest improvements.
c. The technical person focuses on the quality of the software from the customer point of
view.
5. Measurement
a. Measurement consists of the effort required to measure the software.
b. The software cannot be measured directly. It is measured by direct and indirect measures.
c. Direct measures like cost, lines of code, size of software etc.
d. Indirect measures such as quality of software which is measured by some other factor.
Hence, it is an indirect measure of software.
6. Software Configuration Management (SCM)
a. It manages the effect of change throughout the software process.
7. Reusability management
a. It defines the criteria for reuse the product.
b. The quality of software is good when the components of the software are developed for
certain application and are useful for developing other applications
Process Models:
A software process model is an abstraction of the software development process. The models
specify the stages and order of a process. So, think of this as a representation of the order of
activities of the process and the sequence in which they are performed.
The goal of a software process model is to provide guidance for controlling and coordinating the tasks to achieve the
end product and objectives as effectively as possible.
11 | P a g e
Perspective Process Models:
A prescriptive process model is a model that describes "how to do" according to a certain software
process system. Prescriptive models are used as guidelines or frameworks to organize and structure how
software development activities should be performed, and in what order.
1. Waterfall Model
The waterfall model is a sequential, plan driven-process where you must plan and schedule all your
activities before starting the project. Each activity in the waterfall model is represented as a separate phase
arranged in linear order.
Requirements
Design
Implementation
Testing
Deployment
Maintenance
12 | P a g e
In this model the testing starts only after the development is complete. In waterfall model phases
do not overlap.
Requirements
Design
Implementation
Testing
Deployment
Maintainance
The waterfall model is easy to understand and follow. It doesn’t require a lot of customer
involvement after the specification is done. Since it’s inflexible, it can’t adapt to changes. There is no
way to see or try the software until the last phase.
The waterfall model has a rigid structure, so it should be used in cases where the requirements are
understood completely and unlikely to radically change.
13 | P a g e
Advantages of Waterfall Process Model:
1. Once an application is in the testing stage, it is very difficult to go back and change something
that was not well-thought out in the concept stage.
2. No working software is produced until late during the life cycle.
3. High amounts of risk and uncertainty.
4. Major design problems may not be detected early.
5. The model implies that once the product is finished, everything else is maintenance.
The incremental model combines the elements of waterfall model and they are applied in an
iterative fashion.
The first increment in this model is generally a core product.
Each increment builds the product and submits it to the customer for any suggested modifications.
The next increment implements on the customer's suggestions and add additional requirements in
the previous increment.
This process is repeated until the product is finished.
For example, the word-processing software is developed using the incremental model.
14 | P a g e
Fig: Incremental Process Model
1. This model is flexible because the cost of development is low and initial product delivery is
faster.
2. It is easier to test and debug during the smaller iteration.
3. The working software generates quickly and early during the software life cycle.
4. The customers can respond to its functionalities after every increment.
1. The cost of the final product may cross the cost estimated initially.
2. This model requires a very clear and complete planning.
3. The planning of design is required before the whole system is broken into small increments.
4. The demands of customer for the additional functionalities after every increment causes
problem during the system architecture.
15 | P a g e
3. RAD (Rapid Application Development) Model
1. Business Modeling:
a. Business modeling consist of the flow of information between various functions
in the project.
b. For example, what type of information is produced by every function and which
are the functions to handle that information.
c. A complete business analysis should be performed to get the essential business
information.
2. Data Modeling:
a. The information in the business modeling phase is refined into the set of objects
and it is essential for the business.
b. The attributes of each object are identified and define the relationship between
objects.
3. Process Modeling:
a. The data objects defined in the data modeling phase are changed to fulfil the
information flow to implement the business model.
b. The process description is created for adding, modifying, deleting or retrieving a
data object.
4. Application Generation:
a. In the application generation phase, the actual system is built.
b. To construct the software the automated tools are used.
16 | P a g e
5. Testing and Turnover:
a. The prototypes are independently tested after each iteration so that the overall
testing time is reduced.
b. The data flow and the interfaces between all the components are fully tested.
Hence, most of the programming components are already tested.
17 | P a g e
1.4 Agile Software Development
It focuses on the rapid development of the s/w product by considering the current market requirements and
time limits.
Today’s market is rapidly changing and unpredictable.
Agile solves the problem of long time and heavy documentation s/w development process.
Agile focuses on face to face or interactive processes than documentation.
It doesn't believe in more and more documentation because it makes difficult to find the required
information.
It supports team to work together with management for supporting technical decision making.
This method focuses mainly on coding because it is directly deliverable to the users.
Agile saves man power, cost, documentation and time.
18 | P a g e
Agile Model Vs Waterfall Model
Agile and Waterfall model are two different methods for software development process. Though they
are different in their approach, both methods are useful at times, depending on the requirement and the type of
the project.
Agile Model Waterfall Model
Agile method proposes incremental and iterative Development of the software flows sequentially from
approach to software design start point to end point.
The agile process is broken into individual models that The design process is not broken into an individual
designers work on models
The customer has early and frequent opportunities to The customer can only see the product at the end of the
look at the product and make decision and changes to the project
project
Agile model is considered unstructured compared to the Waterfall model are more secure because they are so plan
waterfall model oriented
Error can be fixed in the middle of the project. Only at the end, the whole product is tested. If the
requirement error is found or any changes have to be
made, the project has to start from the beginning
19 | P a g e
Development process is iterative, and the project is The development process is phased, and the phase is
executed in short (2-4) weeks iterations. Planning is very much bigger than iteration. Every phase ends with the
less. detailed description of the next phase.
Documentation attends less priority than software Documentation is a top priority and can even use for
development training staff and upgrade the software with another team
Every iteration has its own testing phase. It allows Only after the development phase, the testing phase is
implementing regression testing every time new executed because separate parts are not fully functional.
functions or logic are released.
In agile testing when an iteration end, shippable features All features developed are delivered at once after the
of the product is delivered to the customer. New features long implementation phase.
are usable right after shipment. It is useful when you
have good contact with customers.
Testers and developers work together Testers work separately from developers
At the end of every sprint, user acceptance is performed User acceptance is performed at the end of the project.
It requires close communication with developers and Developer does not involve in requirement and planning
together analyze requirements and planning process. Usually, time delays between tests and coding
20 | P a g e
Features of Agile Software Development Approach:
1. Modularity:
Modularity allows a process to be broken into components called activities. A set of activities
capable of transforming the vision of the software system into reality.
2. Iterative:
Agile software processes acknowledge that we get things wrong before we get them right.
Therefore, they focus on short cycles. Within each cycle, a certain set of activities is completed.
3. Time-bound:
Iterations become the perfect unit for planning the software development project. We can set
time limits on each iteration and schedule them accordingly.
4. Parsimony:
Agile software processes focus on parsimony. That is, they require a minimal number of
activities necessary to mitigate risks and achieve their goals.
5. Adaptive:
During an iteration, new risks may be exposed which require some activities that were not
planned. The agile process adapts the process to attack these new found risks.
6. Incremental:
An agile process does not try to build the entire system at once. Instead, it partitions the
nontrivial system into increments which may be developed in parallel, at different times, and at
different rates.
7. Convergent:
Convergence states that we are actively attacking all of the risk’s worth attacking. As a result,
the system becomes closer to the reality that we seek with each iteration.
8. People-oriented:
Agile processes favour people over process and technology. Developers that are empowered
raise their productivity, quality, and performance.
9. Collaborative:
Communication is a vital part of any software development project. When a project is
developed in pieces, understanding how the pieces fit together is vital to creating the finished product.
21 | P a g e
Extreme Programming (XP)
Extreme Programming technique is very helpful when there is constantly changing demands or
requirements from the customers or when they are not sure about the functionality of the system. It advocates
frequent "releases" of the product in short development cycles, which inherently improves the productivity of
the system and also introduces a checkpoint where any customer requirements can be easily implemented. The
XP develops software keeping customer in the target.
Business requirements are gathered in terms of stories. All those stories are stored in a place called the
parking lot.
In this type of methodology, releases are based on the shorter cycles called Iterations with span of 14
days’ time period. Each iteration includes phases like coding, unit testing and system testing where at each
phase some minor or major functionality will be built in the application.
22 | P a g e
Phases of Extreme Programming (XP)
There are 6 phases available in Agile XP method, and those are explained as follows:
1. Planning
Identification of stakeholders and sponsors
Infrastructure Requirements
Security related information and gathering
Service Level Agreements and its conditions
2. Analysis
Capturing of Stories in Parking lot
Prioritize stories in Parking lot
Scrubbing of stories for estimation
Define Iteration SPAN(Time)
Resource planning for both Development and QA teams
3. Design
Breakdown of tasks
Test Scenario preparation for each task
Regression Automation Framework
4. Execution
Coding
Unit Testing
Execution of Manual test scenarios
Defect Report generation
Conversion of Manual to Automation regression test cases
Mid Iteration review
End of Iteration review
5. Wrapping
Small Releases
Regression Testing
Demos and reviews
Develop new stories based on the need
Process Improvements based on end of iteration review comments
23 | P a g e
6. Closure
Pilot Launch
Training
Production Launch
SLA Guarantee assurance
Review SOA strategy
Production Support
SCRUM
SCRUM is an agile development method which concentrates specifically on how to manage tasks
within a team-based development environment. Basically, Scrum is derived from activity that occurs during a
rugby match. Scrum believes in empowering the development team and advocates working in small teams
(say- 7 to 9 members). It consists of three roles, and their responsibilities are explained as follows:
1. Scrum Master
a. Master is responsible for setting up the team, sprint meeting and removes obstacles to progress
2. Product owner
a. The Product Owner creates product backlog, prioritizes the backlog and is responsible for the
delivery of the functionality at each iteration
3. Scrum Team
a. Team manages its own work and organizes the work to complete the sprint or cycle
Fig: Scrum
24 | P a g e
Product Backlog:
This is a repository where requirements are tracked with details on the number of requirements (user
stories) to be completed for each release. It should be maintained and prioritized by Product Owner, and it
should be distributed to the scrum team. Team can also request for a new requirement addition or modification
or deletion
Scrum Practices:
25 | P a g e
Dynamic Software Development Method (DSDM)
DSDM is a Rapid Application Development (RAD) approach to software development and provides
an agile project delivery framework. The important aspect of DSDM is that the users are required to be
involved actively, and the teams are given the power to make decisions. Frequent delivery of product becomes
the active focus with DSDM. The techniques used in DSDM are
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
Selecting a Software Development Life Cycle (SDLC) methodology is a challenging task for many
organizations and software engineers. What tends to make it challenging is the fact that few organizations know
what are the criteria to use in selecting a methodology to add value to the organization. Fewer still understand that
a methodology might apply to more than one Life Cycle Model. Before considering a framework for selecting a
given SDLC methodology, we need to define the different types and illustrate the advantages and disadvantages
of those models.
26 | P a g e
How to select the right SDLC- Selecting the right SDLC is a process in itself that the organization can
implement internally or consult for. There are some steps to get the right selection.
STEP 4: Decide
When you define the criteria and the arguments you need to discuss with the team, you will need to have a
decision matrix and give each criterion a defined weight and score for each option. After analyzing the results,
you should document this decision in the project artifacts and share it with the related stakeholders.
27 | P a g e
STEP 5: Optimize
You can always optimize the SDLC during the project execution, you may notice upcoming changes do not fit
with the selected SDLC, it is okay to align and cope with the changes. You can even make your own SDLC
model which optimum for your organization or the type of projects you are involved in.
28 | P a g e