Overview
50% exam, 50% project
Managing large amount of information in an engineering perspective.
Need to do basic programming.
Will be looking at the OO side (high level concept).
Objective: To make high quality, complex large systems to last a sufficient long time which can deal with changes and new features, etc.
Software Engineering: engineering of software whereby will last a long time – resistant to change and can maintain.
————————————————————————————-
q) What does it mean to be doing “engineering”?
Describe each stage of engineering process and looks at the tools for the stages.
Iterative process going through clockwise cycle.
Look at UML (modeling language) from clients, design patterns, GUI (elaborated in human computer interaction class), Java programming.
Note: Keep in mind that the project cannot be done by 1 person. A project so big has its own sets of challenges.
Will be looking at some quantitative matters. Project will be built upon the system from the labs.
Look at pass year papers to see what kind of questions are usually asked.
Looking to have a better appreciation in why we want Engineering approach to Software Design Development.
1st stage – needs in all sorts of formats and forms.
Involves large group of people.
Constraints (eg time, cost, resources)
Qualities of “user needs” to “solution”.
Using “Engineering” – Analysis / Models / Designs / Testing
Software – 3 types
1) Commercial off the shelf (COTS) – MSOffice, SAS, Oracle, etc
2) Custom made – will be looking at software development in this category
3) Embedded – built into hardware
Software Crisis
Software is a product (can’t really hold and visualize thus intangible)
Can’t determine the efforts behind it. Can’t tell if its good / bad software until one uses it.
Software crisis happens when people underestimate amount of time to develop software. Software system delayed or never delivered or quality is poor.
Keep in mind how to avoid software crisis.
Software crisis whereby system is not used is when requirements was not sourced out properly.
Quality – how to identify?
Who is producing and how many?
Changes you introduce, have you considered the impact it may have? Is there a formal standard for introducing the change? Bugs usually don’t surface until much later. Unpredictable manner when the bugs come out.
What is the Software Engineering approach?
1) Solving customer’s problems – make it as the priority goal. If not it won’t be appreciated.
- Not to add unnecessary features
- Buy vs. build
- Effective communication to identify and understand the problem
- Allows Software Engineers to know what needs to be done
2) Systematic development and evolution
- Apply well understood techniques. There’s well accepted practices which are standards.
3) Large, high quality software system
- Large = complex
- Teamwork and coordination
- Challenge dividing up the work
- End product should have quality
4) Within cost, time and constraints
5) Software quality
- Usability
- Efficiency
- Reliability
- Maintainability
- Reusability – In other future projects to save time, cost and constraints
Benefits must outweigh cost
3 types of projects
1) Evolutionary, Maintenance, Work on Legacy Systems
2) Greenfield – from scratch and lets flexibility
3) Build on framework – plug together components already developed
Requirements and Specifications – from customer and make it form of specifications
1) Domain analysis
2) Define the problem
3) Gather requirements
4) Requirements analysis – have to define the scope in the final system
5) Requirements specifications – acts as formal communication document in the team
Design:
What hardware and software support the system.
High level architecture – identify components and internals
Quality assurance via testing – must have formal documentation.
9 themes to keep in mind.
Want to see information in the forms of concepts (object orientation).
Many objects with own attributes and behaviors, see their form of interaction and association. “Suppose to be good”
Want to see things quantifiable: whether it’s good or not good.
Iterative and agile.
Communicating using documentation – important element
Need to know how to deal with risks and changes – risk management