GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing techwhirl.com — Writing Software Requirements Specifications (SRS) | TechWhirl Writing Software Requirements Specifications (SRS)
"A what?" you ask with a look of semi-shock. Panic sets in. "What did I do to deserve this? I don't even know where to start! Maybe someone on the TECHWR-L list can help...." For technical writers who haven't had the experience of designing software requirements specifications (SRSs, also known as software functional specifications or system specifications) templates or even writing SRSs, they might assume that being given the opportunity to do so is either a reward or punishment for something they did (or failed to do) on a previous project. Actually, SRSs are ideal projects for technical writers to be involved with because they lay out the foundation for the development of a new product and for the types of user documentation and media that will be required later in the project development life cycle. It also doesn't hurt that you'd be playing a visible role in contributing to the success of the project. This article will describe what the software requirements specifications document is and why it's important, discuss how and why technical writers should be involved with them, and discuss the critical elements for writing an SRS. Although this article does not attempt to address all aspects of developing SRSs, it aims to help you determine the scope for such a project, to provide some guidelines for writing SRSs, and to provide additional resources. Hopefully with this information, you'll not be asking, "Why me?" but proclaiming "Why not me?" What are Software Requirements Specifications?An SRS is basically an organization's understanding (in writing) of a customer or potential client's system requirements and dependencies at a particular point in time (usually) prior to any actual design or development work. It's a two-way insurance policy that assures that both the client and the organization understand the other's requirements from that perspective at a given point in time. The SRS document itself states in precise and explicit language those functions and capabilities a software system (i.e., a software application, an eCommerce Web site, and so on) must provide, as well as states any required constraints by which the system must abide. The SRS also functions as a blueprint for completing a project with as little cost growth as possible. The SRS is often referred to as the "parent" document because all subsequent project management documents, such as design specifications, statements of work, software architecture specifications, testing and validation plans, and documentation plans, are related to it. It's important to note that an SRS contains functional and nonfunctional requirements only; it doesn't offer design suggestions, possible solutions to technology or business issues, or any other information other than what the development team understands the customer's system requirements to be. A well-designed, well-written SRS accomplishes four major goals:
Software requirements specifications are typically developed during the first stages of "Requirements Development," which is the initial product development phase in which information is gathered about what requirements are needed--and not. This information-gathering stage can include onsite visits, questionnaires, surveys, interviews, and perhaps a return-on-investment (ROI) analysis or needs analysis of the customer or client's current business environment. The actual specification, then, is written after the requirements have been gathered and analyzed. Why Should Technical Writers be Involved with Software Requirements Specifications?Unfortunately, much of the time, systems architects and programmers write software requirements specifications with little (if any) help from the technical communications organization. And when that assistance is provided, it's often limited to an edit of the final draft just prior to going out the door. Having technical writers involved throughout the entire SRS development process can offer several benefits:
In short, a requirements-gathering team consisting solely of programmers, product marketers, systems analysts/architects, and a project manager runs the risk of creating a specification that may be too heavily loaded with technology-focused or marketing-focused issues. The presence of a technical writer on the team helps place at the core of the project those user or customer requirements that provide more of an overall balance to the design of the software requirements specifications, product, and documentation. What Kind of Information Should an SRS Include?You probably will be a member of the SRS team (if not, ask to be), which means SRS development will be a collaborative effort for a particular project. In these cases, your company will have developed SRSs before, so you should have examples (and, likely, the company's SRS template) to use. But, let's assume you'll be starting from scratch. Several standards organizations (including the IEEE) have identified nine topics that must be addressed when designing and writing an SRS:
But, how do these general topics translate into an SRS document? What, specifically, does an SRS document include? How is it structured? And how do you get started? An SRS document typically includes four ingredients, as discussed in the following sections:
Begin with an SRS Template
In recommending using existing templates, I'm not advocating simply copying a template from available resources and using them as your own; instead, I'm suggesting that you use available templates as guides for developing your own. It would be almost impossible to find a specification or specification template that meets your particular project requirements exactly. But using other templates as guides is how it's recommended in the literature on specification development. Look at what someone else has done, and modify it to fit your project requirements. (See the sidebar called "Resources for Model Templates" at the end of this article for resources that
Table 1 shows what a basic SRS outline might look like. This example is an adaptation and extension of the IEEE Standard 830-1998: Table 1 A sample of a basic SRS outline
Table 2 shows a more detailed software requirements specifications outline, showing the structure of an SRS template. This was reprinted with permission by its creator Ken Rigby. Table 2 A sample of a more detailed SRS outline
Identify and Link Requirements with SourcesAs noted earlier, the SRS serves to define the functional and nonfunctional requirements of the product. Functional requirements each have an origin from which they came, be it a use case (which is used in system analysis to identify, clarify, and organize system requirements, and consists of a set of possible sequences of interactions between systems and users in a particular environment and related to a particular goal), government regulation, industry standard, or a business requirement. In developing an SRS, you need to identify these origins and link them to their corresponding requirements. Such a practice not only justifies the requirement, but it also To link requirements with their sources, each requirement included in the SRS should be labeled with a unique identifier that can remain valid over time as requirements are added, deleted, or changed. Such a labeling system helps maintain change-record integrity while also serving as an identification system for gathering metrics. You can begin a separate requirements identification list that ties a requirement identification (ID) number with a description of the requirement. Eventually, that requirement ID and description become part of the SRS itself and then part of the Requirements Traceability Matrix, discussed in subsequent paragraphs. Table 3 illustrates how these SRS ingredients work together. Table 3 This sample table identifies requirements and links them to their sources
Establish Business Rules for Contingencies and Responsibilities"The best-laid plans of mice and men..." begins the famous saying. It has direct application to writing software requirements specifications because even the most thought-out requirements are not immune to changes in industry, market, or government regulations. A top-quality SRS should include plans for planned and unplanned contingencies, as well as an explicit definition of the responsibilities of each party, should a contingency be implemented. Some business rules are easier to work around than others, when Plan B has to be invoked. For example, if a customer wants to change a requirement that is tied to a government regulation, it may not be ethical and/or legal to be following "the spirit of the law." Many government regulations, as business rules, simply don't allow any compromise or "wiggle room." A project manager may be responsible for ensuring that a government regulation is followed as it relates to a project requirement; however, if a contingency is required, then the responsibility for that requirement may shift from the project manager to a regulatory attorney. The SRS should anticipate such actions to the furthest extent possible. Establish a Requirements Traceability MatrixThe business rules for contingencies and responsibilities can be defined explicitly within a Requirements Traceability Matrix (RTM), or contained in a separate document and referenced in the matrix, as the example in Table 3 illustrates. Such a practice leaves no doubt as to responsibilities and actions under certain conditions as they occur during the product-development phase. The RTM functions as a sort of "chain of custody" document for requirements and can include pointers to links from requirements to sources, as well as pointers to business rules. For example, any given requirement must be traced back to a specified need, be it a use case, business essential, industry-recognized standard, or government regulation. As mentioned previously, linking requirements with sources minimizes or even eliminates the presence of spurious or frivolous requirements that lack any justification. The RTM is another record of mutual understanding, but also helps during the development phase. As software design and development proceed, the design elements and the actual code must be tied back to the requirement(s) that define them. The RTM is completed as development progresses; it can't be completed beforehand (see Table 3). What Should I Know about Writing an SRS?Unlike formal language that allows developers and designers some latitude, the natural language of software requirements specifications must be exact, without ambiguity, and precise because the design specification, statement of work, and other project documents are what drive the development of the final product. That final product must be tested and validated against the design and original requirements. Specification language that allows for interpretation of key requirements will not yield a satisfactory final product and will likely lead to cost overruns, extended schedules, and missed deliverable deadlines. Table 4 shows the fundamental characteristics of a quality SRS, which were originally presented at the April 1998 Software Technology Conference presentation "Doing Requirements Right the First Time." Reprinted with permission from the Software Assurance Technology Center at NASA (http://www.gsfc.nasa.gov/). These quality characteristics are closely tied to what are referred to as "indicators of strength and weakness," which will be defined next. Table 4 The 10 language quality characteristics of an SRS
What makes an SRS "good?" How do we know when we've written a "quality" specification? The most obvious answer is that a quality specification is one that fully addresses all the customer requirements for a particular product or system. That's part of the answer. While many quality attributes of an SRS are subjective, we do need indicators or measures that provide a sense of how strong or weak the language is in an SRS. A "strong" SRS is one in which the requirements are tightly, unambiguously, and precisely defined in such a way that leaves no other interpretation or meaning to any individual requirement. The Goddard Space Flight Center (GSFC) studied dozens of NASA requirements specifications that revealed nine categories of SRS quality indicators. The individual components in each category are words, phrases, and sentence structures that are related to quality attributes. The nine categories fall into two classes: those related to individual specification statements, and those related to the total SRS document. Table 5 summarizes the classes, categories, and components of these quality indicators. This table was also originally presented at the April 1998 Software Technology Conference presentation "Doing Requirements Right the First Time." Reprinted with permission from the Software Assurance Technology Center at NASA (http://www.gsfc.nasa.gov/). Table 5 Quality measures related to individual SRS statements
ConclusionThere's so much more we could say about requirements and specifications. Hopefully, this information will help you get started when you are called upon--or step up--to help the development team. Writing top-quality software requirements specifications begins with a complete definition of customer requirements. Coupled with a natural language that incorporates strength and weakness quality indicators--not to mention the adoption of a good SRS template--technical communications professionals well-trained in requirements gathering, template design, and natural language use are in the best position to create and add value to such critical project documentation. Additional ResourcesBrooks, Frederick P. Jr., No Silver Bullet: Essence and accidents of software engineering, IEEE Computer, vol. 15, no. 1, April 1987, pp. 10-18. Gause, Donald C., and Weinberg, Gerald M., Exploring Requirements Quality Before Design, Dorset House Publishing, NY, NY, 1989. IEEE Std 830-1993, Recommended Practice for Software Requirements Specifications, December 2, 1993. Wiegers, Karl E. Software Requirements, Microsoft Press, Redmond, WA, 1999.
Category: Tech Comm Deliverables - Tag (s): requirements specification / Technical Communication Templates Requirement software | Billpearson15 years ago
[...] Writing Software Requirements Specifications – TechWhirlAgile Requirements Management | A leader in agile project manaegment, use case management and requirements management software. [...] POS by rodolfohansen - Pearltrees15 years ago
[...] the team helps place at the core of the project those user or customer requirements that provide more of an overall balance marketing-focused issues. The presence of a technical writer on to the design of the SRS, product, and documentation. Writing Software Requirements Specifications [...] productivity by lionelmoi - Pearltrees15 years ago
[...] Writing Software Requirements Specifications the team helps place at the core of the project those user or customer requirements that provide more of an overall balance marketing-focused issues. [...] Amy Pasko (girlgeekamy) | Pearltrees15 years ago
[...] Writing Software Requirements Specifications | A Technical Commu the team helps place at the core of the project those user or customer requirements that provide more of an overall balance marketing-focused issues. The presence of a technical writer on to the design of the SRS, product, and documentation. that may be too heavily loaded with technology-focused or [...] documentation by doehlman - Pearltrees15 years ago
[...] Writing Software Requirements Specifications For technical writers who haven’t had the experience of designing software requirements specifications (SRSs, also known as software functional specifications or system specifications) templates or even writing SRSs, they might assume that being given the opportunity to do so is either a reward or punishment for something they did (or failed to do) on a previous project. Actually, SRSs are ideal projects for technical writers to be involved with because they lay out the foundation for the development of a new product and for the types of user documentation and media that will be required later in the project development life cycle. It also doesn’t hurt that you’d be playing a visible role in contributing to the success of the project. [...] Dhananjay15 years ago
Excellent ! We all know this but you have put it in a very nice fashion. This will certainly help even an experienced person also to write SRS in a better way. Will you please share any sample SRS? artur15 years ago
Very interesting and useful information, Thank you very much for all these clarifications , they helped me very much to understand all what i need in order to start creating the SRS document for my final academic project (SW Engineering b.sc.) Live long and prosper ) Tebogo15 years ago
thank you very much,i now know what what to do! now i can start with my project(Bsc Computer science) university of limpopo Gogontle15 years ago
Outstanding initiative, now is there an example of a written and approved (completed) project of SRS? Please furnish us with such. I am currently doing Computer Engineering Systems and have been tasked to do a project regarding any subject that I learned through out the course. e.g. Networks, Programming, Electronics, Microprocessors etc. Gogontle15 years ago
What project are you thinking about Tebogo? TechWhirl15 years ago
As of now we do not have any templates due to the ad hoc nature of each project plus cleansing the doc if it came from a real world example would be tough. We'll do our best to think of a way to create some templates though. Warning: It'll be a while. As a request - if you have one at the end of your project that you would feel comfortable posting to share with the rest of the community, we'd certainly appreciate it. Glad the post has been helpful. Jenny14 years ago
This aritcle was extremely helpful and informative, thank you! So, had a question and was hoping you might have some insight. Our office deals with "COTS" products, so software functionality already exists 'out of the box' for the most part. I seem to struggle with some team members on when a new requirement must be written. Here's the scenario - change request has been received from a end-user of the system (they want to create a warning dilsplay banner within the application), the software module already exists (no custom coding) to create a display banner. So it's a new user requested capabiity using existing functionality. I say a new requirement should be written based on 2 items - it impacts what the end-user sees so it is a "new user" requested capability and there is no existing requirement that states the system has this capability. Any help would be greatly appreciated. Thanks, Jenny Writing Software Requirements Specifications (SRS) | Brent Sordyl's blog14 years ago
[...] Story: Writing Software Requirements Specifications (SRS)) Like this:LikeBe the first to like this. programming, requirements programming, requirements, [...] Nonx14 years ago
Thank you.. Very informative and useful..:) TUMUHEREZE ALEX14 years ago
I have read but i haven't understood how to really write a srs. please you may Girdhar singh14 years ago
By mistake scratch is written in place of "sketch" in above para. munyah14 years ago
thank U guys, U have saved a soul!!! GR8 Help indeed!! TechWhirl14 years ago
Hi Girdhar, I just checked this and the correct word was used. take care, ExploreSubscribe to TechWhirl via Email
Recent Articles
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||