Software Engineering Profession Flashcards
Software Engineering based on Wang & King
Software engineering is a discipline that adopts engineering approaches, such as established methologies, processes, measurement, tools, standards, in the development of large-scale software seeking to result in high-productivity, low cost, and measurable development schedule.
Software Engineering by John A McDermid?
Software engineering is the science and art of specifying, designing, implementing and evolving - with economy, timeliness and elegance - programs, documentation and operating procedures whereby computers can be made useful to man.
Ian Somerville definition of Software Engineering?
Software Engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance.
Wang and King?
An engineering discipline.
Large scale software
Characteristics of Software Engineering?
- Inherent complexity and diversity
- Difficulty of establishing and stabilizing requirements
- Changeability or malleability of software
- Abstraction and intangibility of software
- Requirement of various problem-domain knowledge
Engineering Dimensions?
Size Cost Quality Lifetime Measurability Repeatability Reusability
What is Size dimension?
Size of problem and its solution
- More than 5000 LOC
- Size of team, more than one person often tens or hundreds of people
What is Cost dimension?
Cost of the problem
- Minimal cost, high productivity
What is Quality dimension?
Quality of the solution
- Suitability, Maintainability, Extensibility, Reliability, Dependability, Efficiency
What is Lifetime dimension?
Lifetime of the system
- A system that endures and exceeds the lifetime of involvement of original developers
What is Measurability dimension?
Measurability
- Based on the evidence provided by concrete metrics
What is Repeatability dimension?
Capable of achieving the same result with the same constraints and process
What is Reusability dimension?
Capable of reusing and building on existing artefacts to solve similar problems
Software Trade-Off Triangle?
Schedule
Cost
Product
What do Software Engineers do?
- Engineers carry out a task by making series of decisions.
- Engineers measure things, they use approximations based on experience and empirical data.
- Engineers emphasize the use of a disciplined process when creating a design and can operate effectively as part of team in doing so.
- Engineers can have multiple roles: research, development, design, production, testing, construction.
Why is Software Engineering difficult?
Cognitive Constraints
Organizational Constraints
Resource Constraints
Cognitive Constraints?
Intangibility Complexity Indeterminacy Diversity Polymorphism Inexpressiveness Inexplicit Embodiment Unquantifiable Quality
Organizational Constraints?
Time Dependency
Conservative Productivity
Labour-Time Interlock
Resource Constraints?
Cost
Human Dependency
Hardware Dependency
What is good software?
8 -ilities
- Functional Suitability
- Usability
- Maintainability
- Reliability
- Security
- Performance Efficiency
- Compatibility
- Portability
Functional Suitability?
Completeness, correctness, appropriateness.
Usability?
Appropriateness recognizability, learnability, operability, user error protection, user interface aesthetics, accessibility.
Maintainability?
Modularity, reusability, analysability, modifiability, testability
Reliability?
Maturity, availability, fault-tolerance, recoverability
Security?
Confidentiality, integrity, non-repudiation, accountability
Performance Efficiency?
Time behaviour, resource utilization, capacity
Compatibility?
Co-existence, interoperability
Portability?
Adaptability, installability, replaceability
Software Engineering Activities?
Requirements Analysis and Definition Software Design Programming and Dev Testing QC and QA Project Management
Requirements activities produce?
The use-case model artifact
Design activities produce?
The design model artifact
Implementation activities produce?
Code, test-cases, documentation
Methodology is?
the recipe, the steps to be followed in order to produce the artifacts of the given activity
Project Management Methodologies?
Iterative, spiral, waterfall, SCRUM
Requirement Methodologies?
Use-cases, functional specification, DFDs
Design Methodologies?
Object-Oriented Analysis and Design, Structured Design, Component-Oriented Design, Service-Oriented Design
Implementation Methodologies?
Object-Oriented Programming, Structured Programming, Functional Programming, Test-Driven Development
Foundations of Software Engineering?
Theoretical and Organizational
Theoretical Foundations?
Philosophical Computing Mathematical Linguistic Information
Organizational Foundations?
Engineering Cognitive Informatics System Science Management Science Economics Sociology
Diversity of Software Systems?
Stand-Alone Interactive, transaction based Embedded control systems Batch processing systems Entertainment Systems
Software Engineering Ethics?
Public Client and Employer Product Judgement Management Profession Colleagues Self