01 - Introduction To Software Engineering
01 - Introduction To Software Engineering
Afrina Khatun
Lecturer
CSE, BRACU
Marks Distribution
• Attendance : 5
• Quiz: 15
• Mid Term Exam : 20
• Project and Assignments : 15
• Final Exam : 45
Reference Books
2 1. Ian Sommerville, "Software Engineering", Addison Wesley, 8th
edition, 2007.
2. Roger S Pressman, Roger Pressman,"Software Engineering: A
Practitioner's Approach", McGraw-Hill, 7th edition, 2010.
3. \\tsr\Fall-2019\CSE\AKH\CSE470\
Ground Rules
Makeup MID and FINAL will be conducted as BRACU policy.
No makeup quiz.
Best (n-1) quiz will be considered.
Assignment/ Report Submission needs to be submitted by given
deadline.
Disciplinary action will be taken in case of Cheating.
You need to maintain class behavior.
You are encouraged to ask questions in class.
You can reach me by phone, email etc. in case of important
(valid and logical) query.
Visit me in my consultation hour (available in tsr) for any query,
discussion or even for gossiping.
Need Google Classroom
Goals of Software Engineering
To produce software that is absolutely correct.
To produce software with minimum effort.
To produce software at the lowest possible cost.
To produce software in the least possible time.
To produce software that is easily maintained and modified.
To maximize the profitability of the software production effort.
Programs
Source code
Data structures
Documents
Requirements and specification documents
Design documents
Test suites and test plans
Hardware Failure Curve
11
Software failures
increased failure
rate due to side effects
Failure
rate
change
actual curve
idealized curve
Time
12
What Is Good Software?
Correct, correct, correct
Maintainable and easy to modify
Well modularized with well-designed interfaces
Reliable and robust
Has a good user interface
Well documented
Internal documentation for maintenance and modification
External documentation for end users
Efficient
Not wasteful of system resources, cpu & memory
Optimized data structures and algorithms
Goodness Goals Conflict
15
Software Myths
Management myths
We already have a book that’s full of standards and
procedures for building software. Won’t that provide my
people with everything they need to know.
My people do have state-of-the-art software development
tools
If we get behind schedule, we can add more programmers
and catch up – Mongolian Horde Concept
Software Myths…
Customer myths
A general statement of objectives is sufficient
to begin writing programs…we can fill in the
details later.
Project requirement continually change, but
change can be easily accommodated because
software is flexible.
Software Myths…
Developer myths
Once we write the program and get it to work, our job
is done.
Until I get the program “running” I really have no way
of assessing its quality.
The only deliverable for a successful project is a
working program.
Need Different Approaches for
Developing Large Software
Need formal management of software production process.
Formal & detailed statement of requirements, specification
and design.
Much more attention to modularity and interfaces.
Must be separable into manageable pieces.
Need version control.
More emphasis of rigorous and thorough testing.
Need to plan for long term maintenance and modification.
Need much more documentation, internal and external.
Why Is Software Development
Hard?
Changing requirements and specifications
Inability to develop complete and correct requirements
Programmer variability and unpredictability
Communication and coordination
Imprecise and incomplete requirements and specifications
Inadequate software development tools
Inability to accurately estimate effort or time required
Overwhelming complexity of large systems, more than linear growth
in complexity with size of the system
Poor software development processes
Lack of attention to issues of software architecture
What is Software Engineering?
The science ( & art) of building high quality software systems
On time
On budget
With correct operation
With acceptable performance
Software Engineering:
The application of a systematic, disciplined, quantifiable approach to the
development,
operation, and maintenance of
Software
SE Framework Activities/
Software Development life Cycle (SDLC)
Communication
Requirement collection
Planning
Specification
Modeling
Requirement Analysis
Design
Construction
Code generation
Testing
Deployment
Release
Maintenance
22
Major Software Production
Tasks
Requirements analysis:
Analyze software system requirements in detail
Specification:
Develop a detailed specification for the software
Design:
Develop detailed design for the software data structures, software architecture procedural detail,
interfaces
Coding:
Transform design into one or more programming language(s)
Testing:
Test internal operation of the system and externally visible operations & performance
Release:
Package and deliver software to users
Maintenance:
Error correction and enhancement after system
The Essence of Practice
Polya suggests:
1. Understand the problem (communication and analysis).
2. Plan a solution (modeling and software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and quality assurance).
24
Understand the Problem
Who has a stake in the solution to the problem? That is, who are
the stakeholders?
What are the unknowns? What data, functions, and features
are required to properly solve the problem?
Can the problem be compartmentalized? Is it possible to
represent smaller problems that may be easier to
understand?
Can the problem be represented graphically? Can an analysis
model be created?
25
Plan the Solution
Have you seen similar problems before? Are there patterns
that are recognizable in a potential solution? Is there
existing software that implements the data, functions,
and features that are required?
Has a similar problem been solved? If so, are elements of
the solution reusable?
Can subproblems be defined? If so, are solutions readily
apparent for the subproblems?
Can you represent a solution in a manner that leads to
effective implementation? Can a design model be
created?
26
Carry Out the Plan
Does the solution conform to the plan? Is source code traceable
to the design model?
Is each component part of the solution provably correct? Has the
design and code been reviewed, or better, have correctness
proofs been applied to algorithm?
27
Examine the Result
Is it possible to test each component part of the solution? Has a
reasonable testing strategy been implemented?
Does the solution produce results that conform to the data,
functions, and features that are required? Has the software
been validated against all stakeholder requirements?
28