Novel 3D-Printed Soft Linear and Bending Actuators
Software Engineering
1. Software Engineering & Information System Design
Course Code: CSE411
CSE, East West University
2. Course Instructor
Tanni Mittra, Lecturer, EWU
• M.Sc in CSE – BUET
• B.Sc in CSE – Khulna University
Previous Employment
• Associate Manager (2012- 2016)
Software Development and Customization
The City Bank Limited
3. Course Information
Class web Page:
• https://sites.google.com/site/mittratanni/cse411
Textbook:
• Software Engineering, Ian Sommerville
• Software Engineering, Roger S. Pressman
• Intelligent Software Systems Development, Paul Harmon
Lecture: ST, 10:10 am – 11:40 am
MW, 8.30 am -10.00 am
Mark Distribution
• Class Participation 5%
• Quiz 10%
• 1st Mid Term Exam 20%
• 2nd Mid Term Exam 20%
• Final Exam 25%
• Lab 20%
4. Objectives of course
Understand Software Engineering:
• Build complex software systems in the context of frequent change
Understand how to
• produce a high quality software system within time
• while dealing with complexity and change
Acquire technical knowledge of Software Engineering
Acquire managerial knowledge
Understand the Software Lifecycle
• Process vs Product
• Learn about different software lifecycles
5. Chapter 1- Introduction
Topic Covered
Software and Software Engineering
Why Software Engineering is Important
Types of Software Product
Essential attributes of good software
Software Engineering Diversity
Fundamentals applied to software
Software engineering and the Web
Software Engineering Ethics
6. What is Software ?
Software is a general term for the various kinds of programs used to
operate computers and related devices with all its associated documents
and configuration data
A program is a specific set of ordered operations for a computer to
perform
Software is a collection of instructions that enable the user to interact
with a computer, its hardware, or perform tasks
For example,
• without your Internet browser, you could not surf the Internet or read this
page
• without an operating system, the browser could not run on your computer
7. Two fundamental types of software product :
• Generic Product
These types of software are produced by the development
organization and sold on open market to any customer who is able to
buy them. Example: any software for PCs i.e. word processor, editing
tools, drawing package etc.
• Customized Product
These type of software are produced by software developer or
organization for a particular type of customer. Example : air traffic
control systems, Auction system, card payment software etc.
Types of Software
8. We can’t run the modern world without software
• Business data analysis i.e Microsoft Excel, Scientific Investigation i.e. in
bio-informatics for DNA decoding, different types of game, Car
equipment, electronic devices e.t.c
Growth of software has a great impact on economical activity of a
country
World wide software has economical impact of trillion of dollar
It involves number of people and money all over the world
Importance of Software
9. • Productive use of scientific knowledge by using different innovative ideas
and techniques
• Based on scientific rules and techniques. For example: Civil Engineering,
Mechanical Engineering, Electrical Engineering works based on physics
• Physics is not engineering but effectively used in building, motor, electrical
engine
• Like other engineering software engineering is based on computer science
• Different knowledge of Computer Science is effectively used for software
development i.e. data structure, algorithm
What is Engineering?
10. Difference between Software and other Systems
Software is developed not manufacture.
• In manufacturing the creation of a product is heavily process driven and
develop a finish and companies achieve 99.99966% defect free products, But
in software we may have processes for source control, code review, check in
sheets, requirements gathering, the SDLC, etc. But executing those processes
does not in and of itself create a finished product.
Software does not wear out
11. Difference between Software and other Systems
Frequency of changes in software in a big component based
construction range i.e. fundamental change, enhancement of
feature, interface change
Most software development is moving towards component based
construction
12. History of Software Engineering
Earlier in 1950 when digital computer created and used then software
used only for some scientific applications or processing sensor data.
In 1960 changes in hardware. New hardware i.e. computer available with
new technique. So software became more complex and big. Hard to write.
Tools that were used in previous software not applicable for this type of
software.
The term software engineering used by Margaret Hamilton was used in
1968 as a title for the world's first conference called the ‘software crisis’
on software engineering, sponsored and facilitated by NATO (North
Atlantic Treaty Organization) .
Throughout the 1970s and 1980s, a variety of new software engineering
techniques and methods were developed, such as structured
programming, information hiding and object-oriented development.
In 1984, the Software Engineering Institute (SEI) was established as a
federally funded research and development center of software
engineering
13. Software engineering is the application of engineering to the design,
development, implementation and maintenance of software in a
systematic method
An engineering discipline that is concerned with all aspects of software
production
The establishment and use of sound engineering principles in order to
economically obtain software that is reliable and works efficiently on real
machines
The systematic application of scientific and technological knowledge,
methods, and experience to the design, implementation, testing, and
documentation of software
Software Engineering
14. • A well engineered Software will be reliable, user interface user friendly ,
good performance, better quality and cost effective. If there is unlimited
resource and time any organization can develop any software.
• Software Engineering has a relationship with economy. For any
engineering product economic feasibility is checked. Software Engineering
challenge is to make software within limited time and budget.
• Conflict arises when balancing all these requirement necessary for good
engineered software . They need to perform a Balancing act between
these requirement. For example: User friendliness and efficiency ,
performance and quality. Software Engineering challenge is to make a
proper balance between this requirement
Well Engineering Software
15. Computer science is concerned with theories and methods that underlie
computers and software system whereas software engineering is
concerned with practical problem to produce software using knowledge of
Computer Science
All software engineer should have minimum knowledge of computer
science
Software Engineering and computer science
16. According to Software Engineering, Software process means the set of
activities that leads to produce a software product
Four fundamental processes :
• Software specification, where customers and engineers define the
software that is to be produced and the constraints on its operation.
• Software development, where the software is designed and
programmed.
• Software validation, where the software is checked to ensure that it
is what the customer requires.
• Software evolution, where the software is modified to reflect
changing customer and market requirements.
Software Process
17. Essential Attributes of Good Software
• Maintainability
Software should be written in such a way so that it can evolve to meet the
changing needs of customers. This is a critical attribute because software
change is an inevitable requirement of changing business environment.
• Dependability and security
Software dependability includes a range of characteristics including
reliability, security, and safety. Dependable software should not cause
physical or economic damage in the event of system failure. Malicious
users should not be able to access or damage the system.
• Efficiency
Software should not make wasteful use of system resources such as
memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilization, etc.
• Acceptability
Software must be acceptable to the type of users for which it is designed.
This means that it must be understandable, usable, and compatible with
other systems that they use.
18. Software Engineering Diversity
According to software Engineering there are many different types of
application :
• Stand-alone applications These are application systems that run on a local
computer, such as a PC and do not need to be connected to a network.
Examples : office applications on a PC, CAD programs, photo manipulation
software, etc.
• Interactive transaction-based applications These are applications that
execute on a remote computer and that are accessed by users from their
own PCs or terminals. Obviously, these include web applications such as e-
commerce applications , mail and photo sharing
• Embedded control systems These are software control systems that
control and manage hardware devices. Examples of embedded systems
include the software in a mobile (cell) phone, software that controls anti-
lock braking in a car, and software in a microwave oven to control the
cooking process.
19. Software Engineering Diversity
• Batch processing systems These are business systems that are designed to
process data in large batches. Examples: billing systems, such as phone
billing systems, and salary payment systems
• Entertainment systems These are systems that are primarily for personal
use and which are intended to entertain the user
• Systems for modeling and simulation These are systems that are
developed by scientists and engineers to model physical processes or
situations. These are often computationally intensive and require high-
performance parallel systems for execution.
• Data collection systems These are systems that collect data from their
environment using a set of sensors and send that data to other systems for
processing.
20. Software Costing
Cost may depends on economic condition, culture, labor costing of a
country
Cost distribution depends on different activities in the software process
and the type of software product.
Depending on the nature of software cost varies
Two types of software :
• Off the shelf: Ready product and open for global market i.e.
Microsoft office, games etc.
• Be-spoke : Developed for a particular company for particular
requirement. i.e. Payroll management, inventory management
21. Key Challenges of Software Engineering
Heterogeneity challenge
Developing techniques for building dependable software that is flexible
enough to cope different kind of support system. i.e. integrate new
software with old system written in different language
Delivery Challenge
shortening delivery times of large and complex system without
compromising system quality
Trust Challenge
Develop technique that demonstrate that software can be trusted by the
user
22. Software Engineering and Web
The development of the World Wide Web has had a profound effect on all
of our lives
Around 2000, the Web started to evolve and more and more functionality
was added to browsers
Instead of writing software and deploying it on users’ PCs, the software
was deployed on a web server
It is much cheaper to change and upgrade the software, as there was no
need to install the software on every PC
The next stage in the development of web-based systems was the notion
of web services
‘computing clouds’ concept is introduced i.e. web-based mail
23. Software Engineering Ethics
• Like other engineering disciplines, software engineering is carried out
within a social and legal framework that limits the freedom of people
working in that area
• As a software engineer, You must also behave in an ethical and morally
responsible way
• According to IEEE-CS/ ACM join taskforce software engineer should follow
eight principles:
1. PUBLIC — Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER — Software engineers shall act in a manner that is in the best interests
of their client and employer consistent with the public interest.
3. PRODUCT — Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.
4. JUDGMENT — Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT — Software engineering managers and leaders shall subscribe to and promote
an ethical approach to the management of software development and maintenance.
6. PROFESSION — Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
7. COLLEAGUES — Software engineers shall be fair to and supportive of their colleagues.
8. SELF — Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession.