Software development processes Flashcards
Custom software
Developed for a single customer according to their specification
Generic Software
Developed to the general market, e.g. excel or word
No silver bullet
The core argument is that there is no single development technique or technology (a “silver bullet”) that can result in an order-of-magnitude improvement in productivity, reliability, or simplicity within a decade.
Complexity (in communication, scaling up software etc.)
Conformity (change in management, or interface, etc.)
Changeability (software commonly modified)
Invisibility (Software structures are inherently unvisualizable, diagramming structures are hard)
What is the difference between the application (problem) domain and the solution domain?
Application Domain: Focuses on understanding the problem, requirements, and concepts of the real-world scenario or business domain.
Solution Domain: Focuses on technical aspects, design, and implementation strategies to build a software solution that addresses the problem.
Software process activity:
Software specification
Establish what services are required (functional requirements) and the constraints on the system’s operation and development (non-functional requirements)
Software process activity:
Software development
Software design (realise specifications) and implementation (translate design into executable)
Software process activity:
Software validation
Verification: Are we building the product right?
Validation: Are we building the right product?
Software process activity:
Software evolution
Change existing software systems to meet new requirements.
The software must evolve to remain useful.
Software processes can be split up into two kinds, the methodologies / basic models and concrete software processes. Mention 3 of each.
Methodologies:
Phase model, Spiral model, Incremental / iterative, Prototyping, Agile models
Concrete models:
Waterfall, Rational Unified Process, V-model, Scrum, Kanban, eXtreme programming, feature-driven development
Explain waterfall model
A software development methodology. A phase is only begun when the previous is finished. Sequential approach.
User requirements.
System requirements.
Analysis.
Program design.
Coding
Testing Integration.
Operations.
Look also iPad notebook.
What are process activities that are common in the life cycle of software? List and describe
three of them.
Software specification.
Software development.
Software validation.
Software evolution.
Explain V-model
A software development and testing methodology. Similar to the Waterfall Model, the V-Model follows a sequential approach. However, in the V-Model, each development stage has a corresponding testing phase.
Each development stage has a corresponding testing phase.
User requirements engineering – Acceptance testing
System requirements engineering – System testing
Architecture engineering – System integration testing
Design – subsystem Integration testing
Coding (sw) and fabrication (hw) – unit testing
Explain spiral model
Software development methodology. Emphasises the need to address potential risks in the project early and continuously throughout the development life cycle. Each loop represents a phase in the sw development process.
The development process is divided into a series of iterations, with each iteration resulting in a deliverable increment of the software. Each iteration includes risk analysis.
Repeat the steps:
Define goals
Analyse risks
Development and validation
Plan next iteration
Explain incremental / iterative approach
The incremental/iterative approach in software development is a methodology that emphasizes breaking down the development process into smaller, manageable parts, called iterations or increments. Instead of delivering the entire system at once, the development team works on and delivers a portion of the software in each iteration.
Basis for almost all agile methods.
Feedback driven.
Flexibility and adaptability.
Parallel development.
Change tolerance
where the process is designed so that changes can be accommodated at
relatively low cost.
E.g., incremental development in which proposed changes may be
implemented in increments