CSC.
351 SOFTWARE ENGINEERING
1
UNIT-1: Introduction to
Software Engineering
CSIT Software Engineering Prepared By G.R 5/12/2022
COURSE OBJECTIVES
▪ To learn about all the difficulties in developing software so that we can avoid pitfalls and
myths in software design
▪ To learn about different software processes so that we can choose a suitable one
▪ To learn to design high-quality efficient software so that it is usable and maintainable
▪ To learn about advanced methods for software engineering
CSIT Software Engineering Prepared By G.R 5/12/2022 2
COURSE CONTENTS
▪ Introduction to Software Engineering
▪ Software Processes
▪ Requirements Engineering
▪ Software Design
▪ Object-Oriented Software Development
▪ Software Testing and Verification
▪ Software Project Management
▪ Advanced Methods
CSIT Software Engineering Prepared By G.R 5/12/2022 3
WHAT IS SOFTWARE?
Software is a set of items or objects
that form a “configuration” that
includes
• programs
• documents
• data structure
CSIT Software Engineering Prepared By G.R 5/12/2022 4
WHAT IS SOFTWARE (CONTD...)?
▪ Software consists of
▪ (1) instructions (computer programs) that when executed provided desired
function and performance,
▪ (2) data structures that enable the programs to adequately manipulate
information, and
▪ (3) documents that describe the operation and use of the programs.
CSIT Software Engineering Prepared By G.R 5/12/2022 5
UNIQUE CHARACTERISTICS OF SOFTWARE
▪ Software is malleable
▪ Software construction ishuman-intensive
▪ Software is intangible and hard to measure
▪ Software problems are usually complex
▪ Software directly depends upon the hardware
▪ It is at the top of the system engineering “food chain”
▪ Software doesn’t wear out but will deteriorate
▪ Software solutions require unusual rigor
▪ Software has discontinuous operational nature
CSIT Software Engineering Prepared By G.R 5/12/2022 6
SOFTWARE
▪ Software is computer programs and associated documentation.
▪ This definition clearly states that, the software is not a collection of programs, but includes
all associated documentation.
▪ Software system usually consists of a number of separate programs, configuration files: which
are used to set up these programs, System documentation: which describes the structure of the
system, and user documentation: which explains how to use the system and web sites for
users to download recent product information.
▪ Software products may be developed for a particular customer or may be developed for a
general market
CSIT Software Engineering Prepared By G.R 5/12/2022 7
SOFTWARE CONT..
▪ Software is more than just a program code.
▪ A program is an executable code, which serves some computational purpose.
▪ Software is considered to be collection of executable programming code, associated libraries and
documentations.
▪ Software, when made for a specific requirement is called software product.
▪ Engineering on the other hand, is all about developing products, using well-defined, scientific
principles and methods.
▪ Software engineering is an engineering branch associated with development of software
product using well-defined scientific principles, methods and procedures.
▪ The outcome of software engineering is an efficient and reliable software product.
CSIT Software Engineering Prepared By G.R 5/12/2022 8
SOFTWARE PRODUCTS MAY BE:
▪ Generic – These are stand-alone systems that are produced by a development organization and
sold on the open market to any customer who is able to buy them. (i.e. developed to be sold to a
range of different customers). e.g. Databases, Office packages, Drawing Packages etc.
▪ Bespoke (custom) – These are the systems which are commissioned by a particular customer.
▪ A software contractor develops the software especially for that customer. (i.e. developed for a
single customer according to their specification). e.g.: Control system for electronic device, software
to support particular business process.
CSIT Software Engineering Prepared By G.R 5/12/2022 9
INTRODUCTION TO SOFTWARE ENGINEERING
▪ Software engineering is strategy for producing quality software.
▪ It is the establishment and use of sound engineering principles in order to obtain economically
software is reliable and works efficiently on real machines.
▪ Software engineering is an engineering discipline which is concerned with all aspects of software
production
▪ Software engineers should adopt a systematic and organized approach to their work and use
appropriate tools and techniques depending on the problem to be solved, the development constraints
and the resources available
CSIT Software Engineering Prepared By G.R 5/12/2022 10
INTRODUCTION TO SOFTWARE ENGINEERING CONT..
▪ Software engineering as a discipline provides us with structured technical means of developing
and maintaining software.
▪ It provides methods to perform the tasks that the making of any software requires, analyzing the
requirements, designing the system to meet these requirements, constructing the programs,
maintaining the system, etc.
▪ Software engineering tools are used to support the tasks by automating the tasks or parts of the
tasks.
CSIT Software Engineering Prepared By G.R 5/12/2022 11
THE ADVANTAGES OF USING SOFTWARE ENGINEERING FOR
DEVELOPING SOFTWARE
▪ Improved quality
▪ Improved requirement specification
▪ Improved cost and schedule estimates
▪ Better use of automated tools and techniques.
▪ Better maintenance of delivered software
▪ Well defined process
▪ Improved reliability
▪ Improved productivity
▪ Less defects in final processes
CSIT Software Engineering Prepared By G.R 5/12/2022 12
WHAT IS THE DIFFERENCE BETWEEN SOFTWARE
ENGINEERING AND COMPUTER SCIENCE?
▪ Computer science is concerned with theories and methods that underline computer software system.;
software engineering is concerned with the practicalities of developing and delivering useful software
▪ Some knowledge of computer science is essential for software engineers
▪ Computer science theories are currently insufficient to act as a complete underpinning for software
engineering the users and domains.
▪ Software engineering includes in computer science or computer based engineering background while
system engineering may covers a broader education area includes Engineering, Mathematics and
Computer science.).
▪ Software engineers focus solely on software components while system engineering deals with a
substantial amount of physical component of computers.
▪ Software Engineering deals with designing and developing software of the highest quality, while
Systems Engineering is the sub discipline of engineering, which deals with the overall management of
engineering projects during their life cycle.
▪ Software engineering techniques such as use-case modeling and configuration management are being
used in the systems engineering process.
CSIT Software Engineering Prepared By G.R 5/12/2022 13
WHAT IS A SOFTWARE PROCESS?
▪ It is a set of activities and associated results that produce a software product. Generic
activities in all software processes are:
▪ Specification –where customers and engineers define the software to be produced and
the constraints on its operation. (i.e. what the system should do and its development
constraints)
▪ Development – Where the software is designed and programmed. (i.e. production of the
software system)
▪ Validation – where the software is checked to ensure that it is what the customer
requires. (i.e. checking that the software is what the customer wants)
▪ Evolution – Where the software is modified to adapt it to changing customer and
market requirements. (i.e. changing the software in response to changing demands)
CSIT Software Engineering Prepared By G.R 5/12/2022 14
WHAT IS A SOFTWARE PROCESS MODEL?
▪ It is a simplified representation of a software process, presented from a specific perspective.
▪ Software process model may include activities that are part of the software process, software
products and the role of people involved in software engineering.
▪ Software process models are:
▪ Workflow model – (sequence of activities)
▪ This model shows the sequence of activities in the process along with their inputs, outputs and
dependencies.
▪ The activities in this model represent human actions.
CSIT Software Engineering Prepared By G.R 5/12/2022 15
WHAT IS A SOFTWARE PROCESS MODEL? CONT..
▪ Data-flow or Activity model – (information flow)
▪ This model represents the process as a set of activities each of which carries out some data
transformation.
▪ It shows how the input to the process, such as a specification, is transformed to an output,
such as a design.
▪ The activities here may represent transformations carried out by people /computer
▪ Role/action Model – (who does what)
▪ This model represents the roles of people involved in the process and the activities for which
they are responsible
CSIT Software Engineering Prepared By G.R 5/12/2022 16
WHAT IS A SOFTWARE PROCESS MODEL? CONT…
▪ Generic process models
• Waterfall
• Evolutionary development
• Formal transformation
• Integration from reusable components-CBSE (computer -based software engineering)
CSIT Software Engineering Prepared By G.R 5/12/2022 17
WHAT IS A SOFTWARE PROCESS MODEL? CONT…
▪ Software costs
▪ The distribution of costs across the different activities in the software process depends on the process used and
the type of software that is being developed
▪ Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware
cost
▪ Software costs more to maintain than it does to develop.
▪ For systems with a long life, maintenance costs may be several times development costs
▪ Software engineering is concerned with cost-effective software development
▪ Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often
exceed development costs
▪ Costs vary depending on the type of system being developed and the requirements of system attributes such as
performance and system reliability
▪ Distribution of costs depends on the development model that is used
CSIT Software Engineering Prepared By G.R 5/12/2022 18
WHAT ARE THE SOFTWARE ENGINEERING METHODS?
▪ It is a structured approach to software development which includes system models, notations, rules,
design advice and process guidance whose aim to facilitate the production of high-quality software in
cost-effective way.
▪ Model descriptions: Descriptions of graphical models which should be developed and the notation
used to define these models.eg. Object model, Data Flow Model
▪ Rules : Constraints applied to system models e.g. Every entity in a system model must be unique
name
▪ Recommendations-
▪ Heuristic which characterize good design practice in this method. Following these recommendations
should lead to a well-organized system model (i.e. Advice on good design practice).e.g. No object should
have more than seven sub-objects associated with it.
CSIT Software Engineering Prepared By G.R 5/12/2022 19
WHAT ARE THE SOFTWARE ENGINEERING METHODS?
▪ Process guidance
▪ Descriptions of the activities which may be followed to develop the system models and the
organization of these activities. e.g. Object attributes should be documented before designing the
operations associated with an object.
▪ What is CASE (Computer –Aided Software Engineering)?
▪ It covers a wide range of different types of programs that are used to support software process
activities such as requirement analysis, system modelling, debugging and testing
▪ Computer-Aided Software Engineering (CASE) tools are software programs that
automate or support the drawing and analysis of system models and provide for the translation
of system models into application programs. Some CASE tools also provide prototyping and code
generation capabilities
CSIT Software Engineering Prepared By G.R 5/12/2022 20
WHAT ARE THE KEY CHALLENGES FACING SOFTWARE
ENGINEERING?
▪ Coping with legacy systems, coping with increasing diversity and coping with demands for reduced
delivery times are challenges of software engineering.
▪ The key challenges are:
▪ Legacy systems
▪ Old, valuable systems must be maintained and updated
▪ Heterogeneity
▪ Systems are distributed and include a mix of hardware and software
▪ Delivery
▪ There is increasing pressure for faster delivery of software
CSIT Software Engineering Prepared By G.R 5/12/2022 21
SOFTWARE CHARACTERISTICS
▪ Like all engineering, software engineering is not just about producing product but involves
producing products in a cost effective way.
▪ The challenged for the software engineers is to produce high quality software with a finite amount
of resources and to a predicted schedule.
▪ The software should deliver the required functionality and performance to the user and should be
maintainable, dependable and usable
▪ Maintainability: (Software must evolve to meet changing needs)
▪ Software should be written in such a way that it may evolve to meet the changing needs of
customers.
▪ This is a critical attribute because software change is an inevitable consequence of a changing
environment.
CSIT Software Engineering Prepared By G.R 5/12/2022 22
SOFTWARE CHARACTERISTICS CONT…
▪ Dependability: (Software must be trustworthy)
▪ Software dependability has a range of characteristics, including reliability, security and safety.
Dependable software should not cause physical or economic damage in the event of system failure.
▪ Efficiency: (Software should not make wasteful use of system resources)
▪ System should not make wasteful use of system resources such as memory and processor cycles.
Efficiency therefore includes responsiveness, processing time, and memory utilization.
▪ Usability: (Software must be usable by the users for which it was designed)
▪ Software must be usable, without undue effort, by the type of user for whom it is designed. This
means that it should have an appropriate user interface and adequate documentation.
CSIT Software Engineering Prepared By G.R 5/12/2022 23
ISSUES OF PROFESSIONAL RESPONSIBILITY
▪ Confidentiality
▪ Engineers should normally respect the confidentiality of their employers or clients irrespective
of whether or not a formal confidentiality agreement has been signed.
▪ Competence
▪ Engineers should not misrepresent their level of competence.
▪ They should not knowingly accept work which is out with their competence.
▪ Intellectual property rights
▪ Engineers should be aware of local laws governing the use of intellectual property such as
patents, copyright, etc.
▪ Computer misuse
▪ Software engineers should not use their technical skills to misuse other people’s computers.
CSIT Software Engineering Prepared By G.R 5/12/2022 24
WHAT IS THE DIFFERENCE BETWEEN A SYSTEMS ENGINEER AND A
SOFTWARE ENGINEER?
▪ Software engineer designs and creates engineering specifications for software programs based on a
broad knowledge of information systems.
▪ They typically work with QA and hardware engineers to develop testing plans.
▪ Software engineers might also determine what development methodology to use after documenting
software requirements.
▪ Systems engineers do some of the same work as software engineers, also developing software
components; however, systems engineering involves specifying, maintaining, supporting, and
maintaining technical infrastructure.
▪ Systems engineers also perform high-level root cause analysis for service interruptions and help
ensure that the services and system get back online after the problem is resolved.
CSIT Software Engineering Prepared By G.R 5/12/2022 25
WHAT IS THE DIFFERENCE BETWEEN A SYSTEMS ENGINEER
AND A SOFTWARE ENGINEER?
▪ Definition of software engineering:
▪ Software engineering concern about the designing and developments engineering specified software
of the highest quality and should have broad information systems experience.
▪ Definition of system engineering:
▪ System engineering concerns on the overall management of engineering projects throughout their life
cycle. System engineering highly concerns on the hardware part of the project.
▪ It deals with logistics, team coordination, automatic machinery control, work processes and similar
tools.
CSIT Software Engineering Prepared By G.R 5/12/2022 26
SOFTWARE ENGINEERING VS. SOFTWARE DEVELOPMENT
▪ The difference between software engineering and software development begins with job function.
▪ A software engineer may be involved with software development, but few software developers are
engineers.
▪ To explain, software engineering refers to the application of engineering principles to create
software.
▪ Software engineers participate in the software development life cycle through connecting the
client’s needs with applicable technology solutions.
▪ Thus, they systematically develop processes to provide specific functions. In the end, software
engineering means using engineering concepts to develop software.
CSIT Software Engineering Prepared By G.R 5/12/2022 27
CSIT Software Engineering Prepared By G.R 5/12/2022 28
SOFTWARE EVOLUTION
▪ The process of developing a software product using software engineering principles and methods
is referred to as software evolution.
▪ This includes the initial development of software and its maintenance and updates, till desired
software product is developed, which satisfies the expected requirements.
▪ Evolution starts from the requirement gathering process.
▪ After which developers create a prototype of the intended software and show it to the users to
get their feedback at the early stage of software product development.
▪ The users suggest changes, on which several consecutive updates and maintenance keep on
changing too.
▪ This process changes to the original software, till the desired software is accomplished.
CSIT Software Engineering Prepared By G.R 5/12/2022 29
SOFTWARE EVOLUTION CONT..
CSIT Software Engineering Prepared By G.R 5/12/2022 30
SOFTWARE PARADIGMS
▪ Software paradigms refer to the methods and steps, which are taken while designing the
software.
▪ There are many methods proposed and are in work today, but we need to see where in the
software engineering these paradigms stand.
▪ These can be combined into various categories, though each of them is contained in one
another:
CSIT Software Engineering Prepared By G.R 5/12/2022 31
SOFTWARE PARADIGMS
▪ Software Development Paradigm
▪ This Paradigm is known as software engineering paradigms where all the engineering concepts pertaining to the
development of software are applied.
▪ It includes various researches and requirement gathering which helps the software product to build. It consists of –
▪ Requirement gathering
▪ Software design
▪ Programming
▪ Software Design Paradigm
▪ This paradigm is a part of Software Development and includes –
▪ Design
▪ Maintenance
▪ Programming
CSIT Software Engineering Prepared By G.R 5/12/2022 32
SOFTWARE PARADIGMS CONT…
▪ Programming Paradigm
▪ This paradigm is related closely to programming aspect of software development. This includes –
▪ Coding
▪ Testing
▪ Integration
CSIT Software Engineering Prepared By G.R 5/12/2022 33
NEED OF SOFTWARE ENGINEERING
▪ Large software - It is easier to build a wall than to a house or building, likewise, as the size
of software become large engineering has to step to give it a scientific process.
▪ Scalability- If the software process were not based on scientific and engineering concepts, it
would be easier to re-create new software than to scale an existing one.
▪ Cost- As hardware industry has shown its skills and huge manufacturing has lower down he
price of computer and electronic hardware.
▪ Dynamic Nature- The always growing and adapting nature of software hugely depends upon
the environment in which user works
▪ Quality Management- Better process of software development provides better and quality
software product.
CSIT Software Engineering Prepared By G.R 5/12/2022 34
CHARACTERISTICS OF GOOD SOFTWARE
▪ A software product can be judged by what it offers and how well it can be used. This software must satisfy
on the following grounds:
Operational
▪ This tells us how well software works in operations.
▪ It can be measured on:
▪ Budget
▪ Usability
▪ Efficiency
▪ Correctness
▪ Functionality
▪ Dependability
▪ Security
▪ Safety
CSIT Software Engineering Prepared By G.R 5/12/2022 35
CHARACTERISTICS OF GOOD SOFTWARE CONT..
Transitional
▪ This aspect is important when the software is moved from one platform to another:
▪ Portability
▪ Interoperability
▪ Reusability
▪ Adaptability
Maintenance
▪ This aspect briefs about how well a software has the capabilities to maintain itself in the ever-changing
environment:
▪ Modularity
▪ Maintainability
▪ Flexibility
▪ Scalability
CSIT Software Engineering Prepared By G.R 5/12/2022 36
WHAT IS A SYSTEM?
▪ Definition: System is a purposeful collection of inter-related components working together towards
some common objective.
▪ It is an interrelated set of components, with an identifiable boundary, working together for some
purpose.
▪ A system may include software, mechanical, electrical and electronic hardware and be operated
by people.
▪ System components are dependent on other system components
▪ Every system interacts with the environment through exchange of information.
▪ Every system must fit into its operating environment.
▪ All systems exhibit predictable behavior.
▪ All systems come in hierarchies. Therefore, system exists to maintain its higher level systems.
CSIT Software Engineering Prepared By G.R 5/12/2022 37
CHARACTERISTICS OF A SYSTEM
▪ Components: An irreducible part or aggregation of parts that make up a system, also called
subsystem
▪ Interrelated Components: Dependence of one subsystem on one or more subsystems.
▪ Boundary: The line that marks the inside and outside of a system and that sets off the system
from its environment.
▪ Purpose: The overall goal or function of a system.
▪ Environment: Everything external/internal to a system that interacts with the system.
▪ Interfaces: Point of contact where a system meets its environment or where subsystems meet each
other
▪ Input: Whatever a system takes from its environment in order to fulfill its purpose.
▪ Output: Whatever a system returns to its environment in order to fulfill its purpose.
▪ Constraints: A limit to what a system can accomplish
CSIT Software Engineering Prepared By G.R 5/12/2022 38
SYSTEM ENGINEERING
▪ A computer-based system makes use of a variety of system elements which includes: Software:
Computer programs, data structures, and related documentation that serve to effect the logical
method, procedure, or control that is required.
▪ Hardware: Electronic devices that provide computing capability, the interconnectivity devices (e.g.,
network switches, telecommunications devices) that enable the flow of data, and electromechanical
devices (e.g., sensors, motors, pumps) that provide external world function.
▪ People: Users and operators of hardware and software.
▪ Database: A large, organized collection of information that is accessed via software.
▪ Documentation: Descriptive information (e.g., hardcopy manuals, on-line help files, Web sites) that
portrays the use and/or operation of the system.
▪ Procedures: The steps that define the specific use of each system element or the procedural
context in which the system resides.
CSIT Software Engineering Prepared By G.R 5/12/2022 39
SYSTEM ENGINEERING PROCESS
▪ A set of activities whose goal is the development or evolution of software
▪ Usually follows a ‘waterfall’ model because of the need for parallel development of different parts
of the system
▪ Little scope for iteration between phases because hardware changes are very expensive. Software
may have to compensate for hardware problems
▪ Inevitably involves engineers from different disciplines who must work together
▪ Much scope for misunderstanding here. Different disciplines use a different vocabulary and much
negotiation is required. Engineers may have personal agendas to fulfil
CSIT Software Engineering Prepared By G.R 5/12/2022 40
SYSTEM ENGINEERING PROCESS CONT..
▪ 1. System requirements definition
▪ System requirements definitions specify what the system should do (its functions) and its
essential and desirable system properties.
▪ Creating system requirements definitions involves consultations with system customers and end-
users.
▪ This phase concentrates on three types of requirements:
▪ Abstract functional requirements: The basic function that the system must provide are defined at an
abstract level.
▪ More detailed functional requirements specification takes place at the sub-system level.
▪ System properties: These are non-functional emergent system properties such as availability, performance and
safety. These properties affect the requirements for all sub-systems.
▪ Characteristics that the system must not exhibit: It is sometimes as important to specify what the system
must not do as it is to specify what the system should do.
CSIT Software Engineering Prepared By G.R 5/12/2022 41
SYSTEM ENGINEERING PROCESS CONT..
2.The system design process
▪ System design is concerned with how the system functionality is to be provided by the
components of the systems.
▪ The activities involved in this process are
▪ Partition requirements
▪ Organize requirements into related groups
▪ Identify sub-systems
▪ Identify a set of sub-systems which collectively can meet the system requirements
CSIT Software Engineering Prepared By G.R 5/12/2022 42
SYSTEM ENGINEERING PROCESS CONT..
▪ 3. Sub-system development
• Typically, parallel projects developing the hardware, software and communications
• May involve some COTS (Commercial Off-the-Shelf) systems procurement
• Lack of communication across implementation teams
• Bureaucratic and slow mechanism for proposing system changes means that the development
schedule may be extended because of the need for rework
▪ 4. System integration
• It is the process of putting hardware, software and people together to make a system
• It should be tackled incrementally so that sub-systems are integrated one at a time
• Interface problems between sub-systems are usually found at this stage
• May be problems with uncoordinated deliveries of system components
CSIT Software Engineering Prepared By G.R 5/12/2022 43
SYSTEM ENGINEERING PROCESS CONT..
▪ 5. System installation
▪ The organizational process of changing over from the current system to a new one Four approaches of
installation
▪ Direct Installation Changing over from the old system to a new one by turning off the old system
when the new one is turned on
▪ Parallel Installation
▪ Running the old system and the new one at the same time until management decides the old system can be
turned off
▪ Single location installation Trying out a system at one site and using the experience to decide if
and how the new system should be deployed throughout the organization
▪ Phased Installation Changing from the old system to the new one incrementally, starting with one or a
few functional components and then gradually extending the installation to cover the whole new system
CSIT Software Engineering Prepared By G.R 5/12/2022 44
SYSTEM ENGINEERING PROCESS CONT..
▪ Running the old system and the new one at the same time until management decides the old system
can be turned off
▪ Single location installation Trying out a system at one site and using the experience to
decide if and how the new system should be deployed throughout the organization
▪ Phased Installation Changing from the old system to the new one incrementally, starting with
one or a few functional components and then gradually extending the installation to cover the whole
new system
CSIT Software Engineering Prepared By G.R 5/12/2022 45
SYSTEM ENGINEERING PROCESS CONT..
Problems in installation:
▪ Environmental assumptions may be incorrect
▪ May be human resistance to the introduction of a new system
▪ System may have to coexist with alternative systems for some time
▪ May be physical installation problems (e.g. cabling problems)
▪ Operator training has to be identified
CSIT Software Engineering Prepared By G.R 5/12/2022 46
SYSTEM ENGINEERING PROCESS CONT..
6. System evolution
▪ Large, complex systems have a very long lifetime. They must evolve to meet changing
requirements i.e. during their life, they are changed to correct errors in the original system
requirements and to implement new requirements that have emerged.
▪ System Evolution is inherently costly, like software evolution for several reasons:
▪ Changes must be analyzed from a technical and business perspective
▪ Sub-systems interact so unanticipated problems can arise
▪ There is rarely a rationale for original design decisions
▪ System structure is corrupted as changes are made to it
▪ Existing systems which must be maintained are sometimes called legacy systems
CSIT Software Engineering Prepared By G.R 5/12/2022 47
SYSTEM ENGINEERING PROCESS CONT..
7. System decommissioning
▪ It means taking the system out of service after its useful lifetime
▪ May require data to be restructured and converted to be used in some other system
▪ If the data in the system that is being decommissioned is still valuable to your organization or
you may have to convert it for use by other systems.
CSIT Software Engineering Prepared By G.R 5/12/2022 48
CSIT Software Engineering Prepared By G.R 5/12/2022 49