Professional Documents
Culture Documents
Software Engineering Unit1
Software Engineering Unit1
Software Engineering Unit1
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.
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:
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:
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.
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
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.
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.
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 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
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.