The Software Development Lifecycle Flashcards

1
Q

Define software engineering and explain the responsibilities of a software engineer.

A

Software engineering is the systematic approach to the design & development of software.

Responsibilities include:
* Design, build, & maintain software systems
* Write & test code
* Consult with stakeholders, third-party vendors, security specialists, & other team members

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Discuss key advantages of applying the software development lifecycle (SDLC) when developing enterprise software.

A
  • Gives development teams a process to follow rather than using an ad hoc approach to improve efficiency & reduce risks
  • There are discreet phases to the SDLC and each phase is well-defined so team members know what they should be working on and when
  • Because of well-defined phases, it facilitates communication among stakeholders, customers, & development team
  • Team members know when development can move to the next phase
  • Provides room for iteration where at the end of the cycle the process can incorporate additional requirements as needed
  • Problem-solving is incorporated early in the cycle
  • Well-defined roles reduce conflict & overlapping responsibilities
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Describe each phase of the SDLC.

A
  1. Planning
    * Requirements are gathered, analyzed, documented, & prioritized
  2. Design
    * Requirements gathered from the SRS are used to develop software architecture
  3. Development (aka building or implementation phase)
    * Developers start coding process once design document is completed
  4. Testing
    * Code needs to be thoroughly tested to ensure stability, security, and that it meets the requirements from the SRS
    * Product bugs are reported, tracked, fixed, & retested
    * Different levels of testing include: unit, integration, system, & acceptance
  5. Deployment
    * Application is released into production environment and made available to users
  6. Maintenance
    * Identify any bugs, user interface (UI) issues, new & changing requirements, code enhancements, feedback from stakeholders
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Analyze common software engineering processes required for building high-quality software.

A

Requirements gathering
* 4 Broad Categories: Functional, External & user interface (UI), System features, Non-functional

Design
* Transforming requirements into code / software solution

Coding for quality
*Refers to characteristics of the code, including attributes: Maintainability, Readability, Testability, Security

Testing
* Verifies the software matches established requirements & is free of bugs

Releases
* Different releases are intended for different audiences (alpha, beta, GA)

Documenting
* System / User

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explain the requirement-gathering process.

A
  1. Defining a problem to be solved and how to go about solving the problem
  2. Identifying stakeholders
  3. Establishing goals & objectives
  4. Eliciting requirements from the stakeholders
  5. Documenting the requirements
  6. Analyzing & confirming the requirements
  7. Eliciting, documenting, & confirming
  8. Prioritizing the requirements
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Differentiate between a User Requirement Specification (URS), a Software Requirement Specification (SRS), and a System Requirement Specification (SysRS) document.

A

Software Requirement Specification (SRS) - most common
* Document that captures functionalities the software should perform

User Requirement Specification (URS)
* Describes the business need & end-user expectations

System Requirement Specification (SysRS)
* Clearly outlines the requirements of the system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Compare and contrast waterfall, V-shape model, and agile methods of software development.

A

Waterfall
Sequential, linear pattern through discreet stages
- Pros:
* Team members understand their responsibilities due to discrete, well-defined stages
* Easier to estimate budget & allocate resources
- Cons:
* Lacks flexibility
* Change is hard to accommodate

V-Shape
Sequential. Each verification stage corresponds with validation stage
- Pros
* Easy to use
* Test plans designed upfront saves development and testing time
- Cons
* Rigid
* Does not readily accommodate changing requirements

Agile
Collaborative, cyclical.
- Pros
* Changing requirements handled easily
* Feedback incorporated regularly
- Cons
* Budgeting & resource allocation is challenging
* Project scope not clearly defined

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Distinguish between functional, non-functional, and regression testing.

A

Functional
* Manual or automated
* Usability & Accessibility

Non-functional
* Performance, scalability, security, & availability

Regression (aka maintenance testing)
* Confirms changes/updates don’t break the application

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Identify and describe different types of documentation.

A

Product - Relates to Functionality
Requirements
* Describes expected features & functionality

Design
* Consists of both conceptual & technical design documents

Technical
* Includes comments and working paper that explain how code works, documents that record ideas and thoughts during implementation

Quality Assurance (QA)
* Plans, data, scenarios, strategies, cases, traceability matrices

User
* FAQs, installation & help guides, tutorials, user manuals

Standard operating procedures (SOP)
* Step-by-step instructions on how to accomplish common yet complex tasks

Process - Describes How-To

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Compare and contrast the common roles and responsibilities on a software engineering project.

A

There are many different roles involved in a software engineering project. Some of them include project manager or scrum master, stakeholder, system or software architect, UX designer, software developer, tester or QA engineer, site reliability or Ops engineer, product manager or owner, and technical writer or information developer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly