0% found this document useful (0 votes)
25 views60 pages

1.SE & Process Models

This document defines software and software engineering, and describes different types of software and the software development process. It discusses: 1. Definitions of software and software engineering. Software engineering aims to develop reliable software products using scientific principles and methods. 2. The changing nature of software, including system software, application software, embedded software, and different types like web applications, AI software, and mobile apps. 3. The software development process, which involves planning, modeling, construction, and deployment through defined activities and frameworks to produce quality software on time and within budget.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views60 pages

1.SE & Process Models

This document defines software and software engineering, and describes different types of software and the software development process. It discusses: 1. Definitions of software and software engineering. Software engineering aims to develop reliable software products using scientific principles and methods. 2. The changing nature of software, including system software, application software, embedded software, and different types like web applications, AI software, and mobile apps. 3. The software development process, which involves planning, modeling, construction, and deployment through defined activities and frameworks to produce quality software on time and within budget.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 60

1.

Introduction to Software Engineering


and Process Models
1.1 Definition of Software

 “Software is a set of instructions to acquire inputs and to process them to


produce the desired output in terms of functions and performance as
determined by the user of the software.”
OR
 “Software is a set of instructions, data or programs used to operate
computers and execute specific tasks.”
 Software encompasses of:
1. Instructions
2. Documents
3. Architecture
2. Nature Of Software Engineering

 Definition of Software Engineering


“Software engineering is an engineering branch associated with development
of software product using well-defined scientific principles, methods and
procedures.”
The outcome of software engineering is an efficient and reliable software
product.
 Software Engineering a Layered Technology
 1.Quality : Software quality can be judged using its six attributes
 Functionality
 Reliability
 Usability
 Efficiency
 Maintainability
 Portability
 2. Process : Process is a series of events which produce a result. Means
Predictable steps. It defines a project context for which various documents
,models, forms, reports etc. are produced.
 3. Methods : It focuses on how to build the software. OR Method is a
particular way of doing something.
 4.Tools : This layer refers to automated or semi automated tools which help
the people involved to complete software processes more efficiently and
with less errors.
3. Changing Nature of Software
 1. System Software
A. Operating System
B. System Support Software
C. System Development Software
 2. Application Software
A. General Purpose Software
B. Special Purpose Software
 3. Embedded Software
 4. Engineering/Scientific Software
 5. Product-line software
 6. Web Applications
 7. Artificial Intelligence Software
 8. Mobile Applications
 9. Cloud Computing
 1. System Software : System Software is a software that can control and
work with computer hardware. It provides platform to other software's.
 A. Operating System: ”It is a software that acts as an interface between
computer hardware components and the user. ”
It manages the computer's memory and processes, as well as all of
its software and hardware.
It also allows you to communicate with the computer without knowing how to
speak the computer's language.
Eg. Apple macOS, Microsoft Windows, Google's Android OS, Linux Operating
System, and Apple iOS.
 B. System Support Software : System support software is software that
supports, or facilitates the smooth and efficient execution of various
programs and operations of a computer.
There are four major categories of systems support software:
 utility programs - software designed to help analyze, configure, optimize
or maintain a computer. Eg. Antivirus Software, File Management System,
Disk Management Tools, Compression Tools, Disk Cleanup Tool, Backup
Utility.
 Language Translators – The translator is a programming language processor
that converts a high-level or assembly language program to machine-
understandable low-level machine language . Eg. Compiler, interpreter
 Database management systems - computerized data-keeping system. Eg.
MySQL, PostgreSQL, Microsoft Access, SQL Server
 Performance statistics software - performed to determine how
a system performs in terms of responsiveness and stability under a particular
workload. Eg. MATLAB, SAS
 C. System Development Software : software packages and programs that
assist programmers in designing and developing new systems. Eg . Eclipse,
editor
 2. Application Software : It is only designed to solve user problems as per
users requirement.
 A. Generic Software: Generic software is software that can perform many
different tasks and is not limited to one particular application.eg Word,
excel etc.
 B. Customized software: It is a software that is specially developed for some
specific organization or other user.eg. Tax calculation system, ERP etc.
 3. Embedded Software : Embedded software is a piece of software
that is embedded in hardware. It is written specifically for the
particular hardware that it runs on. Eg. GPS devices, factory
robots, some calculators, washing machines, refrigerators, ovens
etc.
 4.Engineering/Scientific Software: Scientific and engineering
software satisfies the needs of a scientific or engineering user to
perform enterprise-specific tasks. Such software is written for
specific applications using principles, techniques, and formulae
specific to that field. Examples are software like MATLAB,
AUTOCAD, CAM, OR CAD, etc
 5. Product-line Software :It focuses on mass consumer market or
specific market area. Software is developed for common
functionality identified among many products .And implemented
using set of software components which are reusable.
 Eg. Microsoft Corporation (MSFT) as a brand sells several highly
recognized product lines including Windows, MS Office, and the
Xbox.
 6. Web-Applications : A web application is a computer program that
utilizes web browsers and web technology to perform tasks over
the Internet. Eg. Gmail, Amazon, Google docs
 7. Artificial Intelligence Software : “Software that is capable of intelligent
behavior.” In creating intelligent software, this involves simulating a number
of capabilities, including reasoning, learning, problem solving, perception,
knowledge representation.
Eg. Google Assistant, Amazon's Alexa, Apple's Siri, and Microsoft's Cortana
 8. Mobile Applications : It is a type of application software designed to run
on a mobile device, such as a smartphone or tablet computer.
Eg. Educational apps., Social media apps., Game apps
 9. Cloud Computing : cloud computing is the delivery of computing
services—including servers, storage, databases, networking, software,
analytics, and intelligence—over the Internet (“the cloud”) to offer faster
innovation, flexible resources, and economies of scale.
4. Software Process

 Software project specifies what is to be developed as per the user’s


requirements.
 Software process is the set of related tasks/activities carried out in order to
produce the required software in time.
 Each task performs a well-defined function.
 Process tries to produce high quality product within less time and cost.
 It is dynamic or adaptable in nature.
4.1 Process Framework
 The process framework provides a support structure for entire software
engineering in the form of set of activities.
 These activities are applicable to all software projects irrespective of its size
complexity and type.
 The basic activities included in generic software process framework are:
1. Communication: In order to understand the objective, functionality, limits
and features of the software it is required to communicate with the
customer and other stake holders before starting any technical work. This
includes various meetings and reports produced as a result of the meetings.
2. Planning: Planning always help in smooth working of a team towards the
goal. A plan created for completing the software project is called 'software
project plan. This plan identifies and specifies the risks involved, resources
required sequence of technical tasks to be performed, work products
produced and schedule for the work.
3. Modelling :This activity creates a model (blueprint) which clearly describes
the software requirements and the design that will achieve these
requirements.
 This is helpful to both customer and the developer respectively, to
understand what he wants from the software and how he can develop it.
 Modeling is composed of two activities-analysis (requirements gathering,
elaboration, negotiation, specification and validation) and design ( data
design, interface design and each module level design).
4. Construction : This activity includes code generation either manually or using
automated tools and then testing the code to correct the errors if any.
5. Deployment : The software (as a complete product or in a partial stage) is
delivered to the customer who then checks the product and provides
feedback on evaluation.
4.2 Umbrella Activities
 “Umbrella activities are a series of steps or procedures followed by a
software development team to maintain the progress, quality, changes,
and risks of complete development tasks. ”
 Umbrella Activities are applicable throughout the software process.
 Software Project Tracking and Control: Software team assesses the progress
of the project plan time to time and takes necessary action to maintain
the schedule. Thus, software team tracks and control a project schedule.
 Risk Management: Software team assesses the risks that may affect the
outcome of the project or say quality of the product.
 Software Quality Assurance : Software team defines and conducts the
activities needed to preserve quality of the software product.
 Formal Technical Reviews: Software team assesses the technical efforts to
find and remove the errors before they are forwarded to the next action.
 Measurement: Just the coincidence is the four Ps of Software Engineering:
Project (the task at hand. Process (the manner it is done), Product (the
object produced) and People (by whom it is done) Software team collects
all the project, process and product measures so that it can be used in
combination with all other framework and umbrella activities.
 Software Configuration Management: It is about managing the changes
and their version throughout the software process.
 Reusability Management: Defining the criteria for work product reuse and
establishes mechanisms to achieve reusable components.
 Work Product Preparation and Production: Proper planning so as to create
work products such as models, documents, logs, forms and lists.
4.3 Process Adaptation
 Software process should be flexible and accommodative in nature.
 It should be dynamic or adaptable to the project, to the team and to the
organization as a whole.
 It is possible that a software process used for one project may differ with another
in the following areas:
i Sequence of activities and tasks performed and their dependencies on each
other.
ii Identification of required work products and their depth of implementation.
iii. Quality assurance techniques and activities used.
iv. Techniques and activities used for project tracking and control activities.
v. Stress given on details of process description.
vi. Level of liberty given to the software team.
vii. Details about the roles played by individuals in a development team.
5. Generic Process Model
 “Depending on the nature and objectives of the project ,different
methodologies or processes are used for development of the project which
are called as Process Model.”
 A generic process model mainly consists of two types of activities.
1. Fundamental Activities : (Communication, Planning, Modelling,
Construction, Deployment) These are applicable regardless of project type.
2. Umbrella Activities : Applied throughout the software development project.
 Process flow specifies the way to carry fundamental/framework activities
with respect to time and order. There are 4 different types of process flow.
 1. Linear Process Flow: Executes the five framework activities in a sequence
starting with communication and ending with 'deployment.

 2. Iterative Process Flow: Repeats one or more of the five framework


activities before proceeding to the next.
 3. Evolutionary Process Flow: Executes the five framework activities in a
circular/cyclic manner
 4. Parallel Process Flow: At a time, executes one or more activities i.e, one
or more of the five framework activities are executed in parallel with the
other. Say, modelling of one module is executed parallel to the
construction of another module.
6. Prescriptive Process Models
 Prescriptive process models provide orderly approach to software engineering.
 It specifies step by step sequence of activities addressing “how to do” the
software development.
1. Waterfall Model
 It is also referred as ‘traditional’ or ‘typical’ or ‘classic life cycle’ model or SDLC i.e
‘Software Development Life Cycle’ model.
 It is the oldest model for software engineering.
 Proposed by Winston Royce in 1970.
 In "The Waterfall" approach, the whole process of software development is
divided into separate phases.
 In this Waterfall model, typically, the outcome of one phase acts as the input for
the next phase sequentially.
 At any stage of the project it is not possible to go back to previous stage.
 The sequential phases in Waterfall model are −
• Requirement Gathering and analysis − All possible requirements of the system to be
developed are captured in this phase and documented in a requirement
specification document.
• System Design − The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
• Implementation − With inputs from the system design, the system is first developed
in small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
• Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. In Post integration the entire
system is tested for any faults and failures.
• Deployment of system − Once the functional and non-functional testing is done;
the product is deployed in the customer environment or released into the market.
• Maintenance − There are some issues which come up in the client environment. To
fix those issues, patches are released. Also to enhance the product some better
versions are released. Maintenance is done to deliver these changes in the
customer environment.
 Advantages of the Waterfall Model are as follows −
• Simple and easy to understand and use
• Easy to manage due to the rigidity of the model.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are very well understood.
• Clearly defined stages.
• Easy to arrange tasks.
• Process and results are well documented.
 The major disadvantages of the Waterfall Model are as follows −
• It is not easy for user to explicitly specify all requirements at the beginning of the
project.
• No working software is produced until last stage is completed.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk
of changing. So, risk and uncertainty is high with this process model.
• It is difficult to measure progress within stages.
• Integration is done at the very end, which doesn't allow identifying any
technological or business challenges early.
2. 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.
 Verification is a process of determining if the software is designed and
developed as per the specified requirements. Validation is the process of
checking if the software (end product) has met the client's true needs and
expectations.
 The V-Model is an extension of the waterfall model and is based on the
association of a testing phase for each corresponding development stage.
 This means that for every single phase in the development cycle, there is a
directly associated testing phase. This is a highly-disciplined model and the next
phase starts only after completion of the previous phase.
 Verification Phases in V-Model
i) Requirements analysis: Expectations and needs of user from the software
are collected through communication with client/user.
ii) Architecture design: Architecture of the entire system is designed. This
design specifies various components/ modules, their dependencies on
each other, brief functionalities of each component, technology details
and so on.
iii) Component design: The entire system is broken down into smaller modules
and detailed functionality of every component is specified with its
expected input and output.
iv) Coding: Correct and optimized code is written for implementing each
component and its functionality. Suitable programming language is used
for the same.
 Validation Phases in V-Model
