Test 1 Updated Flashcards
(70 cards)
What is software engineering?
The establishment, use, testing and evaluation of sound engineering guidelines and principles to develop a system that can work efficiently and effectively on real machines.
What are tools in SE?
Techniques and technologies that are used to achieve the desired goals and results or to process a specific request
What are methods in SE?
“How”, the steps/instructions to provide technical solutions or “how to’s for building software.
What do methods cover in SE?
a. Planning and estimation (resources such as budget and timeline)
b. System Requirements
c. Designing Data Structures
d. Program architecture algorithm procedures and identify business structure logic
e. Testing/maintenance, training, documentation
What are processes in SE?
Combines methods and tools to enable rational and timely development of the system utilizing an engineering model based approach.
What are the steps to beginning a SE project?
- Identification of an existing problem or issue, identify a goal and define a clear scope
- Resources
- Budget
- Cost
- Guidelines
- Plan
- Timelines
- Deliverables: How and When?
- System Architecture
- Technologies/Tools
- Team Capabilities
- Know your clients
- Plan the Testing Phase
- Identify Deployment strategies, training, etc.
What are the 2 classes of software?
Predictable or determinate and unpredictable or indeterminate.
What are the kinds of software?
- Application software- written to solve a specific need
- Engineering/Scientific software - “Number crunching”, non-traditional algorithms
- Product-line software
specific capabilities but focuses on limited(mass) users. - Embedded Systems
Resides within a product and used to implement and control functions and features for the end user and the system itself.
○ Example: keypad control, heating, smart devices, car fuel control, brakes etc. - Artificial Intelligence
○ Uses non-numerical algorithms to solve a complex program.
○ Example: Robotics applications, expert system, pattern
recognition, (image + voice), neural networks - Web/ Mobile Based Applications
○ Integrated applications for personal or organizational use to solve a problem + provide recommendations.
What are the seven stages of the software life cycle?
- Communication
a. Decision Makers
b. Developers (understand
problem +gather data)
JAD(Joint Application
Development) - Planning
a. Report
b. Agreement
c. Revision of ideas
d. Future questions
• Clients
• Developers
• Team Members - Analysis
a. Generate System Architecture
b. Visualization (diagrams)
i. Data Flow Diagram
ii. UML
iii. State Diagram
iv. Physical /logical
v. Swimlane Diagram
vi. Use case
c. Select a Process Model - Database Design
a. Tables
b. Schema
c. Normalization
d. ERD - Code Construction
a. UI
b. Validation
c. Testing(code)
d. Modular Programming:
Top-Down/Bottom-Up
Approaches
e. SE Principles - Testing
a. Black Box
b. White Box
c. Security - Deployment
a. Deployment techniques
b. Training
c. User support
(documentation)
d. Maintenance
e. Auditing
What are the 5 stages of life cycle developments?
- (Combine 1 + 2) Communication + Planning
- Analysis
- Database Design
- Code Construction
- (Combine 6 + 7) Testing + Deployment
What are the 3 stages of life cycle development (RAD)?
(Extra: 3 Stages: Rapid Application Development(RAD)) :
○ Stage 1: Communication, Planning, Analysis
○ Stage 2: Code cost + DB
○ Stage 3: Testing/Deployment
What are legacy systems?
Systems developed decades ago that have been modified to meet changes in business requirements and computing technologies.
What are some prescriptive models?
- Waterfall Model - Each phase leads into the next. Must make sure requirements are clear.
- Time consuming
- Can’t go back to previous phases - Iterative Model: Each phase is in depth and focuses on the current phases impact on not only the current phase but also all past and future phases. Very thorough and in-depth, extremely time consuming
- RAD
-Incremental model that emphasizes short development cycles
Needs: - Skilled and experiences devs
- Clients are aware of project scope, requirements and deliverables
- Create fully functional units within a short time
What are some evolutionary models?
- Prototype model (non-functional)
-Reference model provides a quick design
-Enables the developers to create a quick design model of a product
Steps:
a. Requirements
b. Generate a quick design -> Visualization
c. Start building prototype
d. Feedback, communication, testing, evaluation
e. Accepting/modifying the idea
f. Designing the real system - Spiral Model
Focus on:
-Assessment/evaluation of each step
-Risk -> Alternatives
Activities:
a. Customer communication
b. Analysis
c. Risk analysis
d. Evaluation and Engineering
e. Assessment of construction steps
- Concurrent model
- Project deployment divided into feature-based/feature-driven teams
- Focus = skills/feature implementation
- Query language: Generate reports
- Accessibility/sharing/security of files: Graphical capabilities
What are the components of DFD?
- Context diagram
- Data flow diagram
- Child DFD
- Physical and logical processes
What needs to be defined in a DFD?
- Identify operational requirements and characteristics
- Functional characteristics: “What” i.e. “What exactly is the system required to do”; behavior
- Non-functional characteristics: “How” i.e. “How is the system going to perform that operations”; performance - Activities, actions, processes the system performs
- Operation requirements related to the system
What are the steps of the process lifecycle?
S/W Process leads to assessment/evaluation/checking. This either leads to modification if the assessment finds issues, and approval if it does not. The modification then leads back to the S/W process, requiring modifications and revisions. On the other hand the approval also leads back to the S/W process, where you must identify any further risks.
What is Agility?
A set of values and principles that teams can use in making decisions on how to develop software.
What are the benefits of Agile programming?
- Very Flexible
- You as the developer decide the rules, and make an agile plan
- Gives a foundation for better software development
What are some potential agile rules?
- Give preference to individuals and interactions rather than processes and tools
- Working software over detailed and comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
What is different about agile as opposed to other programming paradigms?
- Fosters communication and collaboration among all who serve on it
- Represents a reasonable alternative to conventional projects
- Responds to changes, emphasizes rapid delivery of operational software
- Customers are viewed as part of the development team, eliminating the “us and them” attitude
What are the principles of Agile?
- Highest priority to satisfy the customer through early and continuous delivery of valuable software
- Welcome changing requirements
- Deliver working software frequently
- Developers and managers must work together throughout the project
- Build projects around motivated individuals
- When possible have face-to-face conversations - most effective
- Working software is the primary measure of software
- Maintain constant pace
- Continuous attention to technical excellence and design enhances excellence
- Simplicity
- Best architecture and requirements emerge from self-organizing teams
- Regular intervals and adjustments accordingly
What key assumptions does agile address?
- It is difficult to predict which software requirements will persist/change
- Software design and construction will interleave
- Analysis, design, construction and testing are not predictable.
A process must be adaptable
What is XP?
Extreme programming uses an object oriented approach and encompasses a set of rules and practices in the following framework:
a) Planning
b) Design
c) Coding
d) Testing