0% found this document useful (0 votes)
20 views

Unit 1 Overview of Software Engineering

Uploaded by

Isha Jain
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Unit 1 Overview of Software Engineering

Uploaded by

Isha Jain
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Unit 1

Overview of Software Engineering


Software: Software is a product that software engineer design and build. It is a logical term.

Software encompasses computer programs that execute within a computer of any size and architecture,
documents that describes operations/use of program and data structures.

It can be thought as an information transformer that gathers, produce, manage, modify, display and
transmit information.

Software transforms raw data into useful information.

It acts as a communicator between end user and computer systems/mobile phones/any digital system.

Software allows system to perform designed operation and generate desired output.

It is a logical term.

Software Characteristics:

1. Software is developed or engineered, it is not manufactured in classical sense:


● Development can be think as a continuous process (producing new things) whereas
manufacturing replicates product.
● Development consists of different phases such as planning, designing and generating the product.
● Software projects cannot be handled as a manufacturing projects.
● Development also focuses on future work to be done.

2. Software does not wear out:


● The curve given below depicts the failure curve for hardware, called bathtub curve.

● Bathtub curve shows that in early stages of life hardware faces initial failures due to
manufacturing defects.
● These defects can be corrected and hardware is launched again.
● After correction, failure rate drops to steady-state level and hardware works smoothly for some
period of time.
● As time passes failure rate rises again as hardware components suffer from cumulative effects
of dust, heat, vibrations, careless handlings and many other environmental conditions. i.e.
hardware starts to wear out.
● Software is not susceptible to the environmental malfunctioning that causes hardware wear out.
● In software, undiscovered defects causes high failure in initial phase.
● These defects are corrected and the curve flattens.
● During its lifetime, software undergo changes. However changes made to software may cause
new defects and failure rate rises suddenly.
● The curve given below shows failure curve for software:

● In software, gradually the minimum failure rate level begins to rise and software performance
starts declining.
● When hardware components wear out, it is replaced by spare part. There are no software spare
parts.

3. Although industry is moving towards component-based assembly, most software continues to


be custom built:
● In the hardware manufacturing, component reuse is a natural part of the engineering process. In
the software development, it has only begun to be achieved on a broad scale.
● A software component should be designed and implemented so that it can be reused in many
different programs.
● Modern reusable components encapsulate both data and the processing that is applied to the
data, enabling the software and software engineering to create new applications from reusable
parts.

Software Applications:

Two important factors are considered in determining the nature of software applications:

1. Content: It refers to the meaning and form of input/output data. E.g. input data is stored in the
database, output can be produced in the form reports.
2. Determinacy: Predictability of order and timing of information. E.g. in analysis algorithms input
data is given in some predefined order, algorithm is executed on it without interruption and result
is produced.

● Following are the application areas/domains of software:


1. System software: It is a set of programs that help to control or manage hardware devices
connected to computers and other important resources of the system.
➢ E.g. compilers, editors, file management utilities that process determinate data. Operating
system, drivers that process indeterminate data.
➢ System softwares are characterised by their heavy interactions with hardware, their usage by
multiple users, resource sharing by software, use of complex data structures etc.

2. Real time software: These software’s monitors, analyzes, controls real time events as they occur.
➢ E.g. air traffic controllers, web browsers, satellite tracking system, GPS, online gaming, chat
applications, SCADA etc.
➢ There are different components of real time software: data collecting components that collect
real time data from data sources, analysis components that analyze collected data, process that
data, control/output components produce output in desired form, monitoring components
coordinates activities of all other components.

3. Business software: These types of softwares are dedicated to specific business.


➢ E.g. MIS, payroll, accounting software, hospital management software, school management
software, banking software, stock market management software, inventory software etc.
➢ These softwares access one or more databases containing business information.
➢ Business software supports business growth.

4. Engineering and scientific software: It is developed according to the need of scientific or


engineering users to perform enterprise specific tasks.
➢ E.g. MATLAB, AUTOCAD, CAM, CAE, Analytica, Astronomy software, forensic software, simulators,
geology software etc.
➢ These are written for specific application in scientific and engineering fields using principles,
techniques and formulae particular to that field..
5. Embedded software: It is embedded into the hardware’s ROM.
➢ E.g. software used in instrumentation and control applications like washing machines, satellites,
microwaves, dashboard displays in cars, braking systems etc.
➢ Embedded software controls products in which it is embedded for consumers and industry.
➢ It performs very limited functions.

6. Artificial Intelligence software: Softwares like pattern recognition, neural networks, expert
systems, decision support systems that involve complex problems come under this category.
➢ AI software uses non-numerical algorithms.

7. Networking and web based software: It provides required support for network communication.
➢ Network software enables computers to interact with each other over networks with data storage
facilities.
➢ E.g. It includes all network management softwares, server software, security and encryption
software and software to develop web-based applications like HTML, PHP, XML etc.

8. Personal computer software: Softwares in this category are used by any user on his/her personal
computer for day to day activities.
➢ E.g. Word processing software, spreadsheets sheets, graphics, multimedia, entertainment
software, database tools, gaming software etc.

Software Myths: These are false beliefs, considerations or interpretations about software and the process
that is used to build/develop it. Software myths are misleading attitudes that have caused serious
problems for managers and practitioners. Following are some of the software myths:
1. Management myths: Managers with software responsibilities are often under pressure to
maintain budget, development schedule and ensure quality improvement etc. Software manager
grasps some myths that may sometimes lessen his pressure.
➢ Myth 1: We have all standards and procedures available for software development.

Reality/fact: A book of Standards may exists but are software developers aware of it. Existing
processes may be incomplete or need to update as per requirements to ensure good quality,
timely delivery of product.

➢ Myth 2: If we get behind schedule, more programmers can be added to achieve timely delivery
of product.

Reality/fact: Software development is not a mechanistic process like hardware


manufacturing. If new programmers are added into the existing development team, people
who were working must spend time educating new people which may delay the delivery of product.
New programmers can be added but only I played and well-coordinated manner.

➢ Myth 3: If I decide to outsource the software project to a third party. I can just relax and third
party will be responsible for product development.

Reality/fact: Outsourcing the project completely is not the better solution. An


organisation must understand how to manage and control software projects
internally. If project is completely developed by a third party, organisation will struggle
managing it afterwards.

2. Customer myths: Customers can be direct users of software, a technical team or other company.
In many cases Customer believes myths about software that leads to false expectations and
results in dissatisfaction with the developer.
➢ Myth 1: A general statement of objectives is sufficient to begin writing programs and details can
be filled later.

Reality/fact: Although it is not always possible to mention/give a complete and stable


statement of requirements, but an incomplete or ambiguous statement may create
difficulties in project planning. Official and detailed description of database
functions, structural issues, ethical performance, are important. Unambiguous
requirements are developed only through effective and continuous communication
between customer and developer.

➢ Myth 2: Software requirement continuously changes, but changes can be easily accommodated
because software is flexible.

Reality/fact: Software requirements change continuously, but the impact of changes varies
with the time at which change is introduced. When requirement changes are requested at early
stages, the cost impact is relatively small. As time passes, cost impact grows rapidly.

3. Practitioner’s myths: These are the false beliefs of software developers regarding the software
development process.
➢ Myth 1: once we write the program and get it to work, our job is done.

Reality/fact: Program writing is not the only task of software development team. After
successful delivery of product, the required maintenance support must also be extended by team to
the customer.

➢ Myth 2: A successful project is one where delivered software is working properly.


Reality/fact: A working system is only one part of a software product. Variety of
other work product such as right document brouchers, plans, booklets are also
required to provide guidance for software support. A final working software product must be
delivered along with proper documentation.

➢ Myth 3: Software engineering will make us create voluminous and unnecessary documentation
and will slow down the process.

Reality/fact: Software engineering is not about creating documents. It mainly focuses on


creating a quality product. Better quality of product reduces rework and ultimately
results in faster delivery times.

➢ Myth 4: There is no way to achieve system quality until it is running.

Reality/fact: Quality of software can be measured at any phase of development by


applying some questionnaire and finding answers to that. Measuring product quality at
different phases of development may results in good quality product.

Types of software: Softwares are broadly classified into 2 types. system software and application
software.

1. System software: It is a set of programs that help to control or manage hardware devices
connected to computers and other important resources of the system.
➢ E.g. compilers, editors, file management utilities that process determinate data. Operating
system, drivers that process indeterminate data.
➢ It controls computer’s internal functioning. It serves as an interface between hardware and user
applications.
➢ Characteristics of system software:
I. Closely related to system.
II. Faster in performance and processing.
III. Mostly written in low-level language.
IV. System softwares often work in background.
V. Difficult to manipulate as it has complex design.
VI. System softwares are less interactive with users.
➢ E.g. Operating system, device drivers, firmwares, language translators etc.

2. Application software: It refers to the software that performs specific function for user.

➢Characteristics of application software:


I. Application softwares are built as per user requirements.
II. These are mainly written in high level languages.
III. Usually work as front end.
IV. Easy to manipulate as comparatively less complex design.
V. Application softwares are usually bigger in size hence require more memory storage.
VI. More interactive and user friendly as specifically written for end users.
➢E.g. Database tools, multimedia applications, word processors, web browsers, customised
softwares, graphics and animation softwares etc.
➢ Appliaction software category also includes mobile applications.

Software engineering:
➢ Definition: Software engineering is a technological and managerial discipline concerned with
system development and maintenance of software products that are developed, and modified on
time and within given cost estimates.
➢ Goals of software engineering:
I. Improve quality of software product by applying various software engineering principles and
techniques.
II. Increase productivity by using modern tools and methodologies to streamline the development
process. Complete projects faster.
III. Develop a reliable software product.
IV. Make product adaptable to changing work environment.

➢ Need of software engineering:


I. Handling big projects: Company can apply software engineering principles and techniques to
handle big, complex projects.
II. Manage cost: A good product planning can be done to reduce development cost. Unnecessary
things can be avoided.
III. Decrease time: Developing software using software engineering techniques save lot of time
because it mainly focuses on planned development.
IV. Deliver Reliable/ Effective software: Software product must be developed according to standards
and must perform desired functions once delivered to the customer. A tested product must be
delivered on time. After product delivery it’s company’s responsibility to extend maintenance
support to the customer.
V. Reduces complexity: Complexity can be reduced by breaking larger products into smaller
modules and start working on individual module one at a time.

Qualities of software engineers:

1. Software engineer must be a good programmer. He/she must possess a knowledge of dat
structures, algorithms and one or more programming languages.
2. He/she must be familiar with several design approaches and must be able to translate
vague/incomplete requirements into specifications.
3. He/she must be able to move/work among several levels of abstractions( logical,physical,view) at
different stages of project development.
4. Software engineer must develop a good communication skills so that he/she can effectively
communicate with customers.
5. Software engineer must be a strong problem solver to work on bigger and complex projects.

Role of software engineer:

1. Requirements gathering
2. Planning and designing a product
3. Writing code
4. Testing of written code
5. Maintenance of delivery product
6. Update or upgrade software as per requirements

Software engineering- A layered approach:

Software engineering is a layered technology comprising different layers in order to ensure a good quality
and timely delivery of software product to customers. All the layers are connected to each other.
1. Process layer is the foundation for software engineering. It holds all technology layers together
that enables timely delivery of software. Process defines framework that must be established for
the effective delivery of software engineering technology. The software process covers all
activities, tasks such as communication, planning, modeling, construction, deployment that are
required to be carried out for software development.
2. Methods specifies how to carry out each task involved in software development process. In
method layer we will be choosing how to use different tools and technologies that we have
selected for our project development.
3. Tools provide automated or semi automated support for process and methods. We have to select
tools to carry out different tasks in development process. E.g. choose tools for web design, testing,
database handling etc. These tools need to be integrated with each other so that information
created by one tool can be used by another.
4. Quality focus: Emphasising on the testing of software product to ensure that product meets
customer’s requirements. It also focuses on real world testing to determine how efficient, usable
and reusable software will be.

Generic process framework/ The software process: The software process is a collection of all actions,
activities and tasks that are performed for software development. It is not a rigid framework, it’s an
adaptable approach that enables software development teams to choose appropriate actions and tasks
for development.

Small number of framework activities are identified that are applicable for all software projects regardless
of size or complexity. A generic process framework for software engineering encompasses following
activities:

1. Communication/Requirements gathering: It is an important phase where team need to


communicate and collaborate with customer in order to understand the customer’s objectives for
the project and to gather requirements for project development. Information gathered during
this phase help defining software features and functions.
2. Planning: A software project plan is created that describes technical tasks to be conducted,
identifies information to be processed, design constraints, validation criteria, resources required,
product to be produced etc. A work schedule is also created in planning phase.
3. Modelling/Design: It focuses on how to structure data, how to implement functions etc, Software
design is created using some design tools.
4. Construction/ Writing code: This activity involves writing code for designed product. It also
includes testing of product to uncover errors in the code before delivery.
5. Deployment: The software( a complete product or partial increment) is delivered to the customer
who uses and evaluates the product and provides feedback based on evaluation.
Addition to above 5 main activities support phase is also included that focuses on
changes in software associated with error correction, changes as per user
requirements etc. To incorporate changes it reapplies all above mentioned steps
iteratively to the existing software.4 types of changes are addressed in support phase:

I. Correction: Correct defects or errors if any.


II. Adaptation: Adaptive maintenance refers to the modification to the existing software to
accommodate changes to its external environments. Make software adaptive to deal with work
in a changing environment.
III. Enhancement: Extend functionality of existing software. If users recognise additional features
those can be included in the existing software.
IV. Prevention: Due to frequent changes, software may deteriorate (software performance may
decline). Software reengineering must be conducted.

Apart from this support/ maintenance can be provided through helpdesks,


application specific websites etc.

Umbrella Activities: software engineering process framework activities are accompanied by number of
umbrella activities.

➢ Umbrella activities are series of steps or procedures followed by software development team to
maintain progress, quality, changes and risk of complete software development task.
➢ Following are the typical umbrella activities:
1. Software project tracking and control: Make a development plan before actual development
starts. It allows the team to assess/check the progress of software development against project
plan and take necessary actions further to maintain schedule.
2. Risk management: Identify risks that may affect the project outcome or quality of product.
3. Software quality assurance: defines and conducts activities required to ensure software quality.
Quality means user experience, product performance, workload flexibility must be tested and
verified at different phases of development. A dedicated team must be there to perform quality
assurance work.
4. Technical reviews: Assess software product to find and rectify errors if any before they are
propagated to next activity.
5. Measurements: Defines and collects measures for product, process and project that helps team
to deliver product that meets customer’s needs. Product measurements metrics are size and
complexity of software, quality and reliability of software. Process performance can be measured
by its efficiency in fault detection etc.
6. Software configuration management: It includes activities to manage effects of change
throughout the software development process.
7. Reusability management: Defines standards for reuse of product. Establishes mechanism to
create reusable components.
8. Document preparation and production: It encompasses activities required to create work
products such as models, documents, forms, logs and lists etc.

Product and process:

➢ A product is nothing but a Software that encompasses computer programs that execute within a
computer of any size and architecture, documents that describes operations/use of program and
data structures.
➢ Process is a series of predictable steps to develop any software product. It enables timely product
delivery and high quality results.
➢ Process provides stability, control and organisation on activity.
➢ Process is the approach taken/adopted to develop a software.
➢ Processes are software dependent.
➢ Different indicators are defined to determine the process maturity called software process
assessment mechanism.
➢ Process maturity refers to how a process evolves over time. Productivity, quality improves over
time through consistent gains.
➢ Quality, timeliness, and long term viability of a product are the best indicators of process
efficiency.
➢ A generic process framework for software engineering defines five framework activities:
communication,planning,modeling,construction and deployment. A common process framework
represents the process flow that describes how above mentioned framework activities and tasks
are organised with respect to time, and sequence. It is shown by the software process framework
diagram below:

➢ A process flow can be linear that executes each of the five activities in sequence one after another.
➢ An iterative process flow repeats one or more of the activities before proceeding to the next
activity.
➢ An evolutionary process flow executes activities in a circular manner.
➢ A parallel process flow executes one or more activities in parallel with other activities.
➢ Software engineering instructe(SEI) uses 5 point grading scheme to determine an organisation’s
current state of process maturity.
➢ Capability Maturity Model(CMM) defines key activities required at different levels of process
maturity.

➢ SEI has established 5 process maturity levels:


1. Level 1: Initial-only Few processes are defined. Success of process is dependent on individual
efforts. Processes are not well defined and are unorganised.
2. Level 2 Repeatable: Here basic project management policies are established to track cost,
schedule and function of project/product. Earlier successful policies are repeated.
3. Level 3 Defined: Software engineering and manage activities are documented standardised and
integrated into standard software process for entire organisation.
4. Level 4 Managed: A quantitative quality goals are set for organisation for both software process
and maintenance. The performance of process is controlled using statistical and other
quantitative techniques.
5. Level 5 Optimizing: It focuses on continuous process improvement using feedback policy, use of
new tools in software development process.
➢ SEI has associated key process areas(KPAs) with each level of process maturity. KPAs are software
engineering functions(e.g.project planning, requirements management,quality assurance etc.)
Each KPA is described by identifying following characteristics:
I. Goals: Overall objective of that KPA/software engineering function must be achieved.
II. Commitments: These are Requirements that must be met to achieve the goals.
III. Abilities: These are the things that must be in place/ available so that organisation can meet all
the project requirements.
IV. Activities : The specific task required to achieve the KPA function.
V. Methods for monitoring requirements: These are the methods to monitor the software process
activities.
VI. Methods for verifying implementation: These are methods to verify the proper practice carried
out for KPA.

Milestones: A software project is planned as a series of activities to be completed within defined time
period. Milestone can be defined as a recognisable endpoint of software project activity.

➢ It is a distinct and logical stage of a project.


➢ At the end of each milestone a partially or fully functioning product increment is delivered to the
customer or to the next stage of software process framework.
➢ Milestone represents a sequence of events that are incrementally developed until project gets
completed successfully.
➢ Milestones helps team to identify which stage the project is currently in and how far the team is
from the completion(how long it will take to complete the project).

Deliverables: It simply represents a final working software product, a designed document or a project
plan that can be submitted to the customer, client or end users.

Module: The module in software is a small part of a software that is responsible for performing any kind
of functionality.

➢ It is also refer to as a sub program/a piece of code. A bigger and complex project is divided into
smaller modules(sub programs) each of which is capable of performing a functionality
independently.
➢ Each of the module can be built and tested selectively.
➢ These independent modules are integrated together in order to get a final working product. This
type of software building is known as component-based software.

You might also like