1. What is the software engineering?
Software Engineering is to design, develop and maintain a software in a systematic, collaborative, iterative and cost-effective way. It is a good method that let you to understand, design and build from business need to quality solution.
2. Compare and contrast waterfall and incremental development process models.
Waterfall:
assume requirements are well known
change is difficult to be accommodated
limited customer insight
does not reflect how actual software development is done
Incremental:
reduce cost of change
rapid delivery
easy to get customer feedback
the process is invisible
3. What is the difference between generic software product development and commissioned software product development?
generic: it is sold for general public, can perform different kinds of task, no limitation of any specific application.
commissioned: it is sold for particular customers, with limitation of specific requirement.
4. Describe requirements engineering in a few sentences.
it is the description of system services, functions and constraints that are generate during the requirement engineering process. it make the system solve the problem efficiently.
5. What is requirement engineering process?
requirement engineering process is an iterative process including requirement elicitation, requirement analysis, requirement specification and requirement validation.
requirement elicitation: elicit the basic information from all stakeholders.
requirement analysis: determine whether the requirement is feasible or not. There is no conflict between any 2 requirements.
requirement specification: document the requirement. laying out the functional and non-functional requirements
requirement validation: determine requirement priority, completeness and meet the basic needs.
6. Describe the general phases that are common to all software engineering projects.
requirement analysis: gathering, refining and documenting the requirements for the software to be developed.
design analysis: transfer from requirement model to design views.
implementation: coding and building the software
testing: to check bugs and errors by users and QA
maintenance: After releasing the software, there should be a change or upgrade based on customers' feedback.
7. What is the tradeoff in software engineering?
time, cost and scope.
8. Discuss why change becomes more costly in later phase of the software engineering process.
The later phase the change occurs, the more work will be required to accommodate the change.
For example, if a customer want to build a software on window operating system, and in later phase, he change his mind and want to build on mac operating system. We have to rebuild everything and discard everything. there might be a huge amount of work to do.
9. What is prototyping?
A partial implementation of the system used to validate requirements, validate architecture or try out new technologies.
10. What is refactoring?
Improve the structure of the software without affecting its behavior.