Upgrade to remove ads
Terms in this set (192)
What is the software process?
A structured set of activities required to develop a software system
4 things all software processes involve
2 software process types
plan-driven ( all activities planned in advance and progress is measured against this plan)
agile (incremental planning, easier process changes to reflect changing customer requirements)
3 software process models
waterfall (plan driven)
incremental (specification, dev, and validation interleaved, plan or agile)
integration and configuration (system assembled from existing configurable components, plan or agile)
5 waterfall method phases
requirements analysis and design
implementation and unit testing
integration and system testing
operation and maintenance
3 types of reusable software
stand-alone application systems
collection of objects developed as a package (.NET)
web services developed according to service standards
Key process stages of reuse-oriented software engineering
software discovery and eval
app system config
component adaptation and integration
4 design activities
Architectural design (overall system structure)
database design (design data structures and how they are rep'd in db)
interface design (define interfaces between components)
component selection and design (search for reusable components)
3 testing stages
component testing (individual system parts)
system testing (whole system)
customer testing (test with customer data)
2 ways of coping with change
system prototyping (quick development mock-up to test requirements)
incremental delivery (system increments delivered to customer for approval/comments)
3 process improvement activities
what is software engineering
The process of producing software applications, involving not just the pro-gram's source code but also associated documentation, including UML diagrams, screen prototypes, reports, software requirements, future development issues, and data needed to make programs operate correctly
what is the software development life cycle (SDLC)
A model that describes the life of the application, including all stages involved in developing, testing, installing, and maintaining a program
what is a prototype
A standard or typical example that gives end users a good idea of what they will see when their application is completed
what is the waterfall model
An SDLC approach involving sequential application development with processes organized into phases
what is the spiral model of the SDLC
Model starts with an initial pass, using the waterfall method. After an evaluation period, the cycle starts again, adding new functionality until the next prototype is released.
what is the agile model of the SDLC
This method is used for time-critical applications. It's less formal, has a reduced scope, and encourages frequent inspection and adaptation.
what is the incremental model of the SDLC
The application is developed and released in a series of software releases.
what is unified modeling language (UML)
A software modeling process for creating a blueprint that shows the progams overall functionality and provides a way for the client and developer to communicate
what is a flowchart
A combination of symbols and text that provides a visual description of a process
what is the role of a software developer (programmer)
responsible for writing source code to meet the end user's functional requirements
What is testing?
Testing is the process of examining an application to ensure it fulfills the requirements for which it was designed and meets quality expectations.
What is testing measure ?
Testing measures the quality of an application or project
What does developers do?
Developers should take the view that your project DOES have bugs or defects that have not yet been discovered
Testing helps find and correct defects
What is a bug ?
A bug is an error in coding or logic that causes a program to malfunction or to produce incorrect results.
What is a bug gives ?
A bug gives the end user a result that is unexpected or undesirable.
A problem found in an operation can be 40-100 times more _______ to resolve after it is in operation than early in development.
Software testing ensures that your application behaves exactly as ____.
software testing reduce ?
Software testing reduces the total cost of ownership for end users.
4 Importance of Software Testing
1.REDUCES cost of developing,
2.ENSURES behavior of application is as intended,
3.REDUCES total cost of ownership for end user,
4.DEVELOPS customer loyalty
Bugs caught during testing do not require users to spend ____ _______ bugs.
Bugs caught before a project is delivered do not cost the user any _____ while fixes are created and ______ are installed.
Software that behaves as expected requires less ____ and user ____.
Software that is well-tested results in _____ user _______.
There are many different types of _____, standards of measurement for software quality.
Performance metrics: such as the _____ it takes to complete a process or the amount of ____ required by the application
Reliability metrics: such as the total number of bugs or "____ _____," which is the number bugs divided by the number of code.
_____ refers to all of the physical elements of a computer system.
_____ is the data and instructions that operate on a computer
_______ ______ is the software that controls the allocation and usage of hardware resources and is the foundation software on which applications depend
An operating system controls the ____ and _____ of hardware resources
What is the purpose of testing during the software development process?
to identify and report out bugs- perhaps quality of feature or solution
How can software quality be measured?
with designed and developed metrics that the team creates
What is a Process Model ?
It is a description of
i) what tasks need to be performed in
ii) what sequence under
iii) what conditions by
iv) whom to
achieve the "desired results."
Why Have A Process Model?
Provide "guidance" for a systematic coordination and controlling of
a) the tasks and of
b) the personnel who perform the tasks
What is the Software Process?
A structured set of activities required to develop a software system.
What does the software process involve?
1. Specification - defining what the system should do;
2. Design and implementation - defining the organization of the system and implementing the system;
3. Validation - checking that it does what the customer wants;
4. Evolution - changing the system in response to changing customer needs.
processes where all of the process activities are planned in advance and progress is measured against this plan.
planning is incremental and it is easier to change the process to reflect changing customer requirements.
What is the Waterfall Model?
1.Requirements must be specified first.
2. Main tasks completed in sequence: requirements, design, code and test, followed by packaging.
3.Output of one stage feeds into the next: easily tracked ("controlled") by management
What are the main problems with the Waterfall model?
1. The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase
2. The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites. In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work.
What are the benefits of Incremental development?
1. The cost of accommodating changing customer requirements is reduced.
2. It is easier to get customer feedback on the development work that has been done.
3. More rapid delivery and deployment of useful software to the customer is possible.
What are the problems of Incremental development?
1. The process is not visible.
2. System structure tends to degrade as new increments are added.
What are the benefits of Incremental delivery?
1. Customer value can be delivered with each increment so system functionality is available earlier.
2. Early increments act as a prototype to help elicit requirements for later increments.
3. Lower risk of overall project failure.
4. The highest priority system services tend to receive the most testing.
What are the problems of Incremental delivery?
1. As requirements are not defined in detail until an increment is to be implemented, it can be hard to identify common facilities that are needed by all increments.
2. However, this conflicts with the procurement model of many organizations, where the complete system specification is part of the system development contract.
What is the Boehm's spiral model?
1. Process is represented as a spiral rather than as a sequence of activities with backtracking.
2. Each loop in the spiral represents a phase in the process.
3. No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required.
4. Risks are explicitly assessed and resolved throughout the process.
What are the sectors of Boehm's spiral model?
1. Objective setting
Specific objectives for the phase are identified.
2. Risk assessment and reduction
Risks are assessed and activities put in place to reduce the key risks.
3. Development and validation
A development model for the system is chosen which can be any of the generic models.
The project is reviewed and the next phase of the spiral is planned.
What are the stages of the waterfall model?
Requirements Analysis and Specifications
Design and Specification
Coding and Unit Testing
Integration and System Testing
Delivery and Maintenance
Requirements Analysis and Specifications
Often preceded by a feasibility study
Identify "what" must be built, including functionality and constraints
Document requirements in user terms and in terms appropriate for designers/developers
Requires interaction with customers, and domain knowledge
Various models for expressing requirements are available
Design and Specification
Specifies the "how", not the "what"
Often split in architectural and detailed design
Architectural design expresses overall system organization, decomposes system into modules
Detailed design provides further details
Various models for expressing designs are available
Coding and Unit Testing
System is coded to meet design specification
Unit testing is testing applied to individual modules, usually by developers
Integration and System Testing
Integration testing tests modules as they are put together, using stubs and drivers
System testing tests the entire system, including hardware and software (perhaps with simulators)
These phases may conducted by developers and/or dedicated test engineers
Delivery and Maintenance
System is packaged for delivery; this includes all code, documentation, and other deliverables
System goes into "maintenance", where it continues to be perfected, adapted, and corrected
What are the drawbacks of the waterfall model?
Each phase must be complete before the next can be begun
The model is only appropriate when the requirements are well-understood
Difficult to accommodate change after the process is underway
Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements
Reuse-Oriented Development Model
Based on systematic reuse where systems are integrated from existing components
System design with reuse
Development and integration
Incremental Development Model
Development/delivery broken down into increments, each increment delivers part of the functionality, identifying self-contained functional units that may be delivered to customers is crucial
User requirements are prioritized, highest priority requirements are included in early increments.
Once development of an increment is started, the requirements are frozen, but requirements for later increments can still evolve.
Define outline requirements
Assign requirements to increments
Design system architecture
Develop system increment
Incremental Development Model Advantages
Customer value is delivered with each increment so system functionality is available earlier
Early increments act as prototypes to help elicit requirements for later increments
Lower risk of overall project failure
The highest priority system services tend to receive the most testing (not necessarily a bad thing for non-critical systems)
Main difference with "Evolutionary Model" involves more careful initial thought about what increments to apply
Incremental Development Model Disadvantages
Needs good planning and design
Needs a clear and complete definition of the whole system before it can be broken down and built incrementally
Total cost is higher than waterfall
Divide complex systems into modules; develop modules independently; assemble them to solve the problem; an instance of separation of concerns; supports understandability & maintainability
Cohesion and Coupling
Modules should be HIGHLY COHESIVE: module understandable as a meaningful unit; components of a module are closely related to one another
Modules should exhibit LOW COUPLING: modules have limited interactions with others; understandable separately
Ignore details; separate "what" from "how"; need a specification - description of what a component should do; Components can be built based on what they should do, not how they should do it
Software behaves "reasonably" even in unforeseen circumstances (e.g. incorrect input, hardware failure); related to correctness: if a behavior is unforeseen it is a robustness issue, if a behavior is foreseen and specified, it becomes a correctness issue
"Fitness for intended use"; not a precisely defined term; unlike correctness, it is achievable; less mathematical and more qualitative than reliability; includes aspects of correctness, reliability, and robustness
Efficient use of resources (memory, processing time, communication); can be verified (complexity analysis, performance evaluation); performance can affect usability (reduce productivity); performance can affect scalability (a solution that works on a small local network ay not work on a large intranet)
Expected users find the system easy to use; "user-friendliness"; rather subjective, difficult to evaluate; affected mostly by user interface; interacts with many other qualities, e.g. correctness and performance
Ease of maintenance; changes after release; costs have been observed to exceed 60% of total cost of software; can be decomposed into repairability and evolvability
How well can we use existing products or components (perhaps with minor modifications) to build another product; reuse of standard parts is a measure of maturity of a field; applies to process
How easy it is to run software on different hardware platforms or software environment; Does software remain relevant as new platforms and environments are introduced?; Particularly relevant when installing software in a heterogeneous network environment
Ease of understanding software; primarily an internal quality (exception: when the product is a set of class libraries); program modification requires program understanding; thus understandability impacts maintainability
What is a software process?
Many different software processes but all involve:
Specification - defining what the system should do;
Design and implementation - defining the organization of the system and implementing the system;
Validation - checking that it does what the customer wants;
Evolution - changing the system in response to changing customer needs.
What is a software process model?
A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.
What is the waterfall process model?
Plan-driven model. Separate and distinct phases of specification and development.
The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites.
Drawbacks/Problems with the waterfall model?
Accomadating change is difficult, once a process is complete, you can't go back to that phase
Not agile, can't keep up with changing business requirements
What is the Incremental development model?
Specification, development and validation are interleaved. May be plan-driven or agile.
Benefits of the Incremental development model?
Cost of changing customer requirements is reduced.
The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model.
Customer feedback, beta versions ready.
Drawbacks/Problems with the Incremental development model?
The process is not visible.
-Managers need regular deliverables to measure progress
System structure tends to degrade as new increments are added.
-Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure.
What is the Reuse-oriented software engineering model?
The system is assembled from existing components. May be plan-driven or agile
Based on systematic reuse where systems are integrated from existing components or COTS
Reuse is now the standard approach for building many types of business system
What activities happen in design and implementation?
The process of converting the system specification into an executable system.
- Design a software structure that realises the specification;
- Translate this structure into an executable program;
The activities of design and implementation are closely related and may be inter-leaved.
where you identify the overall structure of the system, the principal components (sometimes called sub-systems or modules), their relationships and how they are distributed
where you define the interfaces between system components.
where you take each system component and design how it will operate.
Verification and validation
is intended to show that a system conforms to its specification and meets the requirements of the system customer.
Involves checking and review processes and system testing.
System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system.
Testing is the most commonly used V & V activity.
Development or component testing
- Individual components are tested independently;
- Components may be functions or objects or coherent groupings of these entities.
- Testing of the system as a whole. Testing of emergent properties is particularly important.
- Testing with customer data to check that the system meets the customer's needs.
What are the 4 activities of the spiral model?
- Objective setting
- Risk assessment and reduction
- Development and validation
The objective setting phase sets specific objectives for that phase. Constraints are identified, strategies are planned
The risk assessment and reduction phase goes through all project risks for that phase. Analysis is carried out/risk to produce steps to reduce risk. E.g. if requirements don't match, a prototype may be made.
Development and validation phase is the phase where a development model for a system is chosen. E.g. throw-away prototyping may be the best if UI risks are dominant.
Planning is the activity where the project is reviewed and a decision is made whether or not to carry on. If so, plans for the next phase are drawn up.
Within Prototype Development, what may we leave out?
1. Prototype should focus on areas of the product that are not well-understood.
2. Error checking and recovery may not be included in the prototype.
3. Focus on function rather than non-function requirements such as reliability and security.
What reasons would we have to, Throw-away prototypes?
Prototypes should be discarded after development as they are not a good basis for a production system:
1. It may be impossible to tune the system to meet non-functional requirements;
2. Prototypes are normally undocumented;
3. The prototype structure is usually degraded through rapid change;
What are the core principals of Agile Development?
1. "Fits just right" process
2. Continuous testing and validation
3. Consistent team collaboration
4. Rapid response to change
5. Ongoing customer involvement
6. Frequent delivery of working software
Set of instructions that you write to tell a computer what to do.
A language's set of rules.
A computer program that translates high-level language statements into machine code.
An error that occurs when a programming language is used incorrectly.
The process of removing all syntax and logical errors from the program.
Named computer memory location that hold values that may vary.
The name of a program component such as a variable, class, or method
A style of creating identifiers in which the first letter is not capitalized, but each new word is.
A style of creating identifiers in which the first letter of all new words in a variable name, even the first one, is capitalized.
Procedures or Methods
A compartmentalized program unit that accomplishes tasks.
A programming technique that features objects, classes, encapsulation, interfaces, polymorphism, and inheritance.
Program elements that are instances of a class
An objects characteristics
A category of objects or a type of object.
An object's values.
The technique of packaging an object's attributes and methods into a cohesive unit that can be used as an undivided entity.
A device you use without regard for the internal mechanisms.
The interaction between a method and an object.
The ability to create methods that act appropriately depending on the context.
The ability to extend a class so as to create a more specific class that contains all the attributes and methods of a more general class; the extended class usually contains new attributes or methods as well.
Argument or Parameter
represent information that a method needs to perform its task. An argument is the expression used when you call a method, while a parameter is an object or reference that is declared in a method definition; that is where the method instructions are written.
An alternative name for a class.
A method that includes no implementation details (no method body) in the declaration. Abstract method declarations are permitted only in abstract classes.
Casting makes a variable temporarily behave as if it were a different type.
A term denoting the encapsulation of data and behaviors into a single package or unit. Class is the template from which many objects are instantiated
When you build an ASP.NET Web application, two separate files are created for the user interface. The file storing the logic is referred to as the code-behind file
A data item defined and initialized to keep the same value throughout the life of the program.
A method called whenever an object is created. The constructor uses the same identifier as the class name.
declare a variable
The act of allocating memory for a data item in a program. To declare a variable you select an identifier and determine what type of data will appear in the memory cell.
The use of sample data to verify programming algorithms by mimicking or walking through each step the computer will take to solve the algorithm
Form property that the default button, which is activated with the Enter key.
Underlined character that allows the user to select using the keyboard rather than the mouse; also called a hot key.
A control used to indicate a value that may be True or False. In any group of check boxes, any number may be selected.
A control used to indicate a value that may be True or False (selected or not selected). In any group of radio buttons, only one button may be selected.
A control for data entry; its value can be entered and changed by the user.
Screen display that provides navigation through the system, the screens and forms that capture data, and the reports that the system produces
Process of defining how the system will interact with external entities
Defines the way in which users will interact with the system and the nature of the inputs and outputs that the system accepts and produces
1.) Navigation Mechanism
2.) Input Mechanism
3.) Output Mechanism
Way in which the user gives instructions to the system and tells it what to do
Way in which the system captures information
Way in which the system provides information to the user or to other systems
Focuses on improving the interactions between users and computers by making computers more usable and receptive to the user's needs
Graphical User Interface-GUI
use windows, menus, icons, and a mouse
Principles of user interface design
2.) Content awareness
4.) Field labels
Organizing areas of the screen or document for different purposes
Middle: Information to be input or output
Bottom: Navigation (one method)
Ability of an interface to make the user aware of the information it contains with the least amount of effort by the user
Individual elements of data that are input or output
Designing interfaces that are pleasing to the eye
-should be functional and inviting to users through careful use of white space, colors, and fonts
black on white-most readable
blue on red- least readable
Designing the UI with the users' level of computer experience in mind
Enables users to predict what will happen before they perform the function
Minimize user effort
Fewest possible mouse clicks or keystrokes to move from one part of the system to another
Three clicks rule
Users should be able to go to from the start menu to the information or actions they want in no more than 3 clicks or strokes
Fan-in is the measure of how many functions call a specific function. A high value means that the called function is tightly coupled with the rest of the program and any changes to it will have serious consequences in terms of knock on effects.
Fan-out is the measure of the number of functions called by a particular function. A high fan-out value means that the complexity of the calling function is also high, inferring sophisticated internal logic.
Length of code
The longer the program, the more likely it is to contain errors or defects. Smaller components tend to be more stable and
less likely to be the source of errors. The implication of this is that breaking the program into smaller components will improve the quality of the software system.
This is a measure of the control complexity of the software, and may relate to program understandability. This is the same measure calculated during the component testing process step
Length of identifiers
In general, the longer the identifiers used, the more understandable
the source code is.
Depth of conditional nesting
The number of levels of nested if clauses in a program. The deeper the logic, the more dicult it is to understand, and therefore the more likely that errors will exist.
What is software
Definition: The set of principal design decisions
made during the development of the system and its
1. Sustainability of the developed system
2. Effective project communication
3. Adequate basis for reuse
Purposes of architecture
1. A way to encourage planning and discussion
2. A way to document what has been built
a) Encapsulates application
b) Notifies view of state
a) Renders model
b) Requests model updates
c) Sends user events to
a) Maps user actions
to model updates
b) Selects view
Separation of concerns
Software Architecture (def'n)
the set of principal decisions made during the development of the system and its subsequent evolution, highest level of design.
What is Software Architecture?
A software system's architecture is the set of principal design decisions about the system.
Architectural Drift (Architectural Degradation)
Architectural Drift (Architectural Degradation)
introduction of new principal design decisions into the descriptive architecture that violate its prescriptive architecture.
Elements that encapsulate processing and data in a system's architecture
is a set of architectural design decisions that are applicable to a recurring design problem, and parameterized to account for different software development contexts in which that problem appears.
Why use Object Oriented Programming?
-enforce good design; high cohesion and low coupling
-reduce maintenance costs
-improve development process
Code structure degrades over time; code starts exhibiting "bad smells"; some would argue that poor structure is always there unless refactoring is performed.
shows that one class (subclass) inherits from another class (superclass), meaning that the public and protected (not private) properties and operations of the superclass are also valid for objects of the subclass.
used to portray logical a part of relationships .
a hallow or white diamond
similar to aggregation but it is used to portray a physical part of relationships and is shown by a black diamond.
Class-Responsibility-Collaboration (CRC) card
used to document the responsibilities and collaborations of a class.
Responsibilities can be knowing or doing.
What is the most important requirement for software systems? why?
Rapid development and delivery.
Business operate in a fast changing environments, it is impractical to produce a set of stable software requirements, Software has to evolve quickly to reflect changing business needs.
In rapid development system is developed
system is developed as a series of versions with stakeholders involved in version evaluation.
Which of these is the aim of the agile method?
The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework
list the 5 principles of the agile methods
people not process
Why is the agile method not realistic for large system development
Because of their focus on small, tightly-integrated teams, there are problems in scaling agile methods to large systems.
List some scenarios when is the agile method realistically applicable
When software company is developing a small or medium-size product for sale, Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are not a lot of external rules and regulations that affect the software.
Which ones of the following statement about the agile method are true?
Team members may be unsuited to the intense involvement that characterizes agile methods.
Maintaining simplicity requires extra work.
Contracts may be a problem as with other approaches to iterative development.
What are the steps to the extreme programming release cycle
1) Selecting stories for the release
2) Breaking down stories to ask
3) planning release
4) evaluating the system
5) releasing the software
6)developing/integrating and testing the software
What is pair programming
In XP, programmers work in pairs, sitting together to develop code.
Why is pair programming helpful
This helps develop common ownership of code and spreads knowledge across the team.
It serves as an informal review process as each line of code is looked at by more than 1 person.
It encourages refactoring as the whole team can benefit from this.
Extreme Programming (XP) Principles
focuses on managing iterative development rather than specific technical approaches to agile software engineering.
is the general process of changing a system after it has been delivered.
is the process of making improvements to a program to slow down degradation through change
Reengineering may involve
Redocumenting the system
Translating programs to a modern programming language
Modifying and updating the structure and values of the system's data
What to Refactor?
You might also like...
Test 1 shxt i guess
Software Development Processes
Midterms - Software Engineering Chapter2(Part3)
Other sets by this creator
Chapter 13: Software Engineering
MVA Software Testing Fundamentals 1: Testing Funda…
Other Quizlet sets
Ch 10-15 Homework
Creating America- chapters 2/3