Skip to content

Software Design

Software design is a process of problem-solving and planning for a software solution. After the purpose and specifications of software is determined, software developers will design or employ designers to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view.

The software requirements analysis (SRA) step of a software development process yields specifications that are used in software engineering. If the software is "semiautomated" or user centered, software design may involve user experience design yielding a story board to help determine those specifications. If the software is completely automated (meaning no user or user interface), a software design may be as simple as a flow chart or text describing a planned sequence of events. There are also semi-formal methods like Unified Modeling Language and Fundamental modeling concepts. In either case some documentation of the plan is usually the product of the design.

A software design may be platform-independent or platform-specific, depending on the availability of the technology called for by the design.

The act of design includes:

  • Consideration of many possible technology options
  • Examination and identification of constraints
  • Thought about the pros and cons of using various patterns and styles
  • Comparing various splits of role and responsibility
  • Looking at various tradeoffs of complexity versus function
  • Formulation of opinion on possible future directions of system growth

A large proportion of this information is lost when the design document is written, because the focus is typically on providing a (notionally) definitive view of how a system should be structured which might be in the form of a bunch of UML diagrams or merely a collection of Visio-type diagrams and explanation of what each of the boxes in the diagrams does. At the code-level there is almost no chance that any of this information will have been retained. Yet this information is of high value since it:

  • is the explanation as to why a design is the way it is
  • provides reviewers with a clearer view of what was and was not considered
  • forms the basis for assessment of the maturity of a designer and can be used for coaching/mentoring
  • can provide insight for those with less experience
  • contains assumptions which if breached by changes in circumstance would dictate a re-design
  • dictates to a large extent how suitable for purpose a design might be
    Thus I believe It's important to expose elements of the act of design via documentation alongside the design itself, conversations during the design work etc.

SOA Design rules

Policy rule Doc status H2A A2A ACS CS Last PAB dicussion --- --- --- --- --- --- --- P1. A service shall have one named owner P2. A service shall provide documented business value P3. A service shall do one only thing, and one thing well P4. A H2A service (webpart or portlet) shall be an independent component P5. A H2A Service (webpart or portlet) shall be a part of a bigger whole, not trying to dictate other H2A services P6. A H2A service shall not have internal workflow 2007.06.08 P7. Too generic webparts or portlets shall be avoided P20. All services shall be in the service universe P21. A service shall be categorized (OW SOA category) P22. A service shall have an "authentication, authorisation, endpoint strategy" P23. A service shall document its Service Level Agreement SLA (response time, availabillity++) P30. A service shall have a versioning strategy (ACS, CS) P31. A service shall provide for audit and monitoring of service usage P32. A service shall document its Service Level Agreement SLA (response time=30ms, availabillity=99.995%) P40. A service shall provide at least one Evolving Service Endpoint
P1. A service shall have one named owner P2. A service shall provide documented business value P21. A service shall be categorized (OW SOA category) P3. A service shall do one only thing, and one thing well P4. A H2A service (webpart or portlet) shall be an independent component
P41. A service shall provide heartbeat and traffic monitoring P5. A H2A Service (webpart or portlet) shall be a part of a bigger whole, not trying to dictate other H2A services P6. A H2A service shall not have internal workflow P7. Too generic webparts or portlets shall be avoided P90. A service shall have a documented coupling to the contractual and requirement for service usage
P1. A service shall have one named owner P2. A service shall provide documented business value P20. All services shall be in the service universe P21. A service shall be categorized (OW SOA category) P22. A service shall have an "authentication, authorisation, endpoint strategy"
P23. A service shall document its Service Level Agreement SLA (response time, availabillity++) P3. A service shall do one only thing, and one thing well P30. A service shall have a versioning strategy (ACS, CS) P31. A service shall provide for audit and monitoring of service usage P31. A service shall provide for audit and monitoring of service usage
P41. A service shall provide heartbeat and traffic monitoring P90. A service shall have a documented coupling to the contractual and requirement for service usage
P1. A service shall have one named owner P2. A service shall provide documented business value P20. All services shall be in the service universe P21. A service shall be categorized (OW SOA category) P22. A service shall have an "authentication, authorisation, endpoint strategy"
P23. A service shall document its Service Level Agreement SLA (response time, availabillity++) P3. A service shall do one only thing, and one thing well P30. A service shall have a versioning strategy (ACS, CS) P30. A service shall have a versioning strategy (ACS, CS) P31. A service shall provide for audit and monitoring of service usage
P31. A service shall provide for audit and monitoring of service usage P32. A service shall document its Service Level Agreement SLA (response time=30ms, availability=99.995%) P32. A service shall document its Service Level Agreement SLA (response time=30ms, availabillity=99.995%) P40. A service shall provide at least one Evolving Service Endpoint P41. A service shall provide heartbeat and traffic monitoring
P90. A service shall have a documented coupling to the contractual and requirement for service usage
P1. A service shall have one named owner P2. A service shall provide documented business value P20. All services shall be in the service universe P21. A service shall be categorized (OW SOA category) P22. A service shall have an "authentication, authorisation, endpoint strategy"
P23. A service shall document its Service Level Agreement SLA (response time, availabillity++) P3. A service shall do one only thing, and one thing well P30. A service shall have a versioning strategy (ACS, CS) P30. A service shall have a versioning strategy (ACS, CS) P31. A service shall provide for audit and monitoring of service usage
P31. A service shall provide for audit and monitoring of service usage P32. A service shall document its Service Level Agreement SLA (response time=30ms, availability=99.995%) P32. A service shall document its Service Level Agreement SLA (response time=30ms, availabillity=99.995%) P40. A service shall provide at least one Evolving Service Endpoint P40. A service shall provide at least one Evolving Service Endpoint
P41. A service shall provide heartbeat and traffic monitoring P42. A Core service shall have orthogonal functionality P42. A Core service shall have orthogonal functionality P90. A service shall have a documented coupling to the contractual and requirement for service usage