Flashcards in Test 1 Updated Deck (70)
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
8. Deliverables: How and When?
9. System Architecture
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?
a. Decision Makers
b. Developers (understand
problem +gather data)
c. Revision of ideas
d. Future questions
• Team Members
a. Generate System Architecture
b. Visualization (diagrams)
i. Data Flow Diagram
iii. State Diagram
iv. Physical /logical
v. Swimlane Diagram
vi. Use case
c. Select a Process Model
4. Database Design
5. Code Construction
d. Modular Programming:
e. SE Principles
a. Black Box
b. White Box
a. Deployment techniques
c. User support
What are the 5 stages of life cycle developments?
1. (Combine 1 + 2) Communication + Planning
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.
-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
-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
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
-Assessment/evaluation of each step
-Risk -> Alternatives
a. Customer communication
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?
-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
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:
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:
-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
-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