Software Engineering Unit1

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 41

Software Engineering

COURSE CODE:21CSA215
PROGRAMME: BCA/INT.MCA
SEMESTER: IV
COURSE TEACHER: MR. GOVINDA T
Unit 1
Introduction to Software Engineering

The term software engineering is the product of two words, software, and
engineering.

Software consists of carefully organized instructions and code written by developers


on any of various particular computer languages.
Computer programs and related documentation such as requirements, design models,
and user manuals.
Engineering is the application of scientific and practical knowledge to invent,
design, build, maintain, and improve frameworks, processes, etc.
Software Engineering is an engineering discipline whose aim is the production of Quality
software, software that is delivered on time within the budget and that specifies its
requirements.
SOFTWARE ENGINEERING is defined as a systematic, disciplined and quantifiable
approach for the development, operation and maintenance of software.
THE EVOLVING ROLE OF SOFTWARE
Today, software takes on a dual role.
It is a product and, at the same time, the vehicle for delivering a
product.
Need of Software Engineering
 Huge Programming: It is simpler to manufacture a wall than to a house or building,
similarly, as the measure of programming becomes extensive engineering has to step in to
give it a scientific process.
 Adaptability: If the software procedure were not based on scientific and engineering ideas,
it would be simpler to re-create new software than to scale an existing one.
 Cost: The hardware industry has demonstrated its skills and huge manufacturing has let
down the cost of computer and electronic hardware. However the cost of programming
remains high if the proper process is not adapted.
 Dynamic Nature: The continually growing and adapting nature of programming hugely
depends upon the environment in which the client works. If the quality of the software is
continually changing, new upgrades need to be done in the existing one.
 Quality Management: Better procedure of software development provides a better and
quality software product.
Software Crisis
 Software Crisis is a term used in computer science for the difficulty of writing
useful and efficient computer programs in the required time. The software crisi s
was due to using the same workforce, same methods, and same tools even though
rapidly increasing software demand, the complexity of software, and software
challenges.
Causes of Software Crisis:

 The cost of owning and maintaining software was as expensive as developing the
software.
 At that time Projects were running overtime.
 At that time Software was very inefficient.
 The quality of the software was low.
 Software often did not meet user requirements.
 The average software project overshoots its schedule by half.
 At that time Software was never delivered.
 Non-optimal resource utilization.
 Challenging to alter, debug, and enhance.
Factors Contributing to Software Crisis:

 Poor project management.


 Lack of adequate training in software engineering.
 Less skilled project members.
 Low productivity improvements.
Solution of Software Crisis:

There is no single solution to the crisis. One possible solution to a software crisis is
Software Engineering because software engineering is a systematic, disciplined, and
quantifiable approach. For preventing software crises, there are some guidelines:

 Reduction in software over budget.


 The quality of the software must be high.
 Less time is needed for a software project.
 Experienced and skilled people working on the software project.
 Software must be delivered.
 Software must meet user requirements.
Software Characteristics:-

1. Software is developed or engineered


 It is not manufactured in the classical sense.
2. Software doesn't "wear out."
 Another aspect of wear illustrates the difference between hardware and software. When
a hardware component wears out, it is replaced by a spare part. There are no software
spare parts.
3. Although the industry is moving toward component-based assembly, most software
continues to be custom-built.
Changing Nature of Software:
 System software:-System software is a collection of programs written to
service other programs.
Ex:- compiler, file management.

 Application software: - it is designed to help to perform specific tasks.


Ex:-Microsoft Word, spreadsheet.

 Engineering and scientific software:- basically to do complicated


numeric calculations.
Ex:- calculus, statistics.
 Embedded software:- It lies in the hardware of the system and is used for control
functions.
Ex:- Microwave oven control.
 Personal computer software:- It provides specific capabilities for SE
Ex:- computer graphics, DBMS
 Web applications software:- these are used over a network.
Ex:- websites
 Artificial intelligence software:- non-numeric algorithms to solve complex
problems. Ex:- robotics
SOFTWARE MYTHS:-

 Software myths in software engineering are common beliefs or assumptions about


software development, processes, or tools that are not based on facts or evidence.
[i] Management Myths:
Managers with software responsibility ,like managers in most disciplines, are often under
pressures to maintain budgets, Keep

 Myth One: We already have a book that's full of standards and procedures for building
software, won't that provide my people with everything they need to know?
Reality: The book of standards may very well exist, but is it used? Is it complete? Does
it reflect modern software engineering practice? NO

 Myth Two: If we get behind schedule, we can add more programmers and catch up
Reality:- However, as new people are added, people who were working must spend time
educating the newcomers, thereby reducing the amount of time spent on productive
development efforts.
 Myth Three: If I decide to outsource the software project to a third party, I can
just relax and let that firm build it.
Reality: If an organization does not understand how to manage and control software
projects internally, it will invariably struggle when it outsources software projects.

 Myth Four: My people have state-of-the-art software development tools, after all,
