The unified software development process
The unified software development process
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Practical perspectives on software architectures, high-level design, and evolution
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
Scenario-Based Analysis of Software Architecture
IEEE Software
Idioms and Patterns as Architectural Literature
IEEE Software
Practical perspectives on software architectures, high-level design, and evolution
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
Incremental introduction of behaviors with static software architecture
Computer Standards & Interfaces - Special issue: Adaptable software architectures
Experiences on developing and using a tool support for formal specification
Ada-Europe'03 Proceedings of the 8th Ada-Europe international conference on Reliable software technologies
Hi-index | 4.10 |
Ambiguous requirements and those that emerge late in the design cycle often complicate development and throw off established schedules. The authors describe how reformulating information missing at the design stage into a flexibility requirement can turn the absent data into a design driver. Designers constantly run into issues that have yet to be understood through specification, system design, or standardization. Changes in evolving technologies and businesses often result in unstable system requirements. Reliable hardware or mechanical details might not be available until very late in the development process. Yet engineers must initiate software development even though some subsystem details have not yet been completely defined. Missing information and related flexibility requirements can lead to a design plagued by many well-known problems that affect performance, modularity, scalability, and clear separation of concerns. In some cases, developers must sacrifice rules of thumb to maintain planned development schedules. Providing flexibility for everything in the system isn't possible, so developers will always need to determine the static requirements and explicitly state where continued development and rapid modification require flexibility.