Conway's Law - sgml/signature GitHub Wiki
Phase Description Plan Plan the work and document the plan Design Design the program Code Implement the design Compile Compile the program and fix and log all defects found Test Test the program and fix and log all defects found Postmortem Record actual time, defect, and size data on the plan
Manager assigns responsibility Owner responsible for the success or failure Consultant offers input or advice Helper assists with or does some of the work Approver signs off on decisions
- **Encapsulation**
Bundles related data and behavior within a single unit (class) to protect internal state and expose only necessary interfaces. In the context of PAM, this ensures each `Activity` manages its own inputs, logic, and outputs without leaking implementation details.
- **Single Responsibility**
Each class or object serves one well-defined purpose. For example, an `Activity` object focuses solely on executing its designated task, while a `Validator` or `Notifier` handles auxiliary concernsβstreamlining complexity and maintainability.
- **Specialization**
Extends base behavior through subclassing. A generic `Activity` may be subclassed into `ScriptedActivity` or `ManualActivity`, each implementing task execution in its own way while inheriting shared structure from the parent.
- **Composable Sub-Activities**
Allows nesting or coordination of smaller activity units within a larger workflow component. Each sub-activity operates independently but contributes to the overall stateβideal for modeling multi-step tasks using helpers, DSL hooks, or chained executables.
- **Dependencies**
Refers to external conditions or upstream activities that must be completed or available before an activity can proceed. These are modeled as required object relationships or `preconditions` that enforce sequencing in execution flows.
- **Blockers**
Represent active constraints or conflicts that prevent an activity from progressing. This may include resource contention, missing approvals, or failed validation checksβtypically triggering fallback logic or escalation paths in well-designed OOP workflows.
- **Risks**
Denotes uncertain events or conditions that may negatively impact activity execution. These are flagged and tracked, often encapsulated in `Risk` objects with probability, impact, and mitigation strategiesβsupporting dynamic decision-making and adaptive flow control.
ββββββββββββββββββββββββββ
β Initiation β
β Identify delivery needβ
ββββββββββββ¬ββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Requirements β
β Scope + Success Criteriaβ
ββββββββββββ¬ββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Standardization β
β Define process templatesβ
ββββββββββββ¬ββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Resource Setup β
β Assign roles/tools β
ββββββββββββ¬ββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Execution Phase β
β Deliver per standards β
ββββββββββββ¬ββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Monitoring & QA β
β Track metrics & qualityβ
ββββββββββββ¬ββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Feedback Loop β
β Post-mortem & refine β
ββββββββββββββββββββββββββ
When working on a specification, there are common mistakes an editor can make when writing conformance requirements that makes them difficult, if not impossible, to test. For technical specifications, the testability of a conformance requirement is imperative: conformance requirements eventually become the test cases that implementations rely on to claim conformance to a specification. If no implementation can claim conformance, or if aspects of the specification are not testable, then the probability of a specification becoming a ratified standard, and, more importantly, achieving interoperability among implementations, is significantly reduced.The most common mistakes that editors make when writing conformance requirements include, but are not limited to:
Creating conformance requirements for products that donβt have behavior, e.g. βan XML file must be well-formed.β β this cannot be tested since it doesnβt say what the outcome is on that condition.
Using a passive voice for describing the behavior, e.g. βan invalid XML file must be ignoredβ β this hides what product is supposed to follow the prescribed behavior.
Using under-defined behaviors, e.g. βa user agent must reject malformed XMLβ without defining the algorithmic process that is to βrejectβ something β this makes it impossible to define the outcome of the testable assertion.
Writing inline assertions helps immensely for large stories.
Every time you fix a bug, you want to avoid making the same mistake again. In order to do so, write down the problem, the workaround, and the permanent solution before you forget
Tracing function calls, generating a workflow data model, and visualization of the data flow is the best way to analyze all the code paths
Define an initialize cache for default data, a user-data cache for event-driven data, and a sync function to merge the two after initialization
- https://www.bmc.com/blogs/conways-law/
- https://uxwriting.etrade.design/title-sentence-casing
- https://resources.sei.cmu.edu/asset_files/TechnicalReport/2000_005_001_13751.pdf
- http://wiki.c2.com/?PersonalSoftwareProcess
- https://www.inc.com/geoffrey-james/its-official-open-plan-offices-are-now-dumbest-management-fad-of-all-time.html
- https://www.slideshare.net/GurbakashPhonsa/software-quality-isocmmpsp
- https://www.pitt.edu/~ckemerer/PSP_Data.pdf
- https://www.win.tue.nl/~wstomv/quotes/humphrey-psp.html
- https://resources.sei.cmu.edu/news-events/events/watts/watts.cfm
- https://www.slideshare.net/alanmcsweeney/conways-law-cognitive-diversity-organisation-transformation-and-solution-design-66522207
- https://developer.salesforce.com/blogs/engineering/2015/04/overcommitting-agile-11-practical-solutions-part-2.html
- https://sites.google.com/a/scrumplop.org/published-patterns/product-organization-pattern-language/conway-s-law
- https://skeltonthatcher.com/wp-content/uploads/2017/12/How-to-choose-tools-for-DevOps-and-CD-2017.pdf
- https://www.thoughtworks.com/insights/blog/demystifying-conways-law
- http://dau.dodlive.mil/2015/09/21/requirements-engineering-in-an-agile-software-development-environment/
- https://www.directives.doe.gov/draft/0415.1-EGuide-2-draft/@@images/file
- https://apps.dtic.mil/dtic/tr/fulltext/u2/a512409.pdf
- http://users.csc.calpoly.edu/~jdalbey/301/Forms/PSP0ProcessScript.pdf
- https://www.lanl.gov/projects/CartaBlanca/webdocs/PhippsPaperOnJavaEfficiency.pdf
- https://www.agilealliance.org/wp-content/uploads/2015/12/ExperienceReport.2014.Zuill_.pdf
- https://www.agilealliance.org/wp-content/uploads/2016/09/2263_BeyondBudgeting.pdf
- https://www.agilealliance.org/wp-content/uploads/2016/01/Lean_UX_500S_020311.pdf
- https://www.agilealliance.org/wp-content/uploads/2016/08/The_Prevalence_of_UX_Design_in_Agile_Development_Processes_in_Industry.pdf
- https://www.agilealliance.org/wp-content/uploads/2016/01/Agile2011_ClaudiaMelo_.pdf
- http://cobec.com/wp-content/uploads/2016/08/Agile-and-Function-Points-A-Winning-Combination-by-Daniel-French.pdf
- https://www.pomsmeetings.org/ConfProceedings/065/Full%20Papers/Final%20Full%20Papers/065-1028.pdf
- https://www.bennadel.com/blog/3688-solutions-don-t-have-to-work-for-everyone.htm
- https://tech.gsa.gov/playbooks/database/
- https://medium.com/@pascalwrites/thought-value-of-mental-energy-95402f16a697
- https://www.techrepublic.com/article/how-to-become-an-effective-software-development-manager-and-team-leader-tips-and-advice-from-drupal-founder-dries/
- https://softwareengineering.stackexchange.com/questions/92862/im-a-manager-how-can-i-improve-work-relationships-and-communication-with-progr
- https://softwareengineering.stackexchange.com/questions/103807/what-is-negative-code