SE Revision Flashcards
What are the four phases of SE?
- Specification - What the system should do and its development constraints
- Development - production of the software system
- Validation - checking that the software is what the customer wants
- Evolution - Changing code in response to demands
What is Software Engineering?
Software engineering is the process of planning, designing, developing, testing, and maintaining software using systematic and disciplined approaches.
What are a few examples where SE was not used to perfection
US Prison Bug, bad software lead this to happen.
Hawaii Incident -> A test of the “incoming nuclear bomb” message was accidentally distributed as a live message, although there was also human error, but software was easy to be messed up with due to it being similar to other screens and easy faulty.
Top 10 SE Mistakes
1.Presume ‘good code is only thing matters’
2. Aim to finish at the delivery deadline
3. Don’t design a data model, let the code produce data it needs
4. Use a Technical lead that has never built a similar system rather than someone who has
5. Hire forty developers to make the coding go faster
6. Build the system in the language you know best, rather than ‘the best tool for the job’
7. Hire a junior developer to handle the migration
8. Skip the testing phase because the project is behind schedule
9. Change code, without planning to meet newly discovered requirements
10. Buy a package and customise it … a lot
Dorsey’s Conclusion
- Don’t cut corners
- Audit each deliverable and step along the way for accuracy and correctness
- Carefully monitor top management support.
- Secure the correct technical lead for the project
DON’T DO IN SE
- Keeping costs low
- Hurrying the project - Will led to quality being low and risk of failure high
Explain the waterfall Model
The waterfall model goes like a literal waterfall, e.g. -> Requirements Definition -> <- System and Software Design -> <- Implementation and Unit Testing -> <- Integration and system testing -> <- Operation and maintenance
Explain the V-Model
The V-Model is an extension of the traditional waterfall model, It is called the V-model because the development process is represented as a V-shaped diagram where the left side of the V represents the planning and analysis phases and the right side representing the testing and validation phases.
Problems with waterfall and V
- Needs Stable and ‘perfect’ requirements
- Can’t always anticipate what you’ll have to do
- Does not account for revision or refactoring
- Too inflexible and static
- Depends on getting each stage exactly right (changes can have many knock-on effects.)
Explain the Agile Model
The agile model is an iterative and incremental approach to software dev, Agile is divided into sprints (short dev cycles) (last 1-4 weeks), Allows for continous testing, integration and feedback. Agile looks like a loop, it goes from requirements -> design -> development -> testing -> deployment -> review -> requirements -> …. (it keeps looping until validation of user req. and everything is done)
Problems with Agile Models
- Lack of process visibility (Systems are often poorly structured)
- Too much doing and not enough planning
- Special skills (e.g. in language for rapid prototyping) may be required
- Lightweight documentation taken to mean no documentation.
What is the most expensive phase of an SE project?
The maintaining/evolving software often costs more than producing it in the first place (due to unexpected issues,bugs,updates,support from team.)
Explain the Spiral Model
Spiral model is also iterative but different from agile it goes in a spiral loop starting from the top left which is usually (Planning / Determine objectives, alternatives and constraints), then goes to Risk analysis (Evaluate alternatives, identify, resolve risks), then to Evaluation (Customer feedback) and lastly development phase (coding,testing,design,etc..)
When to use waterfall
- Fixed, unchanging requirements
- Require specific documentation
- Use well understood technology
- Must work on the first try.
What causes failure in SE projects?
Incomplete Requirements and lack of user involvement.
Not Understanding product requirement.
Coding or programming is not a major problem