Lecture 1 Flashcards
What are the 3 phases of an engineering project?
- Requirements are defined by the client and are refined and agreed upon by the contractor.
- Architects and engineers draw up plans according to best engineering practices.
- The plans are then implemented by builders, under the supervision and inspection of the engineers.
What is software engineering
Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.
what are the “aspects of software production”?
Not just technical process of development. Also project management and the development of tools, methods etc. to support software production
What are the 4 SOEN fundamentals?
Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software.
Reliability and performance are important for all types of system.
Understanding and managing the software specification and requirements (what the software should do) are important.
Where appropriate, you should reuse software that has already been developed rather than writing new software.
What are the 4 attributes of good software?
Acceptability
Dependability and security
Efficiency
Maintainability
What is acceptability?
Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.
What is Dependability and Security?
Software dependability includes a range of characteristic including reliability, security and safety. Dependable software should not cause physical or economic damange in the event of a system failure. Software has to be secure so that malicious users cannot access or damage the system.
What is efficiency?
Software should not make wasteful use of system resource such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, resource util, etc.
What is maintainability
Software should be written in such a way that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.`
What are the main SOEN activities
Specification
Development
Validation
Evolution
What is requirement/specification?
The process of establishing what services are required and the constraints on the system’s operation and development.
What are the 3 elements of the requirements?
Requirements elicitation and analysis
What do the system stakeholders require or expect from the system?
Requirements specification
Defining the requirements in detail
Requirements validation
Checking the validity of the requirements
What is software development.
Software development, where the software is designed and programmed.
The process of converting the system specification into an executable system.
What are the 2 steps of Software development
Design: Design a software structure that realizes the specification
Implementation: Translate this structure into an executable program
What are the 4 design activities
Architectural design
Component design
persistence and database design
Interface Design
What is architectural design
Architectural design, where you identify the overall structure of the system, the principal components (subsystems or modules), their relationships and how they are distributed.
What is the database design
Persistence/Database design, where you design the system data structures and how these are to be represented in a database.
What is interface Design
Interface design, where you define the interfaces between system components.
Component Design
Component selection and design, where you search for reusable components. If unavailable, you design how it will operate.
What is implementation
The software is implemented either by developing a program or programs or by configuring an application system.
Design and implementation are interleaved activities for most types of software system.
Programming is an individual activity with no standard process.
Debugging is the activity of finding program faults and correcting these faults.
What is software Validation
basically, you try to break your code, and try to improve it and fix any faults
What are the 3 components of validation testing
Component Testing
System Testing
Customer Testing
What is component testing
Individual components are tested independently
Components may be functions or objects or coherent groupings of these entities.
Done by the person who writes the code
Often considered as part of coding
What is system testing
Testing of the system as a whole. Testing of emergent properties is particularly important.
Feature testing, integration testing, API testing, performance testing…
Regression testing
What is customer testing
Testing with customer data to check that the system meets the customer’s needs.
AKA: Acceptance testing, alpha testing
Field testing
What is Software Evolution
Software is inherently flexible and will change.
As requirements change through changing business circumstances, the software that supports the business must also evolve and change.
Distinction between development and evolution (maintenance) is becoming irrelevant
fewer and fewer systems are completely new.
What is Evolution / Maintenance
Maintaining and enhancing software to cope with newly discovered problems or new requirements can take far more time than the initial development of the software.
A part of that is fixing bugs. Most maintenance is extending systems to do new things, which in many ways can be considered new work.
You should specify the types of your maintenance and document it on issue tracking system.
What are the 4 other activities that are not part of the main SOEN process, but complements to it?
Coding
Deployment
Documentation
Software training and support
what is Deployment
Deployment
After the code is appropriately tested and approved, it is moved into production environment i.e. is made available for business use.
What is Documentation
An important (and often overlooked) task is documenting the internal design of software for the purpose of future maintenance and enhancement.
Documentation is most important for external interfaces.
What is software training and support
A large percentage of software projects fail because the developers fail to realize that it doesn’t matter how much time and planning a development team puts into creating software if nobody in the client organization ends up using it.