L1- Introduction to SE_063305
L1- Introduction to SE_063305
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
6
Software Classifications
Software
System Application
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
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
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.
Systematic approach
• 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
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
23
Software Engineering Principles
24