Final Flashcards
Explain software crisis
It refers to the difficulty of writing useful and efficient computer programs within the required time. It was caused by the rapid increases in computer power and the complexity of the problems that arose but existing methods were not sufficient to address them.
Define software engineering (IEEE)
The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
- Systematic - done or acting to a fixed plan; methodical
- Disciplined - showing a controlled form of behavior or way of working
- Quantifiable - capable of being measured
Explain the motivations for selecting a software development process
- The criticality of the software
- The desired release date
- Development team size
- Project requirements
- Project size
Describe the various types of software criticality
- Life-critical or safety-critical software systems
- Failure may lead to death or injury
- Mission-critical software systems
- Failure may lead to financial loss
- Productivity-critical software systems
- Failure may lead to loss of productivity
- Non-critical software systems
- Failure may lead to minor inconveniences
Describe the PID phase
Used to identify the business value of the system
- Give the project a name
- Identify the project sponsor(s)
- Name
- Contact Information
- Identify the business need - what is the problem being solved
- Identify the user roles
- Identify high-level user requirements
- Short, focused study that aims to answer several questions
- Does the system contribute to the overall objectives of the organization
- Can the system be implemented using current technology and within a given cost and schedule
- Can the system be integrated with other systems which are already in plac
- Short, focused study that aims to answer several questions
- Identify any special issues
Describe the software requirements phase
- Analyze the client’s current situation as precisely as possible
- Determine what software the client needs
- Design the user interface
- Create domain model, e.g., analysis model
- Create the requirements specification, e.g., Software Requirements Specification (SRS)
- Ensure that the requirements are correct
Describe the software design and implementation phase
Software Design
- Major activities
- Architectural design
- Detailed design
- System interface design
- Model produced
- Design model
- Documents Produced
- Design document
Implementation
- Coding and testing of individual software components
- Unit and integration testing of software components
Describe the validation phase
Software Validation
- Ensuring that the software meets the specifications
- System testing
- Acceptance testing
Verification
- The process of evaluating a system or component to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase
Validation
- The process of evaluating a system or component during or at the end of the development process to determine whether the system satisfied the specified requirements
Name, explain, and describe the waterfall models
- First published model of the software development process by Royce in 1970
- Sometimes called the classic life cycle
- Suggests a systematic, sequential approach to software development
- Suggests separate, process stages (Requirements, Design, Implementation, Testing, Maintenance)
Advantages
- Simple and easy to use
- Practiced for many years and people have much experience with it
- Easy to manage, enforced, disciplined approach
- Facilitates allocation of resources
- Works well for smaller projects where requirements are very well understood
Disadvantages
- Requirements must be known up front
- No feedback of system by stakeholders until after testing phase
- Major problems with the system are not discovered until late in the process
- Inefficient use of resources
- Real projects rarely follow the sequential flow that this model proposes
Name, explain, and describe the evolutionary models
Based on the idea of developing an initial implementation, exposing this to user comment and refining it through many versions until an adequate system is developed. These models are both iterative and incremental in nature.
Name, explain, and describe the agile models
Dissatisfaction with the overheads involved in software design methods of the 1980s and 1990s led to the creation of agile methods. The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework.
These methods:
- Focus on the code rather than the specification
- Are based on an iterative approach to software development
- Are intended to deliver working software quickly and evolve this quickly to meet changing requirements
Explain requirements elicitation
The process of using various techniques to gather requirements from a client.
Name and explain the elements of an elicitation plan
- Elicitation objectives
- Elicitation strategy and techniques
- Decide which techniques to use for each stakeholder group
- Schedule and resource estimates
- Identify customer and developer participants
- Effort and calendar time required
- Expected artifacts to be created
- Elicitation risks
- Identify the factors that may impede elicitation efforts
Explain how to perform interviews
- Can be performed one-on-one or with a small group of stakeholders
- They are an effective way to elicit requirements without taking too much stakeholder time because you meet with people to discuss only the specific requirements that are important to them
- Are helpful to separately elicit requirements from people in preparation for workshops where those people come together to resolve any conflicts.
Explain how to perform workshops
- Facilitated requirements-elicitation workshops that permit collaboration between analysts and customers
- Can be used to explore user needs and to draft requirements documents
- Sometime call Joint Application Design, or JAD, sessions