Software Engineering Flashcards
Traits of Successful Software Engineers
- Sense of individual responsibility
- Aware of the needs of team members and stakeholders
- Honest about design flaws and offers constructive criticism
- Resilient under pressure
- Sense of fairness
- Attention to detail
- Pragmatic
Software Engineer
- A software engineer uses engineering principles to plan, design, develop, test, and maintain computer software and mobile applications.
What is software?
Software is a set of items or objects that form a “configuration” that includes
1. Instruction
2. Data structure
3. Documentation
Software roles
- A product
- A vehicle for delivering a product
why is Software a product
o Delivers computing potential
o Produces, manages, acquires, modifies, displays, or transmits information
why is software a vehicle for delivering product
o Supports or provides system functionality
o Controls other programs
o Effects communication
o Helps build other software
process pattern types
stage pattern, task pattern, phase pattern
Framework activities
o Communication
o Planning
o Modeling
o Construction
o Deployment
Umbrella activities
- Software Project Tracking and Control
- Risk Management
- Software Quality Assurance
- Technical Reviews
- Measurement
- Software Configuration Management
- Reusability Management
- Work Product Preparation and Production
Importance of software engineering
- The number of people who have an interest in the features and functions provided by an application has grown dramatically
- The requirements have grown complex, the programs have to be developed by large teams of people
- Individuals, businesses, and governments rely on software for strategic and tactical decision-making as well as day-to-day operations and control
- As the perceived value of an application grows, it is likely that its user base and longevity grows, and demands for adaptation and enhancement will grow
Software process
an adaptable approach that enables the software team to choose the appropriate set of work actions and tasks
polya’s problem solving
- Understand the problem
- Plan a solution
- Carry out the plan
- Examine the results for accuracy
Software Engineering Domain
- System software
- Application software
- Engineering/ Scientific software
- Embedded software
- Product-line software
- AI software
Why must software change?
- Software must be adapted to meet the needs of new computing technology
- Software must be enhanced to implement new business requirements
- Software must be extended to make it interoperable with other more modern systems
- Software must be re-architected to make it viable within a network environment
Software Categories
WebApps
Mobile Application
Cloud Computing
Product-Line Software
Task set
the actual work to be done to accomplish the objectives of a software engineering action
Process Pattern Types
o Stage pattern
o Task pattern
o Phase pattern
Process Assessment and Improvement
- Standard CMMI Assessment Method for Process Improvement
- CMM-Based Appraisal for Internal Process Improvement
- The SPICE
- ISO 9001:2000 for Software
Standard CMMI Assessment Method for Process Improvement
provides a five-step process assessment model that incorporates five phases: initiating, diagnosing, establishing, acting, and learning.
CMM-Based Appraisal for Internal Process Improvement
provides a diagnostic technique for assessing the relative maturity of a software organization; uses the SEI CMM as the basis for the assessment
The SPICE
defines a set of requirements for software process assessment. The intent of the standard is to assist organizations in developing an objective evaluation of the efficacy of any defined software process
ISO 9001:2000 for Software
a generic standard that applies to any organization that wants to improve the overall quality of the products, systems, or services that it provides. The standard is applicable to software organizations and companies.
describe Prescriptive Process Models
- Prescriptive process models advocate an orderly approach to software engineering
state the prescriptive process models
- The Waterfall Model
- The V-Model
- The Incremental Model
- The Evolutionary Model
Prototyping
- customer defines a set of general objectives for software, but does not identify detailed requirements for functions and features
- The prototyping paradigm assists to better understand what is to be built when requirements are fuzzy
Agile Process
- Is driven by customer descriptions of what is required
- Recognizes that plans are short-lived
- Develops software iteratively with a heavy emphasis on construction activities
- Delivers multiple ‘software increments’
- Adapts as changes occur
Types of Agile Process
Extreme Programming (XP)
Industrial XP (IXP)
Scrum
Dynamic Systems Development Method
XP Planning
Begins with the creation of “user stories”.
Agile team assesses each story and assigns a cost.
Stories are grouped to for a deliverable increment.
A commitment is made on delivery date
After the first increment, “project velocity” is used to help
define subsequent delivery dates for other increments.
XP Design
Follows the KIS (Keep It Simple) principle.
Encourage the use of CRC (class-responsibility-collaborator) cards.
For difficult design problems, suggests the creation of “spike solutions”
Encourages “refactoring”
XP Coding
Recommends the construction of a unit test for a store before coding commences
Encourages “pair programming”
XP Testing
All unit tests are executed daily
“Acceptance tests” are defined by the customer and executed to assess customer visible functionality
Extreme Programming consist of?
XP Planning, XP Design, XP Coding, XP Testing
6 new practices of Industrial XP
Readiness assessment
Project community
Project chartering
Test driven management
Retrospectives
Continuous learning
features of scrum
Development work is partitioned into “packets”.
Testing and documentation are on-going as the product is constructed.
Work occurs in “sprints” and is derived from a “backlog” of existing requirements.
Meetings are very short and sometimes conducted without chairs.
“Demos” are delivered to the customer with the time-box allocated.
9 principles of Dynamic Systems Development Method
Active user involvement is imperative.
DSDM teams must be empowered to make decisions.
The focus is on frequent delivery of products.
Fitness for business purpose is the essential criterion for acceptance of deliverables.
Iterative and incremental development is necessary to converge on an accurate business solution.
All changes during development are reversible.
Requirements are baselined at a high level
Testing is integrated throughout the life-cycle.
Agile Modeling Principles
- Model with a purpose
- Use multiple models
- Travel light
- Content is more important than representation
- Know the models and the tools you use to create them
- Adapt locally
Agile Unified Process Activities
- Modeling
- Implementation
- Testing
- Deployment
- Configuration and project management
- Environment management
what is a software prototype?
A software prototype is a preliminary version of a software application or system that is developed for the purpose of testing, evaluating, and demonstrating concepts or functionalities.
Describe function of analysis model
provide a description of the required informational, functional, and behavioural domains for a computer-based system.
elements of analysis model
scenario-based models
class models
behavioral models
flow models
list the classes of models that
can be created
Requirements models represent the customer requirements by depicting the software in three different domains: the information domain, the functional domain, and the behavioral domain.
Design models represent characteristics of the software that help practitioners to construct it effectively: the architecture, the user interface, and component-level
detail.
List the Requirements Modeling Principles
Principle #1. The information domain of a problem must be represented and understood.
Principle #2. The functions that the software performs must be defined.
Principle #3. The behavior of the software must be represented.
Principle #4. The models that depict information, function, and behavior must be partitioned in a manner that uncovers
detail in a layered fashion.
Principle #5. The analysis task should move from essential information toward implementation detail.
what are inception and elicitation?
it provides you with the information
you’ll need to begin writing use cases.
Requirements gathering meetings, QFD, and other requirements engineering mechanisms are used to:
Identify stakeholders.
Define the scope of the problem.
Specify overall operational goals.
Establish priorities.
Outline all known functional requirements.
Describe the things (objects) that will be manipulated by the system.
what is use-case
A scenario that describes a “thread of usage” for a system.
Actors represent the roles people or devices play as the system functions.
Users can play a number of different roles in a given scenario.
describe class-based modeling
Class-based modeling represents:
Objects that the system will manipulate.
Operations that will be applied to the objects to effect the manipulation.
Relationships between the objects.
Collaborations that occur between the classes that are defined.
describe the Manifestations of Analysis Classes
Analysis classes manifest themselves in one of the following ways:
External Entities that produce or consume information.
Things that are part of the information domain for the problem.
Occurrences or Events that occur within the context of the system operation.
Roles played by people who interact with the system.
Organizational Units that are relevant to an
application.
Places that establish the context of the problem and the overall function.
Structures that define a class of objects or related classes of objects
List Out the Potential Classes
Retained Information.
Needed Services.
Multiple Attributes.
Common Attributes.
Common Operations.
Essential Requirements.
Operations can be divided into four broad categories:
Operations that manipulate data in some way
Operations that perform a computation
Operations that inquire about the state of an object
Operations that monitor an object for the occurrence of a controlling event
state the function of the CRC model
Class-responsibility-collaborator (CRC) modeling provides a simple means for identifying and organizing the classes that are relevant to system or product requirements.
describe inception
ask a set of questions that establish:
1. Basic understanding of the problem
2. The people who want a solution
3. The nature of the solution that is desired
4. The effectiveness of preliminary communication and collaboration between the customer and the developer
describe Elicitation
elicit requirements from all stakeholders
describe elaboration
create an analysis model that identifies data, function and behavioral requirements
describe the modeling principles
two classes of models can be created:
Requirements models (analysis models) represent the customer requirements by depicting the software in three different domains: the information
domain, the functional domain, and the behavioral domain.
Design models represent software characteristics that help practitioners construct it effectively: the architecture, the user interface, and component-level detail.
describe specification in requirement engineering
it can be:
1. A written document
2. A set of models
3. A formal mathematical
4. A collection of user scenarios (use-cases)
5. A prototype
describe validation in requirement engineering
a review mechanism that looks for:
1. Errors in content or interpretation
2. Areas where clarification may be required
3. Missing information
4. Inconsistencies
6. Conflicting or unrealistic requirements
what is done during requirement gathering
- Meetings are conducted and attended by both software engineers and customers
- Rules for preparation and participation are established
- An agenda is suggested
- A “facilitator” (customer, developer, or outsider) controls the meeting
- A “definition mechanism” is used