Software Process Flashcards
Waterfall software process
Requirements: product requirements document Design: software architecture Implementation: software Verification: Maintenance:
Accidental complexity
Relates to problems which engineers create and can fix
Ex) the details of writing and optimizing code
Essential complexity
Is caused by the problem to be solved and relate to the complexity of context and stakeholders involved
Problem of requirements
- difficult to communicate clearly
- difficult to document
- difficult to negotiate
- difficult to manage (change)
Success Factors in 1995
- User involvement
- Executive management support
- Clear statement of requirements
- Proper planning
- Clear vision and objectives
Success factors 2015
- Execute sponsorship
- User Involvement
- Agile process
- Modest execution
- Clear business objectives
Importance of software process
Project success
Financial
Safety
Mitigate project risks
- continuous access to stakeholders
- incremental and iterative software development
- having cycles instead of steps
Waterfall vs agile
- waterfall does each step then done, not used anymore
- agile has a cycle of testing and coding (working with stockholder) better method (ex scrum and spring planning in scrum)
Model, view, controller
- segment our ideals from the model (sep how we interact with it to how we view it)
- benefits: to make changes you know where to go and don’t have to change everything, easier to test components
- downsides: disperse function into three parts and makes it hard to find code, takes over code and takes away flexibility
Module cohesion
The extent to which software entities pertaining to the same functionality are contained within a single module
Inter-module coupling
The extent of inter-module connections
Architecture quality attributes
Want low coupling and high cohesion
-results in easier maintenance of code, higher modifiability, and localization of changes
Categories of requirements
- Functional requirements: what the software should do
- Quality requirements: qualifications (speed, reliability, …)
- Constraints: coming from somewhere (programming language, platform)
Role of architecture
- Functional requirements: ability of system to do work it was required
- Quality requirement: satisfied by quality of the system as a whole