we buy them the newest computers.
Reality: Computer-aided software engineering (CASE) tools are more important than
hardware for achieving good quality and productivity, yet the majority of software
developers still do not use them effectively.
[ii]Customer Myths:
The customer can be the direct users of the software, the technical team, the
marketing/sales department, or other company. The customer has myths leading to false
expectations (customer) and that’s why we create dissatisfaction with the developer.

Myth One: A general statement of objectives is sufficient to begin writing programs— we


can fill in the details later
Reality: it is the major cause of failed software efforts. A formal and detailed
description of the information domain, function, behavior, performance, interfaces,
design constraints, and validation criteria is essential.
Myth Two: Project requirements continually change, but change can be easily
accommodated because software is flexible.
Reality: Software requirements change, but the impact of change indeed varies with
the time at which it is introduced
[iii]Practitioner’s Myths:

1. Myth: Once we write the program and get it to work, our job is done.
Reality: Someone once said that "the sooner you begin 'writing code', the longer
it'll take you to get done." Industry data ([LIE80], [JON91], [PUT97]) indicate
that between 60 and 80 percent of all effort expended on software will be
expended after it is delivered to the customer for the first time.

2. Myth: Until I get the program "running" I have no way of assessing its quality.
Reality: One of the most effective software quality assurance mechanisms can be
applied from the inception of a project—the formal technical review. Software
reviews are a "quality filter" that have been found to be more effective than
testing for finding certain classes of software defects.
Process and Product

 Product:
The Product includes any software manufactured based on the customer’s request. This
can be a problem solving software or computer based system. It can also be said that this
is the result of a project.

 Process:
Process is a set of sequence steps that have to be followed to create a project. The
main purpose of a process is to improve the quality of the project
Example:- a road map that helps you create a timely, high-quality result. The road map
that you follow is called a ‘software process.’
The main difference between a process and a product is that the “process is a set of steps
that guide the project to achieve a convenient product”. while on the other hand, the
“product is the result of a project that is manufactured by a wide variety of people”.
A Generic view of Process
The process of a software development has three Generic views which are:
 Definition Phase - It is the base of Definition phase. The experts get the knowledge
about "What".
 Information needed for processing.
 Which functions are required.
 Expectations about the capacity.
 Interface which is established.
 Area of the validation.

This phase defines all the expectations depending on the standard of the software
Engineering. It contains three steps.
 Analysis of system
 Planning of project
 Requirement Analysis
 Development phase - Focus point of development phase is "How".
After the explanation of "What" it turn to "How". Various type of
question raised in developer mind that how to design the data structure
and Architecture of software, Procedural detail how to implemented and
how design convert in a programming language and testing of software
how to perform. Three special steps always taken in this phase which are
 Design of software
 Coding
 testing of software system

 Maintenance phase - The main focus of maintenance phase is change


which cause is correction of errors, adaption of new idea, According to
the needs of software after change in customer mood.
Software Engineering-A layered
Technology
 Software engineering is a fully layered technology, to develop software we need
to go from one layer to another. All the layers are connected and each layer
demands the fulfillment of the previous layer.
Quality Focus
 Any engineering approach must rest on an quality.
 The “BEDROCK” that supports software Engineering is Quality Focus.
 It defines the continuous process improvement principles of software. It provides
integrity that means providing security to the software so that data can be
accessed by only an authorized person, no outsider can access the data.

Process
 It is the foundation or base layer of software engineering.
 SE process is the ‘glue’ that holds all technology layers together and enables the
timely development of computer software.
 It is key that binds all the layers together which enables the development of
software before the deadline or on time.
 Process activities are listed below:- [C-P-M-C-D]
Methods
 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 communication, requirement
analysis, design modeling, program construction, testing, and support.

Tools
 Software engineering tools provide a self-operating system for processes and
methods.
 Tools are integrated which means information created by one tool can be used by
another.
The Process Framework
The Process Framework
Software Process :
 Tasks: They focus on a small, specific objective.
 Action: It is a set of tasks that produce a major work product.
 Activities: Activities are groups of related tasks and actions for a major objective.

Process Framework Activities:[C-P-M-C-D]


 Communication, planning, modeling, construction, and deployment are all
examples of framework activities.
 Each engineering action defined by a framework activity comprises a list of
needed work outputs, project milestones, and software quality assurance (SQA)
points.
1. Communication
 By communication, customer requirement gathering is done. Communication with
consumers and stakeholders to determine the system’s objectives and the
software’s requirements.

2. Planning
 Establish engineering work plan, describes technical risk, lists resources
requirements, work produced and defines work schedule.

3. Modeling
 Architectural models and design to better understand the problem and to work
towards the best solution.
The software model is prepared by:
 Analysis of requirements
 Design
4. Construction
 Creating code, testing the system, fixing bugs, and confirming that all criteria are
