Lecture 1
Lecture 1
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
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;
Definition information,
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…
• 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
• 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
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?
• The problem did not create a safety issue but could cause delays in
flights.
• Overloaded problem.
• 46 deaths.
23
26
APMT
• 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.
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
• 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?
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?
• Budget constraints.
• Legal implications.
• Operational requirements.
• Available in-house skills.
• The required project timeframe.
Output: Various
Database Design
Design documents
Implementation
• Bug fixing.
• Setting up continuous monitoring.
• Upgrading the app to the newer
version.
• Adding new features to the
software.