Lecture 5 Flashcards
What is SW ENGINEERING?
Software engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance
What are some concrete software processes?
- Waterfall model (and variant)
- V-model
- Spiral model
- Extreme Programming
- SCRUM
Why is SW engineering difficult?
- Complexity
Part of the software, can’t be removed - Conformity
Difficult to plan for changes (easy enough to conform for them tho) - Changeability [Flexibility]
Software is everchanging - Invisibility
Lack of visuals
What is software?
- Computer program and their associated documentation (requirements, design models and user manuals)
- New software can be created by developing new programs,configuring generic software systems or reusing existing software
Software product can either be:
- Generic - developed to be sold to a general market (excel or word)
- Custom - developed for a single customer according to their specification
What does it mean when saying SW is a modeling activity?
Because we have a problem and solution domain, which we can model i OOP
Fortolker jeg fra hans lorte slide
Working definition of software engineering:
Software Engineering is a collection of techniques, methodologies, and tools that help with the production of a high quality software system developed with a given budget before a given deadline while change occurs
Challenge: Dealing with complexity and change
Is knowledge acquisition (knowledge gaining) linear?
It is NOT linear
How would you outline software engineering?
- Modeling activity
- Problem solving activity
- Knowledge acquisition activity
- Rationale managament activity
What are ‘Techniques (Methods)’ in software development?
Our notes:
A process of outputting results using e.g. algorithms.
Lecture slides:
Formal procedures for producing results using a well-defined notation, such as algorithms and software processes.
How would you describe the problem-solving activity in software?
- Formulate the problem
- Analyse the problem
- Search for solutions
- Decide on the appropriate solution
- Specify the solution
Which domains are difficult in SW development?
Problem (Application) domain and solution domain. Explanation: Deeply understanding the needs and context of the end users (problem domain) and then skillfully creating a technical solution (solution domain) that meets those needs effectively (CHADDY)
What are the stages in OOSD (object oriented software development)?
- Requirement elicitation
- Analysis
- System design
- Object design
- Implementation
- Testing
Define ‘Methodology’ in the context of software development.
A collection of techniques applied across software development, unified by a philosophical approach. Example: Agile methods.
Software engineering is a rationale managament activity. What does rationale management activity entail?
- Application domain eventually stabilises
- Solution domain is constantly changing
- How can we reason about a decision taken in the past?
What are ‘Tools’ in software engineering?
Instruments or automated systems used to accomplish a technique. Examples include Eclipse and continuous integration.
What activities are common to all software processes?
Software specification
- Establish what functional (services) and non-functional (system’s operation and development) requirements there should be
Software development
- Software design (realise specifications) and implementation (translate design into executable)
Software validation
- Verification: “Are we building the product right?”
- Validation: “Are we building the right product?”
Software evolution
- Change existing software systems to meet new requirements. The software must evolve to remain useful
Explain this picture:
- If you want to increase the scope (more functions), you may need to increase the cost and/or the time. Reducing the cost could mean reducing the ** scope and/or compromising the quality.**
Delivering the project in less time might increase **costs ** (due to overtime, etc.) or reduce the scope or quality.
What does Barry’s variant of the Waterfall model contain?
It integrates quality assurance through validation and verification and feedback throughout the whole model rather than just through the neighbouring phases.
Her
A software process (model) describes:
systematic, structured and quantifiable
approaches to solve a repeatable manner
What are the steps of Barry’s variant of the Waterfall model?
System feasibility (Validation), SW Plans and Requirements (Validation), Product Design (Verification), Detail design (Verification), Code (Unit Test), Integration (Product Verification), Implementation (System Test), Operation + Maintenance (Revalidation).
A software process (model) is:
an abstract representation of a process. It presents a description of a process from some particular perspective.
What is the Spiral model and what are the goals?
It’s iterative and incremental. With each iteration the system scope is extended and the system grows step by step.
It focuses on the risk and minimises it.
Her
A software process addresses
in full or in part:
- Structural organization
- Process organization
- Artifact models
Define the steps of the Spiral model.
a. Define goals: specific objectives for
the phase are identified
b. Analyse risks: risks are assessed and activities are put in place to reduce the key risks
c. Development and validation: a development model for the system is chosen which can be any of the generic models.
d. Plan next iteration: the project is
reviewed and the next phase of the
spiral is planned.
Mention some basic models (methodologies)
- Phase model
- Spiral model
- Incremental / Iterative
- Prototyping
- Agile models
What is the incremental process?
Incrementing calls for a fully formed idea
“incrementing” builds a bit at a time
Mention some concrete software processes (the process models):
- Waterfall
- Rational Unified Process
- V-Modell (XT)
- Scrum
- Kanban
- eXtreme Programming
- Feature-driven development
What is the iterative process?
Iterating allows you to move from vague idea to realisation. “Iterating” builds a rough version, validates it, then slowly builds up quality.
It is not an iteration if you only do it once
What methodology is the waterfall model?
Classic phase model
What is the agile method process?
Combination of iterative and incremental methods. It breaks projects into smaller iterations (sprints), delivering working increments of software regularly while welcoming changes in requirements for continuous improvement.
What are characteristics of the Waterfall model?
- Strict sequence
- A milestone is complete, which the next phase is built upon
- Feedback possible, but only
between “neighbouring” phases - Difficult to accommodate change
after the process is underway. - In principle, a phase has to be
complete before moving onto the next phase.
How do we reduce the cost of rework?
Change avoidance:
- Includes activities that can anticipate possible changes before significant rework is required.
- A prototype may be developed to show some key features of the system to customers.
Change tolerance:
- The process is designed so changes can be accomodated at a relatively low cost
- Incrementtal development in which proposed changes may be implemented in increments
Common challenges of agile processes.
- Difficult to keep customers (involved) interested
- Team members may be unsuited for agile methods
- Prioritising changes can be difficult for multiple stakeholders
- Maintaining simplicity requires extra work
- Contracts may be a problem as with other approaches to iterative development
What is extreme programming (XP)?
- Was the best-known and most widely used agile method
- Extreme approach to iterative development
- New versions may be built more times per day
- Increments are delivered to customers often
- Tests must be run for every build, and a build is only accepted if the tests are successful
Give drawbacks and benefits to the V-model
Benefits
* Integrated quality assurance activities
* Good for tight controlling (e.g., public
* sector)
* Suitable for management
Drawbacks
* Rigid, e.g., requirements change (much
verification)
* May become heavyweight
* Not very suitable for software engineers
Name the 6 first XP (extreme programming) practices
Test-First development: Write tests before code.
Pair programming: Collaborative coding in pairs.
Continuous integration: Frequent code integration.
Refactoring: Improve code structure incrementally.
Simple design: Minimalistic yet functional design.
Collective code ownership: Shared responsibility for code.
Explain this model: Here
Name the 6 last XP (extreme programming) practices
Small Releases: Frequent small software releases.
Planning Game: Collaborative project planning.
On-Site Customer: Close customer collaboration.
Metaphor: Shared system understanding aid.
Sustainable Pace: Balanced, steady work pace.
Coding Standards: Consistent, readable code practices.
What are the 12 Principles of Agile Software Development?
Customer Satisfaction: Deliver valuable software early and continuously.
Embrace Change: Welcome changing requirements, even late in development.
Frequent Delivery: Deliver working software frequently, with a preference for shorter timescales.
Collaboration: Business people and developers work together daily.
Motivation: Support and trust motivated individuals to get the job done.
Communication: Prefer face-to-face conversations.
Progress Measure: Working software is the primary measure of progress.
Sustainable Pace: Maintain a consistent and sustainable pace of development.
Excellence: Focus on technical excellence and good design.
Simplicity: Emphasize the art of maximizing the amount of work not done.
Self-organization: The best solutions emerge from self-organizing teams.
Adjustment: At regular intervals, reflect and adjust to become more effective.
What is Test-First Development?
- Writing test before code, to clarify the requirements.
- Tests are written as programs so they can be executed automatically (checks if test is executed correctly)
Regression testing:
- Previous and new tests are run automatically when new functionalities are added
- Therefore checks that there are no errors
What is Refactoring?
In XP, refactoring is the continuous practice of improving the software’s internal structure without changing its external functionality.
What are Testing Challenges for Extreme Programming?
- Programmers take shortcuts when testing, which is bad
- Some tests are difficult to write incrementally
- It’s difficult to judge the completeness of a set of tests
- Test-First Development requires a lot of rigor
Challenges and Examples of Refactoring in XP
While beneficial, refactoring can be costly, especially for architectural changes. Examples include reorganizing class hierarchies to remove duplicate code, renaming for clarity, and replacing inline code with method calls.
What are some characteristics of Scrum?
- Self-managing team
- Value is generated in a series of “sprints” (fixed length of one month or less)
- Product backlog, a to-do list that changes and ranks tasks based on their importance
- Part of “agile processes”
(ikke så important)
- A general purpose project management framework
- Simple, uses generative rules to create an agile environment
How are tasks managed and releases planned in XP?
Our notes:
Tasks are estimated in days and releases are chosen by the customer.
Tasks, estimated in days, are decomposed if too large. The customer then chooses stories for the next release based on their priorities and the estimated schedule, ensuring regular and incremental delivery of value.
Benefits of Scrum?
- Project broken down into managable parts
- Unstable requirements will not hold up the process
- The whole team has visibility of everything
- Customers see on-time delivery of increments and gain feedback
- Trust between customer and developer is established
How often is a program tested in XP?
After every change has been made
Mention XP’s testing features
XP testing features:
* Test-first development.
* Incremental test development from scenarios.
* User involvement in test development and validation.
* Automated test harnesses are used to run all component tests each time that a new release is built.
Mention some of the steps in scrum (from the picture)
What is Scrum in SW?
scrum is an agile, lightweight process
* to manage and control software and product development with rapidly changing requirements
* based on improved communication and maximised cooperation.
Drawbacks of Scrum:
Scrum?!
* pretending to do Scrum, but manage like a waterfall model
Large Systems
* larger, longer projects, multiple development teams, working in different locations & countries
Understand and be able to explain this:
Picture
The combinations of different concrete software process models