Lect7_SoftwareEngineering
Lect7_SoftwareEngineering
1
What is Software Engineering?
3
Software Process Models
Software process models are general approaches for organizing a project into
activities.
• Help the project manager and the team to decide:
• What work should be done;
• In what sequence to perform the work.
• The models should be seen as aids to thinking, not rigid prescriptions of the way
to do things.
• Each project ends up with its own unique plan.
• Requirement analysis/gathering
• The process of finding out what the client requires from the product
- Functional, Data, usability, task, environmental requirements
• Specifications
• requirements converted into more technical terms
• Software requirements document
• effectively a written agreement, intended to guide the software’s development
• Design
- Establishing how the system will meet its goals
- Decomposing the system into manageable modules
- Interface design
• Implementation
- Implementing the design, writing the programs, building the database,...
• Validation testing
- confirming that the software system as implemented meet the requirements
and specifications identified in the original analysis
• Defect testing
- identifying and correcting errors
- can be extremely difficult to do successfully
8
Software Engineering Methodologies
10
The phased-release model
• Scrum: A framework within the Agile methodology that divides work into time-
boxed iterations and it emphasizes transparency, inspection, and adaptation.
• DevOps: A culture and set of practices that aims to automate and integrate the
processes between software development and IT operations teams.
• Rapid Application Development (RAD): Emphasizes rapid prototyping and
iterative development.
• Black-box testing:
- Treat the software as a black box (can't see inside)
- Pick sample data based only on possible inputs and outputs
Documentation
Needed to:
- Teach people how to use the software (user manual)
- Describe the software for later modification
(implementation manual)
Problems:
- No one wants to do it
- Existing documentation is poorly written
User documentation: user's manual
- Introductory guide for commonly used features
+ Detailed reference
+ Installation guide/hardware requirement
- Formats: Printed, on-line manual, on-line tutorial
System documentation
- System specifications
- Structure description:
dataflow diagrams, data dictionary, structure charts, design trees
- Collection of programs
- Collection of test data for every feature
Documentation: When?