i) Unit testing: Unit tests are designed and performed to ensure error free
code at a program module level. It checks the correct execution of each
functionality implemented.
ii) Integration Testing: Integration testing ensures the error free and smooth
working of various components/modules together.
iii) System Testing: System testing ensures that the system as a whole is
working correctly and providing the expected functionalities.
iv) Acceptance Testing: The system is tested in user's environment before the
final acceptance.
 Advantages of V Model
i) Testing is planned well before coding.
ii) Higher chances of success over waterfall model.
iii) Efficient for small projects when requirements are clearly specified.
 Disadvantages of V-Model
i) Not flexible.
ii) Does not work efficiently with large and complex projects.
iii) Difficult to adapt changing requirements.
3. Incremental Process Model

 An incremental model tries to deliver series of increments with upgraded


functionalities.
 Instead of developing an entire system with all its functionalities, incremental
model tries to split functionalities into different pieces and develops each piece
as an increment.
 It uses all phases of waterfall model iteratively for developing the increment.
 This model does not freeze the requirements at the beginning of the project like
waterfall model.
 Incremental process model aims early delivery of software prototype/version
with limited important functionalities. This increment/version is given to user and
based on the feedback received further upgradation take place.
 Features of Incremental Model
1. It uses combination of linear and parallel process flows.
2. Full development task is broken into smaller portions.
3. Increment development process starts when preliminary version of
requirements is prepared. First increment developed is a core product.
4. The increment developed is then delivered to the customer at the end of
each iteration. Each iteration performs fundamental activities in linear flow.
The feedback received is used to refine and expand the functionalities in,
the successive versions.
5. Each version delivered, add additional functionalities to the previous
release until the final product is developed and deployed.
6. This model is suitable for large and complex systems.
 Advantages of Incremental Model
1. It is easier to get feedback from the customer on the development work
completed by the team.
2. Early delivery of useful software to the customer.
 Limitations of Incremental Model
1. It is not cost effective to produce documentation for every version
developed.
2. Development of new versions leads to messy code and structural
degradation of the system.
4. Evolutionary Process Models

• Evolutionary models are iterative type models.


• They allow to develop more complete versions of the software.
• Two common evolutionary process models:

1. The prototyping model

2. The spiral model


1. Prototyping
 Main objective of prototype-based development model is to overcome the
limitation of the waterfall model to freeze the requirements before design and
coding.
 It can be used with any of the process models or as a stand-alone process
model.

Plan
 Features of Prototyping
I. Based on the preliminary requirements gathered through communication,
a working prototype for a system is quickly designed and developed.
II. This working prototype is then given to the clients and end users for use
with an understanding that needs are likely to change. This prototype acts
as a tool for refining the requirements further.
III. As per the user's feedback prototype is updated to adapt suggested
changes,
IV. This cycle of user demonstration and update of prototype is repeated till
the user suggests changes in the system.
V. Once the users fix the requirements, the final requirements specification for
the system is produced and the final quality system is developed.
 Advantages of Prototyping
i. Effective method for software development as user gets an idea of the
system and its features at early stage of the development.
ii. Helps in reducing various types of risks associated with the project as it
provides effective tool for communication with stakeholders.
iii. Reduces cost of adapting changes.
 Limitation of Prototyping
I. Overall system quality may not be considered due to quick design and
development of the project.
II. Inappropriate algorithms and programming languages might be used
during fast development.
III. Throw away prototypes may increase the cost of development.
2. Spiral Model
 It was proposed by Barry Boehm in 1986.
 It also considered as a risk-driven model.
 It combines the sequential approach of waterfall model with cyclic nature
of prototyping.
 It follows evolutionary approach and each cycle consists of all the activities
from the generic process framework model starting from communication to
deployment.
 Each cycle involves risk assessment (i.e., whether to proceed or not
decisions are taken after each complete spiral) and the software is
developed in series of releases.
 The first cycle develops product specification which is core of the
development process. Subsequent cycles develop a prototype and
progress towards the actual, quality software
Spiral model
 1. Planning
-Requirements are studied and gathered.
- Feasibility study ( practicality of a proposed plan or project)
- Reviews and walkthroughs to streamline the requirements
 2. Risk Analysis
Requirements are studied and brain storming sessions are done to identify the
potential risks
Once the risks are identified , risk mitigation strategy is planned and finalized
 3. Engineering
Actual development and testing.
 4. Evaluation
Customers evaluate the software and provide their feedback and approval
 Advantages of Spiral Model
1. Considers the entire software life cycle.
2. Suitable for large and complex software
3. Better understanding and handling of risk at each evolutionary level by
both developer and customer.
 Limitations
1. It requires expertise in managing and assessing risk.
2. Convincing customer for such evolutionary approach is difficult.
Concurrent Model

 This model is used by the software development team to represent


elements of any model which are iterative and parallel.
 It is also referred as concurrent engineering.
 It helps in identifying correct state of the current project.
 All software engineering activities are present at same time (concurrently)
but in different states.
 As the activity progress, it changes its state. Activity can be in any one of
the following states:
i. Inactive: Not yet started.
ii. Under development: Indicates partial progress.
iii. Under review: Assessment of the implementation done till now.
iv. Baselined: Compared with the expected requirements.
v. Done: Completed as per the specification.
vi. Awaiting changes: Waiting for feedback and suggestions.
vii. Under revision: Going through suggested updates.
 Advantages of Concurrent Model
1. Fast development.
2. It is applicable to all types of software development processes.
3. It is easy to understand.
4. Gives immediate feedback.

 Limitations of Concurrent Model


1. Needs better communication among team members
2. Remembering states of activities is essential.
The Unified Process

 The unified process tries to extract best of all traditional models.


 The process flow in unified process is incremental, iterative and highly
focused on customer involvement.
 It is mainly designed for object-oriented development using UML (Unified
Modeling Language).
 The UP is divided into cycles and each cycle consists of four consecutive
phases. Thus each phase may have multiple iterations and each cycle
generates a well-defined outcome.
 Inception Phase: Requirements capture and analysis
Inception phase mainly focuses on objectives, business requirements and
scope of a project. It involves communication and planning activities.
Fundamental requirements are described using use cases. Plan is prepared for
incremental and iterative development of a project. It defines a schedule by
identifying resources required and key risk factors involved.
 Elaboration Phase: System and class-level design
Most of the requirements of the system are identified. It involves
communication and modeling activities. This phase refines the preliminary
requirements specified using use cases in inception phase and specifies five
different views of the software using use case model, analysis model, design
model , implementation model and deployment model. Critical decision
regarding the technology to be used is taken. This phase also helps in doing
the cost analysis regarding the project and modification of the plan
developed earlier.
 Construction Phase: Implementation and testing
This phase results in the actual software increment. Different software
components are integrated together and software increment is
developed and tested (using unit testing, integration testing and
acceptance testing).
 Transition Phase: Deployment
The outcome of this phase is product release. Here the developed
software is transferred for beta testing to client's environment. All supporting
documents like user manuals, installation procedures etc. are also delivered to
the client together with the software. When feedback received from user is
used in identifying the defects in the system and initiating necessary updates,
it is referred to as Production phase. Thus, production phase coincides with the
deployment activities.
1. Which of the following is not the layer of software engineering.
a. Quality
b. Tools
c. Process
d. Maintainability
2. The type of software, which is implemented using set of reusable software components is
a. Cloud computing
b. WebApps
c. Mobile applications
d. Product_line
3. The activity which helps in better understanding of proposed design is
a. Planning
b. Construction
c. Communication
d. Modeling
4. Software which focuses on mass consumer market is
a. WebApps
b. Cloud computing
c. Mobile apps
d. Product-line
5. Activity which clearly identifies the objective of the system
a. Communication
b. Modeling
c. Planning
d. Deployment
6.The process flow which repeats one or more activities is
a. Linear process flow
b. Evolutionary process flow
c. parallel process flow
d. Iterative process flow
7. The model which is designed for adapting changes is
a. Classic life cycle model
b. Incremental model
c. Evolutionary model
d. Concurrent model
8. Phase of unified process which involves modeling activities is
a. Inception phase
b. Elaboration phase
c. Construction phase
d. Transition phase
9. Set of umbrella activities which tries to manage and control changes is
a. Software quality assurance
b. Re-usability management
c. Software configuration management
d. Risk management
10. In UP, the phase which decides about the technology used is
a. Inception Phase
b. Elaboration Phase
c. Construction Phase
d. Transition Phase

You might also like