Test 1 Updated Flashcards Preview

Intro to Software Engineering > Test 1 Updated > Flashcards

Flashcards in Test 1 Updated Deck (70)
Loading flashcards...

What is software engineering?

The establishment, use, testing and evaluation of sound engineering guidelines and principles to develop a system that can work efficiently and effectively on real machines.


What are tools in SE?

Techniques and technologies that are used to achieve the desired goals and results or to process a specific request


What are methods in SE?

"How", the steps/instructions to provide technical solutions or "how to's for building software.


What do methods cover in SE?

a. Planning and estimation (resources such as budget and timeline)
b. System Requirements
c. Designing Data Structures
d. Program architecture algorithm procedures and identify business structure logic
e. Testing/maintenance, training, documentation


What are processes in SE?

Combines methods and tools to enable rational and timely development of the system utilizing an engineering model based approach.


What are the steps to beginning a SE project?

1. Identification of an existing problem or issue, identify a goal and define a clear scope
2. Resources
3. Budget
4. Cost
5. Guidelines
6. Plan
7. Timelines
8. Deliverables: How and When?
9. System Architecture
10. Technologies/Tools
11. Team Capabilities
12. Know your clients
13. Plan the Testing Phase
14. Identify Deployment strategies, training, etc.


What are the 2 classes of software?

Predictable or determinate and unpredictable or indeterminate.


What are the kinds of software?

1. Application software- written to solve a specific need
2. Engineering/Scientific software - "Number crunching", non-traditional algorithms
3. Product-line software
specific capabilities but focuses on limited(mass) users.
4. Embedded Systems
Resides within a product and used to implement and control functions and features for the end user and the system itself.
○ Example: keypad control, heating, smart devices, car fuel control, brakes etc.
5. Artificial Intelligence
○ Uses non-numerical algorithms to solve a complex program.
○ Example: Robotics applications, expert system, pattern
recognition, (image + voice), neural networks
6. Web/ Mobile Based Applications
○ Integrated applications for personal or organizational use to solve a problem + provide recommendations.


What are the seven stages of the software life cycle?

