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

L1- Introduction to SE_063305

Uploaded by

palihak783
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

L1- Introduction to SE_063305

Uploaded by

palihak783
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 24

Chapter - 1

Introduction to Software Engineering


Software
• Software is a collection of computer programs that when
executed together with data provide desired outcomes.
• Software is a collection of computer programs, together with
data, procedure, rules, and associated documentation, which
operate in a specified environment with certain constraints to
provide the desired outcomes (IEEE).
• A computer program is a set of instructions written in a
programming language.
• Programs run within specified constraints and environment,
with defined rules of execution.
• Each standard program has a certain procedure for its
execution and operation.

2
Software view

Data
Procedures

Software

Programs Rules

Documentation

3
Software
• Data play an important role in program execution for
providing useful information in some form.
• Software procedures allow automating process steps, ensuring
compliance, governance, and repeatability.
• Software rules are the guidelines for development,
maintenance, and retirement of software.
• The documentation is important in understanding the software
code, design, constraints, customer needs, and specification
for further maintenance.
• Software concentrates more on quality issues, such as
interoperability, portability, usability, reliability, and
robustness; and it is sometimes referred to as industrial quality
software
4
Program vs. Software
• Software is a collection of computer programs but it is considered to
be more complex and larger as compared to programs.
• Software is developed by a team of software engineers and it is used
by several users rather than the author of the program.
• The team is responsible for mistakes, quality, and maintenance of the
software.
• Software concentrates more on quality issues.
• The presence of bugs in software cannot be tolerated, and therefore it
is well tested before it is put into operation.
• The development of software needs a large number of resources and
investments.
• Software is supported with sufficient required documentation for the
operation and troubleshooting of minor mistakes at the customer site.
• Software development has defined schedule.
5
Software characteristics

• Software has logical properties rather than physical.


• Software is mobile to change.
• Software is produced in an engineering manner rather than in
classical sense.
• Software becomes obsolete but does not wear out or die.
• Software has a certain operating environment, end user, and
customer.
• Software development is a labor-intensive task.

6
Software Classifications

Software

System Application
software software

Operating Programming Utility Library Generic Special purpose Customized


system software software software software software software

7
Software Classifications
• System software executes programs, transfers data between
devices and controls, and operates the computer hardware.
 Operating system is software that manages computer hardware,
software resources and operations of the computer.
 e.g., DOS, Windows, Unix, Android etc.
 Programming software is software that assists programmers in writing
computer programs using different programming languages in a more
convenient manner.
 e.g., text editors, compilers, etc.
 Utility software is software designed to perform specialized tasks of computer.
 e.g., antivirus, debuggers, disk checker, archievers, etc.
 Library software is a compiled collection of non-volatile resources
used in software development.
 e.g., functions, configuration data, documentation, classes, etc.

8
Software Classifications
• Application software uses the capabilities of system software for a
dedicated task.
 Generic software: These are developed for general purpose,
regardless of the type of business.
 e.g., Word processors, calculators, database software, etc., are the
examples of generic software.
 Special purpose software: These software are developed to perform
only specific tasks.
 e.g., payroll system, school inventory control, airline booking,
computer-aided design software, library management etc.
 Customized software: These are also known as bespoke software,
developed to satisfy the need of a particular customer in an
organization.
 e.g., Product-line software, order processing software, patient
diagnosis software, etc., are the examples of customized software.
9
Engineering Discipline

• Engineering is a disciplined approach with some organized


steps in a managed way to construction, operation, and
maintenance of software.
• Engineering of a product goes through a series of stages, i.e.,
planning, analysis and specification, design, construction,
testing, documentation, and deployment.
• The disciplined approach may lead to better results.
• The general stages for engineering the software include
feasibility study and preliminary investigation, requirement
analysis and specification, design, coding, testing,
deployment, operation, and maintenance.

10
Software Crisis
• Software crisis, the symptoms of the problem of engineering
the software, began to enforce the practitioners to look into
more disciplined software engineering approaches for software
development.
• The software industry has progressed from the desktop PC to
network-based computing to service-oriented computing
nowadays.
• The development of programs and software has become
complex with increasing requirements of users, technological
advancements, and computer awareness among people.

11
Software Crisis

• Symptoms of software crisis


– complexity,
– hardware versus software cost,
– Lateness and costliness,
– poor quality,
– unmanageable nature,
– immaturity,
– lack of planning and management practices,
– Change, maintenance and migration,
– etc.

12
What is Software Engineering?
• The solution to these software crises is to introduce systematic
software engineering approach for software development,
maintenance, operation, retirement, planning, and
management of software.

Satisfies quality criteria

Customer needs Software

Systematic approach

Software engineering view


