Software Engineering - UNIT I .pdf
Software Engineering - UNIT I .pdf
ENGINEERING
Course Objectives
● CO1: Analyze software requirements and formulate design solution for a software.
● CO2: Design applicable solutions in one or more application domains using software engineering
approaches that integrate ethical, social, legal and economic concerns.
● CO3: Apply new software models, techniques and technologies to bring out innovative and novelistic
solutions for the growth of the society in all aspects and evolving into their continuous professional
development.
● CO5: Identify and handle risk management and software configuration management.
● CO6: Utilize knowledge of software testing approaches, approaches to verification and validation.
● CO7: Construct software of high quality – software that is reliable, and that is reasonably easy to
understand, modify and maintain efficient, reliable, robust and cost-effective software solutions.
Examination Scheme and Marks:
Mid-Semester(TH): 30 Marks
End-Semester(TH): 70 Marks
UNIT I
Introduction to
Software Engineering
and
Software
Process Models
Unit I Contents
Software Engineering Fundamentals: Introduction to software engineering, The
Nature of Software, Defining Software, Software Engineering Practice.
Unified Process, Agile software development: Agile methods, plan driven and
agile development.
THE NATURE OF SOFTWARE
What is it?
Computer software is the product that software professionals build and then support
over the long term. It encompasses programs that execute within a computer of any
size and architecture, content that is presented as the computer programs execute,
and descriptive information in both hard copy and virtual forms that encompass
virtually any electronic media.
Engineering is the application of scientific and practical knowledge to invent, design, build,
maintain, and improve frameworks, processes, etc.
Software Application Domains
● Mobile Applications
● Cloud Computing
● Product Line
Software
SOFTWARE
ENGINEERING
Software engineering
encompasses a process, a
collection of methods (practice)
and an array of tools that allow
professionals to build high-
quality computer software.
SOFTWARE
ENGINEERING
(1) The application of a systematic,
disciplined, quantifiable approach
to the development, operation,
and maintenance of software; that
is, the application of engineering
to software.
(2) The study of approaches as in (1).
SOFTWARE
ENGINEERING
The IEEE definition:
• Software Engineering: The application of a
systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of
software; that is, the application of engineering to
software.
• Engineering approach to develop software.
Building Construction Analogy.
• Systematic collection of past
experience: Techniques,
Methodologies,
Guidelines.
Why is Software Engineering required?
The necessity of software engineering appears because of a higher rate of progress in user
requirements
and the environment on which the program is working.
- Huge Programming
- Adaptability
- Cost
- Dynamic Nature
- Quality Management
Importance of Software
Engineering
Software engineering is a layered technology.
Software engineering is a layered technology.
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.
Umbrella activities
1.include
Software project tracking and control
2. Risk management
3. Software Quality Assurance (SQA
4. Formal Technical Reviews (FTR)
5. Measurement
6. Software Configuration Management (SCM)
7. Reusability management
8. Work product preparation and production
1. Software project tracking and control- In this activity, the developing team
accesses project plan and compares it with the predefined schedule. If these
project plans do not match with the predefined schedule, then the required
actions are taken to maintain the schedule.
3. Software Quality Assurance (SQA)- SQA is the planned and systematic pattern of activities
which are required to give a guarantee of software quality.
For example, during the software development meetings are conducted at every stage of development
to
find out the defects and suggest improvements to produce good quality software.
8. Work product preparation and production- It consists of the activities that are needed to create
the documents, forms, lists, logs and user manuals for developing a software.
Process Flow:
1. Linear Process Flow
A linear process flow executes each of the five framework activities in sequence, beginning
with
communication and culminating with deployment.
Process Flow:
1. Iterative Process Flow
An iterative process flow repeats one or more of the activities before proceeding to the
next .
Process Flow:
1. Evolutionary Process Flow
An evolutionary process flow executes the activities in a “circular”
manner.
Process Flow:
1. Parallel Process Flow
A parallel process flow executes one or more activities in parallel with other
activities .
The
Process
Model
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.
The Process Model
- 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.
If you know your requirements well, it will be easier to select a model that best matches
your needs. You need to keep the following factors in mind when selecting your software
process model:
1. Project requirements
2. Project size
3. Project complexity
4. Cost of delay
5. Customer involvement
6. Familiarity with technology
7. Project resources
PROCESS MODEL
PROCESS
MODEL
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
The name 'prescriptive' is given because the model prescribes a set of activities, actions,
tasks, quality assurance and change the mechanism for every project.
Prescriptive Process Models: 1. The Waterfall Model
- The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle
model'.
- In this model, each phase is fully completed before the
beginning of the next phase.
- This model is used for the small projects.
- In this model, feedback is taken after each
phase to ensure that the project is on the right
path.
- Testing part starts only after the development is
complete.
Prescriptive Process Models: 1. The Waterfall Model
- 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.
Prescriptive Process Models: 2. Incremental Process model
1. The prototype model requires that before carrying out the development of actual software, a
working prototype of the system should be built.
2. A prototype is a toy implementation of the system.
3. A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as
compared to actual software.
Advantage of Prototype Model:
1. It needs better communication between the team members. This may not be achieved all the
time.
2. It requires to remember the status of the different activities.
Unified Process
Unified process (UP) is an architecture centric, use case driven, iterative and incremental
development process. UP is also referred to as the unified software development
process.
Unified Process
- Unified process (UP) is an architecture centric, use case driven, iterative and incremental
development process. UP is also referred to as the unified software development process.
- The Unified Process recognizes the importance of customer communication and streamlined
methods
for describing the customer’s view of a system.
- It suggests a process flow that is iterative and incremental, providing the evolutionary feel that
is essential in modern software development.
• A use case is a concept used in software development, product design, and other fields to describe how
a system can be used to achieve specific goals or tasks. It outlines the interactions between users or
actors and the system to achieve a specific outcome.
• A use case is a description of the ways in which a user interacts with a system or product. It may
establish the success scenarios, the failure scenarios, and any critical variations or exceptions. A use
case can be written or made visual with the help of a use case model tool.
Test case
A test case checks whether the user can accomplish their goal without problems. If the use case involves a
customer logging in to their account, the test case will check if the login process works smoothly.