Se CH 1
Se CH 1
SOFTWARE ENGINEERING
Defining Software:-
• We all know that computer is made up of hardware and software.
• The things in our computer are visible and physical called hardware and the things which are visible
but not physical(logical) called software.
• Software can be developed using different programming language such as java, python, C++ , and
others.
Engineering:-
• Engineering is the process of desingning and building something that serves a particular
purpose and find a cost effective solution to programs.
• Engineering is all about developing products ,but it is not sufficient to develop product
only but we need to define it in a well defined format, we need to use scientific principle
,methods ,structured system is to be used ,then it is known as engineering.
Software Applications Domain:-
•A software application domain refers to a specific area of computer software in which a
software program or set of programs is designed to operate.
•A software application domain is defined by the nature of the problems being solved or the
type of data being processed.
•Understanding the application domain is important for designing effective and efficient
software applications that meet the needs of users.
•So in all ,we can say that the application domain is a key factor in software development.
Software categorization based on their
application areas:-
a). System Software
b). Business Software
c). Engineering and Scientific Software
d). Personal Computer Software
e). Web based Application Software
f). Artificial Intelligence Software
g). Embedded Software System
h). Real Time System
1) System Software-
•In simple terms: System Software is a type of computer software that acts as an interface
between the computer hardware and application software.
•System Software is necessary to manage computer resources and support the execution of
application programs.
•It also controls the peripherals of computer like monitors, printers, storage devices etc.
•Software like operating systems, compilers, editors and drivers, etc., come under this
category.
2) Application Software/Personal Computer
Software:-
•Application software is a type of computer software that is designed to
perform specific tasks or function for users.
•It is a software that users interact with directly to perform various tasks like
creating documents, browsing the web, or playing games.
Examples- Word processors, Spreadsheet programs, web browsers,
Accounting System, Enterprise resource planning (ERP) ,Video
players, photo editors.
3) Web-based Software or Web applications:-
• A web application is an application programs that is stored on a remote server and
delivered over the internet.
•User can access this applications with the use of software known as web-browser.
• web applications are typically developed using web technologies such as HTML,CSS,
and Java script, and they can be accessed from any device with an Internet connection
and a web browser.
Examples:
online banking system, e-commerce websites, social networking sites, online gaming
platforms and productivity tools like Google Docs and Microsoft Office 365 etc.
4) Artificial Intelligence Software:-
•AI software is a computer program which acts like human behavior by learning various data
patterns and insights.
•Now a days AI based software are used in banking, retail, entertainment ,education, travel,
security etc.
Examples:
Google Assistant, Amazon Alexa, Apple’ Siri, Microsoft Cortana, Chatbots, Speech
Recognition, Visual Perception, Decision-making
and Translation between Languages etc..
Applications
5)Business Software
Software applications that are used by business users to perform
various business functions.
Examples
Accounting System, Enterprise resource planning (ERP)
etc…
Applications
6) Embedded Software:-
•Embedded software is a software that is embedded in hardware or non-PC devices.
•Resides in read-only memory (ROM) of a device and is used to control its functions.
•Manufacturers build embedded software into the electronics of cars, telephones, modems,
robots, appliances ,toys, security system, televisions and digital watches.
Examples:
Keypad Control for a Microwave Oven, Digital Functions in an Automobile such as Fuel
Examples
Vehicle Event Controller, Radar, Air traffic control
system etc…
Applications:
What is Software Engineering ?
• Software engineering is the science and art of building(designing and writing
programs) a software systems that are:
1) on time
2) In budget
3) with acceptable performance
4) with correct operation
Software as a Product
Dual Role of software
Software as a Process
As a product,
Being a product the role of software can be recognised by its computing potentials, hardware
capabilities and accessibility of network computer by the local hardware.it also acts as an
information transformer i.e. producing , managing, modifying and conveying the source of
information.
Being a process the software acts as a vehicle for driving the product. In this role the
duty of software is control the computer or to establish communications between
the computers. Thus software plays dual role . It is both s product and a vehicle for
delivering a product.
the control of the computer (Ex. operating systems),
the communication of information (Ex. Networkingsoftware) and
the creation of other programs (Ex. software tools)
Software: Crisis on the Horizon-
The software crisis means the decisive time or turning point that software developers
encounter during software development. Hence software crisis represent various problems
that are faced by the software developers during software development process.
This graph shows that cost of software is increasing rapidly than the hardware cost.
Causes of Software Crisis:-
• Software purchase coat is getting more that the hardware purchase cost .
Hence major part of budget of any software industry is on software purchase.
• Software products are difficult to alter , maintain ,enhance, debug or modify.
• Software resources are not being used optimally.
• Software product not being reliable.
• Many time software products get crashed on occurrence of specific condition.
• Delivery of software product within specified budget and on scheduled time.
Solution of Software Crisis:-
One possible solution to a software crisis is SOFTWARE ENGINEERING because
software engineering is a systematic, disciplined and quantifiable approach for preventing
software crisis, there are some guidelines:-
Types of Myths
Myth 1:
We already have a book that’s full of standards and procedures available for
building software which is enough.
xs
Reality:
• The book of standard may very well exist, but is it used?
• Does it reflect modern software engineering practice?
• Is it complete? Is it streamlined to improve time to delivery while still
maintaining a focus on quality?
Myth 2(Management Myths):-
We have the newest computers and development tools.
Reality:
• It takes much more than the latest model mainframe , workstation, or PC to do
high quality software development.
• Computer-aided software engineering (CASE) tools are more important than
.
hardware for achieving good quality and productivity.
• Majority of software developers still do not use tools effectively.
Myth 3(Management Myths):-
We can add more programmers and can catch up the schedule.
Reality:
• Software development is not a mechanistic process like
manufacturing.
• In the words of Fred Brooks : "adding people to a late software project
makes it later."
• People who were working must spend time educating the newcomers.
• People can be added but only in a planned and well-coordinated
manner.
2) Customer Myths:-
Myth 1:
A general statement of objectives (requirements) is sufficient to start a
development.
Reality:
• A formal and description of software is essential.
Reality:
• It is true that software requirements change, but the
impact of change varies with the time at which it is
introduced.
• When requirements changes are requested early the
cost impact is relatively small.
• Early request for change can be accommodated easily.
3) Practitioner's (Developer) Myths:-
Myth 1:
Once we write the program, our job is done.
Reality:
• Experts say "the sooner you begin 'writing code', the
longer it will take you to get done."
• Industry data indicates that 60 to 80 % effort expended
on software will be after it is delivered to the customer
for the first time.
Myths (Practitioner’s Myths):-
Myth 2:
I can’t achieve quality until program is running.
Reality:
• One of the most effective software quality assurance mechanisms can
be applied from the inception (beginning) of a project—the technical
review.
• Software reviews are more effective “quality filter”
than testing for finding software defects.
Myths 3(Practitioner’s Myths):-
The only deliverable work product for a successful project is the working program.
Reality:
• A working program is only one part of a software configuration.
• A variety of work products (e.g., models, documents, plans) provide a foundation for
successful engineering and, more important, guidance for software support.
Reality:
• Software engineering is not about creating documents. It is about creating a quality
product.
• Better quality leads to reduced rework. And reduced rework results in faster delivery times.
Software Engineering: A Layered Technology
Software engineering is a fully layered technology . All layers are connected and each
layer demands the fulfilment of the previous layer.
Layered technology is divided in to four parts-
1. A quality focus
2. Process
3. Method
4. Tools Tools
Method
Process
A quality focus
Software Engineering
1. A Quality Focus:-
2. Process Layer:-
Process layer is a foundation of software engineering. Basically process define the framework
for timely delivery of software. It is key that binds all the layers together which enables the
development of software before the deadline or on time.
The software process covers all the activities , actions, and tasks required to be carried out for
software development.
3. Method:-
During the process of software development the answers to all “how-to-do” questions are
given by method . It has the information of all the tasks which includes communications,
requirement analysis, design modeling , program construction, testing and support.
4. Tools:-
Software tools are used to bring automation in the software development process.
SE tools provide a self-operating system for processes and method.
Tools are integrated which means information created by one tool can be used by another.
Software Process
• A process is a collection of activities, actions and tasks that are performed when
some work product is to be created.
1. Activity
• to achieve a broad objective
• is applied regardless of the application domain, size of the project, complexity of
the effort
E.g. Communication with Stakeholders
2. Action
• a set of tasks that produce a major work product
E.g. Architectural Design
3. Task
• Focuses on a small, but well-defined objective
E.g. Conducting a Unit Test
Generic Process Model:-
• In Software Engineering , a generic process model is a framework that outlines the activities
and tasks involved in developing software.
• Software means to develop quality products by using technical and management rules.
• Any standard software process model would primarily consists of two types of activities:
• A set of framework activities, which are always applicable to all projects and a set of
Umbrella activities which are non SDLC activities that are applicable throughout the
process.
• To performing generic process here process framework activity and umbrella activity
is there.
3) Implementation:
The actual coding of the software is done in this phase.
4) Testing:
The Software is thoroughly tested to ensure that it meets the
specified requirements.
5) Deployment:
The Software is released and installed in the production
environment.
6) Maintenance:
After deployment, the software is monitored and maintained to ensure that it continues to
function correctly.
•Process framework activity include communication, planning, Modeling ,Construction and
Deployment these kind of activities are there.
•Umbrella activity include S/W Project tracking ,SQA , Technical Reviews , SCM, Reusability's
these kind of activities are there.
2) Design:
In this phase, the software architecture and design are planned and documented.
Generic Framework Activities:-
• A generic framework activity is a high-level task that is performed throughout the software
development process.
•These activities are not specific to any particular methodology or technology ,but rather
represent common practices that are applicable to any software development project.
5 . Deployment
• Deployment Step consists of Delivering the product to the customer and take feedback from
them
• If the customer wants some corrections or demands for the additional capabilities ,then
changes is required for improvement in the quality of software.
6. Maintenance:
• Maintenance is the ongoing process of fixing bugs, making enhancements,
and improving the performance of the software system.
Umbrella Activities:-
Umbrella activities are applied throughout a software project and help a software team
to manage and take control of all of things; progress, quality, change and risk arises
while developing the software.
1. Software project tracking and control
allows the software team to assess progress against the project plan
and take any necessary action to maintain the schedule.
2. Risk management
assesses (evaluates) risks that may affect the outcome of the project
or the quality of the product.
3. Software quality assurance(SQA team)
Defines and conducts the activities required to ensure software quality.
It is a methodology of checking the software development process with a predefined set
of standards.
There are several reasons why organizations use the Software Development Life Cycle
(SDLC) when developing software applications:
To provide a structured and organized approach to software development:
The SDLC provides a framework for managing the software development process, which
helps to ensure that all necessary steps are taken and that the final product meets the
requirements.
1.To ensure that the software is of high quality: The SDLC includes testing and quality assurance
phases, which help to ensure that the software is free of bugs and that it meets the requirements.
2.To manage risks and costs: The SDLC helps organizations to identify and manage risks early in the
development process, which can help to reduce costs and minimize the impact of any issues that do
arise.
3.To improve communication and collaboration: The SDLC helps to ensure that all stakeholders,
including customers, end-users, and developers, are involved in the development process and that their
needs are taken into account.
4.To improve efficiency and productivity: The SDLC helps organizations to optimize the use of
resources and to streamline the development process, which can improve efficiency and productivity.
5.To increase the likelihood of a successful project outcome: Following a well-defined SDLC process
can greatly increase the chances of success of the project, as the process guides the team towards the
goal in a systematic and efficient way.
The SDLC typically includes the following phases:
1. Requirements gathering and analysis: This phase involves gathering information about the software
requirements from stakeholders, such as customers, end-users, and business analysts.
2. Design: In this phase, the software design is created, which includes the overall architecture of the
software, data structures, and interfaces. It has two steps:
•High-level design (HLD): It gives the architecture of software products.
•Low-level design (LLD): It describes how each and every feature in the product should work and every
component.
3. Implementation or coding: The design is then implemented in code, usually in several iterations, and
this phase is also called as Development.
things you need to know about this phase:
5. Deployment: After successful testing, The software is deployed to a production environment and
made available to end-users.
6. Maintenance: This phase includes ongoing support, bug fixes, and updates to the software.
There are different methodologies that organizations can use to implement the SDLC, such
as Waterfall, Agile, Scrum, V-Model and DevOps.
The Linear Sequential Model(Waterfall model)
• This Model also called as the Classic life cycle or the Waterfall model.
• Once a phase is complete, you cannot go back and repeat the process of previous
phase.
• Let’s discuss the characteristics and working of every phase one by one.
.The software development starts with requirement gathering phase.
Then progresses through analysis, design, coding, testing and
maintenance.
Following figure illustrates waterfall model.
1.Requirement Analysis and specification:
•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:
•Once the requirements are understood, the design phase begins.
•This involves creating a detailed design document that outlines the software
architecture, user interface, and system components.
•Several tools and techniques are used in designing like:
flow chart ,DFD, Data Dictionary, Decision table, decision tree etc.
. The design is an intermediate step between requirements analysis and coding.
Design focuses on program attributes such as-
Data structure
Software Architecture
Interface Representation
Algorithmic Details
3) Implementation:
•The implementation phase involves coding the software based on the design specifications.
•This phase also includes unit testing to ensure that each component of the software is working as
expected.
4) Testing:
Testing begins when coding is done. While performing testing the major focus is on logical internals of
the software. The purpose of testing is to uncover errors, fix the bugs and meet the customer
requirements.
5) Deployment:
Once the software has been tested and approved, it is deployed to the production environment.
6) Maintenance:
The final phase of the Waterfall Model is maintenance, which involves fixing any issues that arise
after the software has been deployed and ensuring that it continues to meet the requirements over
time.
When to use ? /Applications of waterfall model
• When the requirements are constant and not changed regularly.
• Application is not complicated and big.
• A project is short and simple.
• Where the tools and technology used is consistent and is not changing.
• When resources are well prepared and are available to use.
Drawbacks
• Unable to accommodate changes at later stages, that is required in most of the cases.
• No Overlapping of Phases
• Not suitable for large projects.
• It includes blocking states(wait for the other team member) , it may cause long waiting
time.
INCREMENTAL PROCESS MODEL-
•Incremental Model is a process of software development where
requirements divided into multiple modules of the software
development cycle. (like a mini project).
1. Requirement analysis:
• In the first phase of the incremental model, the product analysis expertise
identifies the requirements.
•To develop the software under the incremental model, this phase performs a
crucial role.
2 . Design & Development:
• In this phase of the Incremental model of SDLC, the design of the system
functionality and the development method are finished with success.
•When software develops new practicality, the incremental model uses style
and development phase.
•3. Testing:
• In the incremental model, the testing phase checks the performance of
each existing function as well as additional functionality.
•In the testing phase, the various methods are used to test the behavior of
each task.
4. Implementation:
• It involves the final coding that design in the designing and development
phase and tests the functionality in the testing phase.
•When a new technology is being used and also the software team is new to
this new technology.
Advantages:-
• Less cost and time is required to develop first increment called core
product.
• It is easier to test and debug during a smaller iteration.
• Customer can respond to each built.
• Product deliver is fast.
• Lowers initial delivery cost.
• Easier to manage risk because risky pieces are identified and
handled during iteration.
Disadvantages
• Needs good planning and design.
• Sometimes it is difficult to subdivide problems into functional units.
• Needs a clear and complete definition of the whole system before it
can be broken down and built incrementally.
• Total cost is higher than Waterfall.
• This model can be used for very large problems.
RAD (Rapid Application Development) Model
Team 1dz
Modeling
Integration
Communication
Delivery
Construction Feedback
Team 2
Planning Modeling
Deployment
Team 3 Construction
Business
Modeling
Modeling Component
Data Modeling
Reuse
Process Modeling
Automatic
Construction Code
Generation
Testing
• It is a type of incremental model in which; components
or functions are developed in parallel.
• Rapid development is achieved by component based
construction
• This can quickly give the customer something to see and
use and to provide feedback.
1. Communication
• to understand business problem.
2. Planning
• multiple software teams work in parallel on different
systems/modules.
3. Modeling
1) Business Modeling: Information flow among the business.
Ex. What kind of information drives (moves)?
Who is going to generate information?
From where information comes and goes?
2) Data Modeling: Information refine into set of data objects that are
needed to support business.
3) Process Modeling: Data object transforms to information flow necessary
to implement business.
4. Construction
• It highlighting the use of pre-existing software component.
5. Deployment
• Deliver to customer basis for subsequent iteration.
When to Use ?
• There is a need to create a system that can be modularized
in 2-3 months of time.
• High availability of designers and budget for modeling
along with the cost of automated code generating tools.
• Resources with high business knowledge are available
Advantages
• Reduced development time.
• Increases reusability of components.
• Quick initial reviews occur.
• Encourages customer feedback.
• Integration from very beginning solves a lot of
integration issues.
Drawback
• Not appropriate when technical risks are high (heavy use of new
technology).
Evolutionary Process Models
• Evolutionary models are iterative type models.
• They allow to develop more complete versions of the software.
• Evolutionary models
1) Prototyping Model
2) Spiral Model
1) The Prototyping Model
Communication
Modelling
Quick
Design
Deployment
Delivery and
Feedback
Prototype
Construction
When to Use ?/Application of Prototype Model
• Customers are not sure about the detail input, output and requirements.
• Developers are not sure about the technical feasibilities.
• This model used when desired system needs to have a lot of interactions
with users.
• This type of model generally used in GUI(Graphical user interface) type
development.
• Complicated and large system
Advantages
• Users are actively involved in the development
• Errors can be detected much earlier.
• Flexibility in design
• Helps team member to communicate effectively.
• A partial product is built at initial stage ,so customer can get a chance
to look of the product.
• New requirements can be accommodate(put up) easily.
• Quick user feedback is available for better solution.
Disadvantages
• The client involvement is more and it is not always considered by the
developer.
• If end user not satisfied with initial prototype ,he/she may lose interest in
the project.
Spiral Model
• Spiral model is proposed by Boehm in 1986.
•In the initial pass, product specification is built and in subsequent passes
around the spiral the prototype gets developed and then more improved
version of software gets developed.
•In spiral model ,project entry point axis is defined. the axis represent starting
point for different types of projects.
When to use Spiral Model?
• When the prototype for the software functionality are needed.
• When requirements are not very clearly defined or complex.
• When the large or high budget projects need to be developed.
• Project is not expected within a specific limited time span
• When requirements are complex
Advantages
• Requirements changes can be made at every stage.
• Good for large projects.
• Additional Functionality can be added at a later date.
• Software is produced early in the Software Life Cycle.
• Risks can be identified and rectified before they get
problematic.(difficult)
• Due to user involvement ,user satisfaction is improved.
• It provides cohesion between different stages.
Disadvantages
• If the process is weak then the product quality will be compromised and
also dependency on processes is very dangerous
• The importance of both the product and the process will be one of the key
element.
Difference between process and product
1) Product is the final production of the project.
While the process is a set of sequence steps that have to be followed to
create a project.
• Every iteration involves functional teams working simultaneously on various areas like
planning, requirements analysis, design, coding, unit testing, and acceptance testing.
• A simple meaning of Agile is -> ready to move in quick and easy way.
•It includes constant stakeholder collaboration and continues improvements at each phase.
Advantages
• The project can easily get “off track” if the customer representative is not
clear about final outcome, that they want.
6) Face to face conversation : The most efficient and effective method of conveying
information to and within a development team is face-to-face conversation.
9) Continuous attention : Continues attention to technical excellence and good design enhances
agility.
10) Simplicity–the art of maximizing the amount of work not done–is essential.
11) self-organizing team: The best architectures, requirements, and designs emerge from
self-organizing teams.
12) Team approach: At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
Types of widely used Agile Models
i. EXTREME PROGRAMMING (XP)
ii. Scrum
1.) EXTREME PROGRAMMING (XP)
• Extreme programming (XP) is one of the most important software
development frameworks of Agile models.
1) Communication
•Building software development process needs communication between the developer and
the customer.
•Communication is important for requirement gathering and discussing the concept and to
get the important feedback.
2) Simplicity
• XP focuses on the current needs instead future needs to incorporate in the design
4) Courage/Trust
In every development process there will always be a pressure situation. The courage or the
discipline to deal with it surely makes the task easy.
5) Respect
• Agile process should inculcate the habit to respect all team members, other stake holders
and customer.
Process of EXTREME PROGRAMMING (XP)model
:
Class-responsibility-collaboration (CRC) cards are a brainstorming
tool used in the design of object-oriented software.
1. XP – PLANNING
• Planning starts with the requirements gathering which enables XP team to
understand the rules for the software.
•Here instead of making larger document user stories are written by the
customer in which what they need is mentioned.
•The customer and developer work together for the final requirements.
•The developer breaks down the user stories into small release and a plan for
releasing small functionalities is prepared.
3. XP – CODING
•Most essential requirement of XP is customer availability. In Extreme programming the
customer not only helps the developer team but it should be a part of the project.
•The coding is started after the initial design work is over.
•After the initial design work is done, the team creates a set of unit tests which can test each
situation that should be a part of the release.
•The developer is focused on what must be implemented to pass the test.
•Two people are assigned to create the code. It is an important concept in coding activity,
this will increase the quality of coding.
4. XP – TESTING
•Validation testing of the system occurs on a daily basis. It gives the XP team
a regular indication of the progress.
•All the code must be tested using unit testing before its release.
ii. SCRUM
•This model is developed by Jeff Sutherland , Ken Schwaber and mike
beedle in 1990.
•Scrum is an agile process model which is used for developing the complex
software systems.
2. Sprint
• These are the work units that are needed to achieve the requirements mentioned in
the backlogs.
• Typically the sprints have fixed duration or time box (of 2 to 4 weeks).
• Thus sprints allow the team members to work in stable and short-term environment.
3. Meetings
• There are 15 minutes daily meetings to report the completed activities, obstacles
and plan for next activities.
• Following are three questions that are mainly discussed during the meetings.
• 1) What are the tasks done since last meeting ?
• 2) What are the issues that team is facing ?
• 3) What are the next activities that are planned ?
4. Demo
• During this phase implemented functionalities are demonstrated to the customer.
ROLES (SCRUM)
There are three roles in this methodologies ,and their responsibility are:
i) Scrum master
The scrum can set up the master team ,arrange the meeting and remove obstacles for the
process.