Systems Engineering Flashcards
(26 cards)
Software Engineering
concerned with
- technical processes of software dev
- project management activities
- development of tools, methods and theories supporting software dev
What is the main benefit of using Software Engineering Principles?
Better quality code
When does software development take place within the software engineering lifecycle?
- software spec
- software dev < < <
- software testing
- software documentation
- software maintenance
What are the 4 advantages of using software engineering principles?
- Maintainability
- Dependability and Security
- Efficiency
- Acceptability
Maintainability:
- software written to be able to adapt to changing needs
- changing needs of the customer and business
environment is inevitable - code design and written to be easily to changed (without refactoring and completely rewriting)
Dependability and Security:
- dependability = reliable, secure and safe software
- software should not cause physical or economic damage in the case of system failure
- malicious users should not be able to access or damage system
Efficiency:
- software should make efficient use of system resources
- responsiveness, processing time, memory, usage
Acceptability:
- software must be acceptable for its users
- understandable, usable, compatible with OSs
- design for adults different to children
What are the 4 main aspects that make up software engineering?
- software specification
- software development
- software validation
- software evolution
Software specification
- customers and developers define software product to be developed
- scope, functional requirements, constraints
software development
- process of designing and creating the software product
- engineers/developers programming
Software validation:
- checking software to ensure it meets requirements
- testing
software evolution
- modifying software to reflect changing requirements for customer and market
- maintenance
What 3 factors make up software engineering diversity?
- heterogeneity
- social and business change
- security and trust
- considered when producing software to ensure software meets standards
Heterogeneity:
- systems have to operate as distributed systems across networks, including different types of computing devices and operating systems, different languages, etc.
- need to develop techniques for building dependable software that can cope with this heterogeneity
Social and Business change:
- businesses and society changes rapidly with emerging economies
- software needs to keep up with this changes
- new software needs to be built rapidly
- traditional techniques are time consuming
- need to be able to reduce time for which software is able to produce value for its customers
Security and Trust:
- software is present in all aspects of our lives
- needs to be trusted
- especially remote systems
- need to protect users from malicious users and maintain information security
How can these factors be managed?
- use software engineering processes
- use different techniques for different system types
- when developing software, software engineering principles need to be adhered to
What is true for any software system? (4)
- the development process needs to be managed and understood
- there needs to be focus on dependability and performance
- software requirements are understood and managed
- effective use/reuse of resources
Project management processes:
- help development of software systems
Give examples of areas making use of project management processes:
- planning
- communication
- people management
- methods/methodologies
- tools
- ethics
Methods for software development:
- different methodologies exist
- each needed for specific project to ensure good software quality
6 Development life cycle phases
- analysis - requirements, PO, PM, BA, CEO
- design - architecture, System architect, UX designers
- development - programming, engineers, developers
- testing - testing, solutions architect, QA, DevOps
- deployment - release, DevOps
- maintenance - software maintenance, users, testers
Waterfall methodology stages:
1 discovery
2 design
3 coding
4 testing
5 deployment
6 maintenance