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

02-What is SE

Uploaded by

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

02-What is SE

Uploaded by

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

What is Software

Engineering?

CSCI 3323
Dr. Becnel
In a Nutshell
“All problems in computer science can be solved by another level of
indirection.”
David Wheeler
Software Engineering
Definition
 Engineering: The use of mathematics and scientific principles to design machines and
structures used for solving problems
• Applied mathematics and science
• Focus on practical problems
 Software (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
• Software is an abstract concept and is developed or engineered
• It is not manufactured
• Software itself does not “wear out”
• Though it can show signs of deterioration
• More and more software is becoming more component based, but a majority is still custom built
Software Engineering
Overview
What is Software Engineering?
• The complete process of specifying, designing,
developing, analyzing, and maintaining a software
system.
Why is it important?
• Decomposes a complex engineering problem.
• Organizes processes and effort.
• Improves software reliability.
• Improves developer productivity
Things we do in S.E.
• Developing in an IDE and software
ecosystem
• Debugging and maintaining a software
system
• Deploying and running a software system.
• Empirically evaluating a software system
• Writing Design Docs
• …and much more
Common Task
More than just writing code
The complete process of specifying, designing, developing, analyzing,
deploying, and maintaining a software system.

 Common Software Engineering tasks include:


• Requirements engineering
• Specification writing and documentation
• Software architecture and design
• Programming Just one out of many important tasks!
• Software testing and debugging
• Maintenance and refactoring
Why is Software Engineering
Important?
Software Engineering
• a concerted effort should be made to understand the problem before a software
solution is developed
• design becomes a pivotal activity
• software should exhibit high quality
• software should be maintainable
Core Principles (“Big Three”)
 Specification: Software engineers specify everything
• requirements, design, code, test plans, development life cycles
• What makes a good specification?
 Translation
• The work of software engineering is one of translation, from one
specification to another; from one level of abstraction to another; from
one set of structures to another (e.g. problem/design decomposition)
 Iteration
• The work of software engineering is done iteratively; step by step until
we are “done”
Software Process Framework
 Communication
 Planning
 Modeling
 Analysis of requirements
 Design
 Construction
 Code generation
 Testing
 Deployment
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?
Plan 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?
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?
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?
Confirmation Bias
This is the tendency to search for, interpret
and recall information in a way that
supports what we already believe.
General Principles
 The Reason It All Exists…Why does the software exists?
 to provide value to users
 this is the guiding principle for decision making
 KISS
 All design should be as simple as possible, but no simpler
 Maintain the Vision
 A clear vision is essential to the success of a software project
 What You Produce, Others Will Consume
 Always specify, design, document, and implement knowing someone
else will have to understand what you are doing
Role of Software Engineering
in Practice
You are
here!

By end of course you


will be on the outer
loop!

You might also like