Intro to Software Engineering Flashcards
Define software engineering
Software engineering is the application of scientific principles to the design and creation
of software.
Discuss 2 key advantages of applying the software development lifecycle (SDLC) when developing enterprise software.
- A roadmap to the software development process, helping to reduce risk and improve efficiency,
- Increased communication between the team and stakeholders,
- Clearly defined and understood responsibilities for each team member, and
- The ability to be used iteratively, allowing for changing requirements.
What are the responsibilities of a software engineer? (and 1 diff btwn a developer)
esponsibilities of a software engineer include:
- Designing, building, and maintaining software systems
- writing and testing code
- consulting with stakeholders, third party vendors, security specialists, and other team
members.
- build systems while software developers implement specific functionalities within a system
define SDLC
Software Development Life Cycle, known as the SDLC,
is a systematic process to develop high-quality, low-risk software in a predictable timeframe and budget.
Describe each phase of the SDLC
SIX PHASES:
1 PLANNING involves requirement gathering and development
of the software requirement specification (SRS)
2 DESIGN The architecture is developed during the design phase and the design document is created for the next phase
3 DEVELOPMENT phase is when coding takes place
4 TESTING issues with the code are found and fixed if possible
5 DEPLOYMENT is when the code is released to the production environment.
6 MAINTENANCE stage feedback is collected from stakeholders, other UI issues may be identified, and code enhancements suggested.
**And this information then can be fed into another software development cycle if necessary.
list + Analyze 6 common software engineering processes required for building-high quality software.
1 Requirement gathering is collecting and documenting the set of requirements that the software
needs to adhere to: functional, external & ui, system features, nonfunctional
2 Designing transforms requirements into a structure that developers can use.
3 Coding for quality entails following a set of coding practices during development.
4 Testing is the process of verifying that the software matches established requirements
and is free of bugs
5 releases: There are three types of releases including: alpha (internal stakeholders), beta (external stakeholders, no bugs), and general availability
6 documenting requires text or video that explains the software to technical and non-technical
users.
Explain the requirement gathering process. (6)
6 steps meant to identify and solve a software problem:
1 identifying stakeholders. representative from every group the product affects
2 establishing goals (broad) and objectives (specific, actional measurable)
3 eliciting requirements from the stakeholders - surveys, questionnaires, interviews
4 documenting the requirements,
analyzing
5 confirming the requirements, and
prioritizing
Differentiate between a User Requirement Specification (URS), a Software Requirement Specification (SRS), and a System Requirement Specification (SysRS) document.
may be three documents that result from the requirements gathering process:
1 software requirements specification, or SRS: captures the functionalities that the software should perform
and also establishes benchmarks or service levels for its performance
2 user requirements specification, or URS: User requirements describe the business need and expectations
of the end-users from the software system.
The user requirements are written as “user stories” or
“use cases” that answer three questions:
Who is the user?
What is the function that needs to be performed?
And why does the user want this functionality
3 system requirements specification,
or SysRS:
documents system capabilities and acceptance criteria,
and policy, regulation, personnel, performance, security, and hardware requirements.
Compare and contrast waterfall, V-shape model, and agile methods of software development.
Distinguish between functional, non-functional, and regression testing.
Identify and describe different types of documentation.
Compare and contrast the common roles and responsibilities on a software engineering project.