Final Prep Flashcards
What are the essential attributes of good software?
Acceptability
Dependability
Efficiency
Maintainability
What are the software process activities?
Software Specification
Software Development
Software Validation
Software Evolution
What are general issues that affect software?
Business and social change
Security and trust
Scale
What are three application types?
Stand-alone applications
Interactive transaction-based applications
Embedded control systems
What is ethics?
Behavior with a positive or negative impact on society, its citizens, and environment
What are issues of professional responsibility
Confidentiality
Capability
Intellectual property rights
Computer misuse
What is the Code of Ethics?
A guide of principles designed to help professionals conduct business honestly and with integrity
What is a software process?
a structured set of activities required to develop a software system
What is a software process model?
an abstract representation of the process
What are plan-driven processes?
processes where all of the process activities are planned in advance and progress is measured against this plan
What are agile processes?
processes where planning is incremental and it is easier to change the process to reflect changing customer requirements
What is the waterfall model?
separate and distinct phases of specification and development; plan-driven model
What is the incremental development model?
specification, development, and validation are interleaved; may be plan-driven or agile
What is the integration and configuration model?
the system is assembled from existing configurable components; may be plan-driven or agile
What are some advantages of the waterfall model?
- simple and easy to understand and use
- works well for smaller projects where requirements are very well understood
- well understood milestones
- process and results are well-documented
What are some disadvantages of the waterfall model?
- no working software is produced until late during the life cycle
- it is difficult to measure progress within stages
- cannot accommodate changing requirements
What are benefits of the incremental development model?
- the cost of accommodating changing customer requirements is reduced
- it is easier to get customer feedback on the development work that has been done
- more rapid delivery and deployment of useful software for the customer is possible
What are some problems of the incremental development model?
- the process is not visible
- system structures tend to degrade as new increments are added
What is the integration and configuration model?
based on software reuse where systems are integrated from existing components or application systems
What are some advantages of the integration and configuration model?
- reduced costs and risks as less software is developed from scratch
- faster deployment of delivery system
What are some disadvantages of the integration and configuration model?
- requirement compromises are unavoidable so system may not meet real needs of users
- loss of control over evolution or reused system elements
What is software specification/requirements engineering?
the process of establishing what services are required and the constraints on the system’s operation and development
What is software design and implementation?
the process of converting the system into an executable system
What is software validation?
it is intended to show that the system is following its specification and meets the requirements of the system customer
What is software evolution?
software is inherently inflexible and can change - as requirements change through changing business circumstances
What are the benefits of prototyping?
- improved system usability
- a closer match to users’ real needs
- improved design quality
- improved maintainability
- reduced development effort
What are throw-away prototypes?
prototypes should be discarded after development as they are not a good basis for a production system
What are some advantages of incremental delivery?
- customer value can be delivered with each increment
- lower risk of overall project failure
- the highest priority system services tend to receive the most testing
What are some problems with incremental delivery?
most systems require a set of basic facilities used by different parts of the system
What are agile methods?
- they focus on the code rather than the design
- they are based on an iterative approach to software development
What are the principles of agile methods?
- customer involvement
- incremental delivery
- adopting change
- maintain simplicity
What is extreme programming (XP)?
- takes an ‘extreme’ approach to iterative development
- new versions may be built several times a day
- all tests must be run for every build and the build is only accepted if tests run successfully
What are some key XP practices?
- user stories for specification
- refactoring
- test-first development
- pair programming
What is refactoring?
- it maintains that design for change is not worthwhile as changes cannot be reliably anticipated
- it proposes constant code improvement (refactoring) to make changes easier when they have to be implemented
What is test-first development?
an approach where the program is tested after every change has been made
What is test-driven development?
- writing tests before code clarifies the requirements to be implemented
- tests are written as programs rather than data so that they can be executed automatically
- all previous and new tests are run automatically when new functionality is added
What is test automation?
it means that tests are written as executable components before the task is implemented
What is pair programming?
it involves programmers working in pairs, developing code together
What is Scrum?
an agile method that focuses on managing iterative development rather than specific agile practices
What are the three phases in Scrum?
- the initial phase is an outline planning phase
- followed by a series of sprint cycles
- the closure phase wraps up the project
What is the Scrum Sprint Cycle?
- they are fixed length
- the starting point for planning is the product backlog
- the selection phase involves all of the project team
- once these are agreed, the team organizes themselves to develop the software