Software Engineering Ch1-5 Flashcards
- Computer program
- Data structures
- Documentation
Name three basic characteristics of a Software
What differentiates Software from Hardware
- Software is;
- Engineered, not manufactured.
- Not deteriorating, wearing out
- Mostly custom-built.
System / Application / Scientific / Embedded / Product-line / Web-Mobile Apps / AI Softwares
What are seven categories presenting challenges for engineers
Reasons for a software to evolve / change?
- Adapt needs of new technology
- Enhance for new business requirements
- Extend for modern systems / databases
- Re-architected for new computing environments
- Quality focus (bedrock)
- Process (foundation)
- Methods (techniques)
- Tools (support for process + methods)
What are the four engineering layers (from bottom)
The Five Process Framework Activities
[crispy pastries make cool donuts]
Communication / Planning / Modeling / Construction / Deployment
Product preparation Project production Risk management Technical reviews Quality assurance Configuration & re-usability management Project tracking Product measurement
Name 8 Umbrella activities:
Processes:
- Flow of activities & tasks
- Degree of tasks definition
- Manners of quality assurance
- Manners of project tracking and activity control
- Overall degree of detail
- Degree of involvement of client
- Level of autonomy of dev. team
- Team organization and roles
Process differences that require adaptation between software projects
- Understand the problem (communication & analysis)
- Plan a solution (modeling & software design)
- Carry out the plan (code generation)
- Examine results (Testing & quality)
What are Steps in problem solving
- Correct a defect in an existing application
- Adapt to a new business environment
- Extend functions of existing application
- Create a new product
What are Basic business needs for a new software project
Name four Process Flow Models
Linear / Iterative / Evolutionary / Parallel
- Software Process
- Process Framework
- Umbrella activities
- Tasks sets (the work to be done)
What are the Steps in a Generic Process Model:
What defines a Linear process flow
The Five Activities are organized in Sequence
What defines a Iterative process flow
The Five Activities are in sequence, but can be repeated once or more before moving to the next.
Executes all five Activities in a circular manner.
Each circuit trough leads to a more complex version of the project.
Describes which process flow?
What defines a Evolutionary process flow
What defines a Parallel process flow
Executes one or more Activities in parallel with another (modeling may be executed along with the construction of another)
Defines the actual work to be done.
What is a Task Set
Tasks to accomplish
Work to be produced
Quality filters to be applied
Three lists that define a task set
Numeric measure that ensure that the software meets a set of basic criteria
What is a Process Assessment
What is a Waterfall process model
A linear sequential model that accommodate the Generic Framework Activities.
Easy to plan
Works for small projects
Easy testing & analysis
What are advantages of the Waterfall process model
Doesn’t accommodate change / Testing occurs late / Client approval at the end only
Which process model?
What are disadvantages of Waterfall process model:
Incremental model. Quick design leads to construction of Prototypes
Describes which process model?
What is the Prototype process model
Small impact on changes / Client involved early and often / Works for small projects / Reduced risk of rejected product
Describes which process model?
What are advantages of Prototype process model:
Client may cause delays / Risk implementation of compromised - throwaway prototypes / Hard to plan and manage
Which process model?
What are disadvantages of Prototype process model:
Incremental model. Evolutionary design to accommodate a product that grows and changes
Which process model?
What defines a Spiral process model
Continuous client involvement / Dev. risks easy to manage / Good for large, complex projects / Good for extensible products
Describes which process model?
Advantages of Spiral process model
Project hard to manage
Risk analysis failures
Requires expert dev. team
Describes which process model?
Disadvantages of Spiral process model
Iterative & Incremental process flow model.
Provides an evolutionary feel
Responds best to modern software development.
Describes which process model?
What defines a Unified process model
Emphasis on quality of documentation Continuous client involvement Easily accommodates changes Good for maintenance projects Combines iterative and incremental process flows Describes which process model?
What are Advantages of Unified process model:
Overlapping phases can cause problems / Difficult software increment integration / Use cases not always precise / Requires expert team
Cons of which Process model?
Disadvantages of Unified process model:
Name four Agile process models
Scrum / Extreme Programming / Kanban / DevOps
Emphasizes rapid delivery of operational software by adopting the client as part of the dev team.
What is the basic concept of the Agile process model
Allows the software team to accommodate changes late in the project, thus flattens the curve of cost and changes.
What is the effect on costs in Agility models
Incremental development strategy must be implemented
Requires constant customer feedback
Prototypes - Increments - must be delivered in short time periods
Client must evaluate software regularly and influence the adaptations made
Describe the rules for which process model?
What are four basic rules of Agile process
Delivering a working software that meet customer needs, as rapidly as possible.
Name the basic Principle of Agile process model
Motivated individuals using face-to-face communication
Self-organizing
Working at a sustainable pace
Introspective team culture focusing on “improving”.
What defines an Agile Team
The most widely used Agile model.
Within each Activity, tasks take place in short-time periods called Sprints. Work conducted in Sprints is adapted and modified in real time.
What defines a Scrum framework
A prioritized list of product requirements that provide value to the client
What is a Product Backlog
Backlog refinement meeting
Sprint planning
Daily Team meetings (plan for 24 hours of work)
Sprint review (Approve or reject)
Sprint retrospective (start another Sprint)
Defines which Agile model?
What are the Five steps of a Scrum process
Team owns decision making Product owner sets priorities through backlogs Light on documentation Good for frequent updating Describes which Agile model?
Advantages of Scrum model
Difficult to control cost of changes Not always suitable for large teams Lots of meetings Requires expert team Describes which Agile model?
Disadvantages of Scrum model
Planning
Design
Coding
Testing
What are the four Process Framework Activities of XP programming
Written by the client, features required output and functionality of the desired software.
Needed for XP project
Define User Stories in XP programming
Begins with: Team gets User Story
Estimate costs
Develops stories and groups
Develop first Increments (First project release)
Computes the Project Velocity (amount of stories to be included)
Estimate delivery date
Describes which of the four XP steps?
Planning step in XP
"Keep it Simple" principle Use of CRC cards as a mechanism Operation prototypes designs creation Refactoring (modifying/optimizing code design) Describes which XP step?
Explain Design step in XP
Team develops a series of Unit Tests that will exercise each story that will be included in the release (key concept: two coders per computer)
Define XP Coding step
Automated Unit tests executed daily
Acceptance tests defined by client
Focus on functionality
Describes which XP activity?
What is XP Testing
Emphasizes client involvement Establishes rational plans and schedules High developers commitment to project Reduced likelyhood of rejection of product Describes which Agile model?
Advantages of XP Process Model:
Temptation to ship compromised Prototypes
Requires frequent meetings about increasing costs
Automated unit tests executed daily
Allows for excessive changes
Requires highly skilled team members
Cons of which Agile process model?
Disadvantages of XP Process Model
- Board (“to do” cards)
- Finish task before moving to another
- Managing workflow to reduce wastes
- Make explicit process policies
- Feedback loops for continuous improvement
- Involve all stakeholders and making process changes collaboratively
Six core practices of Kanban Process Framework
Lower budget & time requirements Allows early product delivery Process policies written down Continuous process improvement using feedback loops Describes which Agile process model?
Advantages of Kanban Process Model
Team collaboration skills determine success
Poor business analysis can doom the project
Flexibility can cause developers to lose focus
Developers reluctance to use measurement
Describes which Agile process model?
Disadvantages of Kanban Agile Process Model
Basic rule of DevOps model
Several stages loop continuously until desired product exists
Continuous:
- Development (multiple Sprints)
- Testing (multiple increments at once)
- Integration (code pieces to existing code)
- Deployment (to production environment)
- Monitoring (in the production environment)
Describes the five activities of which Agile model?
Name the Five Activities of the DevOps model:
Reduced time to code deployment Team has Devs and an Operation staff Team has end-to-end project ownership Proactive monitoring of deployed product Describes which Agile model?
What are advantages of DevOps Model
Pressure to work on both new and old code
Reliance on automated tools to be effective
Deployment may affect the production environment
Requires expert dev. team
Cons of which Agile model?
Disadvantages of DevOps Model:
- Beware of linear processes
- Do not plan too big up-front requirements
- Requirements gathering may not reduce costs
- Appropriate management is integral
- Documents should evolve with the software
- Involve stakeholders early and frequently
- Testers need involvement prior to software construction
Important Principles that should be considered when organizing software projects
Which type of process model:
Provide better basis for adaptable process changes.
Involve clients early and often.
Reduce the risk of creating a product that won’t be accepted.
What defines Incremental Process Models
This type of process must adapt incrementally.
Requires client feedback
Not for high-risk, large projects
Easy changes / Easy to manage / Easy partial delivery
Minimal documentation / risk management
Continuous improvement / Tester / Stakeholder interaction
Characteristics of Agile Processes
Not for small, low risks projects Hard on changes Several steps required / high documentation Early testing / Stakeholder involvement Formal project & risk management Improvement handled at the end Project end not always obvious Describes which process model?
Characteristics of Spiral Processes:
- Requirement Engineering (gather user stories)
- Preliminary Architectural Design (paper prototypes)
- Estimate Resource Requirements (use historic data)
- First Prototype (most important user stories)
- Test Prototype (dev. team & users)
- Go / No Go decision (determine quality of prototype)
- Evolve System (new prototype)
- Release Candidates (acceptance testing)
- Software Maintenance (keep software operational)
Name all the recommended steps of an Agile Process
This recommended Agile step includes: Encourage Stakeholder participation Use simple models & non-engineer jargon Get the Big picture Take time to explain Allow the dev team to refine requirements 'just in time'.
Good practices when Agile Requirement Engineering
Recommended Agile step includes:
Focus on key attributes
Document architecture design decisions
Combine customer-visible features and the infrastructure needed.
Enable code maintainability and evolvability
Continuously manage and synchronize dependencies
Good practices when Preliminary Architectural Design
This recommended Agile step includes:
Use historic data to estimate time to complete each user stories
Organize User Stories into Sprints
Determine number of Sprints needed
Sum number of days to complete each Sprint
Revise estimates as requirements are added
Good practices when making Resource Requirement Estimates
This recommended Agile step includes:
Select subset of the most important user stories
Transition from paper to software prototype
Include user interface in prototype
Create virtual prototype
Test prototype
Keep development & deployment in mind
Good practices when Constructing First Prototype
This recommended Agile step includes:
Create test cases while prototype is being designed
Provide ‘scaffolding’ to get prototype feedback from user
Test on the right people (user & dev team)
Allow user to contribute ideas
Keep open mind
Good practice when Evaluating - Testing Prototype
This recommended Agile step includes:
Determine quality of current prototype
After prototype is evaluated, stakeholders decide whether to continue with the development of the product.
Revise time and cost estimates
Determine risks of failing to meet expectations
Get commitment from stakeholders to provide resources needed to create the next prototype.
Good practice while Go/No Go process
This Recommended Agile step includes:
Define new Prototype scope
Same process as initial prototype
Assess risk of continuing evolution
Good practices in Prototype Evolve System
This recommended Agile step includes:
Prototype considered is subject to user-acceptance test
Document defects identified
If changes are made, needs to be a second-round of testing
Share quality risks with management
Lessons learned help for future development
Good practices when Releasing a new Candidate
This recommended Agile step includes: Understand code before making changes Test software after making changes Document all changes Communicate known defects to all stakeholders Keep software operational after release
Good practices for Software Maintenance
Name four different types of software maintenance
Corrective / Adaptive / Perfective / Preventive
Define Corrective maintenance
Reactive modification of software to fix problems discovered after deployment.
Define Adaptive maintenance
Reactive modification of software after delivery to keep it usable in the user environment.
Define Perfective maintenance
Proactive software modification after delivery to provide new features, better code structure and improved documentation
Define Preventive maintenance
Proactive modification after delivery to correct product faults before users discovery
- Sense of responsibility (do what needs done)
- Sense of awareness (of team & client)
- Sense of fairness (avoid conflicts)
- Realistic and honest (about flaws)
- Resilient under pressure
- Attention to detail (criteria)
- Pragmatic (adapts under circumstances)
What are 7 traits of successful software engineers
- Purpose & Involvement - every member feels valued
- Trust - skills of peers and managers
- Sense of Improvement - encouragement
- Diversity of skill sets - complement each other
What are Attributes of a successful Software Team
- Frenzied atmosphere
- High frustrations
- Poorly coordinated software model
- Unclear definition of roles
- Repeated exposure to failure
Five factors that create a toxic environment:
Difficulty of project / Size of project / Lifetime of project / Degree of communication / Degree of modularization / Quality required / Delivery date
Project factors affecting team culture
- Planning kept to minimum
- High communication between team & stakeholders
- Group collaboration & use of each member’s skills
- Self-organizing, Autonomy, Adaptive structure
Characteristics of successful Agile model teams
Good ways Social Media affects Software Engineering?
- Allows for engineers to connect easily with individuals who share same project, goals, skills.
- The value of Social Networking tools grows as the team size increases.
Negative ways Social Media affects Software Engineering
- Privacy & Security issues
- Threat of uncontrolled disclosures
Factors:
Complexity of the problem
Different views of the problem
Uncertainty and risks associated with the decisions made and their effect on the project
What are Four factors that affect decision making in a software team
Explain the Law of Unintended Consequences
When the work associated with a decision has unintended effect on another project objective.
Communication / Planning / Modeling / Construction / Deployment
Small number of activities applicable to all software projects [Process Framework Activities]
Waterfall (Sequential)
Prototyping (Incremental)
Spiral (Incremental)
Unified (Iterative & Incremental)
What are the Four Main Process Models and their Process Flows
Scrum
XP
Kanban
DevOps
What are the Four Agile Model Frameworks