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

Lecture 1

The document provides information about a software engineering course titled CSD326 taught by Dr. Suchi Kumari. It includes details like the assessment scheme, time table, and definitions of key terms like software and software engineering. The assessment scheme mentions that the course evaluation will be based on a mid term test, quizzes, laboratory and project work, and an end term exam. The time table schedules the lectures, practical sessions and when the course will meet each day of the week. It also provides definitions of software and perspectives on software engineering.

Uploaded by

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

Lecture 1

The document provides information about a software engineering course titled CSD326 taught by Dr. Suchi Kumari. It includes details like the assessment scheme, time table, and definitions of key terms like software and software engineering. The assessment scheme mentions that the course evaluation will be based on a mid term test, quizzes, laboratory and project work, and an end term exam. The time table schedules the lectures, practical sessions and when the course will meet each day of the week. It also provides definitions of software and perspectives on software engineering.

Uploaded by

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

Dr.

Suchi Kumari
Assistant Professor
Software Engineering Department of Computer Science
CSD326 (3-0-2) and Engineering
Shiv Nadar Institute of Eminence
Email: [email protected]
Assessment Scheme

Component Name Weightage (in %)


Mid Term Test 20
Quizzes 15
Laboratory + Project 35
End Term Exam 30
Time Table
CSD326 (SE) Monday Tuesday Wednesday Thursday Friday
08:00 – 09:00
09:00 – 10:00
10:00 – 11:00 CSD326(L) CSD326(L) CSD326(L)
D217 D217 D217
11:00 – 12:00
12:00 – 01:00
01:00 – 02:00
02:00 – 03:00
03:00 – 04:00 CSD326 (P) CSD326 (P)
C309 C309
04:00 – 05:00 CSD326 (P) CSD326 (P)
C309 C309
What is Software?

It encompasses
A product that
programs that execute
software professionals
within a computer of
build and then support
any size and
over the long term.
architecture
Set of instructions (computer
programs) that when executed provide
desired features, function, and
performance;

Another Data structures that enable the


programs to adequately manipulate

Definition information,

Descriptive information in both hard


copy and virtual forms that describes
the operation and use of the programs
6

Activity
Virtually all countries
depend on complex
Think about all the devices and systems computer-based
systems.
that you encounter in your everyday life
which have software controlling them…

List as many as you can


Why Software is important?

• It affects nearly every aspect of our lives and has become pervasive in our
commerce, our culture, and our everyday activities.
• It enables us to build complex systems in a timely manner and with high
quality.
Hardware Vs Software cost over time

Why we need software if we can do


everything on hardware ?
Why can we not have completely
hardware systems ?

• Characteristic of software:
• Relatively easy and faster to develop and to change
• Consumes no space, weight or power.
• Otherwise, all might as well be hardware
• The more is the complexity of software, the harder it is to change
• The more changes made to a program, the greater becomes its complexity
Software Characteristics

• Software is developed or engineered;


• It is not manufactured in the classical sense.
• Software doesn’t “wear out.”
A hardware component can be
replaced by a spare part, but the
software failure indicates an error in
design or in the process of translation
Hardware into machine executable code.
vs. The software maintenance tasks that
Software accommodate requests for change
involve considerably more complexity
than hardware maintenance.
Software is defined as ___________

a) set of programs, documentation & configuration of data


b) set of programs
c) documentation and configuration of data
d) None of the mentioned
What is Software Engineering?

a) Designing a software
b) Testing a software
c) Application of engineering principles to the design a software
d) None of the above
• According to an IBM research, “31% of projects are abandoned before
they are completed, 53% exceed their cost projections by an average
of 189 percent, and 94 projects are restarted for every 100 projects.”
What is the significance of these figures?

a) Lack of software ethics and understanding


b) Management issues in the company
c) Lack of adequate training
d) None of the mentioned
Conclusion on
Hardware vs
Software
Hardware: Maintenance+Cost+failure
Does every
software
perform its
intended task?
Reasons of Software Crisis

• Fail to meet user requirement


• Larger Problems (Complex software but
hardware is simpler)
• Expensive
• Difficult to alter and debug
• Lack of adequate training
• Delayed project delivery
• Non-optimal usage of the resources
FLED+LND
Software
Crisis Report
The
Statistics:
Chaos
Report
20

Software Crisis Examples

Example 1: 2009,Computer glitch delays flights

Saturday 3rd October 2009-London, England (CNN)

• Dozens of flights from the UK were delayed Saturday after a glitch in an


air traffic control system in Scotland, but the problem was fixed a few
hours later.

• The agency said it reverted to backup equipment as engineering worked


on the system.

• The problem did not create a safety issue but could cause delays in
flights.

• Read more at:


http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flights.delayed
21

Software Crisis Examples II

Example 2: Ariane 5 Explosion

• European Space Agency spent 10 years and $7 billion to produce Ariane


5.

• Crash after 36.7 seconds.

• Caused by an overflow error. Trying to store a 64-bit number into a 16-bit


space.

• Watch the video: http://www.youtube.com/watch?v=z-r9cYp3tTE


22

Software Crisis Examples III

Example 3: 1992, London Ambulance Service

• Considered the largest ambulance service in the world.

• Overloaded problem.

• It was unable to keep track of the ambulances and their


statuses. Sending multiple units to some locations and no units
to other locations.

• Generates many exceptions messages.

• 46 deaths.
23

Software Crisis Examples IV

Example 4: The IBM OS/360 Project (1963-1965)

• Aimed to create a single operating system that would run on all


mainframes manufactured by IBM.

• But the software development staff struggled to accomplish


the central goal of OS/360 - the ability to run more than one
program at a time, and other issues began to crop up.

• IBM responded by hiring 1,000 more developers to assist the


project, spending more in a single year than had been planned
for the entire product development process.
Expecting Some examples from your side on
Software crisis
Key points to design a
good software?
• Understand the problem before you build a solution
• Design carefully providing attention to the interactions
of all system elements.
• Software should exhibit high quality
• Software should be maintainable.
• By applying an agile, adaptable process that leads to a
high-quality result that meets the needs of the people
who will use the product.
• By applying a software engineering approach.
A well-disciplined approach
to software development
and management is
necessary. This is called
engineering.

26
APMT

• An Engineering approach to develop software


Software Engineering • Software engineering encompasses
• a process,
• a collection of methods (practice) and
• an array of tools that allow professionals

to build high quality computer software.


Software
Engineering
is an ART or
SCIENCE ?
Evolution of
Software
Engineering :
From an Art To
Engineering
Discipline
Software Engineering as an Art

• Only learned by specific people and other people are not allowed to
work on them.
• Creative and intuitive aspect of software development.
• It involves the use of creativity, problem-solving skills, and
artistic expression to design and develop software systems
• Programmers would often write code in an ad-hoc manner, without
much structure or planning, and the final product was often the
result of their personal artistic expression.
For Example:
• In ancient times only a few people know Gold Ornaments
making.
• Paper making skill developed by China
Software Engineering Transition from
Art to Craft
• Software Engineering transformed from Art to Craft when the area
of people who know Software Designing and Coding will
increase.
• The field grew more structured, formalized and focused on
established processes, methodologies and tools.
• The goal of software engineering is not only to deliver a functional
product but also to deliver a product that is reliable, maintainable
and efficient.
For Example:
• When the secret of Gold Ornaments making is revealed to the only
generation after generation which will increase the number of people in
that Art and will convert art into a craft where accuracy is increased.
• Paper making is generalized in some other regions also
Software Engineering Transition From
Craft To Engineering Discipline

• The field has matured and grown more formalized and structured. The field has
shifted its focus from relying on established processes and method
• In today’s world, Software Engineering acts as an Engineering Discipline
when everyone can learn Software designing and coding irrespective of that
they are pursuing a degree or not.

