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
What is the role of the Scrum Master?
to protect the development team from external distractions; he also arranges daily meetings, tracks the backlog of work to be done, records decisions, and measures progress
What are the benefits of Scrum?
- the product is broken down into a set of manageable and understandable portions
- unstable requirements do not hold up progress
- the whole team has visibility of everything
- customers see on-time delivery of increments
What does it mean when scaling up agile methods?
using agile methods for developing a large software system cannot be developed by a small team
What does it mean when scaling out agile methods?
how agile methods can be introduced across a large organization with many years of software development experience
What are some practical problems with agile methods?
- it is incompatible with the legal approach to contract definition that is commonly used in large companies
- they are most appropriate for new software development rather than software maintenance
- designed for small co-located teams
What is a requirement?
it may range from a high-level abstract statement of a service or of a system constraint to a detailed mathematical functional specification
What is a user requirement?
a statement in natural language plus diagrams of the system services and its operational constraints; written for customers
What is a system requirement?
a structured document setting our detailed descriptions of the system’s functions, services, and operational constraints
What is the role of a system stakeholder?
any person or organization who is affected by the system in some way and has a legitimate interest
What are functional requirements?
statements of services the system should provide
What are non-functional requirements?
constraints on the services or functions offered by the system such as timing constraints, reliability, and storage constraints
How do functional user requirements differ from functional system requirements?
functional user requirements may be high-level statements of what the system should do while functional system requirements should describe the system services in detail
What are metrics for specifying nonfunctional requirements?
- speed
- size
- ease of use
- reliability
- robustness
- portability
What are some generic activities common to all requirements engineering processes?
- requirements elicitation
- requirements analysis
- requirements validation
- requirements management
What is requirements elicitation and analysis?
involves technical staff working with customers to find out about the application domain, the services that the system should provide, and the system’s operation constraints
What are some problems of requirements elicitation?
- stakeholders don’t know what they really want
- organizational and political factors may influence the system requirements
- the requirements change during the analysis process
What are two requirements elicitation techniques?
interviewing and ethnography
What is ethnography?
an observational technique that can be used to understand operational processes and help derive requirements for software to support these processes
What are the ways of writing a system requirements specification?
- natural language
- structured natural language
- design description languages
- graphical notations
What are use cases?
- they are a kind of scenario that are included in the UML and identify the actors in an interaction
- they should describe all possible interactions with the system
What is the software requirements document?
- the official statement of what is required of the system developers
- should include a definition of the user requirements and a specification of the system requirements
What is system modeling?
the process of developing abstract models of a system
What are different system perspectives?
- external
- interactive
- structural
- behavioral
What are the UML Diagram types?
- activity
- use case
- sequence
- class
- state
What are context models?
used to illustrate the operational context of a system and is used to show what lies outside the system boundaries
What are process models?
they reveal how the system being developed is used in business processes
What do interaction models do?
they model user, system-to-system, and component interaction
What are sequence diagrams used for?
they are used to model the interactions between the objects and actors within a system and they show the sequence of interactions that take place during a particular use case
What do structural models do?
they display the organization of a system in terms of the components and their relationships
When are class diagrams used?
they are used when developing an object-oriented system model
What does an aggregation model show?
how classes that are collections are composed of other classes
What are behavior models?
models of the dynamic behavior of a system as it is executing
What do data-driven models show?
they show the sequence of actions involved in processing input data and generating an associated output
What do state-machine models show?
how a system responds to external and internal events
What is model-driven engineering?
an approach to software development where models rather than programs are the principal outputs of the development process
What is model-driven architecture?
a model-focused approach to software design and implementation that uses a subset of UML models to describe a system
What are the types of models?
- computation independent models (CIM)
- platform independent models (PIM)
- platform specific models (PSM)
Architectural design is the critical link between _______ and ________
design and requirements engineering
System architectures are often modeled informally using _____ ______ diagrams
simple block diagrams
What are the architecture and system characteristics?
- performance
- security
- safety
- availability
- maintainability
What is an architectural pattern?
a stylized description of a good design practice, which has been tried and tested in different environments
When is the Model-View-Controller (MVC) Pattern used?
when there are multiple ways to vie and interact with data or when the future requirements for interactions and presentation of data are unknown
When is the layered architecture pattern used?
when building new facilities on top of existing systems , when the development is spread across several teams, or there is a need for multi-level security
What is the layered architecture approach?
it is used to model the interfacing of sub-systems and organizes the system into a set of layers each of which provide a set of services
What is repository architecture?
used when sub-systems must exchange data
What is the repository pattern?
when all the data in the system is managed in a central repository that is accessible to all system components
What is the Client-server architecture?
a distributed system model that shows how data and processing is distributed across a range of components
What is the Client-server pattern?
when the functionality of the system is organized into services with each service delivered for a separate server
What is pipe and filter architecture?
where functional transformations process their inputs to produce outputs
How is the pipe and filter pattern organized?
so that each processing component (filter) is discrete and carries out one type of data transformation
What are application system?
they are designed to meet an organizational need
Two widely used generic application architectures are _____ and _____
transaction processing systems and language processing systems
What is an object-oriented design process?
it involves developing a number of different system models
What is a system context model?
a structural model that demonstrates the other systems in the environment of the system being developed
What is an interaction model?
a dynamic model that shows how the system interacts with its environment as it is used
What do design models show?
the objects, the object classes, and the relationships between these entities
The two kinds of design models are _____ and _____
structural and dynamic models
What are some examples of design models?
- subsystem models
- sequence models
- state machine models
- use-case models
What do subsystem models show?
how the design is organized into logically related groups of objects
What do sequence models show?
show the sequence of object interactions that take place
What do state diagrams show?
how objects respond to different service requests and the state transitions triggered by these requests
What are the reuse levels?
- the abstraction level
- the object level
- the component level
- the system level
What is open-source development?
an approach to software development in which the source code of a software system is published, and volunteers are invited to participate in the development process