13
What is Software Engineering?
• IEEE defines software engineering-
– The systematic approach to the development, operation,
maintenance, and retirement of software.
• The systematic means the methodological and pragmatic way of
development, operation and maintenance of software.
• Development means the construction of software through a series of
activities, i.e., analysis, design, coding, testing, and deployment.
• Operational software must be correct, efficient, understandable, and
usable for work at the client site.
• Maintenance is required due to the existence of errors and faults,
modification of existing features, addition of new features, and
technological advancements.
• After a long operational life, software gets retired and then it is
migrated onto modern technologies through reengineering process.
14
Software Engineering Challenges

• Problem Understanding
• Quality and Productivity
• Cycle Time and Cost
• Reliability
• Change and Maintenance
• Usability and Reusability
• Repeatability and Process Maturity
• Estimation and Planning

15
Evolution of Software Engineering Methodologies
• A software engineering methodology is a set of procedures
followed from the beginning to the completion of the
development process.
• Software engineering methodologies have evolved with
increasing complexities in programming and advancements in
programming technologies.
• The most popular software methodologies are:
– Exploratory methodology
– Structure-oriented methodology
– Data-structure-oriented methodology
– Object-oriented methodology
– Component-based development methodology

16
Evolution of Software Engineering Methodologies
Next generation

Component CBD
programming models
Component
oriented
Programming technology

Object-oriented
programming
Object oriented OOA/OOD
Parallel
models
programming
Data structure
High-level oriented JSD models
programming
Structure
Unstructured oriented SA/SD models
programming
Exploratory
methodology State models

Business needs and software complexities


17
Exploratory Methodology
• Exploratory style of software engineering is a methodology that
applies to the development of programs whose requirements are
initially unclear.
• It involves experimentation and exploring the programs through
step-by-step programming.
• Exploratory style is sufficient to develop software to test research
hypothesis but it is unable to meet reliability, extensibility, and
maintainability goals.
• In exploratory style, errors are detected only during the final
product testing.
• Maintenance is very difficult and costly because of the lack of
documentation and multiplicity of changes in the initial proposal.
• Exploratory style uses unstructured programming or design
heuristics for program writing, where the focus is given on global
data items.
18
Structure-Oriented Methodology

• Structured methodology focuses on procedural approach, which


concentrates on developing functions or procedures,
• It has three basic elements, Sequence, Selection, Iteration.
• Structure-oriented methodology uses a variety of notations, such as
Data Flow Diagrams (DFD), data dictionary, Control Flow Graphs
(CFG), Entity Relationship (ER) diagrams, etc., to design the
solution of the software.
• Structure-oriented methodology is suitable for all types of projects.
Procedural programming languages (for example, C, COBOL,
BASIC, FORTRAN, etc.) are actually very powerful and easy to
understand.
• Structure-oriented approach is preferred in scripts and embedded
systems with small memory requirements and high speed.
19
Data-Structure-Oriented Methodology

• Data-structure-oriented methodology concentrates more on


designing data structures rather than on procedures and
control.
• Jackson Structured Design (JSD) methodology developed by
Michael Jackson in 1970 is a famous data-structure-oriented
methodology that expresses how functionality fits in with the
real world.
• JSD is a useful methodology for concurrent software, real time
software, microcode, and for programming parallel computers
because JSD emphasizes actions more and attributes less.
• Though JSD is good for shaping real world scenario, it is
complex and difficult to understand.
20
Object-Oriented Methodology
• Object-oriented methodology emphasizes the use of data rather than
functions.
• Data and procedures are built around objects and classes.
• An object involves properties and methods
• Object-oriented methodology has three important concepts: modularity,
abstraction, and encapsulation.
• Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD)
techniques are used in object-oriented methodology.
• OOA is used to understand the requirements by identifying objects and
classes, their relationships to other classes, their attributes, and the
inheritance relationships among them.
• OOD creates object models and maps the real world situation into the
software structure.
• Object-oriented methodology is the latest and the most widely-used method
for the development of applications in a variety of domains.

21
Component-Based Development Methodology
• Component-Based Development (CBD) is a significant
methodology for communication among different
stakeholders, and for large-scale reuse.
• CBD is a system analysis and design methodology that has
evolved from the object-oriented methodology.
• It is largely based on its focus on reuse.
• Its proponents promise faster time to market, cost reduction,
better quality, flexibility, and scalability.
• Emerging software engineering methodologies, such as,
model-driven, aspect-oriented, services-oriented, client-server,
etc., may prove to be useful to address the modern software
crisis.
• Also, various practices have been introduced in agile process
to accelerate some activities of software development. 22
Software Engineering Principles

• Focus on customers’ problems, needs, priorities, and


expectations
• Choose appropriate process model
• Decomposition and modularity
• Abstraction
• Encapsulation
• Incremental development
• Understandability
• Consistency and completeness
• Generality

23
Software Engineering Principles

• Perform verification and validation to maintain quality


• Follow-up the scope statement, deadlines, and early product
delivery
• Design for change
• Follow disciplined and mature process
• Take responsibility and commit
• Better planning and management rather than technology

24

You might also like