Intro to Software Engineering Flashcards
First Step in software development
Getting requirements of customers
Why create requirements document
It tells customers what they are getting and project members what they’re building
What is the 2nd step of software development?
Gather high-level design of software
What does the high-level design include?
Information about what data design to use: 2-tier or 3-tier or direct access.
2 tier is client-server architecture
3-tier is client-server where there is a presentation, data processing and data storage tiers
data process
What do you do in the high level design?
break the project into large pieces that handle the project’s major areas of functionality.
What happens in the development step?
Programmers continue refining the low-level design until they know how to implementt those designs in the code
What are the parts of the deployment step?
New computers for the back-end database
Special data maintenance chores to keep the old and new databases synchronized
On-site support while users get to know the new system
New computers for users
A new network
User training
Parallel operations while some users get to know the new system and other users keep using the old system
Massive bug fixing when 250 users discover dozens or hundreds of bugs that testing didn’t uncover
What step comes after the deployment step?
The maintenance step
What is a formal definition of software engineering?
An organized, analytical approach to the design, development, use, and maintenance of software
Why is Software Engineering Important?
It lets you control what otherwise might seem like a random whirlwind of chaos
What is the Waterfall development model?
Requirements
Analysis and Design – high-level design
Development / Coding
Testing
Deployment and Maintenance
Waterfall approach is based on
The process of manufacturing products
True or False? The Waterfall model has well-defined checklists, processes, and tools and comprehensive documents
True
Requirements gathering
You need to find out who the customers are, what they want, and what they need.
requirements Documents
These documents tell the cusotmers what they will be getting, and the project members what they will be building
High Level Design
includes such things as decisions about what platforms to use (desktop, laptop, table, or phone), what data design to use (direct access, 2-tier, or 3-tier) an dinterfaces to other systems (such as external purchasing systems.
Should also include information about the project architecture at a relatively high level. This might include modules or classes to build
Low Level Design
Should take the chunks of the high-level design and break each of those down into manageable pieces for each team involved in the development.
Like the database for a Student grades site, should include tables for the Student, available student Courses, and the Grades in those courses for each Student
Development
Programmers continue refining the low-level design until it would be easier just to write the code instead.
testing/bug hunting also occurs during this phase
Testing
Break the code into pieces
- Developers test it
- testers test it (people who didn’t develop the code)
- once the code seems to be working then the code is inserted back into the main file and the whole thing is tested.
Good testing practice
Anytime you change the code you need to test it to make sure everything works as it should
Speaking about finding and fixing bugs, what is one of the most important rules of software engineering
The longer a bug remains undetected, the harder it is to fix