Software Engineering Concept
Basic Issues In Software Engineering
Complexity Grows Faster Than Size
EXPONENTIAL, NOT PROPORTIONAL
- Industry needs large programs
- Without Engineering principles, large programs; not buildable
Effort / Time / Complexity vs. Program Size
WEAPON 01 - ABSTRACTION
WHAT IT IS
- Omit the irrelevant
- Keep only what matters
HOW IT WORKS
- Solve the simpler problem
- Put the details back one layer at a time.
WEAPON 02 - DECOMPOSITION
THE RULE
- Each part must be solvable indepently
- Put the details back one layer at a time.
THE TRAP
- If too interrelated
- You get split, but none of the simplicity
- Makes your software more complex
One complex problem
→
Part A
Part B
Part C
Part D
THE SOFTWARE CRISIS
Share of the budget
Then - hardware heavy
Now - software heavy
Hardware
Software
SYMPTOMS
- Hard to alter, debud and enhance
- Resource-hungry
- Unreliable
- Crash-prone
- Delivered late
CAUSES
- Bigger Problems
- Too little training
- Skill shortage
- Productivity barely improving
SOLVING IT
THERE IS NO CLEVER SHORTCUT
SHORT TERM
- Software Engineering is one of the few real options on the table
LONG TERM
- Wider adoption by engineers
- Continued advancement of discipline
- Omit the irrelevant
- Keep only what matters
HOW IT WORKS
- Solve the simpler problem
- Put the details back one layer at a time.
WEAPON 02 - DECOMPOSITION
THE RULE
- Each part must be solvable indepently
- Put the details back one layer at a time.
THE TRAP
- If too interrelated
- You get split, but none of the simplicity
- Makes your software more complex
One complex problem
→
Part A
Part B
Part C
Part D
THE SOFTWARE CRISIS
Share of the budget
Then - hardware heavy
Now - software heavy
Hardware
Software
SYMPTOMS
- Hard to alter, debud and enhance
- Resource-hungry
- Unreliable
- Crash-prone
- Delivered late
CAUSES
- Bigger Problems
- Too little training
- Skill shortage
- Productivity barely improving
SOLVING IT
THERE IS NO CLEVER SHORTCUT
SHORT TERM
- Software Engineering is one of the few real options on the table
LONG TERM
- Wider adoption by engineers
- Continued advancement of discipline
SOFTWARE ENGINEERING PROCESS
TWO WAYS IN
- "SYSTEM" here means any business organization and software running it
SYSTEMS ENGINEERING
Approach 1
- Studies and analyses overall system
- Carried out through Systemd Engineering Methodology (SEM)
DEVELOPMENT ENGINEERING
Approach 2
- Translates system requirements into software system goal, through a series of steps
THE CONCEPT MAP
SYSTEMS ENGINEERING
- Business process engineering
- Business process modeling
- Determine key functions & features
- Ascertain roles & responsibilities
- Analyze for new requirements
- Finalize new scope / redesign
DEVELOPMENT ENGINEERING
- Requirement analysis & design
- Software requirement specification
- System design
- Software development
- Software testing
- Implemntation & maintenance
TWO WAYS TO DEVELOP
SSAD
Structured System Analysis and Design
OOSAD
Object Oriented System Analysis and Design
WHAT IS A SOFTWARE PROCESS?
- A series of steps, activities, constraints and resources, that produce a specific output
- A software process produces a software product
01
Specification
02
Development
03
Validation & Control
04
Performance Evaluation
PROCESS MODELS
Three shapes a flow can take
- LINEAR
- INCREMENTAL
- EVOLUTIONARY
- Iterative Waterfall
- Prototype
- RAD
- Spiral
Module 3 goes deeper on all four
Professional Responsibility
ETHICAL BEHAVIOR IS MORE THAN UPHOLDING THE LAW
- Software engineering carries responsibilities
- Behave honestly and ethically that earns the title professional
FOUR DUTIES YOU CARRY
CONFIDENTIALITY
- Respect employers' and client's information
- Signed or not
IP RIGHTS
- Know local patent and copyright law
- Protect what isn't yours
COMPETENCE
- Don't misrepresent your level
- Don't accept work beyond it
COMPUTER MISUSE
- From games on a work machine to spreading viruses don't do it BITCH
MODULE 2 IN THREE LINES
- Separate the process from the product
- That process has to be phased
- Large proect live or die on project management