• For example:
• Everyone can learn Gold Ornament making and accuracy has much more
increased with the help of various machines.
• Paper making is much simpler, and quality is also enhanced
In Summary
• Heavy use of past experiences
• Experiences were systematically arranged
• Theoretical basis and quantitative techniques were provided.
• Many are just thumb rule (Later certified by some organizational
body)
• Programmatic approach to cost effective approach were developed.
Software Process
• A process is a collection of activities, actions, and tasks that are
performed when some work product is to be created.
• An activity strives to achieve a broad objective and is applied
regardless of the application domain, size of the project, complexity of
the effort, or degree of rigor.
• 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.
Emergence of Software Engineering
Early Computer Program (1950s)
• Programmers write their own style of coding according
to their own intuition.

• Highly customize and can be produced only for specific


needs

• Can be called as exploratory or build and fix coding.


Emergence of Software Engineering II
High level language programming (Early 60s)

• Languages such as C, FORTRAN, or Pascal, allow a programmer to


develop programs that are independent of the machine type they are
running on.
• This reduced software development efforts greatly
• Software development style is still exploratory
• Typical program size is limited to few thousands of lines of source code.
Emergence of Software
Engineering III
Control Flow Graph (Late 60s)
The graphical representation of control flow or computation during the
execution of programs or applications.
Characteristics:
• Process oriented.
• Shows all the paths that can be traversed during execution.
• Directed graph.
• Edges portray control flow paths, and the nodes portray basic
blocks.
Drawback:
• Difficult to understand and debug a program having a messy flow
chart.
• Multiple GOTO statements make the control structure messy and
alter the flow of the control arbitrarily
Emergence of Software Advantages:

Engineering IV •

Easier to read and understand
User Friendly
• Easier to Maintain
• Problem based instead of being
Structured Programming Approach (Late 60s) machine based
• An approach where program is made as a single structure. • Development is easier as it requires
less effort and time
• Does not support jumping from one instruction to some • Easier to Debug
other using statement like GOTO, etc. • Machine-Independent, mostly.
E.g. C, C++, Java, C#, etc.
• It consists of three types of elements: Disadvantages:
• Sequence Statements
• It takes time to convert into machine
• Selection Statements code.
• Iteration Statements • The converted machine code is not
the same as for assembly language.
• The program depends upon
changeable factors like data-types.
Emergence of Software
Engineering IV
Data Structure Oriented Approach (Early 70s)
• It is realized to pay more attention on the data structure of the
program rather than the design of its control structure.
• Utilizes the data structures of the input data, internal data (for
example databases) and output data to develop software.
• The emphasis is on the structure of data as well as complexity and
efficiency of algorithms designed to process information.
• Best utilized in applications that have a well-defined, hierarchical
structure of information.
E.g.
• Jackson’s Structured Programming (JSP) methodology
• Warnier-Orr Methodology
Data Flow Oriented Design (Late 70s)

Emergence of Software • The data items input to a system must be identified, and
processing is required on the data items to produce the required
Engineering V outputs.
• It identifies:
• Different processing stations (functions)
• Items (data) that flow between processing stations
• It is a generic technique that can be used to model any systems
apart from software systems
• Simplicity is the major advantage of data flow technique
Emergence of Software Engineering VI

Object Oriented Design (80s)


• Consists of natural objects such as
employees, students, are identified
firsts
• Characteristics:
• Simplicity
• Increased reuse policy
• Lower development time and
cost
• More robust code
• Easy maintenance
Approaches
to develop
software
What is an exploratory software development
process ?

• An informal development style or builds and fix the style.


• Programmer uses his own intuition to develop a program rather
than making use of the systematic body of knowledge.
• This dirty program is quickly developed, and bugs are fixed
whenever it arises.
Usage:
• This style of software development is only used for the
development of small programs.
• This style is only used by students in their labs to complete their
assignments only. Not for nontrivial projects.
What is wrong with the exploratory
style?
• As program size increases, required effort and time increase
almost exponentially and breaks down after the size of the
program to be developed increases beyond a certain value.
• Exponential growth due to human cognitive limitations
and is beyond the grasping power of an individual.
• Unmaintainable code because programming without
planning.
• Not suitable for team development environment.
• Using software engineering principles, the effort and time is
almost linear in program
• It applied decomposition and abstraction principles to
completely overcome problem complexity.
Software Development
Life Cycle (SDLC)
• Software is developed through several well-defined stages:
• Requirement Analysis and Specification
• Design
• Coding
• Testing
• Emphasis is shifted from error correction to error prevention
• Emphasize on detection of errors in each phase of development
rather than waiting till testing phase.
• Earlier coding had huge weightage with program development but
now coding is considered as only a small part of program
development effort.
Software Development Life Cycle
Characteristics of modern software development process:

• During all stages of development process, periodic reviews are being carried out.
• Software testing has become systematic due to the usage of standard testing
techniques.
• Better visibility of designing and coding
• Availability of good documentation -- Fault diagnosis and maintenance are
smoother now.
• Several metrics are used to help in software project management and quality
assurance
• Projects are properly planned using estimation, scheduling, monitoring mechanisms,
and using the CASE tools
SDLC
components
Detailed
View
What is the business hoping to get from the product?

Is the team going to write code from scratch, or are


we upgrading an existing system?

Requirement
Do we have any hard deadlines?
Analysis
Do we have the necessary knowledge in-house, or
will we have to outsource some part(s) of the
project?

Output: SRS document, User Stories


Feasibility Study

• Budget constraints.
• Legal implications.
• Operational requirements.
• Available in-house skills.
• The required project timeframe.

Output: Extended version of SRS


Detailed design

Level-wise System Infrastructure


UI Design
Architecture Design

Output: Various
Database Design
Design documents
Implementation

• Converting DDs into executable code.


• Integrating Third-party libraries with the Project.

Output: Fully Functional Software at Testable


state.
Testing

• Code quality testing.


• Unit testing (functional tests).
• Integration testing.
• Performance testing.
• Security testing.
• Acceptance testing.
• Nonfunctional testing.

Output: Test reports, Software product ready for


deployment
Deployment

• Installation of Software into


Real time Environment.

Output: Fully functional


Software ready to use
Evolution and Maintenance

• Bug fixing.
• Setting up continuous monitoring.
• Upgrading the app to the newer
version.
• Adding new features to the
software.

Output: Updated Software product


• Requirement Gathering: Gather requirements from business stake
holders about how e-commerce should work and what features it
should contain.
• Feasibility Study: Create detailed SRS (Software Requirement
Specification) documents. Business analysts will get review SRS
Case Studies: document with business stake holders and will get sign off on it.
• Design: SRS documents will be sent to designers. Designers will be
E-commerce designing web pages and system architecture.
• Development: Developers will do coding in this phase. Attach API’s
WebApp required to implement the functionality. (Bank APIs, etc.)
• Testing: Testing will perform end to end functionality testing. Make sure
e-commerce platform working fine without any bugs.
• Deployment: Code will be deployed and will be available to customer.
Customer can use the e-commerce after this deployment.
• Maintenance: Same process will be applied for developing any new
features
References
• https://www.geeksforgeeks.org/evolution-of-software-engineering-
from-an-art-to-engineering-discipline/
• https://www.geeksforgeeks.org/introduction-to-exploratory-style-of-
software-development/
• https://www.geeksforgeeks.org/software-engineering-control-flow-
graph-cfg/
• https://people.cs.vt.edu/kafura/cs2704/oop.swe.html
• Fundamentals of Software Engineering, 5th Edition, Rajib Mall, PHI.
Textbooks and References:
1. Carlo Ghezzi, Fundamentals of Software Engineering, 2nd Edition, PHI, 2002.
2. Ian Sommerville, Software Engineering, 9th Edition, Pearson, 2011.
3. Berzins and Luqi, Software Engineering with Abstraction, 1st Edition, Addison-
Wesley, 1991.
4. Martin L. Shooman, Software Engineering – Design, Reliability and
Management, McGraw-Hill Education, 1984.
5. Fundamentals of Software Engineering, 5th Edition, Rajib Mall, PHI.

You might also like