met.
The software design is mapped into a code by:
 Code generation
 Testing

5. Deployment
In this activity, a complete or non-complete product or software is represented to the
customers to evaluate and give feedback. On the basis of their feedback, we modify
the product for the supply of better products.
Umbrella Activities
 Software project tracking and control: This is an activity in which the team can
assess progress and take corrective action to maintain the schedule. Take action to
keep the project on time by comparing the project’s progress against the plan.
 Risk management: The risks that may affect project outcomes or quality can be
analyzed. Analyze potential risks that may have an impact on the software
product’s quality and outcome.
 Software quality assurance: These are activities required to maintain software
quality. Perform actions to ensure the product’s quality.
 Formal technical reviews: It is required to assess engineering work products to
uncover and remove errors before they propagate to the next activity. At each
level of the process, errors are evaluated and fixed.
 Software configuration management: Managing of configuration process when
any change in the software occurs.

 Work product preparation and production: The activities to create models,


documents, logs, forms, and lists are carried out.

 Reusability management: It defines criteria for work product reuse. Reusable


work items should be backed up, and reusable software components should be
achieved.

 Measurement: In this activity, the process can be defined and collected. Also,
project and product measures are used to assist the software team in delivering the
required software.
Software Development Life Cycle
Definition of SDLC

 SDLC is a process followed for software building within a software organization.


 SDLC consists of a precise plan that describes how to develop, maintain, replace,
and enhance specific software. The life cycle defines a method for improving the
quality of software and the all-around development process.

SDLC is a collection of these six stages, and the stages of SDLC are as follows:
Stage-1: Planning and Requirement Analysis
Planning is a crucial step in everything, In this same stage, requirement analysis is
also performed by the developers of the organization. In this same stage, requirement
analysis is also performed by the developers of the organization.
The information from this analysis forms the building blocks of a basic project. The
quality of the project is a result of planning
Stage-2: Defining Requirements
In this stage, all the requirements for the target software are specified. These
requirements get approval from customers, market analysts, and stakeholders.
This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort
of document that specifies all those things that need to be defined and created during
the entire project cycle.
Stage-3: Designing Architecture
SRS is a reference for software designers to come up with the best architecture for
the software. Hence, with the requirements defined in SRS, multiple designs for the
product architecture are present in the Design Document Specification (DDS).
This DDS is assessed by market analysts and stakeholders. After evaluating all the
possible factors, the most practical and logical design is chosen for development.
Stage-4: Developing Product
At this stage, the fundamental development of the product starts. For this, developers
use a specific programming code as per the design in the DDS.
Hence, it is important for the coders to follow the protocols set by the association.
Conventional programming tools like compilers, interpreters, debuggers, etc. are also
put into use at this stage
Stage-5: Product Testing and Integration
After the development of the product, testing of the software is necessary to ensure
its smooth execution. Although, minimal testing is conducted at every stage of
SDLC.
Therefore, at this stage, all the probable flaws are tracked, fixed, and retested. This
ensures that the product confronts the quality requirements of SRS.
Stage 6: Deployment and Maintenance of Products

It is important to ensure its smooth performance. If it performs well, the organization


sends out the product as a whole.
After retrieving beneficial feedback, the company releases it as it is or with auxiliary
improvements to make it further helpful for the customers. However, this alone is not
enough.
Quality Attributes
Quality Attribute
The software quality attributes can be dissected into main two parts.

 Quality Attributes that are describes system’s runtime property : These are attributes
such as availability , usability , performance etc..
 Quality attributes that are describes the development of the system: These attributes
are such as modifiability and testability.

1. Portability: A software is claimed to be transportable, if it may be simply created to


figure in several package environments, in several machines, with alternative code
merchandise, etc.
2. Usability: A software has smart usability if completely different classes of users (i.e.
knowledgeable and novice users) will simply invoke the functions of the merchandise.
3. Maintainability: A software is reparable, if errors may be simply corrected as and once
they show up, new functions may be simply added to the merchandise, and therefore
the functionalities of the merchandise may be simply changed, etc.
4. Reliability: Software is more reliable if it has fewer failures.
Since software engineers do not deliberately plan for their software to fail, reliability
depends on the number and type of mistakes they make. Designers can improve
reliability by ensuring the software is easy to implement and change, by testing it
thoroughly, and also by ensuring that if failures occur, the system can handle them or
can recover easily.
5. Efficiency: The more efficient software is, the less it uses of CPU-time, memory,
disk space, network bandwidth, and other resources. This is important to customers in
order to reduce their costs of running the software, although with today’s powerful
computers, CPU time, memory and disk usage are less of a concern than in years
gone by.
6. compatibility: It refers to the ability of software and hardware from different
sources to work together without having to be altered to do so. This means that
programs, devices and systems must interact with each other without issues arising.
7. Functional suitability: It refers to the ability of a software product to provide the
necessary functions to meet user needs.

You might also like