1. Communication
a. Decision Makers
b. Developers (understand
problem +gather data)
JAD(Joint Application

2. Planning
a. Report
b. Agreement
c. Revision of ideas
d. Future questions
• Clients
• Developers
• Team Members

3. Analysis
a. Generate System Architecture
b. Visualization (diagrams)
i. Data Flow Diagram
ii. UML
iii. State Diagram
iv. Physical /logical
v. Swimlane Diagram
vi. Use case
c. Select a Process Model

4. Database Design
a. Tables
b. Schema
c. Normalization
d. ERD

5. Code Construction
a. UI
b. Validation
c. Testing(code)
d. Modular Programming:
e. SE Principles

6. Testing
a. Black Box
b. White Box
c. Security

7. Deployment
a. Deployment techniques
b. Training
c. User support
d. Maintenance
e. Auditing


What are the 5 stages of life cycle developments?

1. (Combine 1 + 2) Communication + Planning
2. Analysis
3. Database Design
4. Code Construction
5. (Combine 6 + 7) Testing + Deployment


What are the 3 stages of life cycle development (RAD)?

(Extra: 3 Stages: Rapid Application Development(RAD)) :
○ Stage 1: Communication, Planning, Analysis
○ Stage 2: Code cost + DB
○ Stage 3: Testing/Deployment


What are legacy systems?

Systems developed decades ago that have been modified to meet changes in business requirements and computing technologies.


What are some prescriptive models?

1. Waterfall Model - Each phase leads into the next. Must make sure requirements are clear.
-Time consuming
-Can't go back to previous phases

2. Iterative Model: Each phase is in depth and focuses on the current phases impact on not only the current phase but also all past and future phases. Very thorough and in-depth, extremely time consuming

3. RAD
-Incremental model that emphasizes short development cycles
1. Skilled and experiences devs
2. Clients are aware of project scope, requirements and deliverables
3. Create fully functional units within a short time


What are some evolutionary models?

1. Prototype model (non-functional)
-Reference model provides a quick design
-Enables the developers to create a quick design model of a product
a. Requirements
b. Generate a quick design -> Visualization
c. Start building prototype
d. Feedback, communication, testing, evaluation
e. Accepting/modifying the idea
f. Designing the real system

2. Spiral Model
Focus on:
-Assessment/evaluation of each step
-Risk -> Alternatives

a. Customer communication
b. Analysis
c. Risk analysis
d. Evaluation and Engineering
e. Assessment of construction steps

3. Concurrent model
-Project deployment divided into feature-based/feature-driven teams
-Focus = skills/feature implementation
-Query language: Generate reports
-Accessibility/sharing/security of files: Graphical capabilities


What are the components of DFD?

1. Context diagram
2. Data flow diagram
3. Child DFD
4. Physical and logical processes


What needs to be defined in a DFD?

1. Identify operational requirements and characteristics
-Functional characteristics: "What" i.e. "What exactly is the system required to do"; behavior
-Non-functional characteristics: "How" i.e. "How is the system going to perform that operations"; performance
2. Activities, actions, processes the system performs
3. Operation requirements related to the system


What are the steps of the process lifecycle?

S/W Process leads to assessment/evaluation/checking. This either leads to modification if the assessment finds issues, and approval if it does not. The modification then leads back to the S/W process, requiring modifications and revisions. On the other hand the approval also leads back to the S/W process, where you must identify any further risks.


What is Agility?

A set of values and principles that teams can use in making decisions on how to develop software.


What are the benefits of Agile programming?

-Very Flexible
-You as the developer decide the rules, and make an agile plan
-Gives a foundation for better software development


What are some potential agile rules?

-Give preference to individuals and interactions rather than processes and tools
-Working software over detailed and comprehensive documentation
-Customer collaboration over contract negotiation
-Responding to change over following a plan


What is different about agile as opposed to other programming paradigms?

-Fosters communication and collaboration among all who serve on it
-Represents a reasonable alternative to conventional projects
-Responds to changes, emphasizes rapid delivery of operational software
-Customers are viewed as part of the development team, eliminating the "us and them" attitude


What are the principles of Agile?

1. Highest priority to satisfy the customer through early and continuous delivery of valuable software
2. Welcome changing requirements
3. Deliver working software frequently
4. Developers and managers must work together throughout the project
5. Build projects around motivated individuals
6. When possible have face-to-face conversations - most effective
7. Working software is the primary measure of software
8. Maintain constant pace
9. Continuous attention to technical excellence and design enhances excellence
10. Simplicity
11. Best architecture and requirements emerge from self-organizing teams
12. Regular intervals and adjustments accordingly


What key assumptions does agile address?

1. It is difficult to predict which software requirements will persist/change
2. Software design and construction will interleave
3. Analysis, design, construction and testing are not predictable.

A process must be adaptable


What is XP?

Extreme programming uses an object oriented approach and encompasses a set of rules and practices in the following framework:

a) Planning
b) Design
c) Coding
d) Testing


What is ASD?

Adaptive software dev = technique for building complex software and systems.
-Speculation - initiation state - adaptive cycle planning is conducted


What is DSDM?

Dynamic Systems Development Method provides a framework for building and maintaining
systems through the use of incremental prototyping
in a controlled project environment. Latest version of
RAD – role of “keeper” of the method.
DSDM life cycle:
-Feasibility study
-Business study
-Functional model iteration
-Design and build iteration


What does MoSCoW mean?

Requirements are prioritized using this ranking:

M – Must have requirements
S – Should have if at all possible
C – Could have but not critical
W – Won’t have this time, but potentially later


What are the steps in Scrum?

-Create user stories and convert into product 'backlog' or 'wish list' to make this application successful
-Identify which specific stories should be good or bad - remove from wish list
-Identify roles
-Prioritize backlog - and breakdown large tasks (if any)
-Provide estimates of release of each task
-Create release backlog and divide them into sprints
-Each member updates the amount of work completed and goal satisfaction on a daily basis. As a team, daily performance is stored and remaining work can be measured.


What roles exist in Scrum?

-Product owner – to make sure right features get
into the backlog. Set the direction.
-Scrum Master (project manager) – identify project
tools, organize team, setup meetings, etc.
-Developer – build the system
-Testers – Test the application
-Customers – use it
-Executive team


What is the goal of sprints?

The goal of Sprints (Sprint 1, Sprint 2, …
Sprint n) is to make ‘Release Backlog’ items
into ship-ready state. All features must be
100% complete.