A design pattern is a way of reusing abstract knowledge about a problem and its solution
A project plan, is created at the beginning of a project and is never touched again
A software process model (sometimes called a Software Development Life Cycle or SDLC model) is a simplified representation of a software process
According to the ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices, it is ethical to over-represent your competence and take on tasks that are outside of your competence.
Agile development methods such as Scrum and Extreme Programming have a two-stage approach to planning, what are they?
All agile methods suggest that software should be developed and delivered incrementally.
An IDE is the executable after you finish writing and then compiling your program.
An activity diagram shows the interactions between a system and its environment
Architectural patterns are a means of reusing knowledge about generic system architectures. They describe the architecture, explain when it may be used, and point out its advantages and disadvantages.
As software is intertwined with all aspects of our lives, it is essential that we can trust that software.
Change is inevitable in all large software projects
Commonly used Architectural patterns include model-view-controller, layered architecture, repository, client–server, and pipe and filter
Good software should over-deliver the functionality outlined by the user, and should be difficult to maintain so competitors don’t want to copy the product.
In test driven development, tests are written after the code itself has been written to make sure it works as intended
Language processing systems translate one language into an alternative representation of that language
Match the Principle or Practice with their correct Descriptions
- Collective ownership
The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code. Anyone can change anything.
- Continuous integration
As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass.
- Incremental planning
Requirements are recorded on “story cards,” and the stories to be included in a release are determined by the time available and their relative priority. The developers break these stories into development “tasks.”
- On-site customer
A representative of the end-user of the system (the Customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation
- Collective ownership
Match the Principle or Practice with their correct Descriptions
- Pair Programming
Pair Programming
- Refactoring
All developers are expected to refactor the code continuously as soon as potential code improvements are found. This keeps the code simple and maintainable.
- Simple Design
Enough design is carried out to meet the current requirements and no more
- Small Releases
The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release
- Pair Programming
Match the following Product Metrics to their respective definitions
- Length of code
This is a measure of the size of a program.
- Cyclomatic complexity
This is a measure of the control complexity of a program.
- Depth of conditional nesting
This is a measure of the depth of nesting of if-statements in a program.
- Fog index
This is a measure of the average length of words and sentences in documents.
- Length of code
Match the following Project Plan Supplements to their descriptions
- Configuration management plan
Describes the configuration management procedures and structures to be used.
- Deployment plan
Describes how the software and associated hardware (if required) will be deployed in the customer’s environment. This should include a plan for migrating data from existing systems.
- Maintenance plan
Predicts the maintenance requirements, costs, and effort.
- Quality plan
Describes the quality procedures and standards that will be used in a project.
- Validation plan
Describes the approach, resources, and schedule used for system validation.
- Configuration management plan
Match the following process activities with their definitions
- Requirements discovery and understanding
This is the process of interacting with stakeholders of the system to discover their requirements. Domain requirements from stakeholders and documentation are also discovered during this activity
- Requirements classification and organization
This activity takes the unstructured collection of requirements, groups related requirements and organizes them into coherent clusters
- Requirements prioritization and negotiation
This activity is concerned with prioritizing requirements and finding and resolving requirements conflicts through negotiation
- Requirements documentation
Requirements are documented and input into the next round of the spiral. An early draft of the software requirements documents may be produced at this stage, or the requirements may simply be main- tained informally on whiteboards, wikis, or other shared spaces.
- Requirements discovery and understanding
Non-functional requirements are constraints on the services or functions offered by the system.
Open Source Development means that the code that makes up the software is not avaliable for everyone to see.
Pipe and filter systems are best suited to batch processing systems and embedded systems where there is a lot of user interaction
Program testing shows that a program works as intended and is used to discover defects before it is put into use
SaaS stands for Software as a System
Software design and implementation is the stage in the software engineering process at which an executable software system is developed
Software engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance
Software has to be developed across a very wide range of scales, from very small embedded systems in portable or wearable devices through to Internet-scale, cloud-based systems that serve a global community.
Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, resource utilization, etc
Software standards are important for quality assurance as they represent an identification of best practice
Structural models may be either static or dynamic
Structural models show the organization and architecture of a system. Class diagrams are used to define the static structure of classes in a system and their association.
System modeling is the process of developing abstract models of a system, with each model presenting a different view or perspective of that system.
System-building tools and version control tools must not be part of the System Building process
Test automation is unwanted for test-first development
Testing can only show the presence of errors in a program. It cannot demonstrate that there are no remaining faults
The Linux Operating system is open source.
The choice of architectural style and structure should depend on the non-functional requirements of the system
The functional requirements for a system are constraints on the services or functions offered by the system.
The fundamental ideas of software engineering are applicable to all types of software systems.
The price of a software system developed for a customer only takes into account the cost of the development itself
The three main parameters when computing the costs of a software development project are
- Effort Costs
- Hardware and Software Costs
- Traveling and Training Costs
The use of open-source software available on platforms such as Sourceforge and GitHub has made software analysis more difficult, and less possible overall.
There are no universal notations, methods, or techniques for software engineering because different types of software require different approaches
Unit testing is the process of testing all software components at once
Unit testing should be automated whenever possible
Version control (VC) systems identify, store, and control access to the different versions of components.
What are areas of standard acceptable behaviour for software developers
What are the two fundamental types of software product
What are the two types of modern version control system
What does V&V standfor when it comes to Software Validation
What is the final state of process prototyping?
Which of the following options are NOT part of model-driven architecture
Which of these are general process models for software engineering
Which one of these is NOT one of the four basic process activities