Chapter 1:
1. What are the essential attributes of goodsoftware?
Acceptability
Dependabilityand security
Efficiency
Maintainability
2. What is software engineering?
Software engineering encompasses a process, a collectionof methods (practice) and an array of tools that allow professionals to buildhigh-quality computer software
Software engineeringis a discipline whose aim is the production of fault-free software delivered ontime and within budget, that satisfied the clients’ needs. Furthermore, thesoftware must be easy to modify when the user’s needs change.
3. What are the four fundamental activities in software processes?
1. Software specification, where customers and engineers define thesoftware that is to be produced and the constraints on its operation.
2. Software development, where the software is designed andprogrammed.(design and implementation)
3. Software validation, where the software is checked to ensure thatit is what the customer requires.
4. Software evolution, where the software is modified to reflectchanging customer and market requirements.
4. What is a software engineering code of ethics?
A set of principles that set out, in a general way, standards ofexpected behaviour for professional software engineers.
5. What is software?
Program,data and documentation
6. Three main processmodel:
1、 Waterfall model:
In principle, the result of eachphase is one or more documents are approved. The following phase should notstart until the previous phase has finished
Steps:
Requirementdefinition ------- System and software design ---------Implementationand unit testing ---------integration and software testing------Operation and maintenance
2、 Incremental development:
Characteristics:
(1) The cost of accommodatingchanging customer requirements is reduced.
(2) It is easier to get customerfeedback on the development work that has been done.
(3) More rapid delivery anddeployment of useful software to the customer is possible, even if all of the functionalityhas not been included.
Comparison with Waterfall development:
(1) The amount of analysis and documentation that has to be redone is muchless than is required with the waterfall model.
(2) Customers can comment on demonstrations of the software and see how much hasbeen implemented. Customers find it difficult to judge progressfrom software design documents.
(3) Customers are able to use and gain value from the softwareearlier than is possible with a waterfall process.
3、 Spiral Model
Features:
(4) Process is represented as aspiral rather than as a sequence of activities with backtracking
(5) Each loop in the spiral represents a phase in the process.
(6) No fixed phases such asspecification or design - loops in the spiral are chosendepending on what is required.
(7) Risks are explicitly assessed and resolved throughout the process.
Phases:
Objective setting
Risk assessment and reduction
Planning
Development and validation
7. What are the development stages in reuse-based development?
(Requirements specification)
Component analysis
Requirements modification
System design with reuse
Development and integration
(Systemvalidation)
8. What are the six fundamental best practices in the RUP?
Develop software iteratively
Manage requirements
Use component-based architectures
Visually model software
Verify software quality
Control changes to software
9. What are the advantages of using incremental development anddelivery?
Earlydelivery of critical functionality to the customer
Early increments serve as prototypes to explorerequirements
Lower risk of overall project failure
More extensive testing of critical customer functionality
10. List the 5 principles of agile methods.
Customer involvement: Customersshould be closely involved throughout the development process. Their role isprovide and prioritize new system requirements and to evaluate the iterationsof the system.
Incremental delivery: Thesoftware is developed in increments with the customer specifying therequirements to be included in each increment.
People not process: Theskills of the development team should be recognized and exploited. Team membersshould be left to develop their own ways of working without prescriptiveprocesses.
Embrace change: Expectthe system requirements to change and so design the system to accommodate thesechanges.
Maintain simplicity: Focuson simplicity in both the software being developed and in the developmentprocess. Wherever possible, actively work to eliminate complexity from thesystem.
11. The advantages of pairprogramming.
(1) it supports the idea of collective ownership and responsibilityfor the system.
(2) it acts as an informal review and process because each line of code is lookedat by at least 2 people.
(3) it helps support refactoring which is a process of software improvement
12. Reuse-oriented softwareengineering
13. Pair programming
14. Rational UnifiedProcess
The Rational Unified Process is a modern genericprocess model that is organized into phases (inception, elaboration,construction and transition) but separates activities (requirements, analysisand design,etc.) from these phases
15. Agile Methods
Extreme programming, Scrum, Crystal, Adaptive, SoftwareDevelopment, DSDM, Feature Driven Development.
16. Why are iterations usually limited when the waterfall model is used?
Because the waterfall model is adocument-driven model with documents produced at the end of each phase. Becauseof the cost of producing and approving documents, iterations and costly andinvolve significant rework.
17. What are the principal requirements engineering activities?
Feasibility study
Requirements elicitation and analysis
Requirements specification
Requirements validation