Professional Documents
Culture Documents
Module Number: I
AIM:
To equip students with fundamentals of software Engineering
2
Introduction To Software Engineering
Objectives:
• Illustrate the methods and steps which are taken while designing the software
3
Introduction To Software Engineering
Learning Outcomes:
4
Introduction To Software Engineering
Contents
• Introduction
• Software Components
• Characteristics
• Issues
• Need of Software Life Cycle Models
• Phases, Advantages and Disadvantages
• Software Life Cycle Models
• Waterfall
• iterative
• Spiral
• Protyping
5
• Comparison of different models
Introduction To Software Engineering
6
Introduction To Software Engineering
• Software engineering is necessary to become able to build software on time, on budget, within
specification while minimizing defects, managing quality, cost, time, complexity, verifiability,
maintainability, availability, reliability, dependability, performance, security, usability, and other
attributes of software.
• The majority of the costs are the costs of changing the software after it has gone into use.
• The objective of SE is able to create reliable and trustworthy systems and software in terms of
economically and quickly.
7
Introduction To Software Engineering
What is software?
Software is:
1. Instructions (computer programs) that when executed provide desired features, function, and
performance.
2. Data structures that enable the programs to adequately manipulate information and (3)
documentation that describes the operation and use of the programs.
Characteristics of Software :
• Software is developed or engineered, it is not manufactured in the classical sense.
• Although the industry is moving toward component-based construction, most software continues
to be custom-built.
8
Introduction To Software Engineering
• Application Software
• Embedded Software
• Web applications
• Thousands of computer programs fall into one of the category from seven broad application
domains.
• Some of these are state of-the-art software—just released to individuals, industry, and
government. But other programs are older, in some cases much older.
• Legacy [Inheritance] software systems were developed decades ago and have been continually
modified to meet changes in business requirements and computing platforms. The production of
such systems is causing headaches for large organizations who find them costly to maintain and
risky to evolve.
10
Introduction To Software Engineering
Introduction:
• Software Engineering is the application of a systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of software; that is, the application of
engineering to software.
• Software engineering is a layered technology. As shown in figure (On Next Slide), any
engineering approach (including software engineering) must rest on an organizational
commitment to quality.
11
A Quality
Introduction To Software
Focus Engineering
Tools
Process Layer :
• The foundation for software engineering is the process layer.
• Process defines a framework that must be established for effective delivery of software
engineering technology.
• The software process forms the basis for management control of software projects and
establishes the context in which technical methods are applied, work products (models,
documents, data, reports, forms, etc.) are produced, milestones are established, quality is
ensured, and change is properly managed.
13
Introduction To Software Engineering
Method Layer :
• Software engineering methods provide the technical solution for building software.
• Communication
• Requirements analysis
• Design modeling
• Program construction
• It is a set of basic principles that manage each area of the technology and include modelling
14
activities and other descriptive techniques.
Introduction To Software Engineering
Tools Layer :
• Software engineering tools provide automated or semi-automated support for the process
and the methods.
• Tools are integrated so that information created by one tool can be used by another.
15
Introduction To Software Engineering
Introduction :
• A process is a collection of activities, actions, and tasks that are performed
when some work product is to be created.
• An activity includes to achieve a broad objective (e.g., communication with
stakeholders) and is applied regardless of the application domain, size of the
project, complexity of the effort which software engineering is to be applied.
• An action (e.g., architectural design) encompasses a set of tasks that produce
a major work product (e.g., an architectural design model).
• A task focuses on a small, but well-defined objective (e.g., conducting a unit
test) that produces a tangible outcome. 16
Introduction To Software Engineering
• Planning
• Modeling
• Construction
• Deployment
17
Introduction To Software Engineering
Communication
• Before any technical work can commence, it is critically important to
communicate and collaborate with the customer or client.
(Stakeholders).
• The objective is to understand stakeholders’ objectives for the project
and to gather requirements that help define software features and
functions.
Planning :
• It defines the software engineering work by describing the technical
tasks to be conducted, the risks that are likely, the resources that will
be required, the work products to be produced, and a work schedule.
• It is similar like a map which guides us about our journey.
19
Introduction To Software Engineering
Modeling:
• It creates a “sketch” of the thing so that you will understand the real
picture—what it will look like architecturally.
• A software engineer does the same thing by creating models to better
understand software requirements and the design that will achieve
those requirements.
Construction:
• This activity combines code generation (either manual or automated)
and the testing that is required to uncover errors in the code.
20
Introduction To Software Engineering
Deployment:
• The software (as a complete entity or as a partially completed
increment) is delivered to the customer who evaluates the delivered
product and provides feedback based on the evaluation.
24
Introduction To Software Engineering
1. Reduces complexity
• Big software are always complex and difficult to develop. Software engineering has
a great solution to decrease the complexity of any project.
2. To minimize software cost
• Software requires a lot of hard work and software engineers are highly paid
professionals. But in software engineering, programmers plan everything and reduce
all those things that are not required. In turn, cost for software productions becomes
less.
25
Introduction To Software Engineering
3. To decrease time
• If you are making big software then you may need to run many code to get the ultimate
running code. This is a very time consuming. So if you are making your software according
to software engineering approach then it will reduce a lot of time.
• Big projects are not made in few days and they require lots of patience. So to handle big
projects without any problem, organization has to go for software engineering approach.
5. Reliable software
• Software should be reliable, means if you have delivered the software, then it should work
for at least it’s given time. 26 26
Introduction To Software Engineering
6. Effectiveness
• Effectiveness comes if anything has been made according to the standards. So, Software
becomes more effective in performance with the help of software engineering.
7. Productivity
• If programs fails to meet its standard at any stage, then programmers always improve the
code of software to make sure that software maintains its standards.
27 27
Introduction To Software Engineering
Software Characteristics
• Software does not Wear Out: Software is not susceptible to the environmental melodies and it
does not suffer from any effects with time.
• Software is Highly Malleable: In case of software, one can modify the product itself rather
easily without necessary changes.
28
Introduction To Software Engineering
Software Components
• Off the shelf Components: Existing software that can be acquired from a third party.
• Full Experience Components: Existing past projects that are similar to the software to be built
for the current project and team members have full experience.
• Partial Experience components: Existing past project that are related to the software to be
built for current project but needs substantial modifications.
• New Components: Software components that must be built by the software team specifically for
the needs of the current project.
29
Introduction To Software Engineering
Software Application
• System software: This class of software manages and controls the internal operations of a
computer system. It is a group of programs, which is responsible for using computer resources
efficiently and effectively. For example, an operating system.
• Real-time software: This class of software observes, analyzes, and controls real world events
as they occur. An example of real-time software is the software used for weather forecasting
that collects and processes parameters like temperature and humidity.
• Business software: This class of software is widely used in areas where management and control
of financial activities is of utmost importance. The fundamental component of a business system
comprises payroll, inventory, and accounting software.
30
Introduction To Software Engineering
Software Application
• Engineering and scientific software:
This class of software has emerged as a powerful tool in the research and development of next
generation technology.
• Web-based software:
This class of software acts as an interface between the user and the Internet.
• More features
To overcome the above criteria we need systematic approach which are nothing but software Life
Cycle Models.
32
IBM Global Services – Testing Competency
Software life cycle models describe various phases of the software cycle and the order in which those
phases are executed. There are tons of models, and many companies adopt their own, but all have
very similar patterns. Some of the models as follows:
• General Model
• Water fall model/ Linear Sequential/ Classic Life Cycle Model
• V-Model
• Rapid Application Development (RAD) model
• Incremental Model
• Spiral Model
• Proto type model
• Fourth Generation (4GT) Techniques
33
IBM Global Services – Testing Competency
System/information
Engineering
Software life cycle models describe phases of the software cycle and the order in which those phases
are executed. There are tons of models, and many companies adopt their own, but all have very
similar patterns. The general, basic model is shown above.
34
IBM Global Services – Testing Competency
• The "waterfall model", documented in 1970 by Royce was the first publicly documented life cycle
model. The model was developed to help with the increasing complexity of aerospace products.
• This is the most common and classic of life cycle models, also referred to as a linear- sequential life
cycle model. It is very simple to understand and use. In a waterfall model, each phase must be
completed in its entirety before the next phase can begin. At the end of each phase, a review takes
place to determine if the project is on the right path and whether or not to continue or discard the
project. Unlike what I mentioned in the general model, phases do not overlap in a waterfall model.
• The least flexible and most obsolete of the life cycle models. Well suited to projects that has low risk
in the areas of user interface and performance requirements, but high risk in budget and schedule
predictability and control. 35
IBM Global Services – Testing Competency
Requirements
System design
specification
Coding Testing
Delivery
36
IBM Global Services – Testing Competency
Advantages
• Works well for smaller projects where requirements are very well understood/stable.
37
IBM Global Services – Testing Competency
Disadvantages
38
IBM Global Services – Testing Competency
V - model
• Another variant of the waterfall model — the V-model — associates each development activity
with a test or validation at the same level of abstraction. Each development activity builds a
more detailed model of the system than the one before it, and each validation tests a higher
abstraction than its predecessor.
• The least flexible and most obsolete of the life cycle models. Well suited to projects that has
low risk in the areas of user interface and performance requirements, but high risk in budget
and schedule predictability and control.
39
IBM Global Services – Testing Competency
V - model (continued)
Testing
Integrated Test
High Level Design Integrated Testing
Plan
V - model (continued)
Advantages
• Higher chance of success over the waterfall model due to the development of test
plans early on during the life cycle.
• Works well for small projects where requirements are easily understood.
41
IBM Global Services – Testing Competency
V - model (continued)
Disadvantages
• Model doesn’t provide a clear path for problems found during testing phases.
42
IBM Global Services – Testing Competency
• This model does not attempt to start with full specification of requirements. Multiple
development cycles take place here, making the life cycle a “multi-waterfall” cycle. Cycles
are divided up into smaller, more easily managed iterations. Each iteration passes through
the requirements, design, implementation and testing phases.
• A working version of software is produced during the first iteration, so you have working
software early on during the software life cycle. Subsequent iterations build on the initial
software produced during the first iteration.
43
IBM Global Services – Testing Competency
Key Points
• Development and delivery is broken down into increments
• Each increment delivers part of the required functionality
• Requirements are prioritised and the highest priority requirements are included in early
increments
• Once the development of an increment is started, the requirements are frozen
• Requirements for later increments can continue to evolve
44
IBM Global Services – Testing Competency
Time
45
IBM Global Services – Testing Competency
Advantages
• System functionality is available earlier and customer does not have to wait long.
• Early increments act as a prototype to help elicit requirements for later increments.
• The highest priority functionalities tend to receive more testing.
• More flexible – less costly to change scope and requirements.
• Easier to test and debug during a smaller iteration.
• Easier to manage risk because risky pieces are identified and handled during its iteration.
46
IBM Global Services – Testing Competency
Disadvantages
• Each phase of an iteration is rigid and do not overlap each other.
• Problems may arise pertaining to system architecture because not all requirements are
gathered up front for the entire software life cycle.
47
IBM Global Services – Testing Competency
Prototype model
• In this model, a prototype (an early approximation of a final system or product) is built, tested,
and then reworked as necessary until an acceptable prototype is finally achieved from which
the complete system or product can now be developed.
• Prototype paradigm begins with requirements gathering. Developer and customer meet and
define the overall objectives for the software, identify whatever requirements are known, and
outline areas where further definition is mandatory.
48
IBM Global Services – Testing Competency
Prototype model
• The prototype is evaluated by the customer/user and used to refine the requirements for
the software to be developed.
• Iteration occurs as the prototype is tuned to satisfy the user requirements, while at the
same time enabling developer to better understand what needs to be done.
49
IBM Global Services – Testing Competency
Prototype model
50
IBM Global Services – Testing Competency
Spiral - model
• This model of development combines the features of the prototyping model and the waterfall
model. The spiral model is favoured for large, expensive, and complicated projects.
• The spiral model is similar to the incremental model with more emphasis placed on risk
analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and
Evaluation. A software project repeatedly passes through these phases in iterations (called
Spirals in this model). The baseline spiral, starting in the planning phase, requirements is
gathered and risk is assessed. Each subsequent spiral builds on the baseline spiral.
51
IBM Global Services – Testing Competency
Spiral - model
• Requirements are gathered during the planning phase. In the risk analysis phase, a process is
undertaken to identify risk and alternate solutions. A prototype is produced at the end of the risk
analysis phase.
• Software is produced in the engineering phase, along with testing at the end of the phase. The
evaluation phase allows the customer to evaluate the output of the project to date before the
project continues to the next spiral.
• In the spiral model, the angular component represents progress, and the radius of the spiral
represents cost.
52
Introduction To Software Engineering
Risk
Planning
Analysis
Go/No-Go
Decision
Evaluation Development
53 53
IBM Global Services – Testing Competency
Advantages
54
Introduction To Software Engineering
Disadvantages
55
IBM Global Services – Testing Competency
• RAD model makes heavy use of reusable software components with an extremely short
development cycle.
• The RAD is a linear sequential software development process that emphasizes an extremely short
development cycle.
• The RAD software model is a "high speed" adaptation of the linear sequential model in which
rapid development is achieved by using a component-based construction approach.
• Used primarily for information systems applications, the RAD approach encompasses the
following phases:
56
Introduction To Software Engineering
• Business modeling
• Data modeling
• Process modeling
• Application generation
• Testing
RAD process emphasizes the reuse of many of the program components that have already been tested,
and it minimizes the testing and development time.
57
Introduction To Software Engineering
58
Introduction To Software Engineering
b. System Design
c. Coding
d. System Testing
59
Introduction To Software Engineering
a. System Analysis
b. System planning
c. Feasibility Study
d. Design DFD
60
Introduction To Software Engineering
a. Parallel Run
b. Sizing
c. Specification Freeze
d. All of these
61
Introduction To Software Engineering
b. Program logic
d. None of these
62
Introduction To Software Engineering
d. None of these
63
Introduction To Software Engineering
a. System analysis
b. Problem identification
c. System design
d. Feasibility study
64
Introduction To Software Engineering
a. Design phase
d. Coding phase
65
Introduction To Software Engineering
a. Not iterative
c. Not possible to complete some activity in one phase in parallel with those of another phase
d. Circular process
66
Introduction To Software Engineering
a. Requirement analysis
b. Design
c. Coding
d. Testing
67
Introduction To Software Engineering
68
Introduction To Software Engineering
a. Project Manager
c. Software developers
d. Maintenance engineers
69
Introduction To Software Engineering
c. Developed or engineered
70
Introduction To Software Engineering
a. System software
b. Application software
c. Scientific software
71
Introduction To Software Engineering
a. document
b. Data structure
c. instruction
72
Introduction To Software Engineering
b. Deadline unrealistic
73
Introduction To Software Engineering
a. responsiveness
b. Processing time
c. Memory utilization
d. licensing
Answer : licensing
74
Introduction To Software Engineering
a. Low expectation
b. Less reliable
c. Increasing supply
d. Increasing demand
75
Introduction To Software Engineering
a. functionality
b. maintainability
c. A&b
Answer : A & b
76
Introduction To Software Engineering
Assignment
77
Introduction To Software Engineering
Case study
78
Introduction To Software Engineering
Summary
1. Software evolution is the process of developing a software product using the principles of
software engineering.
2. The programming paradigm is a model for a class of languages that shares a set of common
characteristics.
3. Software design paradigm is a model for a class of problems that share a set of common
characteristics.
79
Introduction To Software Engineering
Document Links
Topics Links
What is Software Engineering https://www.tutorialspoint.com/software_engineering/softwar
e_engineering_tutorial.pdf
Overview – Evolution of Software https://ifs.host.cs.st-andrews.ac.uk/Books/SE7/Presentations/P
DF/ch21.pdf
Software Engineering Paradigms https://web.cs.dal.ca/~hawkey/3130/SEBackground4.pdf
Software Development Life Cycle http://gsl.mit.edu/media/programs/peru-summer-2014/materia
ls/t04-_software_development_life_cycle.pdf
80
Introduction To Software Engineering
Video Links
Topics Links
What is Software Engineering https://www.youtube.com/watch?v=bFmThPwKRGU
Overview – Evolution of Software https://www.youtube.com/watch?v=itF0kpPMF1c
Software Engineering Paradigms https://www.youtube.com/watch?v=Aqn9Kp8NZi0
Software Development Life Cycle https://www.youtube.com/watch?v=wnDsmBit_XQ
81
Introduction To Software Engineering
E-Book Links
Links
1. http://web.firat.edu.tr/mbaykara/softwareengineering.pdf
2. http://dinus.ac.id/repository/docs/ajar/RPL-7th_ed_software_engineering_a_practitioner
s_approach_by_roger_s._pressman_.pdf
3. https://inspirit.net.in/books/academic/Ian%20Sommerville%20Software%20Engineering
,%209th%20Edition%20%20%20%202011.pdf
82