CIS 1250 lec 3/4
- Software design is the process through which specifications (requirements) are transformed into a plan for building the software.
- This is the stage where choices are made. How are you solving the problem?
- Spending time and producing quality software design speeds up the implementation and leads to better (less errors) software.
Software design is NOT Artistic design
- Software design focuses on the utility and effectiveness of the product.
- Artistic design conveys meaning or something which appeals to the viewer.
- Architects and industrial designers do both.
- The increasing sophistication of every aspect of design.
- The increase in knowledge in all fields requires an increase in experts to develop in those fields.
- The rush to market.
Cost of collaboration
- Not many tasks can be easily partitioned for separate individuals to work on.
- Partitioning costs.
- Creating crisp interfaces between subtasks is a lot of work.
- There will be inconsistencies which must be reconciled.
- Once the parts are complete their integration is costly.
- The cost of relaying information to team members so they share a common vision of the product takes time away from a designer.
- Communication between all members of the group increases the design cost.
- A change control system (source control for software) must be used to manage updates and control what parts of the system a designer can access.
- A problem with design is that the result can be confusing or inelegant because of many clashing ideas. A solution is to empower someone to be the system Architect.
When collaboration helps
- Determining the needs of the stakeholders (clients)
- Several minds are better at thinking of different questions and kinds of questions to ask the client.
- Design reviews are an essential collaborative step. This is when different designers and clients with different expertise review the design and look for concerns. Different specialists will have varying perspectives on what is important. People who build, use and maintain a product will have different input as to what is important. Graphical representations are important.
Software development process
Empirical or rational?
- Rationalist – design only by thinking
- Empiricists – thought is not enough
User and user model
- We must understand people as they are rather than as market segments or demographics “ -” “ subject to change” book.
- 4 ways of thinking
- Gulp products
- Home economics
- Type A personality
- Performance to cost ratio.
- Budgeted resources
- May change.
- Both good and bad
- Real or obsolete?
- Other designer’s solutions
- Safe models, act as starting points
- Standards – not to be ignored
- Software design is the process through which you plan how to solve a task
- What’s happening during the process?
- Learn more about the problem
- Build a model/plan
- User prototypes
- Refine the plan to build the right solution
- Large teams, small teams
- Driven by consensus
- Veto oriented
Does product process limit great design?
- What about innovation?
- Does process limit creativity?
- 20% of the variables are going to cause 80% of the effects
- 20% effort result in 80% results
- What does this mean to software developers?
- You know what to focus your energy on in case of error
- Accessibility = Operability (2-year-old should be able to user it)
- Accessibility = Simplicity (Easy to understand)
- Accessibility = Forgiveness (easy back and forth)
- Advance Organizer (to describe what to expect)