Introduction to Software Engineering Flashcards
What is software engineering?
The application of scientific principles to the design and creation of software
What are the responsibilities of a software engineer?
- designing, building, and maintaining software systems
- writing and testing code
- consulting with stakeholders, third-party vendors, and other team members
What is the difference between a software engineer and a software developer?
Software engineers build systems while software developers implement specific functionalities
Insider’s opinion:
What is software engineering?
- Using programming languages and engineering principles to build products
- Building and improving software
- A creative process of designing, envisioning, implementing, and then supporting and maintaining software through the full lifecycle
Insider’s opinion:
What is the difference between a software engineer and a software developer?
- Software engineer is a broader term than developer; development is one part of the process whereas engineering involves the full lifecycle
- Software engineers are responsible for system design and architecture wheras software developers are more focused on building code
- Titles can mean different things based on your country or even the company you are working for
What is the software development lifecycle (SDLC)?
Systematic process used to develop high-quality software
What is the goal of SDLC?
To produce software that meets requirements
What does the SDLC consist of?
Defined phases with their own processes and deliverables
When was the SDLC conceived of?
In the mid-1960s
What drove the formulation of the SDLC?
The need for a systematic approach to the development process in order to account for the growing complexity of software
What did the SDLC initially use?
The Waterfall Methodology
What are the advantages of the SDLC?
- It improves efficiency and reduces risks
- Team members know what they should be working on and when
- It facilitates communication among stakeholders
- Team members know when development can move to the next phase
- SDLC allows the team members to adapt to changing requirements
What are the 6 phases of the SDLC?
- Planning
- Design
- Development
- Testing
- Deployment
- Maintenance
Why are the tasks in the SDLC considered discrete?
The tasks in a previous phase do not overlap with tasks in the next phase
What happens in Phase 1 of the SDLC?
Requirements are gathered, analysed, documented, and prioritised
What factors need to be considered when planning a software solution?
- Users of the solution
- The overall purpose of the solution
- Data inputs and outputs
- Legal and regulatory compliance
- Risk identification
- Quality assurance requirements
- Resourcing
- Project scheduling
What does a project team often do when stakeholders are struggling to define requirements?
They produce prototypes during the planning stage
What is a prototype used for?
Testing design ideas
Prototyping only occurs in Phase 1 of the SDLC (True or False)
False, it can occur at various phases of the cycle
What happens after requirements have been gathered?
They are combined into a document called the software requirements specification (or SRS document)
What is used to develop software architecture in the design phase?
The requirements gathered from the SRS
What document is created during the design phase?
The design document
In which phase do developers make use of the design document?
The development phase
What do project planners use a design document for?
They use it to determine and assign coding tasks
What phase comes after the development phase?
The testing phase
What happens during the testing phase?
Code is tested to ensure stability, security, and that it meets requirements from the SRS
What are some common levels of testing?
- Unit testing
- Integration testing
- System testing
- Acceptance testing
What happens after the testing phase?
The deployment phase
What happens during the deployment phase?
The application is released into the production environment and is made available to users
What phase comes after the deployment phase?
The maintenance phase
Why is the maintenance phase necessary?
It helps to identify any other bugs, user interface issues, and any othe requirements that may not have been listed in the SRS document.
Write the requirements, and develop the software requirements specification (SRS)
Planning
Document software architecture needs, and design the architecture
Design
Assign tasks to developers. Write the code that powers the software
Development
Test the application to ensure it is stable and meets the requirements
Testing
Prepare the production environment, and deploy the software into production
Deployment
Fix bugs reported by users, and make code enhancements
Maintenance
Common software engineering processes
- Requirements gathering
- Design
- Coding for quality
- Testing
- Releases
- Documenting
What does the SRS encompass?
The process of collecting and documenting the set of requirements that the software needs to adhere to
What are the four broad categories of software requirements?
- Functional
- External and user interface
- System features
- Non-functional
What is software design?
The process of transforming the requirements into a structure that is implementable using code
The software design process translates the requirements into a language…
the developers can use to write the code
What does a technical lead do in the design phase?
They break down the requirements into sets of related components with clearly defined behaviours, boundaries and interactions. These components define the system architecture.
What does code quality refer to?
The characteristics of the code including attributes such as maintainability, readability, and security.
What are coding practices used when coding for quality?
- Following common coding standards
- Using linters to detect erros
- Commenting in the code to make it easy to understand and modify
What is software testing?
The process of verifying that the software matches established requirements and is free of bugs
Properly tested software ensures…
reliability, security, performance, and efficiency
What is unit testing used for?
Testing the smallest component of code that can be isolated from the rest of the system
When does integration testing occur?
After the components are integrated into the larger product (following on from unit testing)
When does system testing take place?
After the larger product is deemed completed (following on from integration testing)
Who is testing during user acceptance testing?
The intended end user
What are the three categorie of testing?
- Functional
- Non-functional
- Regression
When the newest version of a software is distributed, it is referred to as a…
release
What is an alpha release?
The first functioning version of a system that is released to a select group of stakeholders
What is a beta release?
A limited release given to stakeholders outside the developing organisation with the intention of seeing how the system performs in real conditions
Is a beta release expected to meet all functional requirements?
Yes
What does GA stand for?
General Availability
When is a stable version released?
After changes to the beta release are agreed upon, made, and tested
Who should be provided software documentation?
Both non-technical end-users and technical users
Who is system documentation geared towards?
The technical user
Who is user documentation for?
The non-technical end-users to assist them in the use of the product
How is user documentation generally provided?
In the form of user guides, instructional videos, and manuals
What does requirement gathering entail?
Collecting and documenting the set of requirements that the software needs to adhere to
What does design entail?
Transforming requirements into a structure that developers can use
What does coding for quality entail?
Following a set of coding practices during development
What does testing entail?
Verifying that the software matches established requirements and is free of bugs
What are the three types of releases?
Alpha, Beta, General Availability
What does documenting require?
Text or video that explains the software to technical and non-technical users
What are the steps to gathering requirements?
- Identifying stakeholders
- Establishing goals and objectives
- Eliciting requirements from the stakeholders
- Documenting the requirements
- Analysing and confirming the requriements
- Prioritising
Who are the stakeholders in requirement gathering?
Key personnel from the organisation that requested the software product
What is the difference between objectives and goals?
Goals are broad, long-term achievable outcomes while objectives are actionable, measurable actions that achieve the goal
What three steps are accomlished iteratively?
Eliciting, documenting, and confirming requirements
How is elicitation accomplished?
Through surveys, questionnaires, and interviews
As the requirements emerge, they should be…
documented and checked to ensure they align with the goals and objectives
In order to confirm the requirements, they should be…
analysed to ensure consistency, clarity, and completeness
What happens to requirements after they have been confirmed?
They are prioritised
What three documents come as a result of the requirements gathering process?
- software requirements specification
- user requirements specification
- system requirementes specification
What does the user requirements specification (URS) describe?
It describes the business need and expectations of the end-users from the software system
What does the system requirements specification describe?
It clearly outlines the requirements of an entire system, and it is broader in scope than the software requirements specification (SRS)