Midterm Material - Intro to SE Flashcards
What is the goal of software engineering?
To produce fault free software that satisfies user needs, is delivered on time, and within budget
How is SE different from traditional engineering disciplines?
Other engineers work with physical products while SEs work with logical abstract objects. Maintaining said physical object is simple but maintaining software can be time consuming and costly. When software crashes, it doesn’t need to be completely redone unlike a bridge.
What proportion of software projects are successful?
About one-third
Why are economic factors important in SE
Need to consider the balance of costs and benefits related with a new piece of software. It may make things faster but it could cost a lot to build and then trains taff to use it proficiently.
What is a software development life-cycle?
A description of the steps that should be performed when building software.
What are the major steps in a SDLC?
Requirements, analysis, design, implementation, testing, maintenance
What is the most expensive phase of the SDLC and why?
Maintenance. (About 2/3rds of the cost). This is because the timeline of maintenance is many years compared to a few months to develop and integrate.
When is finding errors in software more costly and why?
Finding errors is more costly the further along in the SDLC it is found. This is because when an error is found early, it can be resolved without needing to change many things. However, if it is found in a late stage you usually need to fix it in your current stage and all preceding steps where the error was used.
What are some problems that arise when developing software with a team?
Interface problems among code components can occur as there may be a mismatch of parameters and data produced by different team members. There can also be communications problems with team members: the larger the team size, the higher probability of miscommunication.
How can software engineers act ethically?
Going beyond simply upholding the law. Also looking at moral standards and principles of society when developing.
What are some issues surrounding professional responsibility of software engineers?
Software engineers must respect confidentiality of employers and clients. They must accurately represent their level of competence. They must follow local laws governing use of intellectual property. They should not use their expertise to misuse computers.
Describe a situation where the client, developer, and user are the same person.
Anything you are developing by yourself that you will end up using afterwards (personal projects)
What problems can arise if the client, developer, and user are the same person? How can the problems be solved?
You are unable to get feedback from clients, documentation may become messy, you are less likely to follow ethical practices and security requirements. To resolve this you can have others looks over your work and also take personal responsibility to follow good SE practices.
What’s the difference between a client and a user?
The client is the person paying you to develop the software while the user is the literal end user of the product. They may be the same but not necessarily
What are some advantages if the client, developer, and user are the same person?
Communication is easier. There is a deep understanding of the requirements of the software. It is easier to budget and forecast development since you know exactly what